我想知道是否可以计算Python中两个相关单词之间的距离/相似度(例如"欺诈"和#34;窃取")。这两个词本身并不是同义词,但它们显然是相关的。 NLP中是否有任何概念/算法能够以数字方式显示这种关系?也许是通过NLTK?
我不是在寻找Levenshtein距离,因为它与构成单词的单个角色有关。我正在寻找意义的关系。
感谢您提供的任何帮助。
答案 0 :(得分:2)
我的建议如下:
如果您想进行更全面的分析:
如果你想更进一步!...
答案 1 :(得分:0)
NLTK的wordnet是您要用于此目的的工具。首先使用以下命令获取每个单词的所有含义的集合:
synonymSet = wordnet.synsets(word)
然后遍历两个单词中每个单词的每种可能含义,并在嵌套循环中将它们相互比较:
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')