簡體   English   中英

如何獲取NLTK中同義詞集的詞網感知頻率?

[英]How to get the wordnet sense frequency of a synset in NLTK?

根據文檔,我可以這樣在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. 那么下一步就是在給定特定引理的情況下,將所有同義詞集出現的次數除以計數總數。

我設法做到了。

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]

如果您只需要知道最常見的單詞是什么,則可以執行wn.synsets(word)[0]因為WordNet通常wn.synsets(word)[0]它們從最頻繁的wn.synsets(word)[0]排列到最不頻繁的wn.synsets(word)[0]

(來源:Daniel Jurafsky的語音和語言處理第二版)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM