文本相似度匹配算法

用余弦相似度算法计算文本相似度
句子A:这只皮靴号码大了。那只号码合适。
句子B:这只皮靴号码不小,那只更合适。
1、分词:
使用结巴分词对上面两个句子分词后,分别得到两个列表:
listA=[‘这‘, ‘只‘, ‘皮靴‘, ‘号码‘, ‘大‘, ‘了‘, ‘那‘, ‘只‘, ‘号码‘, ‘合适‘]
listB=[‘这‘, ‘只‘, ‘皮靴‘, ‘号码‘, ‘不小‘, ‘那‘, ‘只‘, ‘更合‘, ‘合适‘]



2、列出所有词,将listA和listB放在一个set中,得到:
set={‘不小’, ‘了’, ‘合适’, ‘那’, ‘只’, ‘皮靴’, ‘更合’, ‘号码’, ‘这’, ‘大’}
将上述set转换为dict,key为set中的词,value为set中词出现的位置,即‘这’:1这样的形式。
dict1={‘不小’: 0, ‘了’: 1, ‘合适’: 2, ‘那’: 3, ‘只’: 4, ‘皮靴’: 5, ‘更合’: 6, ‘号码’: 7, ‘这’: 8, ‘大’: 9},可以看出“不小”这个词在set中排第1,下标为0。



3、将listA和listB进行编码,将每个字转换为出现在set中的位置,转换后为:
listAcode=[8, 4, 5, 7, 9, 1, 3, 4, 7, 2]
listBcode=[8, 4, 5, 7, 0, 3, 4, 6, 2]
我们来分析listAcode,结合dict1,可以看到8对应的字是“这”,4对应的字是“只”,9对应的字是“大”,就是句子A和句子B转换为用数字来表示。



4、对listAcode和listBcode进行oneHot编码,就是计算每个分词出现的次数。oneHot编号后得到的结果如下:
listAcodeOneHot = [0, 1, 1, 1, 2, 1, 0, 2, 1, 1]
listBcodeOneHot = [1, 0, 1, 1, 2, 1, 1, 1, 1, 0]



5、得出两个句子的词频向量之后,就变成了计算两个向量之间夹角的余弦值,值越大相似度越高。



https://www.cnblogs.com/airnew/p/9563703.html



https://blog.csdn.net/qq_37928340/article/details/106025370



https://blog.csdn.net/zz_dd_yy/article/details/51926305



https://www.jianshu.com/p/71c46a5555dd



https://www.zhihu.com/question/273654374/answer/369229376



这本是项亮的《推荐系统实践》,里面提到基于用户的协同过滤算法中,有一步需要利用余弦相似度来计算用户兴趣的相似度



https://soyoger.blog.csdn.net/article/details/77318370



chunk匹配算法



https://blog.csdn.net/AMDS123/article/details/70504859
https://blog.csdn.net/qq_44906416/article/details/89432133



Category web