Как автоматически определить качество текста? - PullRequest
20 голосов
/ 15 февраля 2010

Многие алгоритмы и библиотеки Natural Language Processing (NLP) испытывают трудности при работе со случайными текстами из Интернета, обычно потому, что они предполагают чистое и четкое написание.Я могу понять, почему это было бы проще, чем анализ комментариев YouTube.

Мой вопрос: учитывая случайный фрагмент текста, существует ли процесс, позволяющий определить, хорошо ли написан этот текст, и является ли хорошим кандидатом для использования?в НЛП?Как обычно называются эти алгоритмы?

Я был бы признателен за ссылки на статьи, алгоритмы или библиотеки кодов, но я бы согласился на хорошие условия поиска.

Ответы [ 6 ]

15 голосов
/ 16 февраля 2010

«Хорошо написано» и «хорошо для НЛП» могут идти вместе, но не обязательно. Чтобы текст был «хорош для НЛП», он, возможно, должен содержать целые предложения с глаголом и точкой в ​​конце, и, возможно, он должен передавать некоторый смысл. Чтобы текст был хорошо написан, он также должен быть хорошо структурированным, связным, связным, правильно заменять существительные местоимениями и т. Д. Что вам нужно, зависит от вашего приложения.

Вероятность того, что предложение будет должным образом обработано инструментом НЛП, часто можно оценить с помощью простой эвристики: слишком ли она длинна (> 20 или 30 слов, в зависимости от языка)? Слишком коротко? Он содержит много странных символов? Содержит ли он URL-адреса или адреса электронной почты? У него есть главный глагол? Это просто список чего-то? Насколько я знаю, для этого нет общего названия или какого-либо конкретного алгоритма для такого рода фильтрации - это называется «предварительная обработка».

Что касается хорошо написанного предложения: была проделана некоторая работа по автоматической оценке читабельности, сплоченности и связности, например, статьи Мильцакаки ( Оценка когерентности текста для электронных систем оценки эссе и Классификация текстов в Интернете в режиме реального времени и анализ сложности чтения ) или Хиггинса ( Оценка нескольких аспектов когерентности в студенческих сочинениях ). Все эти подходы основаны на той или иной теории структуры дискурса, такой как теория центрирования. Статьи довольно сложны в теории и предполагают знание как теории центрирования, так и машинного обучения. Тем не менее, некоторые из этих методов были успешно применены ETS для автоматической оценки эссе ученика, и я думаю, что это очень похоже на то, что вы пытаетесь сделать, или, по крайней мере, вы сможете адаптировать несколько идеи.

Несмотря на это, я считаю, что в течение следующих лет НЛП будет необходимо разработать методы для обработки языка, который не хорошо сформирован в соответствии с действующими стандартами. В Интернете имеется огромное количество чрезвычайно ценных данных, состоящих из именно того типа текста, который вы упомянули: комментарии на YouTube, сообщения чата, сообщения о статусе в Твиттере и Facebook и т. Д. Все они могут содержать очень интересную информацию. Итак, кто должен адаптироваться - люди, пишущие таким образом или НЛП?

7 голосов
/ 16 февраля 2010

Одной из простых вещей было бы классифицировать текст как хорошо написанный или не использовать модель языка n-граммы. Чтобы сделать это, вы должны сначала обучить языковой модели коллекции хорошо написанного текста. Получив новый фрагмент текста, вы могли бы затем запустить модель поверх него и передать его другим нижестоящим инструментам НЛП, если запутанность в словах достаточно низкая (то есть, если она выглядит достаточно похожей на хорошо написанный учебный текст).

Чтобы получить наилучшие результаты, вам, вероятно, следует обучить свою языковую модель n-граммы тексту, который подобен тому, что использовался для обучения других инструментов НЛП, которые вы используете. То есть, если вы используете синтаксический анализатор фраз , обученный на ленте новостей, то вам также следует обучить свою модель языка n-грамм на ленте новостей.

С точки зрения программных инструментов, которые вы могли бы использовать для чего-то подобного, SRILM было бы хорошим началом.

Однако альтернативным решением будет попытка адаптировать любые инструменты НЛП, которые вы используете, к тексту, который вы хотите обработать. Одним из подходов к чему-то подобному может быть самообучение, при котором вы запускаете свои инструменты НЛП над типом данных, которые вы хотели бы обработать, а затем переучиваете их на собственном выходе. Например, McClosky et al 2006 использовал эту технику, чтобы взять анализатор, изначально обученный на Wall Street Journal, и адаптировать его для анализа биомедицинского текста.

4 голосов
/ 15 февраля 2010

Я не использовал никаких инструментов, но у меня есть идея.

Простая стратегия - взять чистый текст на английском языке и найти гистограмму различных тегов части речи, таких как существительные, прилагательные, глаголы, статьи и т. Д.

Теперь для образца текста, найдите похожую гистограмму.

Если эта гистограмма достаточно близка к эталонному, качество образца текста будет таким же, как и у исходного текста. Вам может потребоваться определить параметр "близости".

При идентификации языка обычно используется аналогичная техника. Для языка создается профиль n-грамм. Аналогичный профиль создается для образца текста, и сравниваются два профиля, чтобы определить вероятность того, что образец текста будет тем языком.

3 голосов
/ 15 февраля 2010

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

Вы также можете попробовать использовать показатели читабельности.Обычно они используются для того, чтобы произносить такие слова, как «этот текст читается в четвертом классе», но они могут дать некоторый сигнал о том, что вы собираетесь.Некоторые примеры включают Flesch-Kincaid или Gunning fog .

2 голосов
/ 28 февраля 2010

Как отмечали другие, «хорошо написано» - это довольно субъективная точка зрения. Лучшее, что вы можете сделать, это создать корпус из «хорошо написанных» и «плохо написанных» (согласно вашим стандартам) текстов. Вы получите бонус, если сможете создать метод для их классификации в числовом выражении (0,1 для комментариев Youtube, 0,9 для комментариев переполнения стека;).

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

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

0 голосов
/ 26 февраля 2016

Качество текста может быть определено с использованием закона Зипфа, кривой роста словарного запаса и распределения Парето. Интересный тезис, который объясняет это, можно найти на

http://ilk.uvt.nl/downloads/pub/papers/hait/camp2008.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...