nlp - NLTK 字网 : lemma_names vs similar_tos

标签 nlp nltk wordnet synonym lemmatization

NLTK WordNet 可以使用 lemma_namessimilar_tos 方法生成给定单词的同义词:

from nltk.corpus import wordnet as wn
for ss in wn.synsets("small"):
    print(ss.name())
    print("Synonyms:", ss.lemma_names())
    print("Synonyms:", [sim.name().split('.')[0] for sim in ss.similar_tos()])

以下是打印输出的摘录:

small.a.01
Synonyms: ['small', 'little']
Synonyms: ['atomic', 'bantam', 'bitty', 'dinky', 'dwarfish', 'elfin', 'gnomish',
'half-size', 'infinitesimal', 'lesser', 'micro', 'microscopic', 'miniature',
'minuscule', 'olive-sized', 'pocket-size', 'puny', 'slender', 'small-scale',
'smaller', 'smallish', 'subatomic', 'undersize']
minor.s.10
Synonyms: ['minor', 'modest', 'small', 'small-scale', 'pocket-size', 'pocket-sized']
Synonyms: ['limited']

lemma_names 返回的同义词与 similar_tos 返回的同义词有何不同?

我们什么时候应该使用一种方法或另一种方法?

最佳答案

从查看源代码来看,lemma_names 获取了该同义词集的词形化名称,而 similar_tos 使用 获取了所有相关 同义词集>& 关系运算符(交集)。

以下是 source code 的相关位:

引理名称

def lemma_names(self, lang='eng'):
    '''Return all the lemma_names associated with the synset'''

类似

def similar_tos(self):
    return self._related('&')

def _related(self, relation_symbol):
    get_synset = self._wordnet_corpus_reader.synset_from_pos_and_offset
    return [
        get_synset(pos, offset)._lemmas[lemma_index]
        for pos, offset, lemma_index
        in self._synset._lemma_pointers[self._name, relation_symbol]
    ]

经过一番挖掘阅读 correct link对于 dead link在源代码中,似乎similar_to代表所有卫星同义词集,它们是与头同义词集相关的聚类术语。

satellite synset

Synset in an adjective cluster representing a concept 
that is similar in meaning to the concept represented 
by its head synset

关于nlp - NLTK 字网 : lemma_names vs similar_tos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236583/

相关文章:

python textblob和文本分类

algorithm - 如何使用WordNet路径算法计算两个字符串中单词的语义相似度

java - 如何在任何 Java WordNet 界面中访问 WordNet 中的 "frequency count"

machine-learning - 将 prop 文件转换为 arff 文件

python - 在 GenSim 上计算未见文档的主题分布

python - 在 python 中正确使用 NTLK

java - synset 中的 wordnet 词组

r - 如何在R中使用OpenNLP获取POS标签?

python - Keras - 如何获得非规范化的 logits 而不是概率

python - 如何使用 WordNet 查找英语单词的频率计数?