如何获得在NLTK一个同义词集合的共发现意义频率是多少?(How to get the wordne

2019-07-22 09:59发布

根据文档可以装入感标记在NLTK语料库这样:

>>> from nltk.corpus import wordnet_ic
>>> brown_ic = wordnet_ic.ic('ic-brown.dat')
>>> semcor_ic = wordnet_ic.ic('ic-semcor.dat')

我还可以得到definitionposoffsetexamples为这样的:

>>> wn.synset('dog.n.01').examples
>>> wn.synset('dog.n.01').definition

但如何才能得到语料库中的同义词集的频率是多少? 为了打破这样的问题:

  1. 第一怎么算多次做过一个同义词集时的感觉,标注语料?
  2. 再下一步是通过计数通过计数对于给定的特定引理所有同义词集出现的总数来划分。

Answer 1:

我设法做这种方式。

from nltk.corpus import wordnet as wn

word = "dog"
synsets = wn.synsets(word)

sense2freq = {}
for s in synsets:
  freq = 0  
  for lemma in s.lemmas:
    freq+=lemma.count()
  sense2freq[s.offset+"-"+s.pos] = freq

for s in sense2freq:
  print s, sense2freq[s]


Answer 2:

如果你只需要知道最常说的一句话是什么,你可以做wn.synsets(word)[0]因为一般的WordNet他们排名从最频繁到最不频繁。

(来源:丹尼尔·朱拉夫斯基的语音和语言处理第2版)



文章来源: How to get the wordnet sense frequency of a synset in NLTK?