tf-idf

Document similarity: Vector embedding versus Tf-Idf performance?

时光怂恿深爱的人放手 提交于 2020-04-09 18:36:07
问题 I have a collection of documents, where each document is rapidly growing with time. The task is to find similar documents at any fixed time. I have two potential approaches: A vector embedding (word2vec, GloVe or fasttext), averaging over word vectors in a document, and using cosine similarity. Bag-of-Words: tf-idf or its variations such as BM25. Will one of these yield a significantly better result? Has someone done a quantitative comparison of tf-idf versus averaging word2vec for document

重磅!「自然语言处理(NLP)」一文带你了解TF-IDF

纵饮孤独 提交于 2020-03-17 07:59:13
来源: AINLPer 微信公众号( 每日更新… ) 编辑: ShuYini 校稿: ShuYini 时间: 2020-03-12 引言     本文主要整理TF-IDF的基本内容,能够让你很快了解TF-IDF到底是什么,为什么会存在,以及其优缺点? 1、向量化特征缺失     在将文本分词并向量化后,我们可以得到词汇表中每个词在各个文本中形成的词向量,我们将下面4个短文本做了词频统计: corpus = [ "I come to China to travel" , "This is a car polupar in China" , "I love tea and Apple " , "The work is to write some papers in science" ]     不考虑停用词,处理后得到的词向量如下: [ [ 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 ] [ 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 ] [ 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 ] [ 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 ] ]     如果我们直接将统计词频后的19维特征做为文本分类的输入,会发现有一些问题。比如第一个文本,我们发现"come

Dataframe Rows are matching with each other in TF-IDF Cosine similarity i

六眼飞鱼酱① 提交于 2020-03-04 05:06:32
问题 I am trying to learn data science and found this great article online. https://bergvca.github.io/2017/10/14/super-fast-string-matching.html I have this database full of company names, but am finding that the results where the similarity is equal to 1, they are in fact literally the same exact row. I obviously want to catch duplicates, but I do not want the same row to match itself. On a side note, this has opened my eyes to pandas and NLP. Super fascinating field - Hopefully, somebody can

TF-IDF与余弦相似性

末鹿安然 提交于 2020-03-03 23:24:01
TF-IDF算法 将 "词频"(TF)和"逆文档频率"(IDF)这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的几个词,就是这篇文章的关键词。 TF-IDF = TF * IDF 可以看到,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。 余弦相似性 计算两个向量的余弦值,余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。 假定a向量是[x1, y1],b向量是[x2, y2],那么可以将余弦定理改写成下面的形式 余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,A是 [A1, A2, ..., An] ,B是 [B1, B2, ..., Bn] ,则A与B的夹角θ的余弦等于: 计算两篇文章的相似性: (1)使用TF-IDF算法,找出两篇文章的关键词; (2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频); (3)生成两篇文章各自的词频向量; (4)计算两个向量的余弦相似度,值越大就表示越相似。 [参考文献] TF-IDF与余弦相似性的应用(一):自动提取关键词 http://www.ruanyifeng.com/blog/2013/03/tf

文本相似度——基于TF-IDF与余弦相似性

岁酱吖の 提交于 2020-03-03 23:07:09
本篇博客,主要是描述一种计算文本相似度的算法,基于TF-IDF算法和余弦相似性。算法的描述请务必看阮一峰的博客,不然看不懂本篇博客,地址: http://www.ruanyifeng.com/blog/2013/03/tf-idf.html http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html 在这里,主要讨论具体的代码的实现。过程如下: 使用TF-IDF算法,找出两篇文章的关键词; 每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频); 生成两篇文章各自的词频向量; 计算两个向量的余弦相似度,值越大就表示越相似。 首先,请看此算法代码的文件结构: 接下来,是算法的实现步骤: 第一步:使用TF-IDF算法,找出两篇文章的关键词 /** * (1)使用TF-IDF算法,找出两篇文章的关键词; * * @param uri * 待比较的文本的路径 * @return 文本被分词后,词的ELementSet集合 * @throws IOException */ private static ElementSet getKeyTerms(String uri) throws IOException { // 分词后

【论文笔记】Simple and Effective Multi-Paragraph Reading Comprehension

故事扮演 提交于 2020-03-03 05:13:32
概述 对于多段落的文章来说,我们主要有两种方法 筛选出文章中最有可能包含答案的段落,然后将这个段落送入模型当中,最后得到答案的位置标签 将文本每个段落都送入到模型当中,得到每个段落的答案位置并通过相关算法得到置信度的打分,选择分高的作为答案 在这篇论文中提出了一种结合以上两种方法的模型 从文档中抽取多个段落,并使用了一个能输出全局对错的目标函数,要求模型生成全局正确的输出。 为每个段落计算准确置信度分数。 方法 段落选择 使用基于TF-IDF的段落选择方法 对于单文档来说,我们筛选段落,根据其和问题的TF-IDF余弦相似度打分来进行排序选择哪一段送入到模型进行抽取答案。 对于多文档来说,使用一个相同TF-IDF分数的线性分类器,当文档进入分类器,会根据分类结果决定是否送入到模型进行抽取答案。 处理噪声标签 红色的则是噪声标签,绿色的是正确的答案 在监督式学习中,如果将匹配答案的所有文本范围标记为正确,可能会使得模型最终选择到不包含正确答案的部分。因此,这里使用了一种总和目标函数(summed objective function),优化所有答案标签的可能性,也就是说通过优化选择任何正确答案范围的负对数似然,一次降低选择非必要答案的范围,具体来说就是需要模型独立的预测开始的位置和结束的位置。 模型 模型分为五个部分: embedding:将文本和问题输入到embedding层

