众所周知,Facebook
的FastText是一个出色的开源、免费、轻量级的库,可用于文本分类。但这里有一个问题是管道似乎是一个端到端的黑盒子。是的,我们可以通过这些选项更改超参数来设置训练配置。但我无法找到访问其内部生成的向量嵌入的方法。
实际上,我想对向量嵌入进行一些操作——例如,除了这些word2vec
表示之外,引入tf-idf
加权,另外我想使用SMOTE
进行过采样,这需要数值表示。基于这些原因,我需要在整体管道中引入我的自定义代码,这对我来说似乎无法访问。如何在该管道中引入自定义步骤?
回答:
完整的源代码可用:
https://github.com/facebookresearch/fastText
因此,如果您习惯于阅读和修改其C++源代码,您可以进行任何更改或扩展。没有任何东西是隐藏或无法访问的。
请注意,FastText及其supervised
分类模式主要是训练浅层神经网络的约定。将其视为其他分类器库架构中的“管道”可能没有帮助——因为内部接口都没有使用这种语言或模块化布局。
具体来说,如果您了解word2vec训练的要点,FastText分类器模式实际上只是用尝试预测已知标签来代替尝试预测邻近(在上下文窗口中)的词汇词。
为了理解FastText与其他技术的关系,以及进一步扩展的潜在方面,我认为回顾以下内容是有用的:
- 这篇对比FastText与更早的‘vowpal wabbit’工具的怀疑博客文章:“Fast & easy baseline text categorization with vw”
- Facebook较少讨论的扩展,将此类向量训练用于更通用的分类或数值任务,“StarSpace”