训练来自多个语料库的模型

时间:2019-09-25 13:28:56

标签: python artificial-intelligence gensim training-data fasttext

想象一下,由于有了Wikipedia文章,我已经训练了一个快速文本模型(如官方网站上所述)。 是否可以使用另一个语料库(科学文献)再次训练它,从而可以在单词之间添加新的/更相关的链接?尤其是对于科学的人?

总而言之,我需要来自Wikipedia的所有英语单词之间存在经典链接。但是,我想通过有关特定部门的新文档来增强此模型。有没有办法做到这一点 ?如果是的话,是否有办法“对”培训进行“改进”,使来自我的自定义文档的关系将变得“更重要”。

我的最后一个愿望是计算非常科学的文档之间的余弦相似度(这就是为什么我想添加更多科学文档会得到更好的结果)

1 个答案:

答案 0 :(得分:2)

使用特定领域的训练数据来调整更通用的模型通常称为“微调”。

gensim的{​​{1}}实现允许现有模型通过在新训练数据(通过FastText)中看到的内容扩展其已知词汇,然后进行进一步的训练周期,包括该新出现的词汇(通过build_vocab(..., update=True))。

但是,进行这种特殊形式的更新会带来旧的和新的培训数据之间平衡的模糊问题,而没有明确的最佳实践。

仅举一个例子,在一定程度上,原始模型中没有新数据中重复出现的记号/ ngram,新的训练将新数据中的记号/ ngrams拉到最适合新数据的位置。 ..,但可能与旧的令牌/ ngram的兼容性远没有达到可比性。)

此外,很可能某些模型模式(例如负采样与分层softmax)和一些数据混合,比其他方法更有可能从这种方法中受益,但是您几乎必须认真对待自己权衡,没有一般规则可依靠。

(对于其他类型的模型,可能会有更好的微调策略;这只是在说明train() gensim的更新词汇和重复训练的能力。)

但是,也许您感兴趣的领域是科学著作。也许您也有很多有代表性的文章–甚至在培训期间,您都想比较完整的论文。

在那种情况下,您确定要处理从更通用的单词模型开始的复杂性吗?如果实际上您已经在域中使用了您的域单词的足够多且具有代表性的示例,那么为什么要用通用参考材料(如Wikipedia)中的任何主要词义来污染分析>您的域上下文?

因此,我建议第一尝试从您自己的代表数据中训练您自己的模型。并且只有在您担心自己缺少重要的单词/感觉时,才可以尝试以维基百科衍生的感官进行混合。 (在那一点上,另一种融合这种影响的方法是将Wikipedia文本与您的其他语料混合。并且您还应该准备测试这是真的有用还是有害–因为它可能是。)

同样,在您的真正目标是比较完整论文的范围内,您可能希望研究其他文档建模策略,包括单词袋表示法,FastText(“段落向量”)实现。 Doc2Vec或其他。这些方法不一定需要每个单词的向量作为输入,但是对于量化文本到文本的相似性仍然可能很好。