所以我开始尝试学习Doc2Vec,特别是余弦相似度输出。基本上,当我尝试将一个新句子与我训练模型的句子列表进行匹配时,我得到了意想不到的输出。如果有人能帮上忙,那就太棒了,下面是我的代码: import gensim
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
import nltk
from nltk.tokenize import word_tokenize
data = [
'I love machine learning'
,'I love coding
我正在用doc2vec实现一个简单的gensim,而不是a word2vec
我需要删除停止词,而不丢失正确的顺序列表的列表。
每个列表都是一个文档,正如我对doc2vec所理解的,模型将有一个TaggedDocuments列表作为输入。
model = Doc2Vec(lst_tag_documents, vector_size=5, window=2, min_count=1, workers=4)
dataset = [['We should remove the stopwords from this example'],
['Otherwise th
我正在为推荐API评估Doc2Vec。我找不到一个合适的预先训练过的模型,所以我在语料库上训练了一个模型,大约有8000个小文档。
model = Doc2Vec(vector_size=25,
alpha=0.025,
min_alpha=0.00025,
min_count=1,
dm=1)
然后我在语料库中循环查找每一份文件的类似文件。结果不太好(与TF-国防军相比)。注意,这是在测试不同的时代和矢量大小之后。
i
我正在比较各种技术,并想找出对大量文本文档进行矢量化和降维的最佳方法。我已经测试了Bag of Words和TF-IDF,并使用PCA、SVD和NMF进行了降维。使用这些方法,我可以减少我的数据,并知道基于解释的方差的最佳维度数量。 然而,我想用doc2vec做同样的事情,考虑到doc2vec本身是一个降维工具,找出我的模型的维数的最佳方法是什么?有没有什么统计方法可以帮助我找到vector_size的最佳数量? 提前感谢!
我训练我的doc2vec模型:
data = ["Sentence 1",
"Sentence 2",
"Sentence 3",
"Sentence 4"]
tagged_data = [TaggedDocument(words=word_tokenize(_d.lower()), tags[str(i)])
for i, _d in enumerate(data)]
培训部分:
model = Doc2Vec(siz
我想比较两个字符串之间的相似性,我可以用word2vec模型或gensim中的doc2vec模型来计算wmd距离。但我不能理解doc2vec模型的wmd是如何工作的。
def preprocess(doc):
return doc.lower().split()
s1 = 'i would like five rooms'
s2 = 'i would like four rooms'
s1 = preprocess(s1)
s2 = preprocess(s2)
model1 = gensim.models.KeyedVectors.load
我使用MySentences类从目录中的所有文件中提取句子,并使用这个句子来训练word2vec模型。我的数据集没有标签。
class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
for fname in os.listdir(self.dirname):
for line in open(os.path.join(self.dirname, fname)):
我对Gensim的most_similar模型中的Doc2Vec方法有困难。当我运行most_similar时,我只得到前10个标记文档的相似性(基于它们的标记--总是从0到9)。对于这段代码,我使用了topn=5,但是我使用了topn=len(文档),而且我仍然只获得前10个文档的相似性
附有标签的文件:
tokenizer = RegexpTokenizer(r'\w+')
taggeddoc=[]
for index,wod in enumerate(model_data):
wordslist=[]
tagslist=[]
tokens = t