Pull to refresh
  • by relevance
  • by date
  • by rating

Заметки об NLP (часть 1)

Artificial Intelligence Natural Language Processing *
В преддверии Нового года решил начать небольшой цикл статей, посвящённых наиболее интересующему меня лично направлению в обработке текстов на естественном языке. (То есть NLP в заголовке означает natural language processing — ваш К.О.) Синтаксический анализ, семантика, машинный перевод, поиск смысла слова в контексте — в общем, вся радость компьютерного лингвиста :)

Наверно, сразу имеет смысл определиться с уровнем изложения. Я сам пытаюсь заниматься компьютерной лингвистикой (с переменными успехами). Постараюсь рассказать о том, что конкретно волнует, чего уже можно, чего пока нельзя, и над чем как раз сейчас надо работать. Быть может, эти статьи помогут мне самому отструктурировать информацию в голове и опираться на уже готовую структуру в новом году. А если у читателей появятся свои идеи или мысли о сотрудничестве — ещё лучше.
Интересующихся прошу под кат
Total votes 67: ↑57 and ↓10 +47
Views 8.4K
Comments 54

Заметки об NLP (часть 2)

Artificial Intelligence Natural Language Processing *
Хотя в первой части я и говорил, что не собираюсь останавливаться на морфологии, видимо, совсем без неё не получится. Всё-таки обработка предложений сильно завязана на предшествующий морфологический анализ.
Читать дальше →
Total votes 58: ↑47 and ↓11 +36
Views 3K
Comments 43

Заметки об NLP (часть 3)

Artificial Intelligence Natural Language Processing *
(Начало: 1, 2) Что ж, подходим к самому интересному — разбору предложений. Тема эта многогранна и многоуровнева, так что подступиться к ней не очень просто. Но ведь трудности лишь закаляют :) Да и выходные, текст пишется легко…

Начнём с такого понятия, как синтаксический анализ предложений (по-английски parsing). Суть этого процесса состоит в построении графа, «каким-либо образом» отражающего структуру предложения.
Читать дальше →
Total votes 54: ↑47 and ↓7 +40
Views 4.5K
Comments 53

Заметки об NLP (часть 4)

Artificial Intelligence Natural Language Processing *
(Начало: 1, 2, 3) На сей раз хочу немного отвлечься и порассуждать (а точнее, похоливарить) на тему статистических алгоритмов и вообще «обходных путей» компьютерной лингвистики.
В первых частях нашего разговора речь шла о «классическом пути» анализа текста — от слов к предложениям, от предложений к связному тексту. Но в наше безумное время появились и соблазны решить проблему «одним махом», найдя, если угодно, баг в системе или «царскую дорогу».
Читать дальше →
Total votes 47: ↑39 and ↓8 +31
Views 2.4K
Comments 52

Заметки об NLP (часть 5)

Artificial Intelligence Natural Language Processing *
Что ж, продолжим. (Первые части: 1 2 3 4). Долго выбирал, что будет лучше для следующей темы — пофилософствовать о прагматике языка или поговорить конкретно об алгоритмах разбора. Учитывая, что предыдущая часть была неформальной, решил всё-таки переключиться на конкретику, а там посмотрим.

Итак, синтаксический анализ предложения. Давайте сразу определимся, что речь пойдёт о разборе в рамках концепции dependency parsing, причём определяющей методологией разбора будет точный анализ (не статистический). Начнём с небольшого обзора происходящего вокруг.
Читать дальше →
Total votes 55: ↑41 and ↓14 +27
Views 3.6K
Comments 41

Заметки об NLP (часть 6)

Artificial Intelligence Natural Language Processing *
(Первые части: 1 2 3 4 5). Надеюсь, разговор о естественном языке читателей ещё не утомил! По-моему, тематика действительно интересная (хотя популярность топиков явно идёт на убыль :) ). Что ж, посмотрим, на сколько частей меня ещё хватит. Думаю, экватор мы уже прошли, но три-четыре темы затронуть ещё можно.

На сей раз заметка полностью посвящена проекту XDG/XDK, который я пытаюсь изучать на досуге. Назвать себя специалистом по XDG пока ещё не могу. Но потихоньку двигаюсь.
Читать дальше →
Total votes 68: ↑53 and ↓15 +38
Views 1.8K
Comments 24

Заметки об NLP (часть 7)

