Обработка естественного языка с помощью Python: подробный обзор

Обработка естественного языка с помощью Python: подробный обзор

21 февраля 2022 г.

Искусственный интеллект в настоящее время является одной из самых востребованных технологий, как и НЛП, подмножество ИИ. Последние годы были отмечены огромными исследованиями и разработками в области ИИ. НЛП — важная технология, и мы используем ее каждый день. Эта статья даст нам некоторое представление об этой новой технологии. Мы рассмотрим его историю и некоторые типичные приложения. Как и где мы можем научиться НЛП для создания различных реальных проектов. Мы также кратко рассмотрим Python, возможно, самый удобный язык программирования для НЛП, и некоторые из его основных библиотек НЛП. Попутно также были рекомендованы некоторые учебные ресурсы.


Что такое НЛП?


Перво-наперво: что такое НЛП? Мы все знаем, что компьютеры могут понимать только 0 и 1, но мы, люди, общаемся на разных языках, на тысячах языков. 7139, если быть точным. Это создает тупик в нашем взаимодействии с компьютерами. Традиционным выходом из этого тупика было методичное взаимодействие с компьютерами путем выбора различных вариантов для выполнения нужной задачи. Но в настоящее время мы можем достичь этого, разговаривая с нашими компьютерами через Cortana или Siri на нашем родном языке, и они могут выполнять наши задачи и даже разговаривать с нами на том же языке. Базовая технология, благодаря которой это происходит, — это обработка естественного языка или НЛП.


Популярные голосовые помощники (Изображение предоставлено Майклом Хеллером)


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


История НЛП


Хотя НЛП стало очень популярным в последние годы, его история восходит к 1950-м годам. Происхождение всех технологий ИИ связано с ученым-компьютерщиком Аланом М. Тьюрингом и его основополагающей статьей под названием * «[Вычислительные машины и интеллект (1950)] (https://academic.oup.com/mind/article/LIX/236). /433/986238)*». Центральным вопросом его статьи был вопрос «Могут ли машины мыслить?». В отчете г-н Тьюринг предложил тест для проверки интеллекта компьютеров по сравнению с людьми. Он назвал это Игрой в имитацию, которая позже стала известна как [Тест Тьюринга] (https://en.wikipedia.org/wiki/Turing_test). Среди других критериев была способность машины «понимать и говорить» на естественных языках. [Эксперимент в Джорджтауне] (https://en.wikipedia.org/wiki/Georgetown%E2%80%93IBM_experiment) 1954 года стал еще одним ранним этапом развития машинного перевода. Эксперимент продемонстрировал полностью автоматический перевод с русского на английский язык. С тех пор область НЛП, наряду с ИИ, постоянно развивалась. Рост в области НЛП можно разделить на три категории в зависимости от лежащего в основе метода или подхода к решению проблем НЛП, описанных в следующем разделе.


Методы НЛП


НЛП, основанное на правилах (1950-е — 1990-е годы)


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


Ранние исследования НЛП были сосредоточены главным образом на машинном переводе. Машинный перевод на основе правил (RBMT) требовал тщательного лингвистического описания исходного и целевого языков. Базовый подход включал два шага: 1) поиск структурного эквивалента исходного предложения и вывода с использованием синтаксического анализатора и анализатора для исходного языка и генератора для целевого языка и 2) использование двуязычного словаря для преобразования слов в слова. -словный перевод, чтобы, наконец, произвести выходное предложение.


Архитектура машинного перевода на основе правил (Изображение предоставлено Буддитой Хеттидж)


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


Статистическое НЛП (1990-е — 2010-е годы)


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


Базовый конвейер статистического машинного перевода (Изображение предоставлено Каран Сингла)


Нейронное НЛП (2010-е — настоящее время)


Поскольку глубокое обучение стало популярным в 2010-х годах, то же самое было применено к НЛП. Методы машинного обучения в стиле глубоких нейронных сетей получили широкое распространение и в НЛП. Этот подход также использует статистические модели для прогнозирования вероятности результата. Однако, в отличие от статистического НЛП, он включает все предложение в единую интегрированную модель, избавляя от необходимости строить этот сложный конвейер промежуточных подзадач, как в статистических моделях. В этом подходе система использует искусственную нейронную сеть. Система искусственной нейронной сети теоретически пытается имитировать нейронную сеть человеческого мозга.


Простая нейронная сеть (Изображение предоставлено Википедией)


