簡體   English   中英

NLTK wordnet界面中的第0個synset

[英]0th synset in NLTK wordnet interface

從semcor語料庫( http://www.cse.unt.edu/~rada/downloads.html ),有些感官沒有映射到wordnet的更高版本。 奇跡般地,映射可以在NLTK WordNet API中找到:

>>> from nltk.corpus import wordnet as wn
# Emunerate the possible senses for the lemma 'delayed'
>>> wn.synsets('delayed')
[Synset('delay.v.01'), Synset('delay.v.02'), Synset('stay.v.06'), Synset('check.v.07'), Synset('delayed.s.01')]
>>> wn.synset('delay.v.01')
Synset('delay.v.01')
# Magically, there is a 0th sense of the word!!!
>>> wn.synset('delayed.a.0')
Synset('delayed.s.01')

我檢查了代碼和API( http://nltk.googlecode.com/svn/trunk/doc/api/nltk.corpus.reader.wordnet.Synset-class.htmlhttp://nltk.org/ _modules / nltk / corpus / reader / wordnet.html )但是我無法找到它們如何進行不應該存在的神奇映射(例如對於delayed.a.0 - > delayed.s.01 )。

有誰知道NLTK Wordnet API代碼的哪一部分做了神奇的映射?

我想這是一個錯誤。 當你執行wn.synset('delayed.a.0')時,方法中的前兩行是:

lemma, pos, synset_index_str = name.lower().rsplit('.', 2)
synset_index = int(synset_index_str) - 1

所以在這種情況下, synset_index的值是-1 ,這是python中的有效索引。 當查找lemma delayedposa的同義詞數組時,它不會失敗。

有了這種行為,你可以做一些棘手的事情:

>>> wn.synset('delay.v.-1')
Synset('stay.v.06')

暫無
暫無

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

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