Как автоматически определить текстовое качество?

Большому количеству алгоритмов Обработки естественного языка (NLP) и библиотек нелегко работать со случайными текстами от сети, обычно потому что они предполагают чистую, членораздельную запись. Я могу понять, почему это было бы легче, чем парсинг комментариев YouTube.

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

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

20
задан JRL 15 February 2010 в 13:59
поделиться

5 ответов

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

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

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

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

.
16
ответ дан 30 November 2019 в 00:19
поделиться

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

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

3
ответ дан 30 November 2019 в 00:19
поделиться

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

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

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

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

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

5
ответ дан 30 November 2019 в 00:19
поделиться

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

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

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

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

8
ответ дан 30 November 2019 в 00:19
поделиться

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

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

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

2
ответ дан 30 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: