векторизация текста машинное обучение

Игра слов: векторизация, тегирование и анализ настроений

Дата публикации Jun 14, 2019

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Полное раскрытие: я не смотрел и не читал «Игру престолов», но я надеюсь узнать о ней многое, проанализировав текст. Если вы хотите больше узнать об основной обработке текста, вы можете прочитать мойдругая статья, Текст из всех 5 книг можно найтина Kaggle, В этой статье я возьму очищенный текст и использую его для объяснения следующих понятий:

Векторизация

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

Один метод называетсяСумка-оф-слов, который определяет словарь уникальных слов, содержащихся в тексте, а затем находит количество каждого слова в тексте. Например, если бы я должен был собрать список уникальных слов изИгра престолови затем разделить полный список на слова по главам, я получу массив с одной главой на строку и количеством слов, которые будут проходить по столбцам. Недостатки этого метода в том, что он не сохраняет порядок слов ([падение, смерть] и [падение, любовь] имеют совершенно разные значения), и что он не улавливает никакого реального значения слов. Кроме того, если бы мы разбивали текст по главам, главы с большим количеством слов были бы непреднамеренно взвешены более тяжело, так как они имели бы высокие значения по ряду. Тем не менее, это по-прежнему хороший способ увидеть распределение терминов и полезно, если вы хотите увидеть, сколько раз появляется определенное слово. Вот реализация этого текста игры игры престолов, разделенная на главы:

В этом примере page_lemm список длиной 572 (количество страниц), где каждый элемент представляет собой строку слов на этой странице. CountVectorizer() Функция автоматически маркирует и подсчитывает слова во всех строках. Я сделал некоторые закулисные удаления стоп-слов и лемматизации перед использованием кода выше, который вы можете увидеть намой GitHub, Этот код создает фрейм данных, где каждая строка соответствует главе книги, а каждый столбец соответствует одному уникальному слову в тексте. Тело кадра содержит количество каждого слова в главе.

Другой метод, который исправляет некоторые проблемы с Bag-of-Words, называетсяTF-IDF,или термин частота-обратная частота документа. TF-IDF аналогичен предыдущему методу, за исключением того, что значение в каждом столбце для каждой строки масштабируется по количеству терминов в документе и относительной редкости слова.Срок частотаравно количеству появлений слова в документе, деленному на общее количество слов в документе.Обратная частота документавычисляет вес редких слов во всех документах в корпусе, причем редкие слова имеют высокий балл IDF, а слова, которые присутствуют во всех документах в корпусе, имеют IDF, близкий к нулю. Это позволяет словам, которые могут иметь большое значение, по-прежнему влиять на окончательный анализ, если они встречаются редко. Подумайте об этом так: было бы лучше знать, что слово «рука» используется во всех главах книги, или было бы более важно знать, что «смерть» происходит только в 10 из них? TF и IDF умножаются вместе, чтобы получить окончательную оценку TF-IDF. Большой шаг за шагом этот процесс может бытьнашел здесь, Пакет Scikit-Learn ( sklearn ) в Python есть функция TfidfVectorizer() это вычислит значения TF-IDF для вас, показанные здесь:

Как вы можете видеть, код для этих двух методов очень похож и принимает одни и те же входные данные, но дает различное содержимое в пределах фрейма данных. Вместо подсчета каждого слова вычисляется оценка TF-IDF. Вот сравнение 10 лучших слов по среднему количеству сумм слов и 10 лучших слов по среднему баллу TF-IDF. Существует некоторое совпадение, но TF-IDF дает именам персонажей более высокие средние оценки, чем Bag of Words. Я выделил слова, которыенеперекрытие между двумя подходами.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

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

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

После векторизации

POS-теги

Вот фрагмент из того, что было создано выше, и вы можете видеть, что прилагательные представлены как «JJ», существительные как «NN» и так далее. Эта информация будет использоваться при порции позже.

Признание названного лица

[(«Джордж Р. Р. Мартин», «ЧЕЛОВЕК»),
(«Ser Waymar Royce», «PERSON»),
(«Пятьдесят», «КАРДИНАЛ»),
(«Воля», «ЧЕЛОВЕК»),
(«Ройс», «ЧЕЛОВЕК»),
(«Восемь дней», «ДАТА»),
(«Девять», «КАРДИНАЛ»),
(«Веймар Ройс», «ЧЕЛОВЕК»),
(«Gared», «PERSON»),
(«Gared», «ORG»),

(«Сорок лет», «ДАТА»),…]

