НЛТК Вербнет дает неправильный класс - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь понять API-интерфейс Verbnet nltk.В частности, рассмотрим:

from nltk.corpus import verbnet
verbnet.classids(lemma='add')

Последняя команда печатает: ['mix-22.1-2'].Предполагается, что метод classids «возвращает только идентификаторы классов VerbNet для классов, которые содержат эту лемму в качестве члена».

Теперь, если перейти на официальную страницу проекта verbnet и найтиГлагол «добавить», я получаю следующее: search result for verb add on verbnet page То есть, глагол add является членом mix, multiply, say, addict и illustrate.И класс verbnet на самом деле addict.

Вопрос: Как использовать nltk для получения фактических классов, связанных с глаголом add (и другими)?

Кажется, есть некоторые понятия, которые не очень четко определены (и которые я, вероятно, не очень хорошо понимаю), которые противоречат друг другу.Спасибо за помощь!: D

1 Ответ

0 голосов
/ 11 октября 2018

Причиной смещения между результатами является текущая версия NLTK, использующая Verbnet 2.1 вместо более новой версии Verbnet 3.3.

Хотя официально это еще не поддерживается, можно загрузить последниеверсия Verbnet с NLTK.Для этого:

Сначала перейдите на эту страницу NLTK Github и загрузите файл verbnet3.zip;

Во-вторых, разархивируйте файл в папке corpora NLTK.данные папки, обычно что-то вроде: Users/username/nltk_data/corpora/your_unzip_here.Когда вы распакуете его, у вас должна быть папка с именем verbnet3 внутри папки corpora.Здесь nltk будет искать данные;

В-третьих, загрузите Verbnet3 в Python с помощью команды:

import nltk
vnet3 = nltk.corpus.util.LazyCorpusLoader('verbnet3', nltk.corpus.reader.verbnet.VerbnetCorpusReader,r'(?!\.).*\.xml')

Затем вы можете использовать vnet3.classids('add') для правильного восстановления классов mix, multiply и say.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...