nltk.corpus.wordnet
中的哪个相似度函数适合于找到两个单词的相似度?
path_similarity()?
lch_similarity()?
wup_similarity()?
res_similarity()?
jcn_similarity()?
lin_similarity()?
我想使用word clustering
和yarowsky
algorightm的函数在大文本中找到类似的collocation
。
答案 0 :(得分:7)
这些措施实际上是针对词义(或概念)而非单词。这种区别可能很重要。换句话说,“火车”一词可以表示“机车”或“被教导做某事”。要使用这些措施,您需要知道哪种意义。
如果你想进行单词聚类,这些措施可能可能不是你想要的......
答案 1 :(得分:3)
我自己一直在玩NLTK / wordnet,目的是尝试以某种自动方式匹配某些文本。正如Ted Pedersen的答案所指出的那样,nltk.corpus.wordnet
中的相似性函数很快就会变得清晰,只有非常密切相关的术语才能产生非零的相似性,并且具有可靠的IS-A谱系。
我最终做的是在我的文本中使用词汇,然后使用lemma-> synset-> lemmas和lemma-> similar_tos来增长我自己的单词链接图(graph_tool
非常棒然后计算链接2个单词所需的minimum number of hops以获得它们之间的某种(dis-)相似性度量(非常有趣的打印出来;就像观看一个非常奇怪的单词关联游戏)。即使没有尝试将POS /感觉考虑在内,这确实对我的目的来说也足够好。