Векторизатор счетчика

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

Scikit-learn CountVectorizer используется для преобразования набора текстовых документов в вектор количества терминов/токенов. Это также позволяет выполнять предварительную обработку текстовых данных перед созданием векторного представления. Эта функциональность делает его очень гибким модулем представления функций для текста.

О векторизаторах Scikit-Learn

Как вы знаете, машины, какими бы продвинутыми они ни были, не способны понимать слова и предложения так, как это делают люди. Чтобы сделать корпуса документов более привлекательными для компьютеров, их сначала нужно преобразовать в некоторую числовую структуру. Для этого используется несколько методов, но в этом посте я сосредоточусь на моделях Vector Space, также известных как Bag-of-Words (BoW). модели.

Bag-of-Words — это очень интуитивный подход к этой проблеме, методы включают в себя:

1. Разделение документов на токены по какому-то шаблону.

2. Присвоение каждому токену веса, пропорционального частоте его появления в документе и/или корпусе.

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

Объекты векторизатора, предоставляемые Scikit-Learn, довольно надежны прямо из коробки, они позволяют нам эффективно выполнять все вышеперечисленные шаги сразу и даже применять препроцессинг и правила относительно количества и частоты токенов. В довершение ко всему, они бывают трех разных видов (есть и другие версии, такие как DictVectorizers, но они не так распространены):

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

Код Python:

# import pandas и класс CountVectorizer от sklearn
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

# создать фрейм данных из матрицы слов
def wm2df(wm, feat_names):

# создать индекс для каждой строки
doc = ['Doc{:d}'. format(idx) для idx, _ in enumerate(wm)]
df = pd.DataFrame(data=wm.toarray(), index=doc,columns=feat_names)
return(df)

# набор документов
предложение = ['Это первое предложение в нашем корпусе, за которым следует еще одно предложение для демонстрации Сумки слов',
'Это второе предложение в нашем корпус с НЕСКОЛЬКИМИ ЗАГЛАВНЫМИ СЛОВАМИ и несколькими заглавными словами',
'Самый простой, он подсчитывает, сколько раз токен появляется в документе, и использует это значение в качестве своего веса.']

# создать объект векторизатора
cvec = CountVectorizer(lowercase=False)

# преобразовать документы в матрицу терминов документов
wm = cvec.fit_transform(sentence)

# получить термины, найденные в корпусах
tokens = cvec.get_feature_names()

# создаем датафрейм из матрицы
wm2df(wm, tokens)