Изучение векторизации текста в Python: руководство по магии НЛП

Введение:

Метод 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. Имея в своем распоряжении эти методы, вы сможете раскрыть скрытые знания в текстовых данных и с легкостью справиться с задачами НЛП. Так что вперед, друг мой, и пусть магия векторизации текста направит ваши приключения в области науки о данных!