Обработка естественного языка (NLP), вероятно, является сегодня одной из самых бурных областей под эгидой компьютерных наук.
Хотя это не что-то новое, технологические достижения, новые алгоритмы и обилие данных сделали возможность заставить компьютеры читать / писать и слушать / говорить что-то почти повседневное (не говоря уже о попытках заставить компьютеры действительно понимать что написано - что является делом понимания естественного языка - NLU).
Эта история является отправной точкой для серии, предлагающей представить область обработки естественного языка, не будучи ни слишком математически-техническим-ботом, ни слишком-языковым-теориям-червем. Идея состоит в том, чтобы представить агностический взгляд как на практику, так и на теорию НЛП, который мог бы понравиться как лингвистам, так и специалистам по информатике.
Есть несколько очень хороших презентаций НЛП, но пока я не смог найти ни одной, которая пыталась бы выбрать каждый слой (или, наконец, самый важный) в стеке НЛП (да, есть стек технологий, техник и теорий) . Чтобы не презирать отличные статьи других авторов, на каждом из проанализированных слоев я добавлю список хороших справочных статей, чтобы любой, кто хочет углубиться в любом из направлений (математика или лингвистика), мог это сделать.
Итак, кто я и какие у меня полномочия? Короче говоря, я такой же ученик, как и вы. Однако, если вам нужны небольшие «официальные» подробности: я учитель истории, системный аналитик, компьютерный ученый и получил степень магистра компьютерного интеллекта (как вы уже догадались, в области обработки естественного языка - точнее, в области понимания естественного языка). , но НЛП было все время).
Работаю ли я сейчас с НЛП? Нет. Однако я постоянно присутствую в теге НЛП StackOverflow и выбираю любую возможность поиграть с НЛП и его различными технологиями.
Следовательно, это также можно рассматривать как систематизированное изложение моего опыта работы с НЛП, в котором я стараюсь очень четко изложить каждую тему. Я также буду использовать иллюстрации (а не только те непонятные коробки, которые люди используют - графики) и ссылки, чтобы облегчить понимание даже для самых первых учеников.
Поскольку это также предлагается в качестве практического цикла, я должен установить некоторые базовые положения: я буду использовать Python. Почему? Просто: потому что это лучший язык для НЛП. Хотите обсудить это? Вот краткий список некоторых пакетов Python NLP:
- Spacy (конвейер НЛП)
- Nltk (трубопровод и корпус НЛП)
- AllenNLP (трубопровод НЛП)
- Huggingface Transformers (это набор инструментов для машинного обучения, но настроенный на НЛП)
- Gensim (вложения)
- Раса (NLU и чаттер-боты)
Не говоря уже о множестве инструментов предварительной обработки NLP в большинстве наборов инструментов машинного обучения и простых в реализации API для других языков (таких как Stanford CoreNLP). Теперь превзойти его с любыми другими языковыми пакетами? Кроме того, учить Python легко и весело. Если вам нужно базовое введение, посмотрите этот удивительный бесплатный интерактивный курс Python, доступный на Kaggle.
Наконец, в качестве обзорной статьи я предлагаю Указатель, на основе которого я собираюсь построить эту серию. Из-за длинного списка тем для публикации некоторых может потребоваться время, поскольку по многим из них я не являюсь специалистом (поэтому мне придется их изучить, чтобы сделать хорошую презентацию). Итак, начнем (обратите внимание, что темы теории - это не только теория, а темы практики - не только практические):
- [Теория] Введение в НЛП - объяснение и примеры.
- [Теория] Конвейер предварительной обработки NLP - что, когда, почему?
- [Практика] токенизации (создание токенизатора).
- [Практика] Стемминг (построение стеммера).
- [Практика] Часть речевых тегов - что, когда, почему, как
- [Практика] лемматизации (построение лемматизатора).
- [Теория] Машинное обучение для НЛП - что, когда и почему?
- [Теория] Подходы на основе моделей НЛП - что, когда и почему?
- [Практика] Извлечение шаблонов с помощью POS-тегов.
- [Теория] Распознавание именованных сущностей (NER) - что, когда, почему?
- [Практика] Обучение простому алгоритму NER.
- [Практика] Обучение простому алгоритму анализа настроений.
- [Теория и практика] От набора слов до вложения слов.
- [Практика] Обучение простому алгоритму анализа настроений с помощью вложения слов.
- [Теория] Модели Seq2Seq - что, когда и почему ?.
- [Практика] Создание простого переводчика Seq2Seq.
- [Теория] Механизм внимания - что, когда, почему ?.
- [Практика] Создание простого переводчика Transformer с вниманием.
- [Теория] Понимание естественного языка - что, когда и почему?
- [Теория] Подходы на основе моделей - семантика, прагматика и графы.