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

Самая популярная библиотека, используемая для этой работы, - это nltk, которую можно импортировать, выполнив следующую строку кода.

import nltk

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

  1. Токенизация. Разделение текста на более мелкие части называется токенизацией. Это может быть разделение абзацев на предложения и предложения на слова.
# Tokenizing sentences
sentences = nltk.sent_tokenize(paragraph)
 
# Tokenizing words
word = nltk.word_tokenize(paragraph)

2) Основание. Сокращение множества похожих слов до основного слова или основного слова называется основанием.

Самый популярный стеммер, используемый в английском языке, называется Porter Stemmer, он представляет собой библиотеку nltk.

Пример функции Stemmer приведен ниже:

Преимущество:. Это быстрый алгоритм, который может использоваться в моделях, где требуется скорость.

Недостаток: не учитывается значение функции основы, а просто сокращается до основы.

В python это делается так:

#import
from nltk.stem.porter import PorterStemmer
ps = PorterStemmer()
review = [ps.stem(word) for word in review if not word in set(stopwords.words('english'))]

3) Лемматизация означает сокращение похожих слов до их основного слова, имеющего значение, т. е. учитывает использование словарного запаса и морфологического анализа. слов, который направлен на удаление только флективных окончаний и возвращение основы, которая хорошо определена в словарной форме, называемой леммой.

Пример как ниже:

Преимущество: в основном используется в чат-ботах, поскольку его основная идея - давать содержательные ответы.

Недостаток: он медленнее, чем остановка, и где время является главным соображением, это время.

#import
from nltk.stem import WordNetLemmatizer
wordnet=WordNetLemmatizer()
review = [wordnet.lemmatize(word) for word in review if not word in set(stopwords.words('english'))]

4) Стоп-слова:. Слова, не очень важные для языковой обработки, можно удалить перед применением какой-либо модели к это, или перед обработкой его для настроений. Такие слова, как is, an, you, the, могут называться стоп-словами и могут быть импортированы из nltk.corpus как «импортные стоп-слова nltk.corpus».

В Python:

#import
from nltk.corpus import stopwords
review = [wordnet.lemmatize(word) for word in review if not word in set(stopwords.words('english'))]

5) Набор слов. Это способ представления и обработки слов в алгоритмах машинного обучения. Он представляет собой появление и частоту слова. Это модель, используемая в обработке естественного языка, которая представлена ​​как мешок (мультимножество) своих слов, без учета грамматики и даже Порядок слов, но с сохранением номера его появления.

Преимущество:

Учитывается его скорость и частота. Легко реализовать.

Недостаток:

Он не превращает данные в информацию, т. Е. При этом теряется значение слов. Предполагается, что все слова не зависят друг от друга.

Подходит только для небольших данных.

Пример:

Предложение 1. Она очень хорошая и порядочная женщина, а также хороший художник.

Предложение 2. Он плохой человек, но хороший водитель.

Предложение 3. Мужчина и женщина равны в достойном обществе.

# Creating the Bag of Words model
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features = 1500)
X = cv.fit_transform(paragraph).toarray()

6) TFIDF: Частота термина-обратная частота документа - это статистическая формула, по которой оценивается, насколько релевантно слово в тексте в наборе текстов. Он рассчитывается как произведение двух показателей: частоты термина и обратной частоты документа.

Частота термина = количество повторений слов в предложении / количество слов в предложении.

Частота обратного документа = журнал (№ предложения / № предложения, содержащего слова)

Пример:

Предложение 1. Она очень хорошая и порядочная женщина, она также хороший художник.

Предложение 2. Он плохой человек, но хороший водитель.

Предложение 3. Мужчина и женщина равны в достойном обществе.

Удалив из него стоп-слова, предложения могут быть.

Предложение 1: очень хорошая, порядочная женщина, хороший художник.

Предложение 2: плохой человек хороший водитель.

Предложение 3: мужчина и женщина равны в достойном обществе.

Его расчет производится следующим образом:

Преимущества: легко вычислить и реализовать. Он может дать некоторые базовые метрики для извлечения наиболее описательных терминов из текста. он может легко вычислить сходство между двумя текстами, используя его. Поисковая система может его использовать.

Недостатки: TF-IDF не фиксирует семантику или положение слов в тексте.

В Python это можно сделать так:

# Creating the TF-IDF 
from sklearn.feature_extraction.text import TfidfVectorizer
cv=TfidfVectorizer()
X=cv.fit_transform(paragraph).toarray()

7) Word2Vec - это метод обработки естественного языка (НЛП). Алгоритм word2vec использует модель нейронной сети для изучения семантики слова и его ассоциаций из большого объема текста. После обучения такая модель может обнаруживать похожие слова или сообщать нам дополнительные слова для частичного предложения. Как следует из названия, word2vec представляет каждое отдельное слово с определенным списком чисел, называемым вектором.

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

Преимущества:

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

Сопоставление целевого слова со словом контекстного отношения включает сублинейные отношения в векторное пространство слов, так что такие отношения, как «король: мужчина как королева: женщина «Можно вывести по словесным векторам.

Легко понять и реализовать.

Недостатки:

Последовательность слов потеряна, и, следовательно, сублинейные отношения не очень хорошо определены.

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

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

В Python это можно реализовать как:

from gensim.models import Word2Vec
from gensim.models import KeyedVectors
sentences = nltk.sent_tokenize(paragraph)
sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
# Training the Word2Vec model
model=Word2Vec(sentences, min_count=1)
words=model.wv.vocab

# Most similar words
similar=model.wv.most_similar('woman')
#Output
[ ('driver', 0.15176300704479218),
 ('artist', 0.06272515654563904),
 ('good', 0.0425836481153965),
 ('man', -0.0059792473912239075)]

Вывод:

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

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

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

Спасибо за прочтение!

Первоначально опубликовано на https://www.numpyninja.com 26 октября 2020 г.