所以每个文档都被标记成句子 。并对结果进行平均,以将文档表示为一个向量 。
import numpy as npfrom sklearn.metrics.pairwise import cosine_similarityfrom nltk import sent_tokenizefrom sentence_transformers import SentenceTransformerbase_document = "This is an example sentence for the document to be compared"documents = ["This is the collection of documents to be compared against the base_document"]def process_bert_similarity():# 这将下载和加载UKPLab提供的预训练模型 。model = SentenceTransformer('bert-base-nli-mean-tokens')# 虽然在句子转换器的官方文件中并没有明确的说明,但是原来的BERT是指一个更短的句子 。我们将通过句子而不是整个文档来提供模型 。sentences = sent_tokenize(base_document)base_embeddings_sentences = model.encode(sentences)base_embeddings = np.mean(np.array(base_embeddings_sentences), axis=0)vectors = []for i, document in enumerate(documents):sentences = sent_tokenize(document)embeddings_sentences = model.encode(sentences)embeddings = np.mean(np.array(embeddings_sentences), axis=0)vectors.append(embeddings)print("making vector at index:", i)scores = cosine_similarity([base_embeddings], vectors).flatten()highest_score = 0highest_score_index = 0for i, score in enumerate(scores):if highest_score < score:highest_score = scorehighest_score_index = imost_similar_document = documents[highest_score_index]print("Most similar document by BERT with the score:", most_similar_document, highest_score)process_bert_similarity()算法评估让我们看看每种算法在我们的5篇不同类型的文章中的表现 。我们根据得分最高的三篇文章进行比较 。
在这篇博文中,我们将只介绍五种算法中性能最好的算法的结果 。有关完整的结果以及个别文章链接,请参阅仓库中的算法目录:https://github.com/massanishi/document_similarity_algorithms_experiments
1. How My Worst Date Ever Became My BestBERT胜利
这篇文章是一个人类感兴趣的故事,涉及一个50年代离婚妇女的浪漫约会 。
这种写作风格没有像名人名字这样的特定名词 。它对时间也不敏感 。2010年的一个关于人类兴趣的故事在今天可能也同样重要 。在比较中没有一个算法性能特别差 。
BERT和USE的比赛千钧一发 。USE把故事绕到了社会问题,BERT关注浪漫和约会 。其他算法则转向了家庭和孩子的话题,可能是因为看到了“ex husband 前夫”这个词 。

文章插图
2. A Deep-Sea Magma Monster Gets a Body ScanTF-IDF获胜 。
这篇科学文章是关于海洋中活火山的三维扫描 。
3D扫描、火山和海洋是罕见的术语 。所有算法都很好地实现了公平 。
TF-IDF正确地选择了那些只谈论地球海洋内火山的人 。USE与它相比也是一个强大的竞争者,它的重点是火星上的火山而不是海洋 。另一些算法则选择了有关俄罗斯军用潜艇的文章,这些文章与科学无关,与主题无关 。

文章插图
3. Renault and Nissan Try a New Way After Years When Carlos Ghosn RuledTF-IDF获胜 。
文章谈到了前首席执行官卡洛斯·戈恩越狱后雷诺和日产的遭遇 。
理想的匹配将讨论这3个实体 。与前两篇相比,本文更具有事件驱动性和时间敏感性 。相关新闻应与此日期或之后发生(从2019年11月开始) 。
TF-IDF正确地选择了关注日产CEO的文章 。其他人则选择了一些谈论通用汽车行业新闻的文章,比如菲亚特克莱斯勒(Fiat Chrysler)和标致(Peugeot)的结盟 。
值得一提的是,Doc2vec和USE生成了完全相同的结果 。

文章插图
4. Dominic Thiem Beats Rafael Nadal in Australian Open QuarterfinalJaccard、TF-IDF和USE结果相似 。
这篇文章是关于网球选手多米尼克·蒂姆在2020年澳大利亚网球公开赛(网球比赛)上的文章 。
新闻是事件驱动的,对个人来说非常具体 。所以理想的匹配是多米尼克和澳大利亚公开赛 。
不幸的是,这个结果由于缺乏足够的数据而受到影响 。他们都谈论网球 。但有些比赛是在谈论2018年法国网球公开赛的多米尼克 。或者,在澳大利亚网球公开赛上对费德勒的看法 。
结果是三种算法的结果 。这说明了关键的重要性:我们需要尽最大努力收集、多样化和扩展数据池,以获得最佳的相似性匹配结果 。

文章插图
5. 2020 Democrats Seek Voters in an Unusual Spot: Fox NewsUSE胜利 。
推荐阅读
- 2020年中国搜索引擎行业市场现状及发展前景分析
- 2020年中考语文阅读答题技巧六招
- 西安全运会时间是何时?
- 2020年人气最高的十大NLP库推荐
- 谷歌软件工程师是怎样写设计文档的?
- 如何把表格做成文档?
- 2020年8月程序员工资最新统计:这些岗位月薪可达6万以上
- 进销存软件十大排名
- 文档智能:数字化转型的技术基石
- 如何用手机将pdf转换成word文档?具体怎么转?