NLP入门(九)词义消岐(WSD)的简介与实现

情到浓时终转凉″ 提交于 2020-03-01 22:44:21
词义消岐简介   词义消岐,英文名称为Word Sense Disambiguation,英语缩写为WSD,是自然语言处理(NLP)中一个非常有趣的基本任务。   那么,什么是词义消岐呢?通常,在我们的自然语言中,不管是英语,还是中文,都有多义词存在。这些多义词的存在,会让人对句子的意思产生混淆,但人通过学习又是可以正确地区分出来的。   以 “小米” 这个词为例,如果仅仅只是说“小米”这个词语,你并不知道它实际指的到底是小米科技公司还是谷物。但当我们把词语置于某个特定的语境中,我们能很好地区分出这个词语的意思。比如, 雷军是小米的创始人。 在这个句子中,我们知道这个“小米”指的是小米科技公司。比如 我今天早上喝了一碗小米粥。 在这个句子中,“小米”指的是谷物、农作物。   所谓词义消岐,指的是在特定的语境中,识别出某个歧义词的正确含义。   那么,词义消岐有什么作用呢?词义消岐可以很好地服务于语言翻译和智能问答领域,当然,还有许多应用有待开发~ 词义消岐实现   在目前的词义消岐算法中,有不少原创算法,有些实现起来比较简单,有些想法较为复杂,但实现的效果普遍都不是很好。比较经典的词义消岐的算法为Lesk算法,该算法的想法很简单,通过对某个歧义词构建不同含义的语料及待判别句子中该词语与语料的重合程度来实现,具体的算法原理可参考网址: https://en.wikipedia.org

TF-IDF词频逆文档频率算法

一个人想着一个人 提交于 2020-03-01 04:36:25
一.简介   1.RF-IDF【term frequency-inverse document frequency】是一种用于检索与探究的常用加权技术。   2.TF-IDF是一种统计方法,用于评估一个词对于一个文件集或一个语料库中的其中一个文件的重要程度。   3.词的重要性随着它在文件中出现的次数的增加而增加,但同时也会随着它在语料库中出现的频率的升高而降低。 二.词频   指的是某一个给定的词语在一份给定的文件中出现的次数。这个数字通常会被归一化,以防止它偏向长的文件【同一个词语在文件里可能会比短文件有更高的词频,而不管该词重要与否】。   公式:        ni,j:是该词在文件dj中出现的次数,而分母则是在文件dj中所有词出现的次数之和。 三.逆文档频率   是一个词普遍重要性的度量。某一个特定词的IDF可以由总文件数目除以包含该词语的文件数据,再将得到的商取对数得到。   公式:        |D|:语料库中的文件总数   |{j:ti€dj}|:包含ti的文件总数 四.TF-IDF   公式:TF-IDF = TF * IDF   特点:某一特定文件内的高频率词语,以及该词语在整个语料库中的低文件频率,可以产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。   思想:如果某个词或短语在一篇文章中出现的频率TF高

TF-IDF算法介绍及实现

时间秒杀一切 提交于 2020-03-01 02:26:52
目录 1、TF-IDF算法介绍 (1)TF是词频(Term Frequency) (2) IDF是逆向文件频率(Inverse Document Frequency) (3)TF-IDF实际上是:TF * IDF 2、TF-IDF应用 3、Python3实现TF-IDF算法 4、NLTK实现TF-IDF算法 5、Sklearn实现TF-IDF算法 1、TF-IDF算法介绍 TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。 TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。 TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。 (1)TF是词频(Term Frequency) 词频(TF)表示词条(关键字)在文本中出现的频率。 这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。 公式: 即: 其中 ni,j 是该词在文件 dj 中出现的次数

通俗解释TF-IDF

本秂侑毒 提交于 2020-02-24 05:00:28
TF-IDF 一篇文档中出现的每个词都有其重要性,当我们快速阅读一篇文章的时候,重要的词可以让我们马上理解这篇文章大致和什么相关,举个最经典的例子,如果扫描文章多次遇见“蜜蜂”或者“养殖”,那这两个词对于这篇文章的理解就不可忽视,而不重要的词例如“的”或者“了”,对我们理解文章内容就几乎没有帮助,那么如何衡量每一个词的重要性呢? 首先直接上公式如下 tf i d f ( t , d , D ) = t f ( t , d ) × idf ( t , D ) \text { tf } i d f(t, d, D)=t f(t, d) \times \text { idf }(t, D) tf i d f ( t , d , D ) = t f ( t , d ) × idf ( t , D ) 之后逐个解释公式中的项 t代表待衡量的词,d代表这个词所在的文档,D代表所有文档的集合 tf:代表词频,也就是t这个词,在文档d中,到底出现了多少次 idf:代表逆文档频率,感性理解就是 如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需的关键词 。这样就很容易理解idf会给少见的词较大权重,给常见的词较小权重,其表达式如下 i d f ( t , D ) = log ⁡ N ∣ { d ∈ D : t ∈ d } ∣ i d f(t, D)=