nltk.corpus.wordnet中哪个相似度函数适合用于计算两个单词的相似度?
在 nltk.corpus.wordnet
中,哪个相似度函数适合用来找两个词的相似性呢?
path_similarity()?
lch_similarity()?
wup_similarity()?
res_similarity()?
jcn_similarity()?
lin_similarity()?
我想用一个函数来进行 词汇聚类
,并使用 yarowsky
算法来在大量文本中寻找相似的 搭配词
。
2 个回答
3
我最近在玩NLTK和WordNet,想用自动化的方式来匹配一些文本。正如Ted Pedersen的回答所说,nltk.corpus.wordnet
中的相似度函数只会对那些关系很紧密的词汇给出非零的相似度分数,这些词汇之间有很明确的“是一个”的关系。
我最后做的是,先提取出我文本中的词汇,然后利用词的基本形式(lemma)去查找同义词集(synset)和相似词(similar_tos),构建自己的词汇关联图(graph_tool
在这方面非常好用)。接着,我计算了连接两个词所需的最少跳数(minimum number of hops),以此来衡量它们之间的相似度或不相似度(打印这些结果真的很有趣,就像在看一场奇怪的词语联想游戏)。实际上,这种方法在我的需求上效果还不错,即使没有考虑词性或词义。
7
这些测量其实是针对词义(或者说概念),而不是单纯的单词。这个区别可能很重要。换句话说,单词“train”可以指“火车”或者“被教导做某事”。如果你想使用这些测量,就需要知道具体是哪个意思。
如果你想进行单词聚类,这些测量可能不是你真正需要的东西……