本文旨在对两个未知类型的文本进行余弦相似度分析,判断哪个文本属于军事类
理论知识
- 对于二维空间,根据空间向量点积公式:
- 假设向量a,b的坐标分别为(x1,y1),(x2,y2),则有:
假设将向量A,B扩展到多维,向量A (A1,A2,Ai,····,An,),向量 B(B1,B2,Bi,····,Bn,) 则有:
- 余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近(文档越相似);接近于0,表示两个向量近乎于正交;越趋近于-1,他们的方向越相反。
代码应用
- 所使用文件如下:
- military_sample.txt 关于军事的样本文本
- military_unknow.txt 关于军事的未分类测试文本
- meeting_unknow.txt 关于会议的未分类文本
- stop_word.txt 停用词表
- 步骤:
- 1)用 Python 编写余弦相似度函数
def get_cossimi(x,y):
myx=np.array(x)
myy=np.array(y)
cos1=np.sum(myx*myy)
cos21=np.sqrt(sum(myy*myy))
cos22=np.sqrt(sum(myx*myx))
return (cos1/float(cos22*cos21))
- 2)对军事样本文本进行数据预处理(分词、去除停用词,计算每个词的词频)
try:
sample0=open('../cosine_similarity/military_sample.txt','r',encoding='utf-8')
sample=sample0.read()
finally:
sample0.close()
sample_cut=