如何计算Python中两个单词的意义距离
我想知道是否有可能计算Python中两个相关单词之间的距离/相似性(如“欺诈”和“偷窃”)。这两个词本身并不是同义词,但它们显然是相关的。NLP中是否有任何概念/算法可以用数字表示这种关系?也许通过NLTK 我不是在寻找Levenshtein距离,因为它与组成一个单词的单个字符有关。我在寻找意义之间的联系如何计算Python中两个单词的意义距离,python,nlp,nltk,Python,Nlp,Nltk,我想知道是否有可能计算Python中两个相关单词之间的距离/相似性(如“欺诈”和“偷窃”)。这两个词本身并不是同义词,但它们显然是相关的。NLP中是否有任何概念/算法可以用数字表示这种关系?也许通过NLTK 我不是在寻找Levenshtein距离,因为它与组成一个单词的单个字符有关。我在寻找意义之间的联系 非常感谢您的帮助。我的建议如下: 将每个单词放在同一个同义词词典中,以获得同义词列表 获取这两个单词的相似同义词集的大小 这是词语之间相似性的度量 如果您想进行更彻底的分析: 同时也要得
非常感谢您的帮助。我的建议如下:
- 将每个单词放在同一个同义词词典中,以获得同义词列表
- 获取这两个单词的相似同义词集的大小
- 这是词语之间相似性的度量
- 同时也要得到两个单词的反义词
- 获取两个单词的反义词集的交集大小
- 将每个单词放在同一个同义词词典中,以获得同义词列表
- 使用查询结果中最前面的n(=5)个词来启动新查询
- 重复这个步骤,直到你觉得足够的深度
- 从重复的同义词查询中收集同义词
- 从两个同义词集合中获取两个单词的相似同义词集的大小
- 这是词语之间相似性的度量
- NLTK的wordnet是您希望用于此目的的工具。首先,使用以下方法获取每个单词的所有词义:
synonymSet = wordnet.synsets(word)
然后循环2个单词的每个可能的意义,并在嵌套循环中相互比较:
similarity = synonym1.res_similarity(synonym2,semcor_ic)
求该值的平均值或使用找到的最大值;由你决定
本例使用的是使用“IC”或信息内容的词语相似性比较。如果单词更具体,或者包含更多信息,那么相似度得分会更高,所以一般来说,当我们考虑单词相似度时,它更接近我们的意思
要使用这些东西,您需要导入和变量:
import nltk
from nltk.corpus import wordnet
from nltk.corpus import wordnet_ic
semcor_ic = wordnet_ic.ic('ic-semcor.dat')
尝试gensim包,如下所示:。例如:>>>model.wv.similarity('woman','man')0.73723527使用wordnet-请参阅此()或参阅类似帖子: