Python 是否可以使用GoogleBert计算两个文本文档之间的相似性?

Python 是否可以使用GoogleBert计算两个文本文档之间的相似性?,python,text,scikit-learn,nlp,word-embedding,Python,Text,Scikit Learn,Nlp,Word Embedding,是否可以使用GoogleBert计算两个文本文档之间的相似性?据我所知,伯特的输入应该是有限大小的句子。有些作品使用BERT计算句子的相似性,如: 是否实现了BERT,将其用于大型文档而不是句子作为输入(包含数千个单词的文档)?BERT是一种句子表示模型。它被训练预测一个句子中的单词,并确定文档中两个句子是否紧跟在一起,即严格按照句子级别。此外,BERT需要关于输入长度的二次内存,这在文档中是不可行的 通常的做法是平均单词嵌入以获得句子表示。您可以对BERT做同样的尝试,并将BERT的[CL

是否可以使用GoogleBert计算两个文本文档之间的相似性?据我所知,伯特的输入应该是有限大小的句子。有些作品使用BERT计算句子的相似性,如:


是否实现了BERT,将其用于大型文档而不是句子作为输入(包含数千个单词的文档)?

BERT是一种句子表示模型。它被训练预测一个句子中的单词,并确定文档中两个句子是否紧跟在一起,即严格按照句子级别。此外,BERT需要关于输入长度的二次内存,这在文档中是不可行的

通常的做法是平均单词嵌入以获得句子表示。您可以对BERT做同样的尝试,并将BERT的[CLS]向量平均到文档中的句子上

有一些文档级嵌入。例如,这是一个常用的选项


据我所知,在文档级别,基于频率的向量,如tf-idf(在中有很好的实现)仍然接近最先进的水平,因此我会毫不犹豫地使用它。或者,至少值得一试,看看它与嵌入的区别。

伯特没有受过训练来判断一句话是否跟在另一句话后面。这只是其中之一,而且还有很多。所有的胶水任务(和超级胶水)都被阿尔伯特从公园里淘汰了

伯特(以及阿尔伯特)是自然语言理解的绝对艺术水平。Doc2Vec没有接近。伯特不是一个空谈的方法。这是一个基于双向注意力的编码器,构建在谷歌大脑论文的化身——Transformer上。另请参见变压器模型的这一部分

这是一种全新的看待自然语言的方式,它不使用RNN、LSTM、tf idf或任何类似的东西。我们不再将文字或文档转换为向量。有了LSTM,它们就老了。Doc2Vec很旧

伯特真的很强大,就像通过图灵测试一样。看看

看看哪个刚出来。滚动到底部,看看这些任务有多疯狂。这就是NLP所处的位置

好的,现在我们已经放弃了tf idf是最先进的想法-你想拿文件看看它们的相似性吗?我将在两层中使用ALBERT on Databricks:

  • 执行摘录或抽象摘要:(注意这些文本文档有多大,并将文档缩减为摘要

  • 在一个单独的步骤中,记下每个摘要并完成第3页的STS-B任务


  • 现在,我们谈论的是绝对前沿的技术(Albert在最近几个月才问世)。你需要非常熟练才能完成这项任务,但这是可以做到的,我相信你!!

    耶。你只需要独立完成每一部分。对于总结,你几乎不需要做太多。只要看看pypi就可以总结,你有几个包。甚至不需要训练。现在对于句子之间的相似性,有一个公平的标准获得损失的方法非常复杂,但GLUE网站上已经详细说明了这一点。这是挑战的一部分(满足标准)。确定距离(sts)是非常重要的,我认为他们称之为“一致性”但是我不确定。

    为了补充@jindřich的答案,BERT是为了在一个句子中找到缺失的单词并预测下一个句子。基于单词嵌入的doc2vec仍然是衡量文档之间的相似性的好方法。如果你想更深入地探究为什么每个最佳模型都不是用例的最佳选择,请阅读下面的文章它清楚地解释了为什么不是每个最先进的模型都适合一项任务。

    伯特的一个训练目标确实是预测文档中的下一句话。对你提出的摘要->句子相似性的方法有什么评价吗?这是一个很好的答案。不过,我有一点意见:我想知道是否应该用d而不是d在执行STS-B任务时,需要在每个摘要文本上重新运行这个小怪物,在欧几里德距离上使用一些自聚类技术,BERT的最终嵌入输出也会起作用吗?我最近在尝试,我认为我得到了一些相当不错的结果。是的,使用句子BERT。平均文档的句子嵌入s、 文档之间的余弦相似性。