Объяснение того, как извлекать функции из данных документа

Введение

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

Извлечение признаков в основном имеет два основных метода: набор слов и встраивание слов. Оба они широко используются и имеют разные подходы. Я объясню их оба и различия между ними.

Показатель

  1. Пакет слов с TF-IDF
    Объяснение концепции и пример кода Python с помощью Sklearn
  2. Встраивание слов
    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 и нейронным вложениям слов

Введение в встраивание Word и Word2Vec

Введение в встраивание слов

Вложение слов

12.1: Что такое word2ve? - Программирование с текстом