"Это седьмой день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
резюме
Векторы слов и вложения слов могут использоваться для представления слов.
Но если мы хотим представить весь документ, нам нужно использовать вектор документа.
Когда мы цитируем документ, мы цитируем набор слов, которые имеют какое-то значение для читателя.
- Документ может быть предложением или группой предложений.
- Документ может состоять из обзоров продуктов, твитов или разговоров о фильмах, длина которых может варьироваться от нескольких до тысяч слов.
- Документ можно использовать в проекте машинного обучения (глубокого обучения) как образец текстовых данных, представляющий алгоритм, который может обучаться.
Мы можем представить документ, используя различные методы:
- Проще всего вычислить среднее значение всех векторов слов-компонентов документа и использовать средний вектор для представления документа.
- Другой — Doc2Vec.
Doc2Vec
или позвонилParagraph2vec
представляет собой неконтролируемый алгоритм, который может получитьВекторное представление предложений/параграфов/документов, является расширением word2vec.
Векторы Doc2Vec можно найти, рассчитав расстояние между векторамиПредложения/Абзацы/ДокументыСходство между ними можно использовать для кластеризации текста; для помеченных данных обучение с учителем также можно использовать для классификации текста, например: классическая классификация задач анализа тональности отрицательный.
Основы Dov2Vec
Метод обучения векторов предложений очень похож на метод для векторов слов.
Основная идея Word2Vec заключается в том, что по каждому слову WiПредсказание контекста Wi, что можно понимать как контекстную пару слов для создания слова Wiвлияет, то таким же образом можно обучать и Doc2Vec. на приговор С.
i want to drink water
Если вы хотите предсказать слова в предложенииwant
. Тогда не только признаки могут быть сгенерированы на основе других слов, но также могут быть сгенерированы признаки на основе других слов и предложений S для предсказания.
Приложения Doc2Vec
- Сходство документов: сходство текстов можно сравнить с помощью векторов документов.
- Рекомендации по документам: Рекомендуйте похожие документы на основе уже прочитанных пользователями документов.
- Предсказание документа: создайте модель предсказания на основе контролируемого обучения вектора документа для предсказания тем документа.
упражняться
использоватьgensim
Библиотека для преобразования заголовков новостей в векторы Doc2Vec
Описание официальной документации gensim - вектор Doc2Vec
импортировать библиотеку зависимостей
import pandas as pd
from gensim import utils
from gensim.models.doc2vec import TaggedDocument
from gensim.models import Doc2Vec
from gensim.parsing.preprocessing import preprocess_string,remove_stopwords
import random
import warnings
warnings.filterwarnings("ignore")
загрузить документ
## 载入文档
sample_news_dir = "./data/sample_news_data.csv"
df = pd.read_csv(sample_news_dir)
Определить класс предварительной обработки
Определите класс обработки документов для удаления стоп-слов из документов.
-
preprocess_string
Функция применяет заданный фильтр к входным данным -
remove_stopwords
Функция для удаления стоп-слов из заданного документа
Поскольку Doc2Vec требует, чтобы каждый образецTaggedDocument
экземпляр, поэтому создайте список экземпляров для каждого документа
# 定义预处理类
class DocumentDataset(object):
def __init__(self,data:pd.DataFrame,column):
document = data[column].apply(self.preprocess)
self.documents = [TaggedDocument(text,[index]) for index,text in document.iteritems()]
def preprocess(self,document):
return preprocess_string(remove_stopwords(document))
def __iter__(self):
for document in self.documents:
yield document
def tagged_documents(self,shuffle=None):
if shuffle:
random.shuffle(self.documents)
return self.documents
вызывающий класс
documents_datasets = DocumentDataset(df,"news")
Создайте модель Doc2Vec
Подобно Word2Vec, класс Doc2Vec содержит: min_count, window, vector_size, sample, отрицательный и рабочий параметры. в
-
min_count
: Игнорировать все слова с частотой меньше указанной частоты -
windows
: установить максимальное расстояние между текущим словом и прогнозируемым словом в данном предложении
-
vector_ size
: установить размер каждого вектора -
sample
: определяет порог, который позволяет нам настроить регулярную субдискретизацию высокочастотных слов, допустимый диапазон (0, le -5)
-
negative
: Если > 0, будет использоваться отрицательная выборка, указывающая, сколько пропускаемых слов должно быть нарисовано (обычно от 5 до 20). Если установлено значение 0, отрицательная выборка не используется. -
workers
: количество одновременных потоков для обучения модели (многоядерные машины могут обучаться быстрее).
Чтобы построить словарь из последовательности предложений, Doc2Vec предоставляетbuild_vocab
метод, как вы можете видеть здесь, объект должен бытьTaggedDocument
экземпляр
docVecModel = Doc2Vec(min_count=1,
window=5,
vector_size=100,
sample=1e-4,
negative=5,
workers=2)
docVecModel.build_vocab(documents_dataset.tagged_documents())
Обучите и спасите Doc2Vec
docVecModel.trian(documents_dataset.tagged_documents(shuffle=True),
total_examples=docVecModel.corpus_count,
epochs=30)
docVecModel.save("./docVecModel.d2v")
Посмотреть Doc2Vec
docVecModel[123]