Какие?

Модель мешка слов (BoW) – это простейшее представление текстового документа, основанное на частоте использования слов и фиксированном объеме словарного запаса.

Почему?

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

Как?

BoW слов необходимо создать словарь из входных текстов, тогда для каждого ввода он будет подсчитывать частоту каждого слова и преобразовывать в векторы. Вот пример использования Python:

пусть наш документ содержит 2 предложения:

«Старик и море», «человек с миссией»

Мы создадим словарь из этих двух, используя CountVectorizer.

from sklearn.feature_extraction.text import CountVectorizer
sentencesList = [“the old man and the sea”,”the man with a mission”]
word_vectorizer = CountVectorizer(analyzer=’word’,tokenizer=None)
word_vectorizer.fit_transform(sentencesList)
print(word_vectorizer.get_feature_names())

это выведет список словаря:

[‘и’, ‘человек’, ‘миссия’, ‘старый’, ‘море’, ‘тот’, ‘с’]

Эти имена функций/список словарных запасов являются уникальными словами, найденными из входного списка предложений. Теперь составьте векторы из предложений, используя этот словарь:

vectors = word_vectorizer.transform(sentencesList)
print(vectors.toarray())

это напечатает векторы для этих двух предложений.

[[1 1 0 1 1 2 0]
[0 1 1 0 0 1 1]]

Первая строка вывода предназначена для первого предложения («старик и море»), а вторая — для второго.

Вывод формы, который мы можем видеть, в первом предложении представлен вектором [1 1 0 1 1 2 0], что говорит о том, что первое предложение имеет

«и» 1 раз, «человек» 1 раз, «миссия» 0 раз, ……, «то» 2 раза ….

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

список предложений и следуйте этому примеру, чтобы составить набор слов

мы также можем попытаться векторизовать новое предложение, используя приведенный выше BoW:

newSentence = “the determined old man is going to the sea again”
newVectors = word_vectorizer.transform([newSentence])
print(newVectors.toarray())
output: [[0 1 0 1 1 2 0]]

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