Обработка естественного языка (NLP), вероятно, является сегодня одной из самых бурных областей под эгидой компьютерных наук.

Хотя это не что-то новое, технологические достижения, новые алгоритмы и обилие данных сделали возможность заставить компьютеры читать / писать и слушать / говорить что-то почти повседневное (не говоря уже о попытках заставить компьютеры действительно понимать что написано - что является делом понимания естественного языка - NLU).

Эта история является отправной точкой для серии, предлагающей представить область обработки естественного языка, не будучи ни слишком математически-техническим-ботом, ни слишком-языковым-теориям-червем. Идея состоит в том, чтобы представить агностический взгляд как на практику, так и на теорию НЛП, который мог бы понравиться как лингвистам, так и специалистам по информатике.

Есть несколько очень хороших презентаций НЛП, но пока я не смог найти ни одной, которая пыталась бы выбрать каждый слой (или, наконец, самый важный) в стеке НЛП (да, есть стек технологий, техник и теорий) . Чтобы не презирать отличные статьи других авторов, на каждом из проанализированных слоев я добавлю список хороших справочных статей, чтобы любой, кто хочет углубиться в любом из направлений (математика или лингвистика), мог это сделать.

Итак, кто я и какие у меня полномочия? Короче говоря, я такой же ученик, как и вы. Однако, если вам нужны небольшие «официальные» подробности: я учитель истории, системный аналитик, компьютерный ученый и получил степень магистра компьютерного интеллекта (как вы уже догадались, в области обработки естественного языка - точнее, в области понимания естественного языка). , но НЛП было все время).

Работаю ли я сейчас с НЛП? Нет. Однако я постоянно присутствую в теге НЛП StackOverflow и выбираю любую возможность поиграть с НЛП и его различными технологиями.

Следовательно, это также можно рассматривать как систематизированное изложение моего опыта работы с НЛП, в котором я стараюсь очень четко изложить каждую тему. Я также буду использовать иллюстрации (а не только те непонятные коробки, которые люди используют - графики) и ссылки, чтобы облегчить понимание даже для самых первых учеников.

Поскольку это также предлагается в качестве практического цикла, я должен установить некоторые базовые положения: я буду использовать Python. Почему? Просто: потому что это лучший язык для НЛП. Хотите обсудить это? Вот краткий список некоторых пакетов Python NLP:

  • Spacy (конвейер НЛП)
  • Nltk (трубопровод и корпус НЛП)
  • AllenNLP (трубопровод НЛП)
  • Huggingface Transformers (это набор инструментов для машинного обучения, но настроенный на НЛП)
  • Gensim (вложения)
  • Раса (NLU и чаттер-боты)

Не говоря уже о множестве инструментов предварительной обработки NLP в большинстве наборов инструментов машинного обучения и простых в реализации API для других языков (таких как Stanford CoreNLP). Теперь превзойти его с любыми другими языковыми пакетами? Кроме того, учить Python легко и весело. Если вам нужно базовое введение, посмотрите этот удивительный бесплатный интерактивный курс Python, доступный на Kaggle.

Наконец, в качестве обзорной статьи я предлагаю Указатель, на основе которого я собираюсь построить эту серию. Из-за длинного списка тем для публикации некоторых может потребоваться время, поскольку по многим из них я не являюсь специалистом (поэтому мне придется их изучить, чтобы сделать хорошую презентацию). Итак, начнем (обратите внимание, что темы теории - это не только теория, а темы практики - не только практические):