首页 > 解决方案 > NLTK Wordnet:lemma_names 与similar_tos

问题描述

lemma_namesNLTK WordNet 可以使用和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']

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

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

标签: nlpnltkwordnetsynonymlemmatization

解决方案


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

以下是源代码的相关位:

引理名称

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

类似的 Tos

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]
    ]

在一些挖掘阅读源代码中死链接的正确链接之后,它似乎代表了 all ,它们是与头部同义词集相关的集群术语。similar_tosatellite synsets

satellite synset

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

推荐阅读