python - 文档相似度的文档嵌入模型
问题描述
首先,我想解释一下我的任务。我有一个包含 300k 个文档的数据集,平均 560 个单词(还没有删除停用词)75% 是德语,15% 是英语,其余的是不同的语言。目标是根据现有文件推荐类似的文件。一开始我想专注于德语和英语文档。
为了实现这个目标,我研究了几种用于文档相似度特征提取的方法,尤其是词嵌入方法给我留下了深刻的印象,因为它们与简单的 TF-IDF 特征提取和余弦相似度计算相比具有上下文感知能力。
我对我可以使用的方法的数量感到不知所措,而且我还没有找到对这些方法的适当评估。我确信我的文档对于 BERT 来说太大了,但是有来自 Google 的 FastText、Sent2Vec、Doc2Vec 和 Universal Sentence Encoder。根据我的研究,我最喜欢的方法是 Doc2Vec,即使没有任何或旧的预训练模型,这意味着我必须自己进行训练。
既然您知道我的任务和目标,我有以下问题:
- 基于我的数据的粗略概述,我应该使用哪种方法进行特征提取?
- 我的数据集太小,无法在其上训练 Doc2Vec。如果我在英语/德语维基百科上训练模型,我会取得好的结果吗?
解决方案
您确实必须根据您的特定用户任务和您的时间/资源预算尝试不同的方法来处理您的数据,以了解哪种方法有意义。
您的 225K 德语文档和 45k 英语文档每个都足够大,可以使用Doc2Vec
- 因为它们匹配或超过某些已发布的结果。因此,您不一定需要添加其他内容(例如 Wikipedia)的培训,而将其添加到您的数据中是有帮助还是有害是您需要通过实验确定的另一件事。
(在德语中使用足够常见的词根但个别罕见的复合词可能存在特殊挑战,我不确定。使用单词片段的基于 FastText 的方法可能会有所帮助,但我不知道类似Doc2Vec
算法这必然使用相同的 char-ngrams 技巧。最接近的可能是使用 Facebook FastText 的监督模式,使用一组丰富的有意义的已知标签来引导更好的文本向量 - 但这是高度推测性的,不支持该模式在根西姆。)
推荐阅读
- python - 当我停止运行 python 脚本时如何停止电报机器人运行?
- rust - 对函数返回的数据创建条件视图或代理
- domain-driven-design - 翻译应用程序中实体和值对象之间的区别
- sql - postgres:我可以声明功能依赖吗?
- laravel - 如何在 Laravel 8 中存储图像
- powerpoint - MS PowerPoint JavaScript API - 将 SVG 作为形状插入?
- ruby - 如何在ubuntu中安装指定版本的Ruby
- flutter - 在 Flutter 中更改 Rive 2 动画
- javascript - v8引擎是先填满调用栈再运行代码吗?还是一进入函数就运行代码
- amazon-web-services - 为什么 CloudFormation 对某些列表类型需要 Quantity?