войти зарегистрироваться

Искусственный интеллектNLP: проверка правописания — взгляд изнутри (часть 4)

(Части 1, 2, 3) В четвёртой части мы поговорим о проверке грамматики за пределами токенизированных передложений.

Как уже упоминалось, разбиение предложения на токены и POS-разметка уже позволяют создать простой инструмент проверки грамматической корректности текста. По крайней мере, LanguageTool плагин к Open Office работает именно так. Очевидно, что массу ошибок можно выловить на уровне размеченных токенов. Однако также очевидно, что не менее обширные классы ошибок остаются за пределами возможностей нашего модуля. Взять хотя бы такую простую вещь как согласование подлежащего и сказуемого: «дама любил собак», «любил собак дама», «собак дама любил»… как составить паттерн для правила «сказуемое должно иметь тот же род, что и подлежащее?» Даже для английского языка с более-менее чётким порядком слов это трудно, говорить о русском и вовсе не приходится.

Искусственный интеллектNLP: проверка правописания — взгляд изнутри (часть 3)

(Часть 1, Часть 2) В прошлый раз я преждевременно упомянул токенизацию; теперь можно поговорить и о ней, а заодно и о маркировке частей речи (POS tagging).

Предположим, мы уже выловили все ошибки (какие догадались выловить) на уровне анализа текста регулярными выражениями. Стало быть, пора переходить на следующий уровень, на котором мы будем работать с отдельными словами предложения. Разбиением на слова занимается модуль токенизации. Даже в столь простой задаче есть свои подводные камни. Я даже не говорю о языках вроде китайского и японского, где даже вычленение отдельных слов текста нетривиально (иероглифы пишут без пробелов); в английском или в русском тоже есть над чем подумать. Например, входит ли точка в слово-сокращение или представляет собой отдельный токен? («др.» — это один токен или два?) А имя человека? «J. S. Smith» — сколько здесь токенов? Конечно, по каждому пункту можно принять волевое решение, но в дальнейшем оно может привести к различным последствиям, и это надо иметь в виду.

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

Искусственный интеллектNLP: проверка правописания — взгляд изнутри (часть 2)

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

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

Искусственный интеллектNLP: проверка правописания — взгляд изнутри (часть 1)

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

На сей раз появился новый повод поговорить об обработке текстов (natural language processing то бишь). Я разрабатываю модуль проверки правописания для одной конторы. На выходе должна получиться функциональность, аналогичная встроенной в MS Word, только лучше :) Не могу пока назвать себя крупным специалистом в этой области, но стараюсь учиться. В заметках постараюсь рассказать о том, куда движется наш проект, как устроен тот или иной этап обработки текста. Может, в комментариях услышу что-нибудь новое/интересное и для себя. Если проекту с этого будет польза — прекрасно. Как минимум, устаканю данные у себя в голове, а это тоже неплохо.

Data MiningРаспознавание почтовых адресов

Дело началось с того, что одна небольшая английская компания решила рассылать рекламные листовки своим существующим и потенциальным клиентам.
Обнаружилась проблема: есть отдельная внутренняя база клиентов, делавших заказы по телефону; отдельная база веб-клиентов, делавших заказы на сайте; и несколько баз «потенциальных клиентов» от разных информаторов.
Тысячи клиентов попали сразу в несколько баз, или даже несколько раз в одну базу.
Если клиент, «засветившийся» пять раз, получит пять одинаковых рекламных листовок с немного отличающимся написанием имени или адреса, то эффект от такой кампании получится противоположный — не говоря уже о бессмысленных расходах на лишние листовки.
Как же отсеять повторы в списке рассылки?

Среди всех данных о клиенте самое однозначное, что его определяет — это почтовый индекс (postcode). Этого мало, но это хорошая отправная точка.

КраудсорсингSoylent: сила толпы в деле редактирования текстов

image
В 18-м веке австрийский изобретатель автоматических машин Вольфганг фон Кемпелен явил публике первый в мире шахматный автомат. Он представлял собой выполненную в натуральную величину восковую фигуру, одетую в экзотический турецкий наряд, «турка», сидящего за деревянным ящиком с шахматной доской на верхней крышке. К сожалению, принцип работы «механического турка» был основан на обмане – внутри помимо механизмов, приводящих в движение фигуру, был спрятан настоящий шахматист, который и вел партии.

У изобретения Кемпелена появилось немало подражателей; при этом принцип «шахматиста-невидимки» оставался неизменным, менялся лишь внешний вид автомата и некоторые технические детали. В наши дни концепция «механического турка» была переосмыслена, и из нее выросло направление, названное краудсорсингом – передача части производственных функций неопределенному кругу лиц за небольшую плату.

Искусственный интеллектЗаметки об NLP (часть 10)

(Первые части: 1 2 3 4 5 6 7 8 9). Как говорилось в известной рекламе, «вы не ждали, а мы пришли» :)

За время, прошедшее после публикации девятой части, я прочитал одну хорошую книжку по теме (в to-read списке ещё парочка), множество статей, а также пообщался с несколькими специалистами. Соответственно, накопился новый объём материала, заслуживающий отдельной заметки. Как обычно, знакомлю других, параллельно структурирую знания для себя.

Сразу прошу прощения: эта часть для чтения и понимания достаточно трудна. Ну да, как говорится, не всё коту масленица. Сложным задачам соответствуют сложные тексты :)

Персональные блоги Результаты и перспективы небольшого анализа русских текстов

Представляю читателям статистику, собранную во время создания простейшего робота-генератора русских фраз

Распределение слов


Приведу сначала некоторые цифры.
На 12.5Мб русского текста (в основном классическая литература разных авторов), на 142114 разных слов в нём, чаще всего встречается союз «и» — 83575 раз (слова берутся во всех словоформах). И это больше, чем половина!
Вторым по частоте встречаемости оказывается предлог «в» — 52124 раз, на третьем месте — частица «не»: 36268 раз.
Глагол «сказал» (ед.ч., 3л.) встречается 6566 раз и находится на 28-м месте.
А вот слово «да» находится на 36-м месте и встречается 5039 раз, тогда как «нет» — встречается 2948 раз и находится на 53 месте.
Остальные слова выбраны достаточно случайно, исходя из предпочтений автора.



Частотность слов на корпусе текстов изучалась со времён открытия закона Ципфа для английского языка (т.е., уже более 60-ти лет), публиковались различные словари и обзоры по этой теме, но мы посмотрим на русскую речь немного внимательнее и нагляднее.
Подробные графики и примеры с выводами

Искусственный интеллектЗаметки об NLP (часть 9)

(Первые части: 1 2 3 4 5 6 7 8). Да возрадуются минусующие, сегодня представляю вниманию читателей последнюю, по всей видимости, часть «Заметок». Как и предполагалось, мы поговорим о дальнейшем семантическом анализе; также я порассуждаюю немного о том, чем в принципе можно заняться в нашей области и какие есть трудности «научно-политического» характера.

Искусственный интеллектЗаметки об NLP (часть 8)

(Первые части: 1 2 3 4 5 6 7). В этой части я расскажу о синтактико-семантическом анализаторе — как я его вижу. Обратите, кстати, внимание на часть 7 — она до главной страницы не добралась, так что не уверен, что все интересующиеся её видели.