Искусственная нейронная сеть состоит из трех слоев: входного, скрытого и выходного. Входной слой получает входные данные и отправляет их на скрытый слой, где выполняются все вычисления над данными. Затем выходные данные передаются на выходной слой. Связь между нейронами называется весом. Начальное значение весов задается случайным образом, которое меняется в процессе обучения искусственной нейронной сети. Эти веса имеют решающее значение для определения вероятности выхода.


Общие задачи НЛП


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


  1. Токенизация — разделение непрерывного текста на слова.

  1. Тегирование частей речи — определение частей речи каждого слова в предложении.

  1. Удаление стоп-слов — отфильтруйте часто встречающиеся слова, такие как to, at, the, for и т. д.

  1. Основание — удаление флексий (префикс и суффикс) (например, вождение → вождение).

  1. Лемматизация — удалить склонения и вернуть основную форму слова (например, вождение → вождение).

  1. Разрешение кореференции — определяет, какое слово относится к каким словам в предложении/тексте.

  1. Синтаксический анализ — определение и визуализация дерева разбора предложения.

  1. Устранение неоднозначности смысла слова — выбор контекстуального значения многозначного слова.

  1. Распознавание именованных объектов — определение имен собственных в предложении/тексте.

  1. Извлечение отношений — определение отношений между именованными сущностями.

  1. Оптическое распознавание символов (OCR) — определение текста, напечатанного на изображении.

  1. Распознавание речи — преобразование речи в текст.

  1. Сегментация речи — разделение речи на слова.

  1. Текст в речь — преобразование текста в речь.

  1. Автоматическое обобщение — создание резюме более крупного текста.

  1. Исправление грамматических ошибок — обнаружение и исправление грамматических ошибок в тексте.

  1. Машинный перевод — автоматический перевод текста с одного языка на другой.

  1. Понимание естественного языка (NLU) — преобразование текста в машиночитаемый код.

  1. Генерация естественного языка (NLG) — заставить машину воспроизводить естественный язык.

SYSTRAN — одна из старейших компаний по машинному переводу


Python для НЛП


Python является предпочтительным языком программирования для НЛП. По состоянию на февраль 2022 года это самый популярный язык программирования. Вездесущий характер Python и его применение в широком спектре областей делают его таким популярным.


В то время как языки программирования, такие как Java и R, также используются для НЛП, Python является явным победителем. Python прост в изучении и понимании из-за его прозрачного и простого синтаксиса. Python предлагает, пожалуй, самое большое сообщество разработчиков, которое может быть очень полезным, если код требует некоторой отладки. Кроме того, Python легко интегрируется с другими языками программирования и инструментами. Что наиболее важно, Python поддерживается обширной коллекцией библиотек, которые позволяют разработчикам быстро решать задачи НЛП.


Ресурсы


  • Python для всех: Начните с этой программы специализации из пяти частей на Coursera. Он предоставит полный обзор программирования на Python.



НЛТК


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


Дерево синтаксического анализа, созданное с помощью библиотеки Python NLTK (Изображение предоставлено: nltk.org)


