python - 在python中以同质方式表示来自两个列表的单词之间的单词相似度
问题描述
我正在尝试使用 NLP 技术来查看两个列表中单词之间的相似性。
代码如下
import en_core_web_sm
nlp = en_core_web_sm.load()
Listalpha = ['Apple', 'Grapes', 'Mango', 'Fig','Orange']
ListBeta = ['Carrot', 'Mango', 'Tomato', 'Potato', 'Lemon']
list_n =" ".join(ListBeta)
doc = nlp(list_n)
list_str = " ".join(Listalpha)
doc2 = nlp(list_str)
newlist = []
for token1 in doc:
for token2 in doc2:
newlist.append((token1.text, token2.text,token1.similarity(token2)))
words_most_similar = sorted(newlist, key=lambda x: x[2], reverse=True)
print(words_most_similar)
我得到以下输出
[('Mango', 'Mango', 1.0), ('Potato', 'Mango', 0.71168435), ('Lemon', 'Orange', 0.70560765), ('Carrot', 'Mango', 0.670182), ('Tomato', 'Mango', 0.6513121), ('Potato', 'Fig', 0.6306212), ('Tomato', 'Fig', 0.61672616), ('Carrot', 'Apple', 0.6077532), ('Lemon', 'Mango', 0.5978425), ('Mango', 'Fig', 0.5930651), ('Mango', 'Orange', 0.5529714), ('Potato', 'Apple', 0.5516073), ('Potato', 'Orange', 0.5486618), ('Lemon', 'Fig', 0.50294644), ('Mango', 'Apple', 0.48833746), ('Tomato', 'Orange', 0.44175738), ('Mango', 'Grapes', 0.42697987), ('Lemon', 'Apple', 0.42477235), ('Carrot', 'Fig', 0.3984716), ('Carrot', 'Grapes', 0.3944748), ('Potato', 'Grapes', 0.3860814), ('Tomato', 'Apple', 0.38342345), ('Carrot', 'Orange', 0.38251868), ('Tomato', 'Grapes', 0.3763761), ('Lemon', 'Grapes', 0.28998604)]
如何获得如下格式的输出
[('Mango','Mango',1.0),('Mango', 'Fig', 0.5930651), ('Mango', 'Orange', 0.5529714),('Mango', 'Apple', 0.48833746),('Mango', 'Grapes', 0.42697987),('Carrot', 'Mango', 0.670182),('Carrot', 'Apple', 0.6077532)....]
基本上我想要表单的映射(ListBeta 中的单词,Listalpha 中的单词,余弦分数),它应该是统一的,而不是像我目前那样随机。如上所述,它还需要按照余弦值的降序排列。
解决方案
如果确实是排序结果的问题,您可以使用元组作为关键结果sorted
,即您的 lambda 可以返回元组/列表,python 将按元素对其进行排序。
words_most_similar = sorted(newlist, key=lambda t: (t[0], -t[2]))
推荐阅读
- docker - 如何从自动化套件运行 Dockerfile 或 docker-compose 文件
- javascript - 获取数组中的最后一个索引号 [JavaScript]
- python - 在 python3 中使用置换循环形成新数组
- node.js - 当有嵌套的 package.json 文件时,Babel 不会编译文件
- python - `pip list --outdated` 没有列出 pip 本身
- sql-server - invoke-sqlcmd 失败在某些类型的查询上显示没有结果
- javascript - 如何使用 JS 或 JQuery 在每次重新加载时保存对象大小和拖动位置
- c# - C# 检查字符串是否包含一个字符但允许包含其他特定字符
- php - PHP 递归似乎并没有遍历所有途径
- mysql - Mysql int 数据类型的空默认值