NLP-最佳文档嵌入库

NLP-最佳文档嵌入库,nlp,document,gensim,embedding,bert-language-model,Nlp,Document,Gensim,Embedding,Bert Language Model,大家好 我有一个方法论的问题,在很短的时间内进行了深入的研究,却把它弄糊涂了 问题来自以下问题:我需要对文档应用半监督或非监督聚类。我有约300份用多标签分类的文件和约3400份未分类的文件。在未来几天内,无监督文件的数量可能会达到10000份左右 其主要思想是基于手头的标签应用半监督聚类。或者,对于软集群,完全不受监督 我们曾想过为整个文档创建嵌入,但这里有一个困惑:哪一个库最适合这样的任务 我想最重要的是整个文件的内容。据我所知,BERT和FastText提供了上下文相关的单词嵌入,但没有提

大家好

我有一个方法论的问题,在很短的时间内进行了深入的研究,却把它弄糊涂了

问题来自以下问题:我需要对文档应用半监督或非监督聚类。我有约300份用多标签分类的文件和约3400份未分类的文件。在未来几天内,无监督文件的数量可能会达到10000份左右

其主要思想是基于手头的标签应用半监督聚类。或者,对于软集群,完全不受监督

我们曾想过为整个文档创建嵌入,但这里有一个困惑:哪一个库最适合这样的任务

我想最重要的是整个文件的内容。据我所知,BERT和FastText提供了上下文相关的单词嵌入,但没有提供整个文档嵌入。另一方面,Gensim的Doc2Vec是上下文无关的,对吗

我认为我通过HugggsPrimeAPI看到了一种用伯特来训练句子嵌入的方法,并且想知道把整个文档看作一个句子是否有用。 你有什么建议吗?我可能暴露了我对这件事的无知和困惑,但我的大脑已经融化了

非常感谢您抽出时间

万岁

编辑以回答@gojomo:

我的文件平均约180字。最初的任务是多标签文本分类,即每个文档可以有1到N个标签,标签数量现在为N=18。它们是高度不平衡的。 由于几个问题,到目前为止只有330个带标签的文档,我们要求文档提供商也提供未带标签的数据,这些数据应该达到10k的数量级。 我使用了FastText分类模式,但结果显然很糟糕。我还使用Doc2Vec文档嵌入运行了一个K-NN,但结果显然仍然很糟糕。 我打算使用基于生物医学的BERT模型(如BioBERT和SciBERT)在文档上生成一个NER标记(在特定领域的数据集上进行训练),以便稍后应用分类器。
既然我们有了未标记的文档可供使用,我们就想探索半监督分类或无监督聚类,只是为了探索可能性。我不得不说,这只是一篇硕士论文。

与其说是一个实际的答案,不如说是一句评论,但值得一提的是,句子嵌入方法(SBERT、推断、快速文本)通常对较短的文本(对于实际的句子)效果更好,而且对于较长的文本,它们的性能往往会下降(例如,多个句子放在一起).所以我个人可能会选择平均化或TF-IDF,对每个完整文档的单词嵌入进行处理…不知道使用HuggingFace API对整个文档进行培训会产生什么结果,尽管这样可能会奏效?@Tibbles:谢谢你的回答,这实际上是非常有用的。通过平均化word嵌入的TF-IDF丁,你是说单词包风格嵌入?我知道Gensim也支持doc2bow用于以后的TF-IDF度量。我不知道我们是否在说同样的事情,但我的意思是使用TF-IDF作为权重因子,用于平均整个语料库中的单词嵌入。也就是说,在嵌入单词后使用此权重因子(这可以通过许多不同的单词嵌入库来实现——例如,您提到了BERT和FastText)。您所说的“整个文档的上下文”是什么意思?还有什么其他上下文?对于
Doc2Vec
(又称“段落向量”),您所说的“上下文不可知”是什么意思?此外,您的文档有多长,已知标签集有多大,以及每个文档有多少个标签?(您是否试图通过集群发现尚未使用的新标签?)注:FastText有一个“分类模式”,专门训练每个单词向量,以便在求和预测已知标签时更好。最终,我怀疑是否有一个“最佳”方法–针对您的数据和确切目标进行测试可能会让人惊讶。BERT有一个我设定的最大大小,因此您可能无法在不截断它们的情况下嵌入整个文档。我发现通用句子编码器更容易用于文档嵌入,谷歌也有。我目前的方法是将文档分解为句子、段落和段落将这些关系存储在数据库中,还存储文档、段落和句子嵌入