机器学习:文本特征提取(tf-idf) -第二部分

阅读本教程的第一部分:文本特征提取(tf-idf)-第一部分

这篇文章是延续在哪里,我们开始学习有关文本特征提取和向量空间模型表示的理论和实践的第一部分。我真的建议你阅读第一部分为了跟随这第二篇文章。

因为很多人喜欢本教程的第一部分,所以本教程的第二部分比第一部分要长一些。

介绍

在第一篇文章中,我们学习了如何使用术语频率以表示在矢量空间的文本信息。然而,与术语频率方法的主要问题是,它大大加快了频繁的条款和规模下降,这比高频方面经验更丰富罕见的条款。基本的直觉是,在许多文件中经常出现的一个术语不太好鉴别,真正有意义的(至少在许多实验测试);这里最重要的问题是:你为什么会在例如分类问题,强调术语,是在你的文档的整个语料库几乎礼物?

tf-idf权重来解决这个问题。tf-idf给出的是一个单词对集合中的文档有多重要,这就是tf-idf合并局部和全局参数的原因,因为它不仅考虑孤立的术语,还考虑文档集合中的术语。为了解决这个问题,tf-idf缩小了频繁项的比例同时扩大了罕见项的比例;一个比另一个多出现10倍的术语并不比它重要10倍,这就是为什么tf-idf使用对数尺度来做到这一点。

但让我们回到我们对\ mathrm {tf} (t, d)这实际上是术语的术语计数t型在文档中丁。使用这个简单的术语频率可能会导致这样的问题关键字垃圾邮件,即我们在文件中有一个重复的词,目的是改善该词在IR (信息检索)系统,甚至对创建长文档偏见,使他们看起来比他们只是因为手册中出现的高频更重要。

为了克服这个问题,词频\ mathrm {tf} (t, d)向量空间上的文档通常也是标准化的。我们来看看如何标准化这个向量。

矢量归

假设我们要规范化术语频率向量\ {VEC V_ {D_4}}我们在本教程的第一部分已经计算。该文件d4从本教程的第一部分开始,就有了以下文本表示:

D4:我们可以看到闪亮的阳光,明亮的阳光下。

使用该文档的非规范化项频率的向量空间表示为:

\ {VEC V_ {D_4}} =(0,2,1,0)

要规范化向量,与计算单位向量,用“帽”符号表示:\帽子{V}. 单位向量的定义\帽子{V}矢量的vec {v} \是:

\显示样式

其中\帽子{V}是单位矢量,或者归一化矢量,所述vec {v} \在矢量将被归一化和\ | \ VEC {V} \ | _p是矢量的范数(大小,长度)vec {v} \p L ^空间(别担心,我将所有的解释)。

单位向量实际上只是向量的规范化版本,是长度为1的向量。

标准化过程(来源:http://processing.org/learning/pvector网站/)
标准化过程(来源:http://processing.org/learning/pvector网站/)

但这里的重要问题是如何向量的长度来计算,并明白这一点,你必须了解的动机p L ^空间,也被称为勒贝格空间

勒贝格空间

多久这个载体?(来源:来源:http://processing.org/learning/pvector/)
多久这个载体?(来源:来源:http://processing.org/learning/pvector/)

通常是向量的长度\ {VEC U】=(U_1,U_2,U_3,\ ldots,u_n)是由欧几里得范一个准则是在矢量空间中分配一个严格正长度或大小于所有矢量的函数-,其定义为:

(来源:http://processing.org/learning/pvector网站/)
(来源:http://processing.org/learning/pvector网站/)

\|\vec{u}\=\sqrt{u^2_1+u^2_2+u^2_3+\ldots+u^2_n}

但是,这不是定义长度的唯一途径,这就是为什么你看到(有时)的数第页加上标准符号,比如\|\矢量{u}\|p. 因为它可以概括为:

\显示样式{u}u p=(\left | u 1\right | ^p+\left | u 2\right | ^p+\left | u 3\right | ^p+\ldots+\left | u n\right | ^p)^\frac{1}{p}

和简化为:

\显示样式\|\vec{u}\u p=(\sum\limits{i=1}^{n}\left{\vec{u}\right{^p)^\frac{1}{p}

所以,当你阅读有关二级规范,你正在阅读关于欧几里得范,具有规范p=2,最常见的用于测量向量长度的规范,通常称为“大小”;实际上,当您有一个不合格的长度度量(没有第页号),你有二级规范(欧几里德范数)。

当你阅读一L1范你正在阅读与规范p=1,定义为:

\的DisplayStyle \ | \ VEC【U} \ | _1 =(\左| U_1 \右| + \左| U_2 \右| + \左| U_3 \右| + \ ldots + \左| u_n \右|)

这无非是向量的组件的简单相加,也被称为出租车距离,也被称为曼哈顿距离。

出租车几何与欧几里德距离:在出租车几何中,同一路线的三条图线具有相同的长度(12)。在欧几里得几何中,绿线有长度6 \倍\ SQRT {2} \约8.48,并且是唯一的最短路径。
资源:维基百科:出租车几何学

注意,您还可以使用任何规范来规范化vector,但是我们将使用最常见的规范l2 -规范,它也是the的0.9版本中的默认规范scikits.学习。You can also find papers comparing the performance of the two approaches among other methods to normalize the document vector, actually you can use any other method, but you have to be concise, once you’ve used a norm, you have to use it for the whole process directly involving the norm (如果以后要取L2范数,则使用L1范数的单位向量的长度不会是1)。

返回向量规范化

现在你知道了矢量正常化进程是什么,我们可以尝试一个具体的例子,使用L2范数的过程(我们现在使用正确的术语),以规范我们的矢量\ {VEC V_ {D_4}} =(0,2,1,0)为了得到它的单位向量\ {帽子V_ {D_4}}。为此,我们简单地把它代入单位向量的定义来求值:

\帽子{V}= \frac{\vec{v}}{\|\vec{v}\|_p} \\ \\  \hat{v_{d_4}} = \frac{\vec{v_{d_4}}}{||\vec{v_{d_4}}||_2} \\ \\ \\  \hat{v_{d_4}} = \frac{(0,2,1,0)}{\sqrt{0^2 + 2^2 + 1^2 + 0^2}} \\ \\  \hat{v_{d_4}} = \frac{(0,2,1,0)}{\sqrt{5}} \\ \\  \small \hat{v_{d_4}} = (0.0, 0.89442719, 0.4472136, 0.0)

这就是它!我们的法矢\ {帽子V_ {D_4}}现在有一个L2范\ | \帽子{V_ {D_4}} \ | _2 = 1.0

请注意,这里我们归我们词频文档向量,但后来我们要做的是,TF-IDF的计算后。

术语频率-文档反频率(tf-idf)权重

现在您已经理解了向量归一化在理论和实践中是如何工作的,让我们继续我们的教程。假设您的集合中有以下文档(取自本教程的第一部分):

火车文档集:D1:天空是蓝色的。D2:阳光灿烂。测试文档集:D3:在天空,阳光灿烂。D4:我们可以看到闪亮的阳光,明亮的阳光下。

您的文档空间可以定义为d = \ {D_1,D_2,\ ldots,D_N \}在哪里n个您的语料库中的文件数量,在我们的情况下是D_ {火车} = \ {D_1,D_2 \}D_ {测试} = \ {D_3,D_4 \}. 文档空间的基数由左\ | {D_{火车}}\ | = 2\左| {{D_测试}} \右|= 2,因为我们只有两个用于培训和测试的文档,但它们显然不需要具有相同的基数。

现在让我们看看,然后是如何IDF(逆文档频率)定义:

\displaystyle\mathrm{idf}(t)=\log{\frac{\left | D\right |}{1+\left |{D:t\in D\}\right |}

在哪里\左|{d:t\in d}\right|是个文件数量其中t型当项频函数满足时,出现\数学{tf}(t,d)neq 0,我们只在公式中加1以避免零除。

为TF-IDF式则是:

\ mathrm {TF \ MBOX { - } IDF}(T)= \ mathrm {TF}(T,d)\倍\ mathrm {IDF}(t)的

这个公式有一个重要的结果:当在给定的文档中有一个高频(tf)时,tf-idf计算的权重会很高(本地参数)和整个集合中的术语的低文档频率(全局参数)。

现在让我们用第一个教程中计算的术语frequency计算特征矩阵中每个特征的idf:

M_ {}列车=  \begin{bmatrix}  0 & 1 & 1 & 1\\  0 & 2 & 1 & 0  \end{bmatrix}

因为我们有4个特性,我们必须计算\ mathrm {idf} (t_1),\ mathrm {IDF}(T_2),\ mathrm {IDF}(t_3处),\数学{idf}(t_4):

\ mathrm {idf} (t_1) = \ log{\压裂{\左| D \右|}{1 +左| \ \{在D D: t_1 \ \} \右|}}= \ log{\压裂{2}{1}}= 0.69314718

\mathrm{idf}(t|2)=\log{\frac{\left | D\right |}{1+\left |{D:t|2\in D\}\right |}=\log{\frac{2}{3}=-0.40546511

\ mathrm {IDF}(t_3处)= \日志{\压裂{\左| d \右|} {1+ \左| \ {d:t_3处\在d \} \右|}} = \日志{\压裂{2} {3}} = -0.40546511

\ mathrm {IDF}(T_4)= \日志{\压裂{\左| d \右|} {1+ \左| \ {d:T_4 \在d \} \右|}} = \日志{\压裂{2} {2}} = 0.0

这些IDF权重可以由矢量作为表示:

\vec{idf{train}=(0.69314718,-0.40546511,-0.40546511,0.0)

现在,我们有我们的词频矩阵(M_ {}列车)和表示我们的矩阵的每个特征的IDF(矢量vec {idf_ \{火车}}),我们可以计算出我们的TF-IDF权重。我们要做的是矩阵中的每一列的简单乘法M_ {}列车与各自的vec {idf_ \{火车}}矢量维度。为此,我们可以创建一个正方形对角矩阵被称为M_ {} IDF垂直和水平尺寸都等于矢量vec {idf_ \{火车}}尺寸:

M{idf}=\begin{bmatrix}0.69314718&0&0&0&0\\0&-0.40546511&0&0\\0&0&-0.40546511&0\\0&0&0&0\end{bmatrix}

然后将它乘到术语频率矩阵,因此最终结果然后可以定义为:

M{tf\mbox{-}idf}=M{train}\times M{idf}

请注意,矩阵乘法不是可交换的,结果是A \乘以B将不同于B \乘以一个,这就是为什么M_ {} IDF在乘法的右侧,以达到将每个idf值乘以其对应特征的预期效果:

\begin{bmatrix}   \mathrm{tf}(t_1, d_1) & \mathrm{tf}(t_2, d_1) & \mathrm{tf}(t_3, d_1) & \mathrm{tf}(t_4, d_1)\\   \mathrm{tf}(t_1, d_2) & \mathrm{tf}(t_2, d_2) & \mathrm{tf}(t_3, d_2) & \mathrm{tf}(t_4, d_2)   \end{bmatrix}   \times   \begin{bmatrix}   \mathrm{idf}(t_1) & 0 & 0 & 0\\   0 & \mathrm{idf}(t_2) & 0 & 0\\   0 & 0 & \mathrm{idf}(t_3) & 0\\   0 & 0 & 0 & \mathrm{idf}(t_4)   \end{bmatrix}   \\ =   \begin{bmatrix}   \mathrm{tf}(t_1, d_1) \times \mathrm{idf}(t_1) & \mathrm{tf}(t_2, d_1) \times \mathrm{idf}(t_2) & \mathrm{tf}(t_3, d_1) \times \mathrm{idf}(t_3) & \mathrm{tf}(t_4, d_1) \times \mathrm{idf}(t_4)\\   \mathrm{tf}(t_1, d_2) \times \mathrm{idf}(t_1) & \mathrm{tf}(t_2, d_2) \times \mathrm{idf}(t_2) & \mathrm{tf}(t_3, d_2) \times \mathrm{idf}(t_3) & \mathrm{tf}(t_4, d_2) \times \mathrm{idf}(t_4)   \end{bmatrix}

让我们看一个乘法的具体例子:

开始{bmatrix}0&-0.40546511&-0.40546511&0\&0.81093022&-0.40546511&0结束{bmatrix}

最后,我们可以将L2规范化过程应用到M{tf\mbox{-}idf}矩阵。请注意,此规范化是“按行”因为我们要把矩阵的每一行作为一个分开的向量来处理,而不是把矩阵作为一个整体来处理:

M_ {tf \ mbox {-} idf} = \压裂{M_ {tf \ mbox {-} idf}} {\ | M_ {tf \ mbox {-} idf} \ | _2} = \begin{bmatrix}   0 & -0.70710678 & -0.70710678 & 0\\   0 & -0.89442719 & -0.4472136 & 0   \end{bmatrix}

这就是我们测试文档集的标准化tf-idf权值,它实际上是单位向量的集合。如果你取矩阵每一行的l2范数,你会发现它们的l2范数都是1。

Python的实践

环境中使用:Python的v.2.7.2,NumPy的1.6.1,SciPy的v.0.9.0,Sklearn(Scikits.learn)v.0.9

现在,你在等待的部分!在本节中,我将使用Python的使用,以显示TF-IDF计算的每一步Scikit.学习特征提取模块。

第一步是创建我们的培训和测试文档集,并计算术语频率矩阵:

从sklearn.feature_extraction.text进口CountVectorizer train_set =(“天空是蓝色的。”,“阳光灿烂”。)TEST_SET =(“在天空中的太阳是光明的。”,“我们可以看到闪耀的太阳,。明亮的太阳“)count_vectorizer = CountVectorizer()count_vectorizer.fit_transform(train_set)打印 ”词汇“,count_vectorizer.vocabulary#词汇:{ '蓝':0, '太阳':1, '鲜艳':2 '天空':3} freq_term_matrix = count_vectorizer.transform(TEST_SET)打印freq_term_matrix.todense()#[[0 1 1 1]#[0 2 1 0]]

现在,我们有频率项矩阵(称为freq_term_matrix),则可以实例化TfidfTransformer,负责计算我们项频矩阵的tf-idf权重:

从sklearn.feature_extraction。t型ext import TfidfTransformer tfidf = TfidfTransformer(norm="l2") tfidf.fit(freq_term_matrix) print "IDF:", tfidf.idf_ # IDF: [ 0.69314718 -0.40546511 -0.40546511 0. ]

请注意,我所指定的标准为L2,这是可选的(实际上默认为L2范数),但我已经添加了参数,使其明确向你表示,它会使用L2范数。还要注意的是,你可以通过访问称为内部属性看IDF计算权重以色列国防军_。现在符合()方法计算出了矩阵的idf,让我们变换freq_term_matrix到tf idf权重矩阵:

tf_idf_矩阵=tfidf.transform转换(freq_term_matrix)打印tf_idf_矩阵.todense(#)[0。-0.70710678-0.70710678 0。]35;[0。-0.89442719-0.44721360。]]

就是这样tf_idf_matrix其实我们以前M{tf\mbox{-}idf}矩阵。通过使用Vectorizer阶级Scikit.学习它是一个自动组合CountVectorizerTfidfTransformer对你来说。见这个例子要知道如何使用它的文本分类过程。

我真的希望你喜欢这篇文章,我试着让它尽可能简单,甚至对那些没有线性代数等数学背景的人。在下一篇机器学习文章中,我希望向您展示如何使用tf-idf来计算余弦相似度。

如果你喜欢,可以随意发表评论,提出建议、更正等。

引用本文为:Christian S.Perone,“机器学习:文本特征提取(tf idf)-第二部分”,in亚洲金博宝隐姓埋名地,03/10/2011,//www.cpetem.com/2011/10/machine-learning-text-feature-extraction-tf-idf-part-ii/

工具书类

理解逆文档频率:对IDF理论论证

维基百科:: TF-IDF

经典向量空间模型

Sklearn文本特征提取代码

更新

2015年3月13日格式,固定的图像问题。
2011年10月3日添加了关于Python示例使用的环境的信息

103对“机器学习::文本特征提取(tf-idf) -第二部分”的思考

  1. 真 的!
    tf idf的完美介绍,非常感谢!很有意思,我想研究这个领域很长一段时亚洲金博宝间了,你的帖子真是一份礼物。阅读更多关于该技术用例的信息会非常有趣。也许你会有兴趣,请,对其他方法的文本语料库表示,如果他们存在一些启发?
    (对不起,糟糕的英语,我正在努力对其进行改进,但仍然有很多工作要做的)

  2. 优秀的工作基督教!我期待着阅读您的下一篇关于文档分类、聚类和用朴素贝叶斯、随机梯度下降、迷你批处理-k- means和非负矩阵分解的文章

    另外,scikit-learn的文档在文本特征提取方面也很差(我是罪魁祸首…)。如果您想帮助改善当前的情况,请不要犹豫加入邮件列表。

    1. 好谢谢奥利维尔。我真的很想帮助sklearn,我只是需要更多的时间来做这件事,你们已经做得很好了,我对库中已经实现的大量算法印象深刻,请继续保持!

  3. 我更喜欢这个教程的新概念水平,我在这里学习。
    这就是说,学习scikits您正在使用哪个版本?
    最新通过的easy_install安装似乎有不同的模块层次结构(即没有找到sklearn feature_extraction)。如果你能提到你使用的版本,我只是尝试用这些例子。

  4. 哪里是第3部分?我必须提交在4天内向量空间模型的分配。把它在周末的希望吗?

  5. 由于基督徒!与s亚洲金博宝klearn向量空间很不错的工作。我只有一个问题,假设我已经计算了“tf_idf_matrix”,我想计算成对余弦相似性(每行之间)。我是有问题的稀疏矩阵格式,你可以请给出这样的例子?也是我的基质是相当大的,由60K说25K。非常感谢!

  6. 很好的帖子…我知道什么是tf-idf,以及如何用一个具体的例子来实现它。但我发现了两件我不确定的事:
    1-你调用了2维矩阵M_train,但它有D3和D4文档的tf值,所以你应该调用这个矩阵M_test而不是M_train。因为D3和D4是我们的测试文档。
    2 - 当你计算IDF值的T2(这是“太阳”),它应该是日志(2/4)。因为文件的数目是2 D3有词“太阳” 1次,D4有它的2倍。这使得3,但是我们也加1到值摆脱0分的问题。这使得4 ...我说得对不对还是我失去了一些东西?
    谢谢您。

    1. 你是对的:这些都是优秀的博客文章,但是作者确实有责任回去纠正错误,比如(和其他的,比如第1部分;…):缺少训练下划线;设置stop_words参数;同样在我的计算机上,词汇索引是不同的。

      我们非常感谢你的努力(这是对作者的荣誉!)对于那些努力克服原始材料中那些(未纠正的)错误的人来说,这也是一个重大的伤害。

      1. 回复:我的“你是正确的评论”(上面),我应该加上:

        “……还注意到Frederique Passot关于分母的评论(如下):

        “......我们用的是什么确实是在发生的一个术语,无论任何给定的文档中出现的术语次数的文件数量。在这种情况下,然后,在用于T2(“太阳”)的IDF值分母确实2 + 1(2个文件具有“太阳”术语,1以避免潜在的零分割误差)。“

    2. 哈立德,
      这是对一个古老问题的回答。不过,我还是想回应一下亚洲金博宝,把我从这篇文章中了解到的内容传达出去。
      您的问题2:“当您计算t2(即‘sun’)的idf值时,它应该是log(2/4)”
      我的理解是:对数项的分母应该是(出现该项的文档数+1),而不是该项的频率。“Sun”这个词出现的文档数量是2(D3中出现1次,D4中出现2次-总共出现在两个文档中3次。3为频率,2为文件数量)。因此分母是2+1=3。

  7. 优秀的帖子!
    我有个问题。从最后一个tf-idf权重矩阵中,我们如何分别得到项的重要性(例如,哪个是最重要的项?)。我们如何使用这个矩阵来对文档进行分类

  8. 我和杰克有同样的疑问(最后的评论)。如何从上一个tf-idf权值矩阵中分别得到各项的重要性(如:哪个是最重要的术语?)我们如何使用这个矩阵来分类文档。

  9. 我有个问题..
    在tf-idf操作之后,我们得到一个带有值的numpy数组。假设我们需要从数组中获取最高的50个值。我们怎么能做到?

    1. f(idf)的高值表示特定向量(或文档)具有较高的局部强度和较低的全局强度,此时可以假设其中的项具有较高的局部意义,不能忽略。相对于函数法(tf),函数法中只有项重复次数较多,但在大多数情况下并不是一种合适的建模方法。

  10. 嘿,
    Thanx fr代码..确实很有亚洲金博宝帮助!

    1.适用于文档聚类,计算反相的术语频率之后,shud我使用任何关联性系数等Jaccards系数,然后应用聚类算法中像k均值或shud我计算反转术语频率后直接适用d k均值到文档向量?

    2.您是如何评价倒词频为calcuating文档向量文本聚类?

    非常感谢您的回复!

  11. @哈立德:你在1中所指出的-让我也困惑了一分钟(M_train vs M_test)。不过,我认为你在第二点上错了,因为我们使用的实际上是一个术语出现的文档数量,而不管该术语在任何给定文档中出现的次数。在这种情况下,则t2的idf值(“sun”)中的分母实际上是2+1(2个文档具有术语“sun”,+1以避免潜在的零除错误)。

    我也很想读这个系列的第三部分!我特别有兴趣学习更多关于特征选择的知识。有没有一种惯用的方法来获得最高词素的词汇排序列表。idf分数吗?总体上你是如何定义这些术语的?你如何得到那些最负责高或低余弦相似度的术语(逐行)?

    谢谢你的帖子!

  12. 优秀的文章和td-idf标准化的伟大介绍。

    你必须解释这些复杂的概亚洲金博宝念非常清晰,结构化的方法。

    谢谢!

      1. 亚洲金博宝非常好的信息教程…。请上传更多与文档聚类过程相关的教程。

  13. 你能为用tf idf做余弦相似性提供任何参考吗?这样我们就有了tfidf的矩阵,我们怎么能用它来计算余弦呢。谢谢你的精彩文章。

  14. 非常感谢你这么做,也非常感谢你彻底地解释了整个国防军的事情。

  15. 如果我错了,请纠正我
    以“我们在第一个教程中计算的频率”开头的公式是:应该Mtest而不是Mtrain。启动后,这些idf重量可以用矢量表示为:“应该是idf测试,而不是idf列车。

    顺便说一句,你能给出一个实现分类的简单方法吗?

  16. 亚洲金博宝很好的文章。恭喜! !

    展示你的结果,我有一个问题:

    我读了维基百科:
    tf-idf值随单词出现在文档中的次数成比例增加,但被单词在语料库中的频率抵消,这有助于控制某些单词通常比其他单词更常见的事实。

    当我阅读时,我明白如果一个单词出现在所有文档中,那么一个只出现在一个文档中的单词就不那么重要了:

    然而,在结果中,“太阳”或“明亮”是比“天空”最重要的。

    我不能完全理解。

  17. 极好的!我以前对tf-idf很熟悉,但是我发现你的scikits示例很有帮助,因为我正在尝试学习这个包。

  18. 优秀的帖子!一次偶然的机会找上CountVectorizer更多信息,无意中发现了这一点,但我很高兴我通过两个您的文章(第1部分和第2部分)的读取。

    现在为您的博客添加书签

  19. 似乎不像您所描述的那样适合_transform()。。
    知道为什么吗?
    >>>ts公司
    (“天空是蓝色的”,“阳光灿烂”)
    >>>v7=计数器矢量器()
    >>>v7.拟合变换(ts)
    <2×2稀疏矩阵类型''
    用4个存储元件在坐标格式>
    >>>打印v7.vocabulary_
    {u'is':0,u'the':1}

    1. 其实,还有第一个Python样本中的两个小错误。
      一。CountVectorizer的实例化方式如下:
      count_vectorizer=计数向量器(stop_words='english')
      这将确保“是”,“的”等被删除。

      2.要打印的词汇,你必须在末尾添加下划线。
      打印“词汇:” count_vectorizer.vocabulary_

      优秀的教程,只是小事。它帮助别人。

      1. 谢谢阿什。尽管这篇文章相当不言自明,但你的评论却使整个情况发生了变化。

  20. 谢谢你的解释。

    我有一个关于idf(t#)计算的问题。
    在第一种情况下,您编写了idf(t1)=log(2/1),因为我们的集合中没有这样的术语,因此,我们在分母上加1。现在,以t2为例,你写了log(2/3),为什么分母等于3而不是4(=1+2+1)?在案例t3中,您写入:log(2/3),因此分母等于3(=1+1+1)。我看到这里有点矛盾。你能解释一下,分母值是怎么计算出来的吗。

    谢谢。

    1. 你理解错了,分母你不把这个词的总和每个文档中,你只是总结所有具有词的至少一个aparition的文件。

  21. 如果您能提供了解如何在文件分类中使用ft-idf的方法就好了。我看到了这个例子(python代码),但是如果有最好的算法,因为不是所有人都能理解这种语言。

    谢谢

  22. 尼斯。一种解释有助于正确看待这个事情。是TF-IDF的好办法做聚类(例如,从已知的语料用杰卡德分析或方差相对于平均值设定)?

    继续写:)

  23. 嗨,克里斯蒂安,

    这让我非常兴奋和幸运,读亚洲金博宝这篇文章。你理解的清晰反映了文件的清晰度。这让我重拾我的信心在机器学习领域。

    由于一吨为美丽的解释。

    我想从你那里读更多。

    谢谢,

  24. 谢谢你的精彩总结。你提到了一些比较一级和二级标准的论文,我计划对此进行更深入的研究。你还知道他们的名字吗?

  25. 精彩的文章。

    到目前为止,我读过最简单、最合理的tf-tdf解释。我真的很喜欢你解释背后的数学原理。

  26. 嗨,伟大的职位!我使用的是TfidVectorizer模块scikit学习产生与规范= L2的TF-IDF矩阵。我把它叫做tfidf_matrix语料的fit_transform后,我一直在检查TfidfVectorizer的输出。我总结了行,但他们并不总和为1的代码是VECT = TfidfVectorizer(use_idf =真,sublunar_tf =真,规范=” L2)。tfidf_matrix = vect.fit_transform(数据)。当我运行tfidf_matrix.sum(轴= 1)的载体是大于1也许我看错矩阵或我误解如何正常化的作品。我希望有人能澄清这一点!谢谢

  27. 我能问一下当你计算IDF时,例如log(2/1),你是使用log to base 10(e)还是其他值?我得到了不同的计算结果!

  28. 很棒的教程,刚刚开始一个新的工作在ML和这解释事情非常清楚,因为它应该是。亚洲金博宝

  29. Execellent帖子...。!非常感谢这篇文章。

    但是我需要更多的信息,因为你展示了python的实用性,你能提供它与JAVA语言。

  30. 我有点困惑,为什么TF-IDF在这种情况下,给出了负数?我们如何解读?纠正我,如果我错了,但是当载体为正值,这意味着该组件的大小确定字是该文件中有多么重要。如果是负数,我不知道如何解释它。如果我是采取向量的点积与所有积极的部件和一个负组件,这将意味着,一些部件可能负点积贡献,即使在载体有一个特定的词非常高的重视。亚洲金博宝

  31. 你好,
    非常感谢您对这个主题这个详细的解释,真是太好了。无论如何,你可以给我一个提示,这可能是我的错误,我不断看到的来源:

    freq_term_matrix = count_vectorizer.transform(TEST_SET)
    AttributeError:“matrix”对象没有属性“transform”

    我是否使用了错误版本的sklearn?

  32. 非常简单有效的解释。请贴出更多有这样精彩解释的话题。期待接下来的文章。
    谢谢

  33. 我了解tf-idf的计算过程。但是那个矩阵是什么意思,我们如何使用tfidf矩阵来计算相似度让我困惑。你能解释一下我们如何使用tfidf矩阵吗?谢谢

  34. 最好的解释。。很有帮助。你能告诉我如何亚洲金博宝在支持向量机的文本分类中绘制向量吗。。我正在研究tweets分类。我很困惑,请帮帮我。

  35. 嗨,如果我弄错了,我很抱歉,但我不明白| | Vd4 | | 2=1是怎么回事。
    D4 =的值(0.0,0.89,0.44,0.0),因此归一化将是= SQRT(正方形(0.89)+平方(0.44))= SQRT(0.193)= 0.44
    我错过了什么?请帮助我理解。

  36. 嗨,这是一个伟大的博客!
    如果我需要做bi-gram case,如何使用sklearn来完成?

  37. 当我执行相同的脚本时,我不会得到相同的结果。
    打印(“IDF:”,tfidf.idf_):以色列国防军:[2.09861229 1。1.40546511号。]

    我的python版本是:3.5
    Scikit了解的版本是:o.18.1

    我需要改变什么?可能的错误是什么?

    谢谢,

    1. 这可能是很多事情,因为您使用的是不同的Python解释器版本和Scikit Learn版本,您应该预期结果会有所不同,因为它们可能更改了默认参数、算法、舍入等。

  38. 完美的介绍!
    没有诡计。清晰简单,技术应该是这样。
    亚洲金博宝非常有帮助
    非常感谢。亚洲金博宝
    请发帖!
    Obrigado

  39. 为什么| d |= 2,在IDF方程。它不应该是4,因为| d |代表的审议的文件数量,我们有2从测试,2个来自火车。

  40. 嗨,嗨,克里斯蒂安
    你的文章对我从根本上理解tfd-idf非常有帮助。我正在进行一个分类项目,在那里我使用向量空间模型来确定我的测试文档应该出现的类别。它是机器学习的一部分。如果你能给我提些相关的建议,那就太好了。我被困在这一点上了。
    谢谢

  41. 看到这个例子就知道如何使用它的文本分类过程。“这个”链接不起作用了。能否请您提供相关链接,例如。

    谢谢

  42. 你说,你有一个很好的邮政。真的谢谢您!好极了。

  43. 关于这门学科,确实有很多东西需要学习。我真的很喜欢你提出的所有观点。

  44. 我知道这个网站提供基于质量的文章或
    评论和其他数据,有没有其他网页显示这些类型
    信息质量如何?

  45. 在第一个例子。IDF(T1),日志(2/1)由计算器= 0.3010。为什么他们获得0.69 ..请有什么不对?

留下回信

您的电子邮件地址将不会被公布。

这个网站使用Akismet来减少垃圾邮件。了解您的意见如何处理数据