NLTK wordnet 接口中的第 0 个同义词集

Posted

技术标签:

【中文标题】NLTK wordnet 接口中的第 0 个同义词集【英文标题】:0th synset in NLTK wordnet interface 【发布时间】:2013-08-30 12:31:00 【问题描述】:

从 semcorp 语料库 (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.html,http://nltk.org/_modules/nltk/corpus/reader/wordnet.html),但我找不到他们是如何进行不应该存在的神奇映射的(例如 delayed.a.0 -> @ 987654326@).

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

【问题讨论】:

【参考方案1】:

我猜这是一个错误。当您执行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 中的有效索引。在lemmadelayedposa 的同义词组中查找时它不会失败。

通过这种行为,您可以做一些棘手的事情,例如:

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

【讨论】:

以上是关于NLTK wordnet 接口中的第 0 个同义词集的主要内容,如果未能解决你的问题,请参考以下文章

Python3自然语言处理——WordNet

从NLTK for Python中的同义词列表中提取单词

NLTK 将标记化的句子转换为同义词集格式

NLTK学习笔记:文本语料资源和WordNet汇总

在 wordnet 中查找同义词集之间的距离

python 使用wordnet提取同义词。