我有几千个文档要在gensim doc2vec模型中使用,但是每个文档只有5克,而不是原始单词顺序的全文。在gensim网站(https://radimrehurek.com/gensim/auto_examples/tutorials/run_doc2vec_lee.html)上的doc2vec教程中,使用全文创建了语料库,然后在该语料库上训练模型。看起来像这样:
[TaggedDocument(words=['hundreds', 'of', 'people', 'have', 'been', 'forced', 'to', 'vacate', 'their', 'homes', 'in', 'the', 'southern',...], tags=[1]), TaggedDocument(words=[.....], tags=[2]),...]
是否可以创建一个训练语料库,使每个文档都由5克列表而不是原始顺序的单词列表组成?
答案 0 :(得分:0)
如果您将文档中的所有5克文字“全部”存储起来(甚至按它们出现的顺序排列),则应该可以将原始文档(或几乎等同的伪文档)缝合在一起,就像5克是拼图碎片或多米诺骨牌。
(例如,通过其在数据中的序数位置或找到一个5克(其4前缀标记与其他5克的4后缀标记相同)来找到第一个5克然后,通过将其4后缀标记与另一候选5克标记的4前缀标记进行匹配来找到其后继者。如果在任何时候您有多个候选者“开始”或“继续”,则可以尝试一个并继续前进,直到完成或达到死胡同–深度搜索第一个一致的链子–如果死胡同,则备份并尝试另一个。尽管如此,您也可以选择另一个不错的开始5克,然后继续,可能会导致文档顺序稍有错误并重复了一些标记。在大量语料库中,此类错误对最终结果的影响不大。)
或者,“ PV-DBOW”模式(dm=0
)不使用上下文窗口或相邻单词-因此获取确切的原始单词顺序并不重要,只需使用具有正确权限的替代文档即可单词顺序不限。因此,仅将所有5克字串在一起便会创建一个合理的伪文档-尤其是如果您随后丢弃任何单词的4/5(以说明原始文档中除了开头或结尾处的任何一个单词都出现的事实, 5 5克)。