问题描述
背景
在我的项目开始时,重点是比较收到的请求/问题在内容方面的不同。我训练了一个doc2vec
模型,结果非常好(作为参考,我的数据包括1400万个请求)。
class PhrasingIterable():
def __init__(self,my_phraser,texts):
self.my_phraser = my_phraser
self.texts = texts
def __iter__(self):
return iter(self.my_phraser[self.texts])
docs = DocumentIterator()
bigram_transformer = Phrases(docs,min_count=1,threshold=10)
bigram = Phraser(bigram_transformer)
corpus = PhrasingIterable(bigram,docs)
sentences = [TaggedDocument(doc,[i]) for i,doc in enumerate(corpus)]
model = doc2vec(window=5,vector_size=300,min_count=10,workers = multiprocessing.cpu_count(),epochs = 10,compute_loss=True)
model.build_vocab(sentences)
model.train(sentences,total_examples=model.corpus_count,epochs=model.epochs)
但是,在第二阶段,分析的重点从每周的请求转移到个人。为了衡量每个星期不同请求的不同之处,我提取了给定周t中请求的所有单词,并使用d2v_model.wv.n_similarity
与前t-1周中请求中的所有单词进行了比较。由于我需要在其他领域进行复制,因此我发现我本来可以使用doc2vec
来获得相同的度量,却浪费了大量的内存和时间训练Word2Vec
模型。因此,我训练了以下Word2Vec
模型:
docs = DocumentIterator()
bigram_transformer = gensim.models.Phrases(docs,threshold=10)
bigram = gensim.models.phrases.Phraser(bigram_transformer)
sentences = PhrasingIterable(bigram,docs)
model = Word2Vec(window=5,size=300,iter = 10,epochs=model.epochs)
我再次使用余弦相似度来比较每周w2v_model.wv.n_similarity
的内容。作为健全性检查,我比较了Word2Vec
和doc2vec
产生的相似性,两者之间的相关系数约为0.70,并且规模相差很大。我的隐含假设是,在训练有素的d2v_model.wv.n_similarity
中使用Word2Vec
比较提取的单词集是在利用doc2vec
。
我的问题
当我们从doc2vec
到Word2Vec
进行交易时,两组提取的单词之间的余弦相似度度量是否应该不同?如果是这样,为什么?我不会,关于我的代码有什么建议吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)