goo*_*boy 11 python text nlp scikit-learn word-embedding
是否可以使用 Google BERT 计算两个文本文档之间的相似度?据我了解,BERT 的输入应该是有限大小的句子。一些作品使用 BERT 来计算句子的相似度,例如:
https://github.com/AndriyMulyar/semantic-text-similarity
https://github.com/beekbin/bert-cosine-sim
是否有 BERT 的实现来将其用于大型文档而不是句子作为输入(具有数千个单词的文档)?
bir*_*dmw 13
BERT 没有经过训练以确定一个句子是否跟在另一个句子之后。这只是GLUE 任务之一,还有更多任务。所有 GLUE 任务(和强力胶)都被 ALBERT 淘汰了。
BERT(和 Albert)是自然语言理解领域的绝对最先进的技术。Doc2Vec 并没有接近。BERT 不是词袋方法。这是一个基于 Transformer 的双向注意力编码器,它是 Google Brain 论文Attention is All you Need的化身。另请参阅Transformer 模型的此可视化细分。
这是一种看待自然语言的全新方式,它不使用 RNN 或 LSTM 或 tf-idf 或任何这些东西。我们不再将单词或文档转换为向量。手套:使用 LSTM进行单词表示的全局向量很旧。Doc2Vec 是旧的。
BERT 非常强大 - 就像,轻松通过图灵测试一样强大。看一眼
看看刚刚出来的superGLUE。滚动到底部,看看这些任务有多疯狂。这就是 NLP 的所在。
好的,既然我们已经放弃了 tf-idf 是最先进的想法 - 您想获取文档并查看它们的相似性吗?我会在 Databricks 上分两层使用 ALBERT:
执行提取或抽象摘要:https : //pypi.org/project/bert-extractive-summarizer/(注意这些文本文档有多大 - 并将您的文档缩减为摘要。
在单独的步骤中,获取每个摘要并执行第 3 页GLUE 中的 STS-B 任务
现在,我们在这里谈论绝对最前沿的技术(Albert 在最近几个月才出现)。你需要非常熟练才能通过这个,但它可以做到,我相信你!!
BERT 是一个句子表示模型。它被训练来预测句子中的单词并决定两个句子是否在文档中紧随其后,即严格在句子级别上。此外,BERT 需要关于输入长度的二次内存,这在文档中是不可行的。
平均词嵌入以获得句子表示是很常见的做法。你可以用 BERT 尝试同样的事情,并在文档中的句子上平均来自 BERT 的 [CLS] 向量。
有一些文档级嵌入。例如doc2vec是一个常用的选项。
据我所知,在文档级别,基于频率的向量,例如tf-idf(在scikit-learn 中有很好的实现)仍然接近最先进的技术,所以我会毫不犹豫地使用它。或者至少值得尝试看看它与嵌入的比较。