Какие?
Модель мешка слов (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 и т. д.