Gensim:手动生成(目标,上下文,标签)的训练元组

时间:2019-06-11 21:01:09

标签: python nlp gensim word2vec doc2vec

作为一个懒惰的研究人员,我想问这个问题,他只是想快速尝试随机的疯狂想法,而又不花费大量时间重新发明轮子。我完全理解这些不是预期的用例。

为了检验一些假设,我很乐意

  • 以不同的方式(默认滑动窗口)生成(目标,上下文,+ 1)元组。
  • 根据某些规则而不是从随机NCE抽奖中生成负样本(目标,random_context,-1)元组。

例如,我可以获取一个句子的语法分析树,并使用父子关系生成元组,这是一个非线性窗口(有人在NLP研究社区中已经尝试过了,手工编码了...) 。除了随机样本外,我还可以获得反义词字典来查找并生成更多否定样本(不确定,可能有助于更快地收敛)。

是否有一些私有成员函数(以_XX开头的函数)可以重写以实现这些功能?

1 个答案:

答案 0 :(得分:0)

不幸的是,没有简单的扩展点可用于更改(上下文->单词)训练示例或否定示例采样。

当然,完整的源代码是可用的,因此可以作为补丁或通过使用现有代码作为起点来实现。但是,实际上,有关这些步骤的关键循环/决定只能从优化的Cython训练例程内部有效地进行,这很难读取/适应/测试/部署。

an open issue #1623用于重构代码,以使Word2Vec的此类相关变体更易于实现。但是该项目表面上满足这种需求的先前努力PR #1777有点灾难,在新类中增加了更多的间接层并分散了关键操作,而没有提供真正需要的扩展点。)