使用gensim计算文本相似度

川长思鸟来 2022-02-14 00:35 536阅读 0赞

使用gensim计算文本相似度

计算文本相似度步骤逻辑

1、将文本数据,通过jieba分词进行处理,形成一个二维数组

2、将二维数组生成词典

3、将二维数组通过doc2bow稀疏向量,形成语料库

4、使用TF模型算法,将语料库计算出Tfidf值

5、获取词典token2id的特征数

6、计算稀疏矩阵相似度,建立一个索引

7、测试数据jieba分词处理

8、通过doc2bow计算测试数据的稀疏向量

9、求得测试数据与样本数据的相似度

代码如下:

  1. import jieba
  2. from gensim import corpora, models, similarities
  3. if __name__ == '__main__':
  4. base_data = [
  5. "好雨知时节,当春乃发生。随风潜入夜,润物细无声。野径云俱黑,江船火独明。晓看红湿处,花重锦官城。",
  6. "君问归期未有期,巴山夜雨涨秋池。何当共剪西窗烛,却话巴山夜雨时。",
  7. "莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。",
  8. "天街小雨润如酥,草色遥看近却无。最是一年春好处,绝胜烟柳满皇都。",
  9. "古木阴中系短篷,杖藜扶我过桥东。沾衣欲湿杏花雨,吹面不寒杨柳风。",
  10. "少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中。江阔云低、断雁叫西风。 而今听雨僧庐下。鬓已星星也。悲欢离合总无情。一任阶前、点滴到天明。",
  11. "雨里鸡鸣一两家,竹溪村路板桥斜。妇姑相唤浴蚕去,闲看中庭栀子花。",
  12. "一夕轻雷落万丝,霁光浮瓦碧参差。有情芍药含春泪,无力蔷薇卧晓枝。"
  13. ]
  14. # 1.将base_data中的数据进行遍历后分词
  15. base_items = [[i for i in jieba.lcut(item)] for item in base_data]
  16. print(base_items)
  17. # 2.生成词典
  18. dictionary = corpora.Dictionary(base_items)
  19. # 3.通过doc2bow稀疏向量生成语料库
  20. corpus = [dictionary.doc2bow(item) for item in base_items]
  21. # 4.通过TF模型算法,计算出tf值
  22. tf = models.TfidfModel(corpus)
  23. # 5.通过token2id得到特征数(字典里面的键的个数)
  24. num_features = len(dictionary.token2id.keys())
  25. # 6.计算稀疏矩阵相似度,建立一个索引
  26. index = similarities.MatrixSimilarity(tf[corpus], num_features=num_features)
  27. # 7.处理测试数据
  28. test_text = "风雨凄凄,鸡鸣喈喈。既见君子,云胡不夷。风雨潇潇,鸡鸣胶胶。既见君子,云胡不瘳。风雨如晦,鸡鸣不已。既见君子,云胡不喜。"
  29. test_words = [word for word in jieba.cut(test_text)]
  30. print(test_words)
  31. # 8.新的稀疏向量
  32. new_vec = dictionary.doc2bow(test_words)
  33. # 9.算出相似度
  34. sims = index[tf[new_vec]]
  35. print(list(sims))

计算出的结果:

  1. [0.012518234, 0.006028821, 0.013035861, 0.0059479754, 0.0058894763, 0.0, 0.25966725, 0.0064892126]

发表评论

表情:
评论列表 (有 0 条评论,536人围观)

还没有评论,来说两句吧...

相关阅读