我有几千个文档要在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克列表而不是原始顺序的单词列表组成?
最佳答案
如果您将文档中的所有5克“全部”保留下来(甚至按其出现的顺序),就应该可以将原始文档(或几乎等同的伪文档)缝合在一起,就像5克一样是拼图碎片或多米诺骨牌。
(例如,通过在数据中的顺序位置找到第一个5克,或者找到一个4前缀不是其他5克的4后缀的5克。然后,通过将其4后缀标记与另一候选5克标记的4前缀标记进行匹配来找到其后继者。如果在任何时候您有多个候选“开始”或“继续”,则可以尝试任何一个并保留直到完成或达到死胡同–深度搜索第一个一致的链子–如果死胡同,然后备份并尝试另一个。尽管如此,您也可以选择另一个好的5克开始,然后继续,可能会导致文档顺序稍有错误并重复了一些标记。在大语料库中,此类错误对最终结果的影响不会很大。)
另外,“ PV-DBOW”模式(dm=0
)不使用上下文窗口或相邻单词-因此获取确切的原始单词顺序并不重要,只要以正确的顺序按顺序放置文档即可。因此,仅将所有5克字母连接起来便会创建一个合理的伪文档-尤其是如果您随后丢弃了4/5的任何单词(以说明原始文档中除了开头或结尾处都出现一个单词的事实, 5 5克)。
关于python - 关于Gengram的Gensim doc2vec培训,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60343072/