热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

NLP篇【01】tfidf与bm25介绍与对比

上一篇:自然语言处理【NLP】遇上电商——专栏导读下一篇:NLP篇【02】白话Word2vec原理以及层softmax、负采样的实现一、tfidf介

上一篇:自然语言处理【NLP】遇上电商——专栏导读


下一篇:NLP篇【02】白话Word2vec原理以及层softmax、负采样的实现


一、tfidf介绍

词频(TF) = 某个词在文章中的出现次数 / 文章总词数,逆文档频率(IDF) = log(语料库的文章总数/包含该词的文章总数+1),tfidf=tf*idf。举个例子一下子就明白了。如语料库包含以下三篇文章(什么是语料库可百度):

第一篇:张一山与杨紫疑似相恋

第二篇:C罗又一次完成了帽子戏法,这就是足球的魅力

第三篇:恭喜TES创历史记录,在s10的世界总决赛上完成了让二追三


首先是对每篇文章进行分词且过滤停用词得doc_lis=[[张一山,...,相恋],[C罗,...,魅力],[恭喜,...,让二追三]],然后依次计算每个词的tfidf。TF(张一山)=1/4(“与”作为停用词过滤掉了所以是4)  IDF(张一山)=log(3/1+1),所以tfidf=TF*IDF=1/4*log3/2=0.25*0.405=0.1,按照这个方式依次计算就能得到所有词的tfidf,最终的结果如下表:


文章\词张一山杨紫...完成让二追三
第一篇0.10.100
第二篇0000
第三篇00tfidf值tfidf值

这张表的shape应该(总词数,总文章数),因此tfidf的应用可以有:1、文章关键词提取(可以提取tfidf值前几个作为关键词)2、文章分类,这个矩阵直接输入到项lsvm,lr等模型(当然要打好label)3、用LDA或SVD进行降维(为什么要降维,因为语料库的总词数是非常多的,所以每篇文章的向量是非常稀疏的),再当做文章的embeding  4、把tfidf或idf值当做每个词的权重

tfidf算法的优点:简单,快速,如果语料库是不变的话,可以提前离线计算好语料库中所有词的tfidf值(这在实际应用中非常重要的,后面有这个应用的举例)

缺点:1、仅以“词频”度量词的重要性,后续构成文档的特征值序列,词之间各自独立,无法反映序列信息 2、tfidf得到是一个稀疏而庞大的矩阵,需要采用降维方式,才方便做后续的文本任务,而降维可能会损失一些信息,同时降维的也会提高模型的复杂度,而失去了原本快速的优点 3、tfidf得到的embedings再输入后续的模型,做文本分类、文本匹配等任务,在效果上通常会差于采用词向量模型训练得到的embedding。

二、bm25

bm25 是一种用来评价搜索词和文档之间相关性的算法,用简单的话来描述下bm25算法:我们有一个query和一批文档Ds,现在要计算query和每篇文档D之间的相关性分数。这种场景的应用就有很多:1、电商中计算搜索词query与商品的之间的相关性 2、知乎搜索中搜索词query与回答之间的相关性 3、匹配式智能客服中,用户问题与答案之间的相关性等。那bm25算法是怎样计算query与文档之间的相关性的呢?BM25算法计算相关性的一般性公式如下:

其中,Q表示Query,qi表示Q分词之后的每个单词;d表示一个文档;Wi表示词qi的权重;R(qi,d)表示词qi与文档d的相关性得分。所以query中每个词与文档的相关性的加权和就是query与文档的相关性得分。而求query中每个词的权重就可以使用上面所讲的tfidf,但常常只用idf(后面会讲为什么只用idf的原因),而这里采用idf的公式为:

其中n(qi)是文档包含词qi的文档数,N是文档总数,和上面的idf计算公式有点不同,但思路是相同的。而求R(qi,d)的公式为如下:

