Создать набор существительных и глаголов из n различных описаний, перечислить описания, соответствующие существительному и глаголу - PullRequest
0 голосов
/ 07 мая 2018

Я новичок в НЛП, у меня есть имя приложения столбцов и его описание. Данные выглядят следующим образом
app1, description1 (некоторая информация о app1, как это работает)
app2, description2
.
.
приложение (n), описание (n)
Из этих описаний мне нужно создать ограниченный набор существительных и глаголов. В последнем приложении, когда мы соединяем существительное и глагол из этого списка, вывод должен быть из списка приложений, которые удовлетворяют этому существительному + глаголу. Я понятия не имею, с чего начать, подскажите, пожалуйста, с чего начать. Спасибо.

1 Ответ

0 голосов
/ 07 мая 2018

Задача поиска морфосинтаксической категории слов в предложении называется тегом части речи (или PoS). В вашем случае вам, вероятно, также необходимо сначала токенизировать ваш текст.

Для этого вы можете использовать nltk , spacy или Stanford NLP tagger (среди других инструментов).

Обратите внимание, что в зависимости от используемой вами модели, могут существовать несколько меток для существительных (существительные в единственном числе, существительные во множественном числе, имена собственные) и глаголов (в зависимости от времени и лица).

Пример с NLTK:

import nltk

description = "This description describes apps with words."
tokenized_description = nltk.word_tokenize(description)
tagged_description = nltk.pos_tag(tokenized_description)
#tagged_description:
# [('This', 'DT'), ('description', 'NN'), ('describes', 'VBZ'), ('apps', 'RP'), ('with', 'IN'), ('words', 'NNS'), ('.', '.')]

# map the tags to a smaller set of tags
universal_tags_description = [(word, nltk.map_tag("wsj", "universal", tag)) for word, tag in tagged_description]  
# universal_tags_description:
# [('This', 'DET'), ('description', 'NOUN'), ('describes', 'VERB'), ('apps', 'PRT'), ('with', 'ADP'), ('words', 'NOUN'), ('.', '.')]
filtered = [(word, tag) for word, tag in universal_tags_description if tag in {'NOUN', 'VERB'}]
# filtered: 
# [('description', 'NOUN'), ('describes', 'VERB'), ('words', 'NOUN')]
...