Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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