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

Проблемы обработки естественного языка часто связаны с распознаванием речи, пониманием естественного языка и генерацией естественного языка.

Все, что мы выражаем (устно или письменно), несет в себе огромное количество информации. Тема, которую мы выбираем, наш тон, наш выбор слов, все добавляет некую информацию, которую можно интерпретировать и извлечь из нее ценность. Теоретически мы можем понять и даже предсказать поведение человека, используя эту информацию.

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

Что такое текст?

Вы можете представить текст как последовательность символов, слов, предложений, абзацев, фраз и именованных объектов и т. д .;

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

Предварительная обработка текста

Машинное обучение принимает данные в виде чисел. Существует множество методов кодирования, таких как BagOfWord, n-gram, TF-IDF, Word2Vec, OHE, для кодирования текста в числовой вектор. Но перед кодированием нам сначала нужно очистить текстовые данные, и этот процесс подготовки (или очистки) текстовых данных перед кодированием называется предварительной обработкой текста. Он преобразует текст в более удобоваримую форму, чтобы алгоритмы машинного обучения могли работать лучше.

В обработке естественного языка предварительная обработка текста — это практика очистки и подготовки текстовых данных. NLTK и re — распространенные библиотеки Python, используемые для решения многих задач предварительной обработки текста.

Очистка текста

  1. Нормализация текста/регистра

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

hi welcome to the course on text analytics. text analytics is a very important course

2. Маркировка текста

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

['Hi', 'welcome', 'to', 'the', 'course', 'on', 'Text', 'Analytics', '.', 'TEXT', 'analytics', 'is', 'a', 'very', 'important', 'course']
['This', 'hotel', 'is', 'awesome', ',', 'isn', "'", 't', 'it', '?', 'it', 'couldn', "'", 't', 'have', 'been', 'a', 'better', 'place', 'than', 'this']
['LMAO', '#killing', 'it', ',', 'luv', 'mah', 'lyf', 'YOLO', 'LOL', ':D', ':D', '<3', '@raju']
['#chilling', '#lifegoals', '#yolo', '#wanderlust']
['chilling', 'lifegoals', 'yolo', 'wanderlust']

Удаление стоп-слов и знаков препинания

