Только за прошлую неделю ко мне обратились сразу два человека с одним и тем же вопросом: «Посоветуй книжки по 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
- То же самое, но от гугла.
Дополнения как обычно в комментариях.
Читал «Speech and Language Processing»; в целом сравнимо с «Foundations of Statistical Natural Language Processing», тоже серьезная книга на тысячу страниц. Основных отличий у Журафски и Мартина я заметил два: 1) Меньше математики, больше объяснений на интуитивном уровне. Не то чтобы совсем уж всё абстрактно, но взять и закодить что-то по книге должно быть тяжело. Зато легко читается и особой подготовки для чтения не требуется. 2) Больше площадь покрытия, например, описываются распознавание/генерация речи и семантический анализ. Вообще учебник, как мне показалось, хорошо подходит для знакомства с задачами в NLP и подходами к их решению. После него можно читать список публикаций с какой-нибудь конференции и примерно понимать, о чем там идет речь.
А я тут недавно нашёл "Тестелец Я.Г. - Введение в общий синтаксис-2001.pdf". Рекомендую.
Большое спасибо за подборку!
Когда уже будет нормальный пост о житухе бытухе, покатушечках, нытье про "КАК ЖЕ Я ХОЧУ СВАЛИТЬ В МОСКВУ", типа фотогуляшках и прочих посиделках с пивасиком? Как в старые добрые хочу, пост о моментах жизни, философии дохуя и всякого разного что у тебя творится. А то заколебал, как не зайду, одно прыщепронрамирование во все поля((
Автор, спасибо огромное за подпорбку. мой диплом спасен!=))
АХАХАХАХА!
Большое спасибо автору! Замечательная подборка, а пост в закладки :)
Спасибо огромное!