NLTK WordNet 可以使用 lemma_names
和 similar_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/