- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为一个机器学习研究项目处理大量 Yelp 评论数据集。到目前为止,Gensim 运行良好,但是,当我使用 doc2vec.build_vocab()
对我拥有的超过 5,000,000 个文档构建词汇表时......索引似乎全部收集到一个 64 键字典中(当然不应该是这样)。
下面是我为标记文档、构建词汇表和训练模型而编写的脚本。
import os
import time
import pandas as pd
import numpy as np
from collections import namedtuple
from gensim.models.doc2vec import Doc2Vec
from keras.preprocessing.text import text_to_word_sequence
# keras helper function
def text2_word_seq(review):
return text_to_word_sequence(review,
filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n',
lower=True, split=" ")
# instantiate the model
d2v = Doc2Vec(vector_size=300,
window=6, min_count=5, workers=os.cpu_count()-1)
chunksize = 5000
train_data = pd.read_json("dataset/review.json",
chunksize=chunksize,
lines=True)
Review = namedtuple('Review', 'words tags')
documents = list()
for i, data in enumerate(train_data):
print("Looked at %d chunks, %d documents" %
(i, i*chunksize), end='\r', flush=True)
users = data.user_id.values
for j, review in enumerate(data.text):
documents.append(Review(text2_word_seq(review), users[j]))
# build the vocabulary
d2v.build_vocab(documents.__iter__(), update=False,
progress_per=100000, keep_raw_vocab=False, trim_rule=None)
# train the model
d2v.train(documents, total_examples=len(documents), epochs=10)
d2v.save('d2v-model-v001')
保存模型并使用 genim.models.Doc2Vec.load()
加载模型后,模型的 docvecs.doctags
长度为 64。我使用的每个标签构建词汇表时是用户 ID。它不一定是唯一的,但有数千个用户(不是 64 个)。此外,标签显示为单个字符 - 这是不期望的......
>>> len(x.docvecs.doctags)
64
>>> x.docvecs.doctags
{'Y': Doctag(offset=27, word_count=195151634, doc_count=1727798),
'j': Doctag(offset=47, word_count=198241878, doc_count=1739169),
'4': Doctag(offset=17, word_count=195902251, doc_count=1728095),
'J': Doctag(offset=50, word_count=197884244, doc_count=1741666),
'W': Doctag(offset=41, word_count=198804200, doc_count=1741269),
'O': Doctag(offset=23, word_count=196212468, doc_count=1728735),
'o': Doctag(offset=9, word_count=194177928, doc_count=1709768),
'n': Doctag(offset=3, word_count=193799059, doc_count=1714620),
'3': Doctag(offset=34, word_count=197320036, doc_count=1725467),
'F': Doctag(offset=10, word_count=195614702, doc_count=1729058) ...
我在这里做错了什么?
最佳答案
文本示例的 tags
属性应该是标签列表。 (它可以是只包含单个标签的列表,但它必须是一个列表。)
如果您提供一个字符串,对于需要 lis 的代码来说,它将看起来像一个字符字符串列表。因此,您只需训练少量的单字符标签,即您提供的任何 tags
字符串中出现的每个唯一字符一个。
关于python - gensim dovecs.doctags 索引不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49183643/
比方说, word2vec.model 是我训练好的 word2vec 模型。当出现词汇外单词( oov_word )时,我计算向量 vec 使用 compute_vec(oov_word) 方法。现
我有一个现有的 gensim Doc2Vec 模型,我正在尝试对训练集以及模型进行迭代更新。 我拿新文件,照常进行预处理: stoplist = nltk.corpus.stopwords.words
使用 gensim.models.LdaMallet 有什么区别和 gensim.models.LdaModel ?我注意到参数并不完全相同,想知道什么时候应该使用一个而不是另一个? 最佳答案 TL;
我训练了一个 gensim.models.doc2vec.Doc2Vec 模型 d2v_model = Doc2Vec(sentences, size=100, window=8, min_count
我在 gensim 中有一个 word2vec 模型,训练了 98892 个文档。对于句子数组中不存在的任何给定句子(即我训练模型的集合),我需要用该句子更新模型,以便下次查询时给出一些结果。我这样做
我对 Gensim 很陌生,我正在尝试使用 word2vec 模型训练我的第一个模型。我看到所有参数都非常简单易懂,但是我不知道如何跟踪模型的损失以查看进度。此外,我希望能够在每个 epoch 之后获
请帮助我理解如何 TaggedDocument 之间的区别和 LabeledSentence的 gensim作品。我的最终目标是使用 Doc2Vec 进行文本分类模型和任何分类器。我正在关注这个 bl
尝试使用以下代码行在 gensim 中加载文件: model = gensim.models.KeyedVectors.load_word2vec_format(r"C:/Users/dan/txt_
我有一组用神经网络训练的嵌入,与 gensim 的 word2vec 无关。 我想使用这些嵌入作为 gensim.Word2vec 中的初始权重。 现在我看到的是,我可以model.load(SOME
我尝试使用 gensim 导入 import gensim 但出现以下错误 ImportError Traceback (most rece
我正在关注 https://radimrehurek.com/gensim/wiki.html#latent-dirichlet-allocation 上的“英语维基百科”gensim 教程 它解释了
我正在使用 24 核虚拟 CPU 和 100G 内存来训练 Doc2Vec 与 Gensim,但无论修改核数,CPU 的使用率始终在 200% 左右。 top htop 上面两张图显示了cpu使用率,
在将文本文档列表转换为语料库字典,然后使用以下方法将其转换为词袋模型之后: dictionary = gensim.corpora.Dictionary(docs) # docs is a list
我已经使用 Gensim 3.8.0 训练了一个 Word2Vec 模型。后来我尝试在 GCP 上使用使用 Gensim 4.0.o 的预训练模型。我使用了以下代码: model = KeyedVec
我正在构建一个多标签文本分类程序,我正在尝试使用 OneVsRestClassifier+XGBClassifier 对文本进行分类。最初,我使用 Sklearn 的 Tf-Idf 矢量化来矢量化文本
我发现关于 word2vec.similarity() 的警告如下: >d:\python\lib\site-packages\gensim\matutils.py:737: FutureWarnin
我正在尝试使用版本为 3.6 的 Python 的 Gensim 库运行程序。 每当我运行该程序时,我都会遇到这些语句: C:\Python36\lib\site-packages\gensim-2.
我有一个通过 Java 中的 Mallet 训练的 LDA 模型。 Mallet LDA 模型生成了三个文件,这使我能够从文件运行模型并推断新文本的主题分布。 现在我想实现一个 Python 工具,它
我正在使用gensim doc2vec。我想知道是否有任何有效的方法来了解doc2vec的词汇量。一种粗略的方法是计算单词总数,但是如果数据量很大(1GB或更多),那么这将不是一种有效的方法。 最佳答
documentation有点不清楚如何将 fasttext 模型保存到磁盘 - 如何在参数中指定路径,我尝试这样做,但失败并出现错误 文档中的示例 >>> from gensim.test.util
我是一名优秀的程序员,十分优秀!