В приведенном выше коде document3 полный текстИгра престоловв одной строке. Этот пакет эффективно обнаружил и классифицировал все типы организаций. Это было немного запутано в некоторых случаях Gared (однажды это классифицировало его как ЛИЦА, другое как ORG, и другое позже как WORK_OF_ART). Однако в целом это дало больше понимания содержания текста, чем просто пометка POS. Ниже приведено количество совпадений для каждого типа сущностей и найденных топовых сущностей. Неудивительно, что в тексте было найдено много имен.

Chunking и Chinking

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

Эта идея очень похожа на NER, так как вы можете сгруппировать NN или NNP (существительные или собственные существительные) вместе, чтобы найти полные имена объектов. Также сопоставимым шаблоном может быть любая комбинация частей речи, которая полезна при поиске определенных видов фраз. Однако, если маркировка POS неверна, вы не сможете найти типы фраз, которые вы ищете. Я только искал здесь существительные фразы, но есть больше типов кусков, включенных в мой

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

отрицательный: 0,691; новый: 0,309; полож. 0,0;Сир Уэймар Ройс спросил с намеком на улыбку.соединение: 0,3612

отрицательный: 0,0; новый: 0,783; положительный: 0,217;Гаред не встал на удочку.соединение: 0.0

, отрицательный: 0,0, новый: 1,0, положительный: 0,0,…

Поскольку это анализ текста книги, а не текста рецензий, многие предложения будут иметь нейтральную сложную оценку (0). Однако это совершенно нормально для моих целей, потому что я просто ищу общие тенденции в языке книги со временем. Но все же приятно видеть, что когда упоминается мертвый, применяется отрицательная оценка. textblob.textBlob() TextBlobеще один полезный пакет, который может выполнять анализ настроений. Как только вы превратите свой текст в объект TextBlob (), он имеет функции для токенизации, лемматизации, маркировки простого текста и создания WordNet, который количественно определяет сходство между словами Есть много различных текстовых объектов, специфичных для этого пакета, которые позволяют действительно крутые преобразования, correct() объяснил здесь, Есть дажефункция, которая попытается исправить орфографические ошибки. Я не буду вдаваться в большинство из них в этой статье, поскольку я пытаюсь проанализировать книгу, которая, как правило, должна иметь правильное написание и синтаксис, однако многие из этих инструментов были бы полезны при работе с особенно запутанными текстовыми данными. Вот версия анализа настроений TextBlob на первой странице

