1. TF-IDF原理

tf-idf(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了tf-idf以外,互联网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜索结果中出现的顺序。
(维基百科)
nlp实践特征选择-LMLPHP

2. 文本矩阵化

使用词袋模型,以TF-IDF特征值为权重。(可以使用Python中TfidfTransformer库)

 vectorizer = CountVectorizer()  # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
    transformer = TfidfTransformer()  # 该类会统计每个词语的tf-idf权值
    tfidf = transformer.fit_transform(
        vectorizer.fit_transform(train))  # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵

    word = vectorizer.get_feature_names()  # 获取词袋模型中的所有词语
    weight = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
    for i in range(len(weight)):  # 打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
        print("-------这里输出第", i, u"类文本的词语tf-idf权重------")
        for j in range(len(word)):
            print(word[j], weight[i][j])

nlp实践特征选择-LMLPHP

3. 互信息的原理。

互信息(mutual information)是用来评价一个事件的出现对于另一个事件的出现所贡献的信息量
概念
互信息,Mutual Information,缩写为MI,表示两个变量X与Y是否有关系,以及关系的强弱。

缺点
在做文本分类时,我们可能会判断一个词和某类的相关程度,但是计算时,未考虑词频的影响
(可以让互信息的结果再乘上tf-idf因子,从而将特征频率与特征分布考虑进去)

应用
1、文本自动摘要
2、两个词语同时出现的概率
PMI(点互信息),通过判断一个词分别与poor和excellent的互信息来判断这个词的情感倾向

4. 利用互信息进行特征筛选。

sklearn编程
from sklearn import metrics as mr
mr.mutual_info_score(label,x)
label、x为list或array。
计算x和label的互信息

参考
文本挖掘预处理之TF-IDF:文本挖掘预处理之TF-IDF - 刘建平Pinard - 博客园
使用不同的方法计算TF-IDF值:使用不同的方法计算TF-IDF值 - 简书
sklearn-点互信息和互信息:sklearn:点互信息和互信息 - 专注计算机体系结构 - CSDN博客
如何进行特征选择(理论篇)机器学习你会遇到的“坑”:如何进行特征选择(理论篇)机器学习你会遇到的“坑”

03-08 23:03