['!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~']
[nltk_data] Downloading package stopwords to
[nltk_data]     C:\Users\SatishMoparthi\AppData\Roaming\nltk_data...
['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't"]
[nltk_data]   Unzipping corpora\stopwords.zip.
['able', 'work', 'today', 'taking']

3. Вывод

Стемминг — это процесс сведения слова к его основе, которая присоединяется к суффиксам и префиксам или к корням слов, известным как лемма. Выделение корней важно для понимания естественного языка (NLU) и обработки естественного языка (NLP).

  1. Портер-стеммер - самый старый из них, первоначально разработанный в 1979 году.
  2. Snowball Stemmer — сложный стеммер, поддерживает несколько языков. быстрее, чем стеммер Портера.
['he', 'is', 'veri', 'method', 'and', 'orderli', 'in', 'hi', 'execut']
['he', 'is', 'veri', 'method', 'and', 'order', 'in', 'his', 'execut']

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

  • Подобно стеммингу, лемматизация переводит слово в корневую форму, называемую леммой.
  • Он включает в себя преобразование слов в их словарную форму.
  • Лемма слова — это его словарная или каноническая форма.
  • Lemmetizer в NLTK использует набор данных WordNet, который содержит список синонимов.
  • Lemmetize очень агрессивно переводит слово в корневую форму.
  • если слово, которое нужно выделить, не является частью словаря, оно оставляется как есть
  • гарантирует, что смысл предложения не изменится
  • В большинстве сценариев нет. отдельные слова после лемматизации могут быть такими же, как и раньше
  • каждый шаг в очистке текста помогает сократить количество слов. но лемметизатор может не иметь значения.
['he', 'is', 'driving', 'and', 'drive', 'the', 'down', 'of', 'the', 'drived', 'vehicle']
['he', 'be', 'drive', 'and', 'drive', 'the', 'down', 'of', 'the', 'drive', 'vehicle']
Difference between Lemmetization and Stemming. 
['study', 'studying', 'cry', 'cry', 'his', 'like', 'execute', 'orderly', 'university', 'universal']
['studi', 'studi', 'cri', 'cri', 'his', 'like', 'execut', 'order', 'univers', 'univers']

Визуализация текстовых данных

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

2. Гистограмма

Преобразование текста в числовой формат

  1. DTM — матрица терминов документов. Матрица терминов документов — это математическая матрица, описывающая частоту терминов, встречающихся в наборе документов. В матрице терминов документов строки соответствуют документам в коллекции, а столбцы — терминам. Матрица документа терминов (TDM) транспонируется из DTM.

Мешок слов создает разреженную матрицу.

Разреженность = количество нулевых элементов / общее количество элементов

Document Term Matrix 
    good  interest  paper  plain  realli  thi
0     2         1      1      1       1    1
1     0         1      1      0       0    0


Term Document Matrix 
           0  1
good      2  0
interest  1  1
paper     1  1
plain     1  0
realli    1  0
thi       1  0

2. Частота термина ( tf ) : дает нам частоту слова в каждом документе в корпусе. Это отношение количества раз, которое слово появляется в документе, к общему количеству слов в этом документе. Он увеличивается по мере увеличения количества вхождений этого слова в документе.

Частота терминов — количество вхождений слова/общее количество слов в документе.

doc0 = ‘хорошая обычная бумага действительно хороший процент’
doc1 = ‘бумажный интерес’

TF(хорошо,doc0) = 2/6 = 1/3
TF(интерес,doc0)=1/6

3. Частота документа ( df ):

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

doc0 = ‘хорошая обычная бумага действительно хороший процент’
doc1 = ‘бумажный интерес’

DF(хорошо) = 1/2 =DF(обычно) = DF(реально)
DF(проценты) = 2/2 = 1 = DF(бумага)

Слово хороший присутствует только в одном документе из 2-х. А слово интерес присутствует в обоих документах.

4. Обратная частота документов ( idf ): обратная частота документов – это показатель того, является ли термин общим или редким в данном корпусе документов. Его получают путем деления общего количества документов на количество документов, содержащих термин в корпусе. IDF пытается взвесить, насколько релевантно слово документу.

Обратная частота документа — ln(1/DF) = ln(общее количество документов/количество документов, в которых присутствует слово)

Значения IDF будут низкими, если слово присутствует в большинстве/всех документах
Значения IDF будут высокими, если слово присутствует в нескольких документах

почему мы используем журнал для IDF?

Использование бревна можно понять из закона Цапфа. Встречаемость слов в английском языке следует распределению по степенному закону, некоторые слова, такие как «the» и «in», часто встречаются в употреблении, в то время как такие слова, как геометрия и цивилизация, встречаются в тексте реже. IDF без журнала будет иметь большие числа, которые будут доминировать в модели ML. Взятие журнала снизит доминирование IDF в значениях TF-IDF.

5. TF-IDF :TF-IDF — это статистическая мера, которая оценивает, насколько релевантно слово документу в наборе документов. Это делается путем умножения двух показателей: сколько раз слово встречается в документе, и обратной частоты слова в документе в наборе документов.

TFIDF помогает при поиске документов:
1. насколько часто слово встречается в документе
2. насколько релевантно слово в разных документах.

высокий tf-idf означает, что слово встречается в документе чаще и имеет большее значение.

TFIDF(хорошо,0) = Tf(хорошо,0) * IDF(хорошо) = 2/6*0,69 = 0,23
TFIDF(проценты,0) = TF(проценты,0)*IDF(проценты) = 1 /6 *0 = 0

6. n-граммы ( униграмма, биграмма, 3-грамма, 4-грамма):

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

Векторизатор подсчета можно применить к n-граммам:

  • 1 грамм — одно слово как характеристика
  • bi-gram — Пара слов как характеристика
  • триграмма — 3 слова как характеристика
  • по умолчанию векторизатор счета применяется к 1 грамму.
  • Аргумент ngram_range позволит нам получить DTM для любой из комбинаций n-грамм.

2-граммовый код

код 1 и 2 грамма

7. Word2Vec / Среднее значение Word2Vec / Взвешенное значение Tf-Idf word2vec

Этот прием принимает смысловое значение предложения. Слово преобразовано в вектор измерения. Это не разреженный вектор и обычно имеет размерность ‹‹ BOW ( DTM ) и TF-IDF. Если два слова семантически похожи, то векторы этих слов геометрически ближе.

Word2Vec также сохраняет отношения между такими словами, как King:Queen::Man:Woman.

Вектор (мужчина) — Вектор (женщина) || Вектор(король) — Вектор(королева)

Вектор(прогулка) — Вектор(прогулка) || Вектор(плавание) — Вектор(плавание)

|| -› параллельно

Google взял корпус данных из Новостей Google, чтобы обучить свой метод Word2Vec.

Средний показатель W2V:

В качестве примера возьмем некоторые отзывы от конечного пользователя. В каждом обзоре есть последовательность слов/предложений.

вектор v1 обзора r1 равен

среднее значение w2v(r1) = (1/(количество слов в r1)(w2v(w1)+w2v(w2)+….+))

Взвешенное слово Tf-Idf word2vec

tfidf w2v для r1 = (tfidf(w1)*w2v(w1)+tfidf(w2)*w2v(w2)+……)/(tfidf(w1)+tfidf(w2)+…….)