python - NLTK wordnet 接口(interface)中的第 0 个同义词集

标签 python nlp semantics nltk wordnet

从 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 中的有效索引。在 lemmadelayedposa 的同义词集数组中查找时,它不会失败.

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

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

关于python - NLTK wordnet 接口(interface)中的第 0 个同义词集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470873/

相关文章:

tensorflow - 如何为 keras Tokenizer 选择 num_words 参数?

python - 我如何在 django 中的包含标记中传递请求对象

python-2.7 - 如何使用斯坦福NER(命名实体识别器)的python接口(interface)?

python - 从 spacy 中的英文文本创建 CFG?

java - 我不明白 Quartz 中的 getNextIncludedTime()

json - Postgres 11 Jsonpath 支持

Java相当于python的json.dumps

python - 将字符串转换为日期时间 - python 数据框

python - 这段 python 代码中的语法错误在哪里?

cmake - CMake 命名空间实际上意味着什么吗?