Artificial Intelligence Natural Language Processing *
(Первые части: 1 2 3 4 5 6). Как и обещал вчера, продолжаем обсуждать XDG и движемся к следующим темам. Возможно, мы двигаемся слишком быстро, и действительно имело бы смысл публиковать одну статью раз в два-три дня, чтобы оставалось время всё обсудить. Но, наверно, пока «бензин есть», я буду продолжать писать. А потом можно будет вернуться и обговорить ранее освещённые вопросы. Мне кажется, что в компьютерной лингвистике разные темы настолько тесно связаны друг с другом, что разговор об одной из них без связи с другими малопродуктивен. А мы ещё не обо всём беседовали, так что лучше охватить взглядом как можно больше аспектов компьютерного анализа текста, а потом уже рассуждать о конкретике в рамках общей картины происходящего.
Читать дальше →
Total votes 39: ↑29 and ↓10 +19
Views 2K
Comments 17

Заметки об NLP (часть 8)

Artificial Intelligence Natural Language Processing *
(Первые части: 1 2 3 4 5 6 7). В этой части я расскажу о синтактико-семантическом анализаторе — как я его вижу. Обратите, кстати, внимание на часть 7 — она до главной страницы не добралась, так что не уверен, что все интересующиеся её видели.
Читать дальше →
Total votes 54: ↑36 and ↓18 +18
Views 1.6K
Comments 45

Заметки об NLP (часть 9)

Artificial Intelligence Natural Language Processing *
(Первые части: 1 2 3 4 5 6 7 8). Да возрадуются минусующие, сегодня представляю вниманию читателей последнюю, по всей видимости, часть «Заметок». Как и предполагалось, мы поговорим о дальнейшем семантическом анализе; также я порассуждаюю немного о том, чем в принципе можно заняться в нашей области и какие есть трудности «научно-политического» характера.
Читать дальше →
Total votes 60: ↑46 and ↓14 +32
Views 2.7K
Comments 16

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

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

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


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



Частотность слов на корпусе текстов изучалась со времён открытия закона Ципфа для английского языка (т.е., уже более 60-ти лет), публиковались различные словари и обзоры по этой теме, но мы посмотрим на русскую речь немного внимательнее и нагляднее.
Подробные графики и примеры с выводами
Total votes 18: ↑12 and ↓6 +6
Views 466
Comments 21

Заметки об NLP (часть 10)

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

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

Сразу прошу прощения: эта часть для чтения и понимания достаточно трудна. Ну да, как говорится, не всё коту масленица. Сложным задачам соответствуют сложные тексты :)
Читать дальше →
Total votes 41: ↑31 and ↓10 +21
Views 4.6K
Comments 12

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

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

У изобретения Кемпелена появилось немало подражателей; при этом принцип «шахматиста-невидимки» оставался неизменным, менялся лишь внешний вид автомата и некоторые технические детали. В наши дни концепция «механического турка» была переосмыслена, и из нее выросло направление, названное краудсорсингом – передача части производственных функций неопределенному кругу лиц за небольшую плату.
Читать дальше →
Total votes 35: ↑27 and ↓8 +19
Views 1.1K
Comments 10

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

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

Среди всех данных о клиенте самое однозначное, что его определяет — это почтовый индекс (postcode). Этого мало, но это хорошая отправная точка.
Читать дальше →
Total votes 75: ↑67 and ↓8 +59
Views 22K
Comments 57

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

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

На сей раз появился новый повод поговорить об обработке текстов (natural language processing то бишь). Я разрабатываю модуль проверки правописания для одной конторы. На выходе должна получиться функциональность, аналогичная встроенной в MS Word, только лучше :) Не могу пока назвать себя крупным специалистом в этой области, но стараюсь учиться. В заметках постараюсь рассказать о том, куда движется наш проект, как устроен тот или иной этап обработки текста. Может, в комментариях услышу что-нибудь новое/интересное и для себя. Если проекту с этого будет польза — прекрасно. Как минимум, устаканю данные у себя в голове, а это тоже неплохо.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views 2.8K
Comments 13

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

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

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

Читать дальше →
Total votes 56: ↑50 and ↓6 +44
Views 1.5K
Comments 12

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

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

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

Примерно так я рассуждал на начальных этапах нашего проекта, теперь же склоняюсь к тому, что в задачах обработки текстов частенько приходится подчиняться решениям других людей. Это будет уже ясно на примере маркировки частей речи.
Читать дальше →
Total votes 37: ↑30 and ↓7 +23
Views 1.9K
Comments 50

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

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

