обработка текста на python: определение существительных по отдельным словам - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть список слов, и я хотел бы сохранить только существительные.

Это не дубликат Извлечение всех существительных из текстового файла с использованием nltk

В связанном вопросе обрабатывается фрагмент текста. В принятом ответе предлагается тегер. Мне известны различные варианты тегирования текста (nlkt, textblob, spacy), но я не могу их использовать, поскольку мои данные не состоят из предложений. У меня есть только список отдельных слов:

would
research
part
technologies
size
articles
analyzes
line

nltk имеет широкий выбор корпусов. Я нашел verbnet с полным списком глаголов. Но до сих пор я не видел ничего подобного для существительных. Есть ли что-то вроде словаря, где я могу посмотреть, является ли слово существительным, глаголом, прилагательным и т. Д.?

Вероятно, это может быть сделано каким-то онлайн-сервисом. Microsoft translate, например, возвращает много информации в своих ответах: https://docs.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-dictionary-lookup?tabs=curl Но это платная услуга. Я бы предпочел пакет с питоном.

Относительно неоднозначности слов: в идеале мне нужен словарь, который может рассказать мне обо всех функциях, которые может иметь слово. Например, «рыба» - это существительное и глагол. «есть» - это только глагол, «собака» - только существительное. Я знаю, что это не точная наука. Рабочее решение просто удалит все слова, которые не могут быть существительными.

Ответы [ 4 ]

0 голосов
/ 08 ноября 2018

Пробовал с помощью wordnet ?

from nltk.corpus import wordnet
words = ["would","research","part","technologies","size","articles","analyzes","line"]
for w in words:
    syns = wordnet.synsets(w)
    print(w, syns[0].lexname().split('.')[0]) if syns else (w, None)

Вы должны увидеть:

('would', None)
('research', u'noun')
('part', u'noun')
('technologies', u'noun')
('size', u'noun')
('articles', u'noun')
('analyzes', u'verb')
('line', u'noun')
0 голосов
/ 07 ноября 2018

Вы можете запустить POS-тег для отдельных фрагментов, он будет иметь меньшую точность, но я полагаю, что это уже дано.

В идеале, найдите POS-тегер, который выявляет все возможные показания для возможного синтаксического устранения неоднозначности позже в конвейере обработки. Это в основном просто выберет все возможные показания из лексикона (возможно, с вероятностью) и позволит вам взять его оттуда.

0 голосов
/ 08 ноября 2018

Как отметили @Triplee и @DavidBatista, действительно сложно выяснить, является ли слово существительным или глаголом только само по себе, потому что в большинстве языков синтаксис слова зависит от контекста.

Слова - это просто представления значений. Из-за этого я хотел бы добавить другое предложение, которое могло бы соответствовать тому, что вы имеете в виду - вместо того, чтобы пытаться выяснить, является ли слово существительным или глаголом, попробуйте выяснить, является ли Концепт Объектом или Действием - это все еще имеет проблему двусмысленности, потому что концепция может нести как форму действия, так и форму объекта.

Однако вы можете придерживаться концепций, которые имеют только свойства объекта (такие как TypeOf, HasAsPart, IsPartOf и т. Д.) Или концепций, которые имеют свойства как объекта, так и действия (свойства действия, такие как Subevents, Effects, Requires).

Хорошим инструментом для поиска концептов является Conceptnet , он предоставляет WebApi для поиска концептов в своей сети по ключевому слову (он основан на Википедии и многих других сайтах и ​​очень полон для английского языка), открыто и также указывает на синонимы в других языках (которые помечены как их общее POS - вы можете усреднить POS синонимов, чтобы попытаться выяснить, является ли слово объектом [подобным существительному] или действием [подобным глаголу] ]).

0 голосов
/ 07 ноября 2018

Даже если вы используете словарь, вам всегда придется иметь дело с неоднозначностью, например, одно и то же слово в зависимости от контекста может быть noun или verb, взять слово research

Правительство будет инвестировать на research.

Цель - research новые методы POS-тегов.

Большинство словарей имеют более одного определения research, например:

исследование как существительное

исследование как глагол

Откуда эти слова, можете ли вы их пометить в контексте, где они встречаются?

...