Учебники

Обработка естественного языка — Python

В этой главе мы узнаем о языковой обработке с использованием Python.

Следующие функции отличают Python от других языков —

  • Python интерпретируется — нам не нужно компилировать нашу программу Python перед ее выполнением, потому что интерпретатор обрабатывает Python во время выполнения.

  • Интерактивный — мы можем напрямую взаимодействовать с переводчиком для написания наших программ на Python.

  • Объектно-ориентированный — Python является объектно-ориентированным по своей природе и облегчает написание этого языка на программах, поскольку с помощью этого метода программирования он инкапсулирует код в объектах.

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

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

Интерактивный — мы можем напрямую взаимодействовать с переводчиком для написания наших программ на Python.

Объектно-ориентированный — Python является объектно-ориентированным по своей природе и облегчает написание этого языка на программах, поскольку с помощью этого метода программирования он инкапсулирует код в объектах.

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

Предпосылки

Последняя версия Python 3 выпущена на Python 3.7.1 и доступна для Windows, Mac OS и большинства версий ОС Linux.

  • Для окон мы можем перейти по ссылке www.python.org/downloads/windows/, чтобы загрузить и установить Python.

  • Для MAC OS мы можем использовать ссылку www.python.org/downloads/mac-osx/ .

  • В случае Linux разные версии Linux используют разные менеджеры пакетов для установки новых пакетов.

    • Например, чтобы установить Python 3 в Ubuntu Linux, мы можем использовать следующую команду из терминала:

Для окон мы можем перейти по ссылке www.python.org/downloads/windows/, чтобы загрузить и установить Python.

Для MAC OS мы можем использовать ссылку www.python.org/downloads/mac-osx/ .

В случае Linux разные версии Linux используют разные менеджеры пакетов для установки новых пакетов.

Например, чтобы установить Python 3 в Ubuntu Linux, мы можем использовать следующую команду из терминала:

$sudo apt-get install python3-minimal

Чтобы узнать больше о программировании на Python, прочитайте основное руководство по Python 3Python 3

Начало работы с NLTK

Мы будем использовать библиотеку Python NLTK (Natural Language Toolkit) для анализа текста на английском языке. Инструментарий естественного языка (NLTK) представляет собой набор библиотек Python, разработанный специально для идентификации и маркировки частей речи, встречающихся в тексте естественного языка, такого как английский.

Установка НЛТК

Перед тем, как начать использовать NLTK, нам нужно его установить. С помощью следующей команды мы можем установить ее в нашей среде Python —

pip install nltk

Если мы используем Anaconda, то пакет Conda для NLTK может быть собран с помощью следующей команды —

conda install -c anaconda nltk

Загрузка данных НЛТК

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

import nltk

Теперь загрузите данные NLTK с помощью следующей команды —

nltk.download()

Установка всех доступных пакетов NLTK займет некоторое время.

Другие необходимые пакеты

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

gensim

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

pip install gensim

шаблон

Он может быть использован для правильной работы пакета gensim . Следующая команда помогает в установке шаблона —

pip install pattern

лексемизацию

Токенизация может быть определена как Процесс разбиения данного текста на более мелкие единицы, называемые токенами. Слова, цифры или знаки препинания могут быть токенами. Это также можно назвать сегментацией слов.

пример

Вход — кровать и стул являются типами мебели.

Кровать и стул

У нас есть разные пакеты для токенизации, предоставляемые NLTK. Мы можем использовать эти пакеты в соответствии с нашими требованиями. Пакеты и детали их установки:

пакет sent_tokenize

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

from nltk.tokenize import sent_tokenize

пакет word_tokenize

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

from nltk.tokenize import word_tokenize

Пакет WordPunctTokenizer

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

from nltk.tokenize import WordPuncttokenizer

Морфологический

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

Стемминг — это эвристический процесс, который помогает в извлечении базовых форм слов путем измельчения их концов.

Ниже приведены различные пакеты для стемминга, предоставляемые модулем NLTK:

PorterStemmer пакет

Алгоритм Портера используется этим пакетом stemming для извлечения базовой формы слов. С помощью следующей команды мы можем импортировать этот пакет —

from nltk.stem.porter import PorterStemmer

Например, «write» будет выводом слова «writing», заданным в качестве входных данных для этого стеммера.

LancasterStemmer пакет

Алгоритм Ланкастера используется этим пакетом stemming для извлечения базовой формы слов. С помощью следующей команды мы можем импортировать этот пакет —

from nltk.stem.lancaster import LancasterStemmer

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

SnowballStemmer пакет

Алгоритм Snowball используется этим пакетом stemming для извлечения базовой формы слов. С помощью следующей команды мы можем импортировать этот пакет —

from nltk.stem.snowball import SnowballStemmer

Например, «write» будет выводом слова «writing», заданным в качестве входных данных для этого стеммера.

лемматизации

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

Модуль НЛТК предоставляет следующий пакет для лемматизации —

Пакет WordNetLemmatizer

Этот пакет извлечет основную форму слова в зависимости от того, используется ли оно как существительное или как глагол. Следующая команда может быть использована для импорта этого пакета —

from nltk.stem import WordNetLemmatizer

Подсчет POS-тегов – Chunking

Идентификация частей речи (POS) и коротких фраз может быть выполнена с помощью чанкинга. Это один из важных процессов в обработке естественного языка. Поскольку мы знаем о процессе токенизации для создания токенов, то на самом деле разбиение на фрагменты — это маркировка этих токенов. Другими словами, мы можем сказать, что мы можем получить структуру предложения с помощью процесса разбиения на фрагменты.

пример

В следующем примере мы реализуем чанки Noun-Phrase, категорию чанков, которые найдут чанки именных фраз в предложении, используя модуль Python NLTK.

Рассмотрим следующие шаги для реализации разбиения на именные фразы —

Шаг 1: Определение грамматики чанка

На этом этапе нам нужно определить грамматику для разбиения на фрагменты. Он будет состоять из правил, которым мы должны следовать.

Шаг 2: Создание парсера чанка

Далее нам нужно создать парсер чанка. Было бы разобрать грамматику и дать вывод.

Шаг 3: Выход

На этом шаге мы получим вывод в древовидном формате.

Запуск сценария НЛП

Начните с импорта пакета NLTK —

import nltk

Теперь нам нужно определить предложение.

Вот,

  • DT является определяющим

  • VBP это глагол

  • JJ это прилагательное

  • IN это предлог

  • NN это существительное

DT является определяющим

VBP это глагол

JJ это прилагательное

IN это предлог

NN это существительное

sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),
   ("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]

Далее грамматика должна быть дана в форме регулярного выражения.

grammar = "NP:{<DT>?<JJ>*<NN>}"

Теперь нам нужно определить парсер для разбора грамматики.

parser_chunking = nltk.RegexpParser(grammar)

Теперь синтаксический анализатор проанализирует предложение следующим образом:

parser_chunking.parse(sentence)

Далее вывод будет в переменной следующим образом:

Output = parser_chunking.parse(sentence)

Теперь следующий код поможет вам сделать вывод в виде дерева.