Введение:
Метод 1: представление мешка слов (BoW)
Подход «Мешок слов» подобен бросанию всех слов текста в волшебный котел и созданию числового представления. В Python мы можем использовать класс CountVectorizer из библиотеки scikit-learn для выполнения этого колдовства. Посмотрите следующий фрагмент кода:
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
"The cat chased the mouse",
"The mouse ran away from the cat",
"The cat and the mouse are friends"
]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
# The resulting BoW representation
print(X.toarray())
Метод 2: TF-IDF (частота документа, обратная частоте терминов)
TF-IDF — еще один волшебный метод, который уравновешивает важность слов в документе. Он присваивает более высокий вес словам, которые часто встречаются в документе, но редки во всем корпусе. Давайте посмотрим, как мы можем создать представления TF-IDF с помощью Python:
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"The cat chased the mouse",
"The mouse ran away from the cat",
"The cat and the mouse are friends"
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
# The resulting TF-IDF representation
print(X.toarray())
Метод 3: встраивание слов (Word2Vec)
Встраивание слов похоже на магические заклинания, которые преобразуют слова в плотные числовые векторы. Популярный алгоритм Word2Vec фиксирует семантические и синтаксические отношения между словами, что делает его полезным для задач НЛП. Давайте создадим встраивание слов с помощью библиотеки gensim:
from gensim.models import Word2Vec
corpus = [
["the", "cat", "chased", "the", "mouse"],
["the", "mouse", "ran", "away", "from", "the", "cat"],
["the", "cat", "and", "the", "mouse", "are", "friends"]
]
model = Word2Vec(corpus, min_count=1)
word_vectors = model.wv
# Get the word vector for a specific word
print(word_vectors["cat"])
Метод 4: встраивание документов (Doc2Vec)
Как и встраивания слов, встраивания документов отражают суть всего документа в плотном векторе. Алгоритм Doc2Vec расширяет подход Word2Vec для обработки документов переменной длины. Взгляните на этот фрагмент Python, чтобы творить чудеса:
from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedDocument
corpus = [
TaggedDocument(words=["the", "cat", "chased", "the", "mouse"], tags=["doc1"]),
TaggedDocument(words=["the", "mouse", "ran", "away", "from", "the", "cat"], tags=["doc2"]),
TaggedDocument(words=["the", "cat", "and", "the", "mouse", "are", "friends"], tags=["doc3"])
]
model = Doc2Vec(corpus, vector_size=100, min_count=1, epochs=10)
# Get the document vector for a specific document
print(model.infer_vector(["the", "cat", "chased", "the", "mouse"]))
Поздравляем! Вы только что стали свидетелями возможностей векторизации текста в Python. Мы исследовали представление Bag-of-Words, технику TF-IDF и магию встраивания слов и документов с помощью Word2Vec и Doc2Vec. Имея в своем распоряжении эти методы, вы сможете раскрыть скрытые знания в текстовых данных и с легкостью справиться с задачами НЛП. Так что вперед, друг мой, и пусть магия векторизации текста направит ваши приключения в области науки о данных!