机器学习(4.文本数据的特征抽取(第二种TfidfVectorizer(TF-IDF)))

TF-IDF

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度

类:sklearn.feature_extraction.text.TfidfVectorizer

1.TfidfVectorizer语法语法 

     •TfidfVectorizer(stop_words=None,)

                   •返回词的权重矩阵

     •TfidfVectorizer.fit_transform(X,y)      

                   •X:文本或者包含文本字符串的可迭代对象

                  •返回值:返回sparse矩阵

     •TfidfVectorizer.inverse_transform(X)

                   •X:array数组或者sparse矩阵

       返回值:转换之前数据格式

     •TfidfVectorizer.get_feature_names()

                   •返回值:单词列表

2.例子:,抽取中文文本特征查看重要程度

​
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba


def cutword():
    content1 = jieba.lcut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,"
                          "所以每个人不要放弃今天。")
    content2 = jieba.lcut("我们看到的从很远星系来的光是在几百万年之前发出的,"
                          "这样当我们看到宇宙时,我们是在看它的过去。")
    content3 = jieba.lcut("如果只用一种方式了解某样事物,你就不会真正了解它。"
                          "了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")

    # 把分词后的列表转换成字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)

    return c1, c2, c3


def tfidvec():
    """

    :return:
    """
    c1, c2, c3 = cutword()
    tf = TfidfVectorizer()
    data = tf.fit_transform([c1, c2, c3])
    print(tf.get_feature_names())
    print(data.toarray())
    return None

if __name__ == '__main__':
    tfidvec()

​

 程序运行结果:   打印出来的数组里面额数据就可以代表重要程度

['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', 
'只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明
天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', 
'过去', '这样']
[[0.         0.         0.21821789 0.         0.         0.
  0.43643578 0.         0.         0.         0.         0.
  0.21821789 0.         0.21821789 0.         0.         0.
  0.         0.21821789 0.21821789 0.         0.43643578 0.
  0.21821789 0.         0.43643578 0.21821789 0.         0.
  0.         0.21821789 0.21821789 0.         0.         0.        ]
 [0.         0.         0.         0.2410822  0.         0.
  0.         0.2410822  0.2410822  0.2410822  0.         0.
  0.         0.         0.         0.         0.         0.2410822
  0.55004769 0.         0.         0.         0.         0.2410822
  0.         0.         0.         0.         0.48216441 0.
  0.         0.         0.         0.         0.2410822  0.2410822 ]
 [0.15698297 0.15698297 0.         0.         0.62793188 0.47094891
  0.         0.         0.         0.         0.15698297 0.15698297
  0.         0.15698297 0.         0.15698297 0.15698297 0.
  0.1193896  0.         0.         0.15698297 0.         0.
  0.         0.15698297 0.         0.         0.         0.31396594
  0.15698297 0.         0.         0.15698297 0.         0.        ]]

4.TF-IDF结果怎么样计算的来?

   (1) tf: term frequency(统计词的频率)

   (2)idf:   逆文档频率  inverse document frequency 

                公式 idf = log(总文档数量/该词出现的文档数量)

最后的值    是由  tf  *  idf (重要性程度)

你可能感兴趣的:(机器学习)