热门标签 | 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


推荐阅读
  • 如何在jieba分词中加自定义词典_常见中文分词包比较
    1jiebajieba.cut方法接受三个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;HMM参数用来控制是否使用HMM模型ji ... [详细]
  • 上期使用LSTM做短文本分类效果不如CNN,或许有朋友会问什么场景下LSTM能体现出序列性的优势,本期使用双向LSTM-CNNs-CRF实现SequenceLabeling。CRF ... [详细]
  •   作为一种编程语言,Python比C#,Java,C和C++更具吸引力。它被称为“胶水语言”,它也被喜欢它的程序员誉为“美丽”的编程语言。从云计算,客户端到物联网终端,Pytho ... [详细]
  • AI算法工程师从入门到上瘾
    设定一个非常清晰的目标清晰的目标就比如说你要做NLP,你要知道NLP的应用有智能问答,机器翻译,搜索引擎等等。然后如果你要做智能问答你要知道现在最发达的技术是深度学习,使用的算法有 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 原文:http:blog.csdn.netdamotianshengarticledetails406284171.Knn算法介绍:百度百科:http:baike.b ... [详细]
  • 中文分词_中文分词技术小结几大分词引擎的介绍与比较
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了中文分词技术小结几大分词引擎的介绍与比较相关的知识,希望对你有一定的参考价值。笔者想说:觉得英文与中文分词有很大的区别, ... [详细]
  • 全文共3708字,预计学习时长10分钟图源:unsplashPthon之所以能成为世界上最受欢迎的编程语言之一,与其整体及其相关库的生态系 ... [详细]
  • 了解供应链简单来说,供应链涉及一系列旨在向最终用户提供产品或服务的步骤。企业组织及其供应商之间始终存在一个网络,来生产特定产品并将其交付给最终用户。该网络包括不同的活动、人员、实体 ... [详细]
  • 圣诞节到了,智能菌想送你一份礼物
    关注网易智能,聚焦AI大事件,读懂下一个大时代!(机器学习算法地图见文末)圣诞节的赠书活动来了! ... [详细]
  • AI 学习路线:从Python开始机器学习
    AI 学习路线:从Python开始机器学习 ... [详细]
  • NLP | 一文完全搞懂序列标注算法
    序列标注模型用到了长短期记忆网络(LSTM),条件随机场(CRF),Highway网络,本文循序渐进的介绍了序列标注算法,Bepatience!跟 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
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社区 版权所有