Как уже упоминалось, разбиение предложения на токены и POS-разметка уже позволяют создать простой инструмент проверки грамматической корректности текста. По крайней мере, LanguageTool плагин к Open Office работает именно так. Очевидно, что массу ошибок можно выловить на уровне размеченных токенов. Однако также очевидно, что не менее обширные классы ошибок остаются за пределами возможностей нашего модуля. Взять хотя бы такую простую вещь как согласование подлежащего и сказуемого: «дама любил собак», «любил собак дама», «собак дама любил»… как составить паттерн для правила «сказуемое должно иметь тот же род, что и подлежащее?» Даже для английского языка с более-менее чётким порядком слов это трудно, говорить о русском и вовсе не приходится.
Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Views 3.5K
Comments 7

Точка, точка, запятая: машинное обучение

Mail.ru Group corporate blog
Как научить поисковую машину правильно разбивать текст на предложения? Сделать так, чтобы она могла распознавать точки, которые не являются концами предложений.

Наша статья о машинном обучении объясняет одну из техник, которые применяются в поисковой машине тогда, когда возникает нужда в корректном разбиения текста на предложения. Решение такой задачи имеет принципиальное значение, например, при генерации сниппетов поисковыми системами или при построении базы контекстов словоупотребления. Сейчас эта технология встраивается в индексатор Поиска@Mail.Ru. Точность метода, по нашим наблюдениям — не менее 99%.
О том, как это работает, читайте в нашей статье.
Читать дальше →
Total votes 56: ↑41 and ↓15 +26
Views 17K
Comments 8

Программа проверки грамматики

Artificial Intelligence
Большинство систем редактирования текста имеют инструмент для автоматической проверки орфографических ошибок (когда в слове написаны неправильно одна или несколько букв; по-английски — speller). Их принцип действия: программа анализирует в тексте каждое слово и ищет такое же в Базе Данных всех слов и их всевозможных форм.

Такая проверка текста гарантирует, что слова в тексте будут написаны правильно (как в словаре), но не защищает от ошибок согласования и синтаксических ошибок в предложении. Например, предложение «Я читаешь интересными журналом» неправильно, но система редактирования текста не покажет правильный вариант: «Я читаю интересный журнал».
Избежать таких ошибок помогает программа проверки грамматических ошибок в предложении (по-английски — grammar checker).
Читать дальше →
Total votes 54: ↑53 and ↓1 +52
Views 58K
Comments 40

Не надо вычислять смысл и знания, когда их можно доставать из машинной памяти

IT Infrastructure *
Как говорил великий классик Аристотель, «известное, оказывается, известно немногим».

Языковеды всего мира подвержены одной пагубной иллюзии, полагая, что если они сумеют построить «правильный синтаксический граф», (то есть, «дерево фразы»), то они в этом случае, наконец-таки, решат это треклятую проблему машинной обработки естественно-язычных текстов (еят). Вот и ищут лингвисты денно и нощно какие-то мифические связи и отношения между словами (семантическими единицами) в предложениях и абзацах текстов. Да ещё и кибернетиков подключили к этим своим безуспешным поискам. Прошло уже полвека таких изысканий, а воз, как говорится, и поныне там. Не строится никак этот граф, давая много лет устойчивые 50% ошибок. Уже и сотни миллионов долларов потрачены. Один только проект «Watson» чего стоит. А ведь, в принципе, этих «связей и отношений» и нет на самом-то деле. Всё это, если внимательно вдуматься, искусственные наукообразные выдумки, из-за которых, собственно, прогресс в деле создания технологии осмысленной обработки еят зашел в тот тупик, где сейчас и пребывает.

Лингвисты как те инопланетяне, в руки которых попало обыкновенное для землян куриное яйцо. Вот они его могут изучать и так и сяк. И обмерить вдоль и поперек, и взвесить, и рентгеном просветить, и скорлупу исследовать на состав, и её твердость по Моосу замерить, и хрупкость уточнить, и цвет откалориметрировать. В общем провести всё, что только можно измерить, а вот понять, как оно образуется, того бедняги никак не смогут, поскольку самой курицы не знают и не ведали. Точно также не могли туземцы океанических островов нашей планеты понять, каким это образом транзисторный приемник, занесенный к ним западной цивилизацией, может издавать членораздельные звуки или звуковые мелодии. И как-бы они не изучали этот приемник, не пробовали его на зуб или на вкус, того бы вовек сами не поняли, что к такому устройству еще и радиостанция нужна. Подобная картина наблюдается и с языковедами, изучающими еят, как продукт (яйцо, транзистор) человеческого мышления (курицы, радиостанции), не обращая, при этом, внимания на самого «генератора (производителя) яйца».
Читать дальше →
Total votes 27: ↑13 and ↓14 -1
Views 1.8K
Comments 14