Как идентифицировать идеи и понятия в заданном тексте

В данный момент я работаю над проектом, где было бы очень полезно иметь возможность определять, когда определенная тема/идея упоминается в тексте. Например, если текст содержал:

Может быть, если вы расскажете мне немного больше о том, кто такой мистер Джонс, это поможет. Также было бы полезно, если бы у меня было описание его внешности, а еще лучше фотография?

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

Пожалуйста, никогда не присылайте мне фото мистера Джонса.

Кто-нибудь знает, с чего начать? Это вообще возможно?

Я изучал такие вещи, как nltk, но мне еще предстоит найти пример того, как кто-то делает что-то подобное, и я до сих пор не совсем уверен, как называется этот вид анализа. Любая помощь, которая может поднять меня с земли, была бы здоровой.

Спасибо!


person Nick    schedule 17.05.2010    source источник
comment
Пожалуйста, подробнее о сценарии использования, насколько хорошие результаты вам нужны? Это живая система? Обработка запросов?   -  person    schedule 20.05.2010
comment
Я думаю, что лучший способ описать это как чат-бот, который знает ответы на определенные заранее заданные вопросы, определяет, когда их задают, и дает соответствующие ответы.   -  person Nick    schedule 21.05.2010


Ответы (3)


Лучшее, что может быть вам полезно, — это автоматический анализ настроений. Это используется, например, для того, чтобы определить, является ли, скажем, отзыв клиента положительным или отрицательным. Я не могу дать вам прямые указания на доступные инструменты, но это то, что вы ищете.

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

person Ventzi Zhechev    schedule 23.05.2010

NLTK — неплохой фреймворк для синтаксического анализа естественного языка, но имейте в виду, что это непростая задача. Делать подобные вещи — это действительно программирование на исследовательском уровне.

Хорошая вещь, которая делает это намного проще, это то, что если у вас очень ограниченный домен — скажем, ваше приложение фокусируется на информации об известных писателях, тогда вы можете избежать некоторых сложностей естественного языка, таких как определенные типы двусмысленностей.

Когда начать? Хороший вопрос. Я не знаю никаких руководств по этой теме (и я полагаю, что вы пробовали вариант с Google), но я полагаю, что в iTunes U будет курс по этой теме. Если нет, я могу опубликовать ссылку на пройденный мной курс, в котором упоминается эта тема и который не был полностью ужасен: http://www.inf.ed.ac.uk/teaching/courses/inf2a/Lectionmaterials/index.html#lecture01

person Jakub Hampl    schedule 17.05.2010
comment
Привет, Якуб, спасибо за быстрый ответ. Я пробовал Google, но я действительно не знал, что я искал. Я видел такие термины, как семантическая интерпретация и предложения Garden Path, но, похоже, они не совсем подходят ни к одному из них, что затрудняет поиск в Google. Домен будет действительно ограничен. Я хотел бы задать около 5 или 6 заранее определенных вопросов, подобных приведенному выше. Это облегчает жизнь? iTunes U — отличная идея; Я обязательно посмотрю. Если бы вы могли также опубликовать ссылку на свой курс, это было бы фантастической помощью. - person Nick; 18.05.2010
comment
Курс, который я посетил, позволит вам понять многие принципы, такие как семантика, предложения садовых дорожек и т. Д. Я бы поискал вас в iTunes для получения более конкретной информации. - person Jakub Hampl; 18.05.2010

Проблема, которую вы решаете, очень сложная.

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

Если вы хотите примерно определить, о чем текст, я предлагаю вам начать с использования WordNet и в соответствии со словами и их местами в иерархии определить задействованные понятия. Если вы хотите создать систему, демонстрирующую настоящий интеллект, вам следует начать исследовать такие ресурсы, как CYC (OpenCYC), которые позволят вам преобразовывать предложения в предложения FOL.

Это хардкорный ИИ, подход к решению вашей проблемы. Для простого чат-бота было бы проще полагаться на простые статистические методы.

удачи

person msaveski    schedule 24.05.2010