Nlp 利用Bert和余弦相似度识别相似文档

Nlp 利用Bert和余弦相似度识别相似文档,nlp,document,cosine-similarity,bert-language-model,Nlp,Document,Cosine Similarity,Bert Language Model,我们有一个新闻网站,我们必须将新闻与特定用户进行匹配 我们必须仅使用用户文本信息进行匹配,例如用户的兴趣或关于用户的简要描述 我想把用户文本信息和新闻文本作为文档进行威胁,并找出文档的相似性 通过这种方式,我希望,如果我在个人资料中写下这样的句子:我喜欢去年芝加哥总统的演讲,一则新闻谈论:特朗普将在伊利诺伊州演讲,我可以有一场比赛(这个例子纯粹是随意的) 首先,我尝试使用TF-IDF嵌入我的文档,然后我尝试使用kmeans来查看是否有一些有意义的东西,但我不想看到太多的结果 我认为这个问题源于T

我们有一个新闻网站,我们必须将新闻与特定用户进行匹配

我们必须仅使用用户文本信息进行匹配,例如用户的兴趣或关于用户的简要描述

我想把用户文本信息和新闻文本作为文档进行威胁,并找出文档的相似性

通过这种方式,我希望,如果我在个人资料中写下这样的句子:我喜欢去年芝加哥总统的演讲,一则新闻谈论:特朗普将在伊利诺伊州演讲,我可以有一场比赛(这个例子纯粹是随意的)

首先,我尝试使用TF-IDF嵌入我的文档,然后我尝试使用kmeans来查看是否有一些有意义的东西,但我不想看到太多的结果

我认为这个问题源于TF-IDF给我的糟糕的嵌入

因此,我考虑使用伯特嵌入来检索文档的嵌入,然后使用余弦相似性来检查两个文档(一个关于用户配置文件的文档和一条新闻)的相似性

这是一种有意义的方法吗?伯特可以用来检索句子的嵌入,但是有没有一种方法可以嵌入整个文档

你会给我什么建议


谢谢你

伯特接受过成对句子的训练,因此不太可能概括更长的文本。另外,BERT需要文本长度的二次记忆,使用太长的文本可能会导致记忆问题。在大多数实现中,它不接受长度超过512个子字的序列

让预先训练好的变形金刚在长文本中高效工作是一个活跃的研究领域,你可以看看一篇题为《了解人们在尝试什么》的论文。但是,要找到一个包装精美的工作解决方案,还需要一段时间

还有其他文档嵌入方法,例如实现doc2vec。然而,我仍然坚持TF-IDF


TF-IDF通常对数据预处理非常敏感。您当然需要删除stopwords,在许多语言中,进行柠檬化也是值得的。考虑到文本的特定领域,您还可以尝试按新闻故事中经常出现的单词扩展标准停止词列表。通过检测和保存命名实体,您可以获得进一步的改进。

伯特是根据句子对进行训练的,因此不太可能推广到更长的文本中。另外,BERT需要文本长度的二次记忆,使用太长的文本可能会导致记忆问题。在大多数实现中,它不接受长度超过512个子字的序列

让预先训练好的变形金刚在长文本中高效工作是一个活跃的研究领域,你可以看看一篇题为《了解人们在尝试什么》的论文。但是,要找到一个包装精美的工作解决方案,还需要一段时间

还有其他文档嵌入方法,例如实现doc2vec。然而,我仍然坚持TF-IDF

TF-IDF通常对数据预处理非常敏感。您当然需要删除stopwords,在许多语言中,进行柠檬化也是值得的。考虑到文本的特定领域,您还可以尝试按新闻故事中经常出现的单词扩展标准停止词列表。通过检测和保存命名实体,您可以获得进一步的改进