Как извлечь определенные объекты из неструктурированного текстаPython

Программы на Python
Ответить
Anonymous
 Как извлечь определенные объекты из неструктурированного текста

Сообщение Anonymous »

При наличии общего текстового предложения (в определенном контексте) как я могу извлечь интересующие слова/сущности, принадлежащие к определенной «категории», используя Python и любую библиотеку НЛП?
Например учитывая шаг для кулинарного рецепта. Добавьте лук в миску с морковью в качестве входного текста, я бы хотел получить лук и морковь, пока задано «Посыпать паприкой». должен вернуться паприка.
Но это также должно работать с такими предложениями, как «хорошо перемешать» и «приготовить еще минуту»., которые не содержат в себе никаких пищевых объектов.
На данный момент мне удалось использовать библиотеку spacy для обучения модуля NER анализу предложений. Проблема с конвейером NER заключается в том, что это синтаксический анализ, основанный на правилах, он обучается, предоставляя для изучения набор предложений и сущностей/совпадений/меток, который отлично работает, как и ожидалось, на предложениях, аналогичных тем, которые используются во время обучения, но выполняет плохо с новыми и разными предложениями:

Код: Выделить всё

nlp = spacy.load('trained_model')

document = nlp('Add flour, mustard, and salt')
[(ent.text, ent.label_) for ent in document.ents]
# >> [('Add flour', 'FOOD'), ('mustard', 'FOOD'), ('salt', 'FOOD')]
# (quite) correct output

document = nlp('I took a building, car and squirrel on the weekend')
[(ent.text, ent.label_) for ent in document.ents]
# >> [('building', 'FOOD'), ('car', 'FOOD'), ('squirrel', 'FOOD')]
# wrong output

document = nlp('stir well, and cook an additional minute.')
[(ent.text, ent.label_) for ent in document.ents]
# >> [('stir well', 'FOOD'), ('cook', 'FOOD'), ('additional minute.', 'FOOD')]
# wrong output
Я знаю, что есть несколько подобных вопросов и сообщений, но я нашел только решения, работающие для «полуструктурированного» текста, то есть списка ингредиентов в размере 1 ч. л. сахара, 1 стакан молока, ..., которую можно легко решить, используя предыдущий подход, основанный на правилах. Также можно использовать nltk и часть речи (POS), но я бы предпочел альтернативное решение, а не сравнивать каждое существительное с исчерпывающим списком продуктов.
Вместо этого я ищу способ извлечения определенных объектов или, по крайней мере, классификации слов в общем тексте с дополнительными категориями, выходящими за рамки базового синтаксического анализа.
Какие методы мне следует использовать/рассмотреть для достижения этой цели ?

Подробнее здесь: https://stackoverflow.com/questions/792 ... tured-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»