向量计算词语之间的距离
1)长句包含短句(无需完全包含):
Text1:“贯彻强军目标出实招用实劲 努力开创部队建设新局面”
Text2:“在接见驻浙部队领导干部时强调 贯彻强军目标出实招用实劲 努力开创部队建设新局面”
上述两个文本为网络上实际的网页标题,若简单以余弦相似度来判定,其误判率是比较高的。本文解决方案为:若长句长度(中文切分后以词汇为单位表征,并非以字符为单位)为短句的1.5倍,则针对长句选定短句长度的文本内容逐个与短句进行相似度判定,直至长句结束,若中间达到预设的阈值,则跳出该循环,否则判定文本不相似。
2)文本中存在同义表述
Text1:“台湾居民明日起持台胞证可通关 无需办理签注”
Text2:“明起台胞来京无需办理签注 电子台胞证年内实施”
上述两个文本中“台胞”和“台湾居民”,“明日起”和“明起”为同义表述,可以理解为近义词,但不完全为近义词范畴。本文解决方案为引入同义词词典,鉴于中文词汇的丰富性,其能在一定程度上缓解,仍然不是根本解决之法。
应用场景及优缺点
本文目前将该算法应用于网页标题合并和标题聚类中,目前仍在尝试应用于其它场景中。
优点:计算结果准确,适合对短文本进行处理。
缺点:需要逐个进行向量化,并进行余弦计算,比较消耗CPU处理时间,因此不适合长文本,如网页正文、文档等。
余弦相似度算法源程序:
Class Element
Class TextCosine
备注:同义词词典“synonyms.dict”文件较大,完全可以自己构建,在此就不赘述了。
接下来我会讲下文本的相似度计算的不同方法,和他们之间的效果。