同义词很棘手,但是如果你开始使用Wordnet的synset并且你只想选择集合中最常见的成员,那么它非常简单:只需从语料库中构建自己的频率列表,然后查找每个成员. synset选择最大值.
nltk将让您只需几行代码即可构建频率表.这是基于布朗语料库的一个:
from nltk.corpus import brown
freqs = nltk.FreqDist(w.lower() for w in brown.words())
然后,您可以查找单词的频率,如下所示:
>>> print(freqs["valued"])
14
当然你需要做更多的工作:我会分别为每个主要的词性计算单词(wordnet提供n,v,a和r,resp.名词,动词,形容词和副词),以及使用这些特定于POS的频率(在调整不同的标记集符号后)选择正确的替代品.
>>> freq2 = nltk.ConditionalFreqDist((tag, wrd.lower()) for wrd, tag in
brown.tagged_words(tagset="universal"))
>>> print(freq2["ADJ"]["valued"])
0
>>> print(freq2["ADJ"]["dear"])
45