[Natural Language Toolkit или NLTK] (https://github.com/nltk/nltk) — самая популярная библиотека для НЛП. В его [репозитории GitHub] (https://github.com/nltk/nltk) есть огромное активное сообщество с более чем 10,4 тыс. звезд и 2,5 тыс. ответвлений. Он был разработан в Пенсильванском университете Стивеном Бёрдом и Эдвардом Лопером и выпущен в 2001 году. NLTK свободно доступен для Windows, Mac OS X и Linux. Он имеет встроенную поддержку более 100 корпусов и обученных моделей. NLTK поставляется с бесплатной электронной книгой, написанной его создателями, исчерпывающим руководством по написанию программ на Python и работе с NLTK. У них также есть активный дискуссионный форум в группах Google.


Ресурсы:




спаЦи


Промышленная обработка естественного языка (NLP) в Python.


Компоненты spaCy (Изображение предоставлено spacy.io)


spaCy относительно молод, но сейчас очень популярен. Его репозиторий GitHub имеет более 22,4 тыс. звездочек и 3,7 тыс. ответвлений, что намного выше, чем у NLTK. Он был написан на Python и Cython, что делает его быстрым и эффективным при работе с большими массивами данных. Это промышленная библиотека, разработанная для использования в производстве.


Некоторые особенности spaCy:


  • Он обеспечивает поддержку лингвистически мотивированной токенизации на более чем 60 языках.

  • Он имеет 64 предварительно обученных конвейера на 19 разных языках.

  • Он предоставляет предварительно обученные трансформаторы, такие как BERT.

  • Он предоставляет функции для распознавания именованных сущностей, маркировки частей речи, анализа зависимостей, сегментации предложений, классификации текста, лемматизации, морфологического анализа, связывания сущностей и многого другого.

Ресурсы:



  • spaCy 101: самые важные понятия, объясненные простым языком

Ядро НЛП


Набор основных инструментов NLP для Java.


Работа конвейера CoreNLP (Изображение предоставлено CoreNLP)


CoreNLP изначально был написан на Java и разработан в Стэнфордском университете. Но она оснащена оболочками для других языков, таких как Python, R, JavaScript и т. д. Таким образом, это библиотека, которую можно использовать с большинством языков программирования. Это универсальное место назначения для всех основных функций NLP, таких как лингвистические аннотации для текста, включая границы токенов и предложений, части речи, именованные сущности, числовые и временные значения, синтаксический анализ зависимостей и групп, кореферентность, настроения, цитаты. , и отношения. В настоящее время CoreNLP поддерживает 8 языков: арабский, китайский, английский, французский, немецкий, венгерский, итальянский и испанский. В [репозитории GitHub] (https://github.com/stanfordnlp/CoreNLP) у него 8,3 тыс. звезд и 2,6 тыс. ответвлений.


Ресурсы:



Текстовый Блоб


Упрощенная обработка текста


TextBlob – это библиотека Python для обработки текстовых данных. Он предоставляет простой API для наиболее распространенных задач NLP, таких как тегирование POS, токенизация, n-граммы и т. д. Он удобен для начинающих и является самым быстрым среди других библиотек. и сделан поверх NLTK и pattern. На момент написания этой статьи в его [репозитории GitHub] (https://github.com/sloria/textblob) было 8 тысяч звезд и 1,1 тысячи ответвлений.


Ресурсы:


  • Документация: официальная документация по TextBlob и краткое руководство.

Генсим


Gensim — это библиотека Python для тематического моделирования, индексации документов и поиска сходства с большими корпусами.


Gensim был создан Радимом Ржехуржеком в 2009 году. Он реализован на Python и Cython, что делает его невероятно быстрым. Кроме того, все его алгоритмы не зависят от памяти, то есть они могут обрабатывать входные данные, превышающие размер ОЗУ. Он в основном используется для выявления семантического сходства между двумя документами посредством моделирования векторного пространства и темы. Он поддерживает такие алгоритмы, как латентный семантический анализ (LSA/LSI/SVD), латентное распределение Дирихле (LDA), случайные проекции (RP), иерархический процесс Дирихле (HDP) или глубокое обучение word2vec. Он работает с обширными коллекциями данных из определенных категорий и обеспечивает четкое понимание. Gensim [репозиторий GitHub] (https://github.com/RaRe-Technologies/gensim) имеет 12,9 тыс. звезд и 4,2 тыс. ответвлений.


Ресурсы:


Документация: официальная документация и учебные пособия.


Заключение


Обработка естественного языка — это подобласть искусственного интеллекта, в которой ведутся активные исследования и разработки. Мы можем видеть его практическое применение повсюду вокруг нас. От автоматических субтитров в видео на YouTube до автоматического перевода Chrome веб-страниц на иностранные языки для нас, вспомогательного письма с помощью Grammarly, клавиатуры нашего iPhone, предсказывающей ключевые слова для un и так далее. Возможности безграничны. Обработка естественного языка необходима для искусственного интеллекта и для наших будущих технологий.


Использованная литература


  1. Берд, Стивен и др. Обработка естественного языка с помощью Python. 1-е изд., О’Рейли, 2009 г.

  1. Буддита Хеттиге. ВЫЧИСЛИТЕЛЬНАЯ ГРАММАТИКА СИНХАЛЬСКОГО ЯЗЫКА ДЛЯ МАШИННОГО ПЕРЕВОДА С АНГЛИЙСКОГО НА СИНХАЛЬСКИЙ. 2011. DOI.org (Datacite), https://doi.org/10.13140/RG.2.1.2330.6968.

  1. Хеллер, Майкл. «Изучите утверждения о том, что Siri и Google Assistant равны». Phone Arena, https://www.phonearena.com/news/Study-claims-Siri-and-Google-Assistant-are-equal_id115667. По состоянию на 8 февраля 2022 г.

  1. Сингла, Каран. Методы использования лексической информации в SMT. 2015. DOI.org (Datacite), https://doi.org/10.13140/RG.2.1.2138.7367.

  1. Тьюринг, А. М. ‘И. — ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ИНТЕЛЛЕКТ». Разум, том. ЛИКС, нет. 236, октябрь 1950 г., стр. 433–60. DOI.org (Crossref), https://doi.org/10.1093/mind/LIX.236.433.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE