如何计算Python中两个单词的意义距离

如何计算Python中两个单词的意义距离,python,nlp,nltk,Python,Nlp,Nltk,我想知道是否有可能计算Python中两个相关单词之间的距离/相似性(如“欺诈”和“偷窃”)。这两个词本身并不是同义词,但它们显然是相关的。NLP中是否有任何概念/算法可以用数字表示这种关系?也许通过NLTK 我不是在寻找Levenshtein距离,因为它与组成一个单词的单个字符有关。我在寻找意义之间的联系 非常感谢您的帮助。我的建议如下: 将每个单词放在同一个同义词词典中,以获得同义词列表 获取这两个单词的相似同义词集的大小 这是词语之间相似性的度量 如果您想进行更彻底的分析: 同时也要得

我想知道是否有可能计算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-请参阅此()或参阅类似帖子: