✏️ ️Посты 🌍 Путешествия Подписаться 👍 Донат
🔍
👤
Подборка книг по обработке естественного языка
05 апреля 2014 — 8 комментариев — 38358 просмотров — 1379 слов

Только за прошлую неделю ко мне обратились сразу два человека с одним и тем же вопросом: «Посоветуй книжки по Natural Language Processing». Так как я не готовился отвечать на этот вопрос, я называл пару книжек, которые помню, а за остальными просил написать мне.

Три случая — это уже статистика, потому после третьего обращения я понял необходимость этого поста и потратил очередное утро с айпедом в кровати на сбор этого списка. Ну и это поможет нам в популяризации NLP для русского языка.

Основы

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

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

После недальновидных советов «читать Кнута» с вероятностью 146% никто не дочитает даже до третьей главы.

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

[ru] Введение в информационный поиск (К. Маннинг, П. Рагхаван, Х. Шютце)
Как и многие, я пришел в Natural Language Processing из области Информационного Поиска. Сам по себе поиск — очень обширная область, которая, однако, всерьез полагается на несколько других: машинное обучение, статистика, обработка языка, распределенные системы, и.т.д. Так что начав изучать поиск каждый в какое-то время начинает углубляться в смежные, не менее интересные области. Введение в ИП очень хорошо покрывает основные аспекты именно поиска, не углубляясь в детали, однако давая необходимую базу и вдохновляя двигаться дальше.
[ru] Программируем коллективный разум (Т. Сегаран)
По началу показавшаяся мне «слишком простой» книжка на самом деле чаще других лежала у меня на столе именно потому что в ней сделан упор на практические задачи, а не теорию. Но голая практика без теории рождает похапешников, так что обязательно дополняйте всё прочитанное дополнительными рисерчами на тему. Еще у книги имеются, назовем их так, «аналоги» с более модными названиями типа «Алгоритмы Современного Интернета», в которых описывается хорошо если пара глав из Коллективного Разума. Относитесь к таким с осторожностью.
Гуглить
После прочтения приведенных книг, у вас должно появиться страстное желание гуглить. Не отказывайте себе в нем, простое гугление по названиям алгоритмов на данном этапе уже заметно повышает скиллы.

Основы++: дополнительное чтиво

Книги, которые вероятно заинтересуют вас на данном этапе и будут доступны для понимания, однако в зависимости от подготовки могут и не принести ничего нового.

[en] Taming Text: How to Find, Organize, and Manipulate It (Grant S. Ingersoll, Thomas S. Morton, ...)
Небольшая книжка, которая вводит в суть дела по поводу обработки текстов. Под конец впервые в вашей жизни появляются продукты Apache (Mahout, Solr, OpenNLP), которые достаточно популярны в области, но скорее всего пока вам будут не нужны. А еще все примеры на Java, для кого-то это будет плюсом, для кого-то нет.
[en] Machine Learning in Action (Peter Harrington)
Годное и современное введение в Машинное Обучение, не содержит занудств и глубинного матана с шестерными интегралами, на трёх страницах объясняющего откуда взят коэффициент 0.41, как 99% учебников по этому делу. Я вообще очень ленивый и пугливый, потому как только я вижу начинающийся ад вида «из [формула на пол страницы] очевидно, что [формула на целую страницу]» я закрываю и убегаю прятаться. Моя беда, но я такой. Если мне интересно откуда взят коэффициент 0.41, я найду сам, но для начала меня просто устроит принять его на веру и переварить остальную, более полезную информацию.

NLP

А вот теперь уже основные интересности. Как я уже говорил, хороших книг по NLP мало. Я попытался собрать те, которые лично смог хотя бы выборочно просмотреть, возможно упустил какие-то, я не со зла. Пишите в комментарии, буду дополнять.

[en] Natural Language Processing with Python (Steven Bird, Ewan Klein, and Edward Loper)
Самая простая из приведенных здесь книжек, однако я люблю простые вещи. Книга сочетает как теорию, так и практику, а все примеры приведены на нормальном языке программирования. Из минусов — книжка написана как гайд по популярной библиотеке NLTK, она дает хорошее введение в сам NLTK, однако про алгоритмы, непосредственно внутри NLTK, вы не узнаете практически ничего. Без знания этих алгоритмов вполне можно было бы жить (вы ведь не пишете с нуля хеш-таблицы или сортировку), однако NLTK не поддерживает русский язык, потому скорее всего вы будете писать свои велосипеды, а здесь уже понимание внутренней работы ой как пригодится. Книга хороша тем, что структурирует в мозгу то, чем занимается NLP. То есть она уже описывает все основные вещи, но ровно настолько, насколько это нужно для начинающих. И еще она небольшая, читается легко и быстро.
[en] Natural Language Processing for Online Applications: Text Retrieval, Extraction and Categorization (Dr. Peter Jackson, Isabelle Moulinier)
А вот с неё уже можно начинать хардкор. Практика закончилась на предыдущей книжке, далее — голая теория и матан. Книга предполагает, что вы знакомы с алгоритмами и машинным обучением, потому в основном не повторяется. Плюсы этой книги перед, например, следующей — она тонкая, всего 220 страниц. Но осилить ее не так-то просто.
[en] Foundations of Statistical Natural Language Processing (Christopher D. Manning, Hinrich Schütze)
На данный момент, в условиях бедности, считается чуть ли не библией NLP. В основном из-за своего размера: ~720 страниц настоящего матана и никаких примеров на ваших гейских питончиках. Я читал главы выборочно. Погружение гарантировано, но без подготовки открывать это нельзя :)
[ru] Автоматическая обработка текстов на естественном языке и компьютерная лингвистика (Большакова Е.И., Клышинский Э.С.)
Случайно найденное на NLPub учебное пособие на русском языке. Всего 220 страничек, для меня полезной оказалась ровно первая половина. Уникальность в том, что оно написано для русского языка. Нормальных трудов по компьютерной лингвистике именно русского языка практически не существует. Здесь, конечно, тоже местами налито Научной Воды, но это всяко лучше, чем ничего.
Гуглить
Да, снова пункт про гуглить. Но здесь вы уже будете знать что именно гуглить, в какие системы погружаться, и.т.д. Всё дело в том, что не существует серебряной пули, эдакой золотой книжки, которую прочитал — и сразу знаешь всё про NLP. Большинство информации разбросано по просторам сети, по чужим проектам, и.т.д.

NLP: вне конкурса

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

[ru] Общение с ЭВМ на естественном языке (Попов Е. В.)
Очень старая книжка, на которую однако очень много ссылаются другие научные статьи. Ссылаются в основном потому что она про русский язык и написана давно. Я тоже сошлюсь, однако я даже выборочно её не осилил, слишком она уж написана в стиле старых советских ученых, все эти пятибуквенные сокращения и введение новых слов на каждой странице. Может быть кто-то сможет распарсить и напишет выжимку из нее.
[ru] АОТ
АОТ — самый крупный проект в России, связанный с NLP. Однако что там происходит сейчас я не знаю, последняя новость написана в 2012 году, а предпоследняя в 2010-м. Пока я так и не смог извлечь какую-то пользу из него, может кто подскажет где смотреть?

NLP: непроверенное, но рекомендованное подписчиками

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

[en] Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition
[en] Graph-based Natural Language Processing and Information Retrieval

Ресурсы

Как я уже говорил, большая часть информации про NLP разбросана по сети в небольших статьях и исследованиях. Потому вот вам три источника, которые я нашел и прочитал в свое время из них всё самое интересное. Научные статьи могут быть опасны для здоровья, однако в них всегда есть один неоспоримый плюс — списки литературы. В них всегда можно найти интересные названия, нагуглить и прочитать. Этим я занимаюсь, когда мне скучно.

[ru] tech.yandex.ru
Подборка научных публикаций от сотрудников Яндекса за разные годы. Начиная от самых первых статей Ильи Сегаловича про мечты о поисковике с учетом русской морфологии, до самых современных систем медиапоиска. Очень полезно именно для понимания где находится и чем занимается сейчас индустрия. Hint: статьи маркетологов и всяких девочек можно пропускать.
[ru] Публикации РОМИП
Конференция РОМИП выкладывает некоторые доклады и публикации у себя на сайте, примерно то же самое, чем занимается Яндекс в предыдущем пункте, однако там тусят все заинтересованные ребятки. Даже, прости господи, мейл.ру.
[en] research.google.com
То же самое, но от гугла.

Дополнения как обычно в комментариях.



Комментировать
Комментарии 👇
ish 17 апреля 2014 в 15:42 #
1

Читал «Speech and Language Processing»; в целом сравнимо с «Foundations of Statistical Natural Language Processing», тоже серьезная книга на тысячу страниц. Основных отличий у Журафски и Мартина я заметил два: 1) Меньше математики, больше объяснений на интуитивном уровне. Не то чтобы совсем уж всё абстрактно, но взять и закодить что-то по книге должно быть тяжело. Зато легко читается и особой подготовки для чтения не требуется. 2) Больше площадь покрытия, например, описываются распознавание/генерация речи и семантический анализ. Вообще учебник, как мне показалось, хорошо подходит для знакомства с задачами в NLP и подходами к их решению. После него можно читать список публикаций с какой-нибудь конференции и примерно понимать, о чем там идет речь.

buriy 20 апреля 2014 в 15:48 #
0

А я тут недавно нашёл "Тестелец Я.Г. - Введение в общий синтаксис-2001.pdf". Рекомендую.

Lisa 24 апреля 2014 в 17:49 #
0

Большое спасибо за подборку!

The Master 25 апреля 2014 в 20:36 #
0

Когда уже будет нормальный пост о житухе бытухе, покатушечках, нытье про "КАК ЖЕ Я ХОЧУ СВАЛИТЬ В МОСКВУ", типа фотогуляшках и прочих посиделках с пивасиком? Как в старые добрые хочу, пост о моментах жизни, философии дохуя и всякого разного что у тебя творится. А то заколебал, как не зайду, одно прыщепронрамирование во все поля((

Alla 08 февраля 2015 в 08:17 #
1

Автор, спасибо огромное за подпорбку. мой диплом спасен!=))

БОТ 03 марта 2015 в 13:28 #
0

АХАХАХАХА!

Alex 14 марта 2015 в 09:58 #
1

Большое спасибо автору! Замечательная подборка, а пост в закладки :)

ubik 21 декабря 2016 в 12:40 #
0

Спасибо огромное!

Еще? Тогда вот