9

根据文档,我可以像这样在 nltk 中加载带有感觉标记的语料库:

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

我也可以得到definition, pos, offset,examples像这样:

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

但是如何从语料库中获取同义词集的频率呢?分解问题:

  1. 首先如何计算一个同义词集是否出现了一个有义标记的语料库?
  2. 然后下一步是除以计数除以给定特定引理的所有同义词集出现的计数总数。
4

2 回答 2

7

我设法做到了这一点。

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]
于 2013-03-21T15:21:29.083 回答
0

如果您只需要知道最常用的词是什么,您可以这样做,wn.synsets(word)[0]因为 WordNet 通常将它们从最频繁到最不频繁排列。

(来源:Daniel Jurafsky 的语音和语言处理第 2 版)

于 2019-05-14T13:21:17.287 回答