Извлечение связанного текста по предложению, ключевым словам или теме

Существуют ли какие-либо известные способы (помимо статистического анализа, но не обязательно исключающие его как часть решения) связать предложения или концепции друг с другом с помощью обработки естественного языка. До сих пор я работал только с NLTK и Stanford-NLP, чтобы помочь в моем проекте, но я открыт для альтернативных решений с открытым исходным кодом.

В качестве примера возьмем следующее эссе Джорджа Оруэлла (http://orwell.ru/library/essays/wiw/english/e_wiw). Предположим, я дал приложению предложение

"What are George Orwell's opinions on writers." 

или возможно

"George Orwell believes writers enjoy writing to express their creativity, to make a point and for their egos."

Могут дать строки из эссе вроде

"The aesthetic motive is very feeble in a lot of writers, but even a pamphleteer or writer of textbooks will have pet words and phrases which appeal to him for non-utilitarian reasons; or he may feel strongly about typography, width of margins, etc."

or

"Serious writers, I should say, are on the whole more vain and self-centered than journalists, though less interested in money."

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


person user2926522    schedule 28.10.2013    source источник


Ответы (2)


Самый простой способ сделать это - использовать некоторые функции расстояния (например, косинусное сходство) между вашим предложением запроса и пулом предложений. Это легко реализовать. Создайте словарь из текстовой коллекции, и каждое предложение будет представлено в виде вектора. Вы можете использовать TF-IDF для представления значений в векторе, вычисления косинусного сходства между предложениями и получения предложения с наивысшей оценкой по отношению к предложению вашего запроса.

Или вы можете создать индекс из своего корпуса и использовать, например, Lucene, и пусть он сделает всю работу за вас.

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

person NLPer    schedule 28.10.2013
comment
Я пробовал некоторые из этих подходов, но в большинстве своем они представляют собой набор слов. Думаю, мне больше интересно узнать, есть ли на данный момент какие-либо известные подходы к попыткам понять смысл предложений, выходящих за рамки сопоставления слов. Я знаю, что это сложная и глубоко изученная область, у меня просто возникли проблемы с определением ее положения на данный момент. Спасибо за ответ! - person user2926522; 30.10.2013

Насколько я понимаю из вашего вопроса (а также из вашего комментария), вам больше интересно понять значение отдельного предложения, а затем уравнять друг друга в непосредственной близости. Статистический подход, на мой взгляд, больше предназначен для того, чтобы «прочувствовать» предложение, чем понять его. На мой взгляд, я бы предложил подход к глубокому синтаксическому анализу.

Глубоко проанализируйте предложение, поймите, какую роль играют слова в предложении, поймите, что такое модель субъект-глагол-объект (анализ слева направо и подобные методы), а затем получите словарь, который поможет вам классифицировать существительные и глаголы.

e.g.

"Serious writers, I should say, are on the whole more vain and self-centered than journalists, though less interested in money."

Анализ этого предложения позволяет понять, что предмет предложения - «серьезные писатели» (серьезный как прилагательное, в основном писатели). В глагольной форме это означает «есть» (текущее состояние) и «заинтересован». Затем каждый глагол указывает на дополнительный словарный запас, включая прилагательные. Если вы правильно составите этот словарь (и продолжите его наращивать), я думаю, вы должны решить свою проблему.

person rishi    schedule 30.10.2013