Краткий обзор НЛП с библиотекой NLTK

ВСТУПЛЕНИЕ

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

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

Превратите свою мечту в области науки о данных в реальность

Как работает НЛП?

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

Пример -

Я из Франции и говорю на ________?

Ответ - французский

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

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

Оставайтесь на связи со всеми новейшими технологиями

Библиотека NLTK

Важнейшей библиотекой для обработки естественного языка является NLTK (набор инструментов для естественного языка). Он написан на Python и поддерживает такие задачи, как классификация, выделение корней, синтаксический анализ, семантическое мышление, токенизация и т. Д.

Установка NLTK

Пользователи Windows, Linux и Mac могут напрямую установить пакет с помощью команды pip.

pip install nltk

После установки пакета напишите следующий код Python

import nltk
nltk.download()

Это откроет графический интерфейс, из которого вы можете загрузить пакеты NTLK. Вы можете скачать все пакеты, так как все они имеют очень маленькие размеры.

Теперь приступим к написанию кода.

Токенизация текста

Токенизация - это метод разбиения струн на мелкие части. Обычно в задачах НЛП у нас есть большая строка, содержащая текст. На первом этапе мы разбиваем строку на предложения.

Токенизатор предложений NLTK

КОД:

text = “I seem to have caught cold. I’m a little feverish.”
from nltk import sent_tokenize
sentences = sent_tokenize(text)
print(sentences)

ВЫХОД:

[«Кажется, я простудился», «У меня небольшая температура».]

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

КОД:

fren = sent_tokenize(“Enchanté, comment allez-vous? Tres bien. Mersi, et vous?”,”french”)
print(fren)

ВЫХОД:

[«Enchanté, comment allez-vous?», «Tres bien.», «Mersi, et vous?»]

Токенизатор работы NLTK

На следующем этапе мы разбиваем строку на слова.

КОД:

from nltk import word_tokenize
tokens = word_tokenize(“Hello Mr. Roy. How was your day? ”)
print(tokens)

ВЫХОД:

['Привет', 'Мистер', 'Рой', '.', 'Как', 'был', 'твой', 'день', '?']

Примечание:

Вы заметили, как «мистер» был в одном жетоне, а «Рой» был разбит на два жетона, например «Рой» и «.»

Синонимы и антонимы

В естественном языке несколько слов могут иметь одно и то же значение. Поэтому очень удобно иметь функцию, которая может давать нам синонимы или антонимы слова. Для этого в библиотеке NTLK есть база данных wordnet.

Синонимы

КОД:

from nltk.corpus import wordnet
syn=wordnet.synsets(‘fight’)
print(syn)

ВЫХОД:

[Synset ('battle.n.01'), Synset ('fight.n.02'), Synset ('конкурентоспособность.n.01'), Synset ('fight.n.04') , Synset ('fight.n.05'), Synset ('Contend.v.06'), Synset ('fight.v.02'), Synset ('fight.v.03'), Synset ('crusade. v.01 ')]

Мы также можем получить определение и примеры этого слова.

print(syn[0].examples())
print(syn[0].definition())

ВЫВОД:

[«Грант одержал решающую победу в битве при Чикамауге», «он потерял свои романтические представления о войне, когда вступил в настоящую битву»]

враждебная встреча противостоящих вооруженных сил в ходе войны

Антоним

Чтобы получить список антонимов, вы должны проверить леммы перед их добавлением.

КОД:

from nltk.corpus import wordnet
antonyms=[]
for syn in wordnet.synsets(‘stupid’):
    for l in syn.lemmas():
        if l.antonyms():
            antonyms.append(l.antonyms()[0].name())
print(antonyms)

ВЫВОД:

["умный", "умный"]

Научитесь заставлять машины учиться

Стемминг и лемматизация

Это также одна из важных частей обработки естественного языка.
В этих процессах мы преобразуем слова в их корневые формы.

Например, слова «есть, есть, есть» можно сократить до «есть»

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

Давайте посмотрим, как их реализовать -

Основание

КОД:

from nltk.stem import PorterStemmer
stem = PorterStemmer()
print(stem.stem(‘swimming’))
print(stem.stem(“cats”))
print(stem.stem(“trouble”))

ВЫХОД:

плавать
кот
неприятно

Лемматизация

Библиотека NLTK предоставляет лемматизатор wordnet, который просматривает базу данных wordnet и возвращает реальные слова, которые действительно существуют.

КОД:

from nltk.stem import WordNetLemmatizer
lemmatizer=WordNetLemmatizer()
print(lemmatizer.lemmatize(‘believes’))
print(lemmatizer.lemmatize(‘swimming’))
print(lemmatizer.lemmatize(‘trouble’))

ВЫХОД:

вера
плавания
неприятностей

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

StopWords

Это часто используется на этапах предварительной обработки, чтобы отфильтровать бесполезные слова, которые не предоставляют много информации о предложении, например (a, an, the и т. Д.). Мы видим список всех стоп-слов из библиотеки NLTK.

КОД:

from nltk.corpus import stopwords
sw = stopwords.words(‘english’)
print(sw)

ВЫВОД:

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

КОД:

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
text = “This is a sample sentence, showing off the stop words filtration.”
stop_words = set(stopwords.words(‘english’))
word_tokens = word_tokenize(text)
filtered_sentence = [w for w in word_tokens if not w in stop_words]
filtered_sentence = []
for w in word_tokens:
    if w not in stop_words:
        filtered_sentence.append(w)
print(word_tokens)
print(filtered_sentence)

ВЫХОД:

['Это', 'есть', 'а', 'образец', 'предложение', ',', 'показ', 'выкл', 'the', 'стоп', 'слова' , 'фильтрация', '.']
['Это', 'образец', 'предложение', ',', 'показ', 'стоп', 'слова', 'фильтрация', '.']

Подведение итогов

Это был быстрый опыт обработки естественного языка, в котором мы поняли некоторые основы NLP, а также реализовали некоторые методы практически с использованием популярной библиотеки NLTK.

Надеюсь, вам понравилось изучать новые концепции!

Так почему же вы так долго ждете?
Будь проповедником Python сейчас