用Wikicorpus训练的doc2vec模型中的新句子

时间:2019-08-10 16:33:19

标签: python gensim doc2vec

我正在从法国维基百科训练Doc2Vec模型。

我的代码基于此笔记本: https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-wikipedia.ipynb

它实际上处于训练阶段,但是我不知道如何在此之后对新句子进行矢量化处理。

我应该只使用:model.infer_vector [“此处的例句”]吗? 但是在这种情况下,如何进行与Wikicorpus方法相同的处理? (此处未解释:https://radimrehurek.com/gensim/corpora/wikicorpus.html

谢谢!

1 个答案:

答案 0 :(得分:1)

您处在正确的轨道上,但是infer_vector()是一种使用参数调用的方法,而不是提供[]-indexing的对象。而且,它需要一个单词标记列表,而不是原始字符串。因此,以您的小例句为例,一个更好的选择是:

model.infer_vector(['Example', 'sentence', 'here'])

但是,您确实希望确保以与训练数据相同的方式对以后的句子进行预处理和标记化-以便以相同的方式处理大写字母,标点符号等。 (否则,您尝试从中推断出的许多令牌很可能在模型中没有确切的等价物,因此将被忽略。)

您可以在以下位置查看gensim WikiCorpus的来源:

https://github.com/RaRe-Technologies/gensim/blob/f97d0e793faa57877a2bbedc15c287835463eaa9/gensim/corpora/wikicorpus.py#L340

具体来说,您可以在纯文本上重用gensim.utils.tokenize()函数以匹配其标记化。 (如果需要进行完整的“ Wiki文本”预处理,则需要匹配或重复使用该文件中的其他方法)。