Объяснение того, как извлекать функции из данных документа
Введение
В этой статье объясняется извлечение функций при обработке естественного языка. Данные документа не поддаются вычислению, поэтому их необходимо преобразовать в числовые данные, такие как модель векторного пространства. Эта задача преобразования обычно называется извлечением функции из данных документа.
Извлечение признаков в основном имеет два основных метода: набор слов и встраивание слов. Оба они широко используются и имеют разные подходы. Я объясню их оба и различия между ними.
Показатель
- Пакет слов с TF-IDF
Объяснение концепции и пример кода Python с помощью Sklearn - Встраивание слов
word2vec и его пример кода с Gensim
1. Пакет слов с TF-IDF
Пакет слов с TF-IDF - это традиционный и простой метод извлечения признаков при обработке естественного языка. Bag-of-Words - это «модель представления» текстовых данных, а TF-IDF - «метод расчета» для оценки важности слов в документе.
Мешок слов
Пакет слов - это модель представления данных документа, которая просто подсчитывает, сколько раз слово появляется в документе. Пакет слов обычно используется при кластеризации, классификации и тематическом моделировании путем взвешивания специальных слов и соответствующей терминологии. Ниже приведен процесс преобразования «Мешок слов».
#Sample Sentence John likes to watch movies. Mary likes movies too. (1) Tokenizing. "John","likes","to","watch","movies","Mary","likes","movies","too" (2) Creating word set(dictionary). "John","likes","to","watch","Mary","likes","movies","too" (3) Counting occurrences and transform to Bag-of-words. {"John":1,"likes":2,"to":1,"watch":1,"movies":2,"Mary":1,"too":1}
Процесс интуитивно понятен. Первый шаг - токенизация, которая преобразует предложение в токены. Во-вторых, это создание словаря, который удаляет дублирование слов и составляет набор слов (который называется словарем или словарем). Последний шаг - это подсчет вхождений каждого слова и создание модели «Сумка слов». Как видите, «лайки» и «фильмы» показывают 2, поскольку они встречаются два раза в образце предложения.
Мешок слов с питоном
Здесь показан пример кода Bag-of-Words с питоном. Python позволяет нам писать код просто с помощью Scikit-learn, одной из самых популярных библиотек машинного обучения, предоставляющей API для извлечения функций.
TF-IDF
TF-IDF (Term Frequency / Inverse Document Frequency) - один из самых популярных методов IR (информационный поиск) для анализа важности слова в документе. Согласно исследованию, 83% текстовых рекомендательных систем используют TF-IDF.
TF-IDF оценивает важность слов в документе. Например, «the» обычно используется в любых документах, поэтому TF-IDF не считает «the» важным для характеристики документов. Напротив, «python» используется в теме, относящейся к ИТ, поэтому TF-IDF считает «python» важным функциональным словом для распознавания темы и категории. Ниже приведен код реализации TF-IDF на Python с помощью Scikit-Learn. Как мы видели в примере кода Bag-of-Words, Scikit-learn также позволяет реализовать его в нескольких строках кода.
Если вы хотите узнать больше о TF-IDF, например о формуле и расчетах, перейдите по ссылке ниже.
2. Встраивание слов
Встраивание слов - одно из представлений документа в модели векторного пространства. В отличие от модели Bag-of-Words, он улавливает контексты и семантику слова. Пакет слов представляет только количество вхождений слов в документ без каких-либо связей и контекстов. С другой стороны, встраивание слов сохраняет контексты и взаимосвязи слов, чтобы более точно определять похожие слова.
Встраивание Word имеет несколько различных реализаций, таких как word2vec, GloVe, FastText и т. Д. В следующей главе будет объяснено word2vec как наиболее популярная реализация.
Word2vec
Word2vec - одна из самых популярных реализаций встраивания слов, изобретенная Google в 2013 году. Она описывает встраивание слов с помощью двухуровневых неглубоких нейронных сетей для распознавания значений контекста.
Word2vec хорошо группирует похожие слова и делает очень точные предположения о значениях слов на основе контекстов. Внутри него два разных алгоритма: CBoW (Continuous Bag-of-Words) и модель пропуска граммов.
- Пропустить грамм - это предсказание контекста по целевому слову.
- CBoW (непрерывный набор слов) предназначен для предсказания целевого слова из контекста.
Видео ниже - хорошее объяснение обоих для интуитивного понимания с визуализацией.
Пример кода с Gensim
Gensim - это библиотека Python для обработки естественного языка. Он обеспечивает извлечение функций документа и API-интерфейсы алгоритмов машинного обучения, такие как Word2Vec, FastText, косинусное сходство и т. Д. В этом разделе показан простой код Python для обнаружения word2vec и похожих слов. Этот пример кода относится к официальному руководству.
Gensim позволяет нам писать код очень просто в несколько строк. Gensim широко используется и доказал свою точность во многих проектах, таких как классификация и тематическое моделирование. Если вы хотите углубиться в подробности, обратитесь к официальной документации.
Вывод
В этой статье описаны методы извлечения признаков при обработке естественного языка. Первая - это традиционная модель Bag-of-Words, а вторая - встраивание слов, реализованное с помощью word2vec. Scikit-learn и gensim предоставляют API для извлечения функций, которые позволяют нам очень просто писать код. Имейте в виду, что сначала вам нужно подумать о сторонней библиотеке для написания кода, иначе вы можете потратить много времени на переделку колес. Надеюсь, эта статья как-то поможет вам в развитии обработки естественного языка.
использованная литература
Руководство для новичков по Word2Vec и нейронным вложениям слов