其中,k1,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;fi为qi在d中的出现频率,dl为文档d的长度,avgdl为所有文档的平均长度。总的来讲就是R(qi,d)与这个词在该文档中出现的频率呈正相关,与该文档的长度呈负相关。最终Score(Q,d)的公式为:

同样下面我举例计算一下,同样假如有三个文档如下:

第一篇:张一山与杨紫疑似相恋

第二篇:C罗又一次完成了帽子戏法,这就是足球的魅力

第三篇:恭喜TES创历史记录,在s10的世界总决赛上完成了让二追三

用户输入的query是“足球相关新闻”,下面我来计算一下和哪篇最相关。首先分此后query=[足球,相关,新闻]

第一篇中:idf(足球)=log(3-0+0.5)/(0+0.5),idf(相关)=log(3-0+0.5)/(0+0.5),idf(新闻)=log(3-0+0.5)/(0+0.5)

                  R(足球,第一篇)=0*(2+1)/(0+K)=0,R(相关,第一篇)=0,R(新闻,第一篇)=0,所以

                  Score(“足球相关新闻”,第一篇)=0

同理可以计算和第二篇的相似性得分,最终可以发现和第二篇相似性得分最高。

下面我就解释下只用idf做权重的原因:

        tfidf=idf*fi/dl

写成这样Score(Q,d)=\sum tfidf=\sum IDF*fi/dl

bm25的算法的优缺点:

优点:可以方便线下做离线先计算好文档中出现的每一个词的idf并保存为一个字典,当用户搜了一个query,直接分词然后查字典就能得到这个词的idf,如果字典中没有idf值无意义,因为R=0。同于tfidf。

缺点:同于tfidf


推荐阅读
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 大数据时代的机器学习:人工特征工程与线性模型的局限
    本文探讨了在大数据背景下,人工特征工程与线性模型的应用及其局限性。随着数据量的激增和技术的进步,传统的特征工程方法面临挑战,文章提出了未来发展的可能方向。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 步入人工智能新时代,掌握这些关键知识点至关重要。AI技术将成为人类的重要辅助工具,不仅能够扩展和增强人类的智能,还能帮助我们实现更加卓越的成就。新一代人工智能技术的发展将为各行各业带来深远的影响,推动社会进步与创新。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 在2019中国国际智能产业博览会上,百度董事长兼CEO李彦宏强调,人工智能应务实推进其在各行业的应用。随后,在“ABC SUMMIT 2019百度云智峰会”上,百度展示了通过“云+AI”推动AI工业化和产业智能化的最新成果。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
  • 支持向量机(SVM)在机器学习中的应用与学习心得
    支持向量机(SVM)是一种高效的二分类模型,其核心目标是通过寻找最优超平面来区分不同类别的数据点。在实际应用中,SVM能够有效地处理高维数据,并通过核技巧扩展到非线性分类问题。当新的数据点输入时,SVM会根据其相对于超平面的位置来判定其所属类别。训练过程中,SVM通过最大化间隔来确定最优超平面,从而提高模型的泛化能力。本文总结了SVM在机器学习中的应用及其学习心得,探讨了其在实际问题中的优势和局限性。 ... [详细]
  • AI TIME联合2021世界人工智能大会,共探图神经网络与认知智能前沿话题
    AI TIME携手2021世界人工智能大会,共同探讨图神经网络与认知智能的最新进展。自2018年在上海首次举办以来,WAIC已成为全球AI领域的年度盛会,吸引了众多专家学者和行业领袖参与。本次大会将聚焦图神经网络在复杂系统建模、知识图谱构建及认知智能应用等方面的技术突破和未来趋势。 ... [详细]
  •     目标检测是计算机视觉一个非常重要的子任务。目标检测需要发现并准确定位自然图片中的物体。在2012年之前,目标检测主要基于手工设计的特征以及传统分类器。2012年以后,出现了 ... [详细]
author-avatar
0519bobo_724
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有