субъективность = 0,4)Сир Уэймар Ройс спросил с намеком на улыбку.Настроение (полярность = 0,3

субъективность = 0,1)Гаред не встал на удочку.Настроение (полярность = 0.0

Существует сходство между оценками чувств nltk и textblob, но версия nltk обладает большей вариабельностью, поскольку является составной оценкой. Чувства текстового шарика альтернативно имеют субъективную оценку, которая хороша для определения точности классификации предложения. Ниже приведено распределение настроений по страницам для каждого метода. Textblob в целом дал более высокие оценки настроения, в то время как nltk имел больше различий с оценкой.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Если вы пытаетесь собрать чувства из текста в социальных сетях или смайликов,VADER Анализ настроений это инструмент, специально созданный для этой задачи. Он имеет встроенный сленг (lol, omg, nah, meh и т. Д.) И может даже понимать эмодзи. Хорошее прохождение того, как его использовать, может бытьнашел здесь, Кроме того, если Python не подходит для анализа текста, существуют другие методы на разных языках / в программном обеспечении для анализа настроений, которые

! Не стесняйтесь брать и использовать код, как вам угодно. Моя другая статья «Обработка текста идет» может быть

Источник

Векторизация текста машинное обучение

Обработка естественного языка или NLP (Natural Language Processing) занимается применением алгоритмов Machine Learning для текстовых данных. Как правило, модели машинного обучения работают с числами. В этой статье поговорим о 4-х наиболее применяемых методах для перевода текстов в числовые тензоры.

Основные термины NLP: корпус, документ, токен, словарь

Сначала текст разбивается на текстовые единицы (токены), например, символы, слова, словосочетания, предложения, абзацы и т.д. Чаще всего разбивают на слова. Токены образуют словарь, который может быть отсортирован по алфавиту.
Также в NLP применяются термины «документ» и «корпус». Документ – это совокупность токенов, которые принадлежат одной смысловой единице. В качестве документа может выступать предложение, комментарий или пост пользователя. Корпус – это генеральная совокупность всех документов.
Рассмотрим пример. Допустим имеется два предложения: “Пес сел на пень”, “Кот сел на ель”. Выберем в качестве токенов слова, тогда получится следующий словарь:

и два документа, которые составляют корпус:

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

1. Прямое кодирование

Прямое кодирование (one-hot encoding) считается самым простым способом преобразования токенов в тензоры и выполняется следующим образом:

С нашими предложениями это выглядит так:

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

2. Bag of words

В отличие от прямого кодирования, мешок слов (Bag of words) выделяет вектору весь документ, и каждый элемент кодируется 1 по порядку следования слов в словаре:

Bag of words решает проблему размерности по одной оси. Количество строк определяется количеством документов. Однако, этот метод не учитывает важность того или иного токена, ведь одно слово может повторятся по несколько раз. В этом случае пригодится альтернативный способ, рассмотренный далее.

3. TF-IDF

TF-IDF состоит из двух компонентов: Term Frequency (частотность слова в документе) и Inverse Document Frequency (инверсия частоты документа). Они считаются следующим образом:

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

где векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение— сколько раз встречается токен в векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение-ом документе,
векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение— общее количество токенов в векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение-ом документе,
векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение— количество документов, в которых встречается токен,
векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение— общее количеств документов.
В конечном счете, TF-IDF – это произведение TF на IDF:

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Стоит отметить, что TF считается для токенов документа, тогда как IDF – токенов всего корпуса. Итак, у нас имеется 2 документа, в каждом из которых оказалось по 4 слова. В этом случае вычисления будут следующими:

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучениеВычисления TF-IDF

В результате получили для 1-го документа такие важные слова, как “Пес” и “пень”, для 2-го — “Кот” и “ель”. В TF-IDF редкие слова и слова, которые встречаются во всех документах, несут мало информации. Кроме того, IDF можно считать и другими способами, например, в Python-библиотеке Scikit-learn этот параметр гибко регулируется.

4. Word Embeddings

Все вышерассмотренные NLP-методы отличаются следующими недостатками:

На практике все чаще используется word embeddings – векторное представление слов. Векторы можно складывать, вычитать, сравнивать. Например, можно ли сложить слова “Король” и “Женщина”? Можно предположить, что будет “Королева”. А можно ли сравнить близость слов “мужчина”, “мальчик”, “девочка”? Напрашивается, что “мужчина” и “мальчик” стоят ближе друг к другу. На изображении показано, как это выглядит графически:

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучениеВекторное пространство слов

В этом примере на одной стороне животные, на другой люди. Со стороны животных возможен переход от домашних к диким или от псовых к кошачьим. Со стороны людей возможен переход по полу и возрасту. Именно так и работают word embeddings, представляя слова (токены) в векторы.
Самой распространенной реализацией векторного представления слов является Word2vec. Архитектура Word2vec подразделяется на два вида — Skip-gram и Continuous Bag of Words (CBOW).
Skip-gram получает на вход одно слово и предсказывает подходящий контекст. Например, предсказываем контекст к слову “Пес”, он может выглядеть так:

В свою очередь, CBOW пытается угадать слово, исходя из контекста. Например, следующее слово в предложении “Кот сел на […]” может быть следующим:

Контекст для word embeddings является очень важным. Юридические документы отличаются от комментариев в социальных сетях, поэтому и результат может быть разным.

В следующей статье поговорим об первичной обработке текстов. А получить практические навыки работы с текстами в NLP на реальных задачах Data Science вы сможете на наших курсах по Python в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.

Источник

Основы Natural Language Processing для текста

Обработка естественного языка сейчас не используются разве что в совсем консервативных отраслях. В большинстве технологических решений распознавание и обработка «человеческих» языков давно внедрена: именно поэтому обычный IVR с жестко заданными опциями ответов постепенно уходит в прошлое, чатботы начинают все адекватнее общаться без участия живого оператора, фильтры в почте работают на ура и т.д. Как же происходит распознавание записанной речи, то есть текста? А вернее будет спросить, что лежит в основе соврменных техник распознавания и обработки? На это хорошо отвечает наш сегодняшний адаптированный перевод – под катом вас ждет лонгрид, который закроет пробелы по основам NLP. Приятного чтения!

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Что такое Natural Language Processing?

Natural Language Processing (далее – NLP) – обработка естественного языка – подраздел информатики и AI, посвященный тому, как компьютеры анализируют естественные (человеческие) языки. NLP позволяет применять алгоритмы машинного обучения для текста и речи.

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

Сегодня у многих из нас есть смартфоны с распознаванием речи – в них используется NLP для того, чтобы понимать нашу речь. Также многие люди используют ноутбуки со встроенным в ОС распознаванием речи.

Примеры

Cortana

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

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

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Siri это помощник для ОС от Apple: iOS, watchOS, macOS, HomePod и tvOS. Множество функций также работает через голосовое управление: позвонить/написать кому-либо, отправить письмо, установить таймер, сделать фото и т.д.

Gmail

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

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

Dialogflow

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Платформа от Google, которая позволяет создавать NLP-ботов. Например, можно сделать бота для заказа пиццы, которому не нужен старомодный IVR, чтобы принять ваш заказ.

Python-библиотека NLTK

NLTK (Natural Language Toolkit) – ведущая платформа для создания NLP-программ на Python. У нее есть легкие в использовании интерфейсы для многих языковых корпусов, а также библиотеки для обработки текстов для классификации, токенизации, стемминга, разметки, фильтрации и семантических рассуждений. Ну и еще это бесплатный опенсорсный проект, который развивается с помощью коммьюнити.
Мы будем использовать этот инструмент, чтобы показать основы NLP. Для всех последующих примеров я предполагаю, что NLTK уже импортирован; сделать это можно командой import nltk

Основы NLP для текста

В этой статье мы рассмотрим темы:

1. Токенизация по предложениям

Токенизация (иногда – сегментация) по предложениям – это процесс разделения письменного языка на предложения-компоненты. Идея выглядит довольно простой. В английском и некоторых других языках мы можем вычленять предложение каждый раз, когда находим определенный знак пунктуации – точку.

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

Возьмем небольшой текст про настольную игру нарды:

Чтобы сделать токенизацию предложений с помощью NLTK, можно воспользоваться методом nltk.sent_tokenize

На выходе мы получим 3 отдельных предложения:

2. Токенизация по словам

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

Тем не менее, могут возникнуть проблемы, если мы будем использовать только пробел – в английском составные существительные пишутся по-разному и иногда через пробел. И тут вновь нам помогают библиотеки.

Давайте возьмем предложения из предыдущего примера и применим к ним метод nltk.word_tokenize

3. Лемматизация и стемминг текста

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

Приведение разных словоформ к одной:

То же самое, но уже применительно к целому предложению:

Лемматизация и стемминг – это частные случаи нормализации и они отличаются.

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

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

Отличие в том, что стеммер (конкретная реализация алгоритма стемминга – прим.переводчика) действует без знания контекста и, соответственно, не понимает разницу между словами, которые имеют разный смысл в зависимости от части речи. Однако у стеммеров есть и свои преимущества: их проще внедрить и они работают быстрее. Плюс, более низкая «аккуратность» может не иметь значения в некоторых случаях.

4. Стоп-слова

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Стоп-слова – это слова, которые выкидываются из текста до/после обработки текста. Когда мы применяем машинное обучение к текстам, такие слова могут добавить много шума, поэтому необходимо избавляться от нерелевантных слов.

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

Рассмотрим, как можно убрать стоп-слова из предложения:

Если вы не знакомы с list comprehensions, то можно узнать побольше здесь. Вот другой способ добиться того же результата:

Тем не менее, помните, что list comprehensions быстрее, так как оптимизированы – интерпретатор выявляет предиктивный паттерн во время цикла.

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

5. Регулярные выражения.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Регулярное выражение (регулярка, regexp, regex) – это последовательность символов, которая определяет шаблон поиска. Например:

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

Модуль re в Python представляет операции с регулярными выражениями. Мы можем использовать функцию re.sub, чтобы заменить все, что подходит под шаблон поиска, на указанную строку. Вот так можно заменить все НЕслова на пробелы:

Регулярки – это мощный инструмент, с его помощью можно создавать гораздо более сложные шаблоны. Если вы хотите узнать больше о регулярных выражениях, то могу порекомендовать эти 2 веб-приложения: regex, regex101.

6. Мешок слов

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

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

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

Чтобы использовать модель, нам нужно:

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

Пример:
Рассмотрим шаги создания этой модели. Мы используем только 4 предложения, чтобы понять, как работает модель. В реальной жизни вы столкнетесь с бОльшими объемами данных.

1. Загружаем данные

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Представим, что это наши данные и мы хотим загрузить их в виде массива:

Для этого достаточно прочитать файл и разделить по строкам:

2. Определяем словарь

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

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

Для создания словаря можно использовать класс CountVectorizer из библиотеки sklearn. Переходим к следующему шагу.

3. Создаем векторы документа

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

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

Теперь мы можем создать мешок слов используя вышеупомянутый класс CountVectorizer.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Это наши предложения. Теперь мы видим, как работает модель «мешок слов».

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Еще пару слов про мешок слов

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Сложность этой модели в том, как определить словарь и как подсчитать вхождение слов.

Когда размер словаря увеличивается, вектор документа тоже растет. В примере выше, длина вектора равна количеству известных слов.

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

Как следствие, в векторном представлении будет много нулей. Векторы с большим количеством нулей называются разреженным векторами (sparse vectors), они требуют больше памяти и вычислительных ресурсов.

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

N-грамма это последовательность каких-либо сущностей (слов, букв, чисел, цифр и т.д.). В контексте языковых корпусов, под N-граммой обычно понимают последовательность слов. Юниграмма это одно слово, биграмма это последовательность двух слов, триграмма – три слова и так далее. Цифра N обозначает, сколько сгруппированных слов входит в N-грамму. В модель попадают не все возможные N-граммы, а только те, что фигурируют в корпусе.

Рассмотрим такое предложение:

Оценка (скоринг) слов

Когда создан словарь, следует оценить наличие слов. Мы уже рассматривали простой, бинарный подход (1 – есть слово, 0 – нет слова).

Есть и другие методы:

7. TF-IDF

У частотного скоринга есть проблема: слова с наибольшей частотностью имеют, соответственно, наибольшую оценку. В этих словах может быть не так много информационного выигрыша для модели, как в менее частых словах. Один из способов исправить ситуацию – понижать оценку слова, которое часто встречается во всех схожих документах. Это называется TF-IDF.

TF-IDF (сокращение от term frequency — inverse document frequency) – это статистическая мера для оценки важности слова в документе, который является частью коллекции или корпуса.

Скоринг по TF-IDF растет пропорционально частоте появления слова в документе, но это компенсируется количеством документов, содержащих это слово.

Формула скоринга для слова X в документе Y:

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение
Формула TF-IDF. Источник: filotechnologia.blogspot.com/2014/01/a-simple-java-class-for-tfidf-scoring.html

TF (term frequency — частота слова) – отношение числа вхождений слова к общему числу слов документа.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

IDF (inverse document frequency — обратная частота документа) — инверсия частоты, с которой некоторое слово встречается в документах коллекции.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

В итоге, вычислить TF-IDF для слова term можно так:

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Можно использовать класс TfidfVectorizer из библиотеки sklearn, чтобы вычислить TF-IDF. Давайте проделаем это с теми же сообщениями, что мы использовали в примере с мешком слов.

векторизация текста машинное обучение. Смотреть фото векторизация текста машинное обучение. Смотреть картинку векторизация текста машинное обучение. Картинка про векторизация текста машинное обучение. Фото векторизация текста машинное обучение

Заключение

В этой статье были разобраны основы NLP для текста, а именно:

Если вы хотите увидеть все описанные концепции в одном большом примере, то вам сюда.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *