NLP-特征选择

1. TF-IDF原理。

    TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。

   

TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF逆向文件频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处. 在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)对于在某一特定文件里的词语来说,它的重要性可表示为:

  •  

以上式子中分子是该词在文件中的出现次数,而分母则是在文件中所有字词的出现次数之和。

逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到:

  •  

其中

  • |D|:语料库中的文件总数

  • :包含词语的文件数目(即的文件数目)如果该词语不在语料库中,就会导致分母为零,因此一般情况下使用

    作为分母。

idf公式分母idf公式分母

然后再计算TF与IDF的乘积。

  •  

某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。

因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。 

2. 互信息的原理。


条件熵就是指,知道X后Y还剩多少信息量(H(Y|X))。或者知道Y后,X还剩多少信息量(H(X|Y))。

那么互信息就是知道X,给Y的信息量带来多少损失(或者知道Y,给X的信息量带来多少损失)。

举个例子,假设H(X)用一块糖来表示,Y代表一杯水,H(X|Y)也就是将这杯水倒在糖上,H(X)还剩多少,那么溶于水的那部分糖就是Y给H(X)带来的损失,即就是互信息。
 

4. 使用第二步生成的特征矩阵,利用互信息进行特征筛选。

# -*- coding: utf-8 -*-
from sklearn.feature_extraction.text import TfidfVectorizer
import wordCount
import jieba
from sklearn import metrics as mr

# 导入训练语料
data_set = {}  # 清空原有数据集
# 训练语料集路径
file_obj = open(wordCount.train_dir, "r", encoding='utf-8', errors='ignore')
# 读取持久化后的对象
data_set = file_obj.read()
data_sets = data_set.split("\t")
data_set = data_set.split()
file_obj.close()
sent_words = [list(jieba.cut(sent0)) for sent0 in data_set]
document = [" ".join(sent0) for sent0 in sent_words]
print(document)
tfidf_model = TfidfVectorizer().fit(document)
print(tfidf_model.vocabulary_)
sparse_result = tfidf_model.transform(document)
print(sparse_result)
#互信息
result = mr.mutual_info_score([data_sets[0]], [data_sets[1]])
print(result)

['财经', '华夏 大盘 逆势 减仓 近 5% 大多数 基金 一季度 加仓 □ 晨报 记者', '李锐 在 一片 加仓声 中 , 一季度 减仓 的 基金 备受 市场 关注 , 而 华夏 大盘 就是 其中 一个 。 随着 一 季报 的 披露 , 来自 WIND 资讯 的 统计数据 显示 , 目前 大多数 开放式 偏股 型基金 的 仓位 普遍 上涨 , 平均 涨幅 达到 10 个 百分点 , 几乎 接近 牛市 的 仓位 水平 。 不过 , 作为 市场 里 的 最 赚钱 基金 之一 , 华夏 大盘 的 举动 颇受 关注 , 一季度 不但 没加仓 , 反而 大幅 减仓 近 5% 。 由此 看出 , 基金 对 后市 判断 的 分歧 日益 明显 。 华夏 大盘 仓位 下降 在 整体 乐观 声中 , 基金 的 一季度 股票 仓位 出现 上升 很 正常 , 但 如果 出现 下降 呢 ? 而 仓位 下降 的 基金 , 恰恰 又 是 “ 最 赚钱 基金 经理 ” 王亚伟 掌舵 的 华夏 大盘 呢 ? 刚刚 披露 的 一 季报 显示 , 不同于 大多数 偏股 型基金 , 华夏 大盘 的 股票 仓位 确实 降低 了 。 一 季报 显示 , 截至 3 月 31 日 , 华夏 大盘 的 股票 仓位 为 55.63% , 相比 去年 四季度 末 的 60.41% 的 股票 持仓 , 大幅 降低 了 4.78 个 百分点 。 换句话说 , 华夏 大盘 一季度 不但 没有 加仓 , 而是 大幅 减仓 近 5% , 这 与 大多数 同 类型 基金 的 做法 恰好相反 。 同时 , 根据 一 季报 , 华夏 大盘 净值 增长率 为 37.76% , 同期 业绩 排在 偏股 型基金 前十名 。 来自 WIND 资讯 的 统计数据 显示 , 在 率先 披露 一 季报 的 105 只 偏股 型基金 中 , 股票 仓位 平均 达到 76.51% , 而 与 牛市 平均 79.1% 的 水平 相差无几 。 不过 , 相比 去年 四季度 末 , 在 短短 三个 月 的 时间 里 , 基金 的 股票 仓位 涨幅 “ 惊人 ” , 平均 增加 近 10 个 百分点 。 资料 显示 , 2008 年末 , 基金 的 股票 平均 仓位 为 66.78% 。 制造 、 石化 减持 较 多 而 从 行业 配置 来看 , 华夏 大盘 整体 减仓 幅度 不 大 , 在 行业 选择 上 变动 也 不 特别 明显 , 但 部分 行业 还是 减持 较 多 。 一 季报 显示 , 华夏 大盘 尽管 整体 股票 仓位 不高 , 但 制造业 以 22.28% 的 占 比 , 几乎 占据 其 股票 仓位 的 “ 半壁江山 ” 。 不过 , 与 去年 四季度 相比 , 制造业 当时 占 比 达到 26.59% , 短短 三个 月 时间 内 减仓 幅度 达到 4.31 个 百分点 。 此外 , 石油 、 化学 、 塑胶 、 塑料 板块 也 得到 类似 遭遇 , 其 最新 占 比 为 4.59 个 百分点 , 相比 去年 四季度 的 10.69 个 百分点 , 降幅 也 达到 6.1 个 百分点 。 而 在 加仓 的 板块 中 , 机械 、 设备 、 仪表 行业 增持 比较 明显 , 其 最新 占 比 为 6.18% , 相比 去年末 加仓 3.34 个 百分点 。 对于 金融保险 和 房地产 , 华夏 大盘 同样 采取 减持 策略 , 三个 月 时间 减少 3.45 个 百分点 。 不过 , 这 与 其它 同 类型 基金 形成 鲜明对比 , 一季度 基金 加仓 最 多 的 行业 包括 金融保险 和 房地产 。 其中 , 基金 持有 金融保险 的 仓位 比例 从 上 一 季末 的 12.35% 上升 了 6.4 个 百分点 , 而 房地产业 也 上升 近 2 个 百分点 。 后市 判断 偏 谨慎 展望 后市 , 王亚伟 的 态度 非常 谨慎 。 他 表示 , 股市 的 大幅 上涨 , 已经 比较 充分 地 反映 了 投资者 对 未来 经济 快速 复苏 的 乐观 预期 , 而 在 充足 流动性 的 助推 下 , 股市 整体 的 估值 水平 相对 上市公司 的 业绩 状况 甚至 已经 有所 透支 。 此外 , 市场 整体 换手率 处于 历史 高位 , 显示 投机 力量 主导 了 市场 , 预计 二季度 市场 有望 维持 活跃 , 但 资产 泡沫化 的 风险 值得 警惕 。 不过 , 大多数 基金 经理 的 判断 依然 乐观 。 其中 , 国投 瑞银 创新 动力 认为 , 中国 经济 有 可能 最先 从 经济 低谷 中 开始 复苏 , 主要 借助于 政府 投资 拉动 和 信贷 放松 后 私人 投资 的 启动 , 仍然 对 经济 和 股票市场 持 较为 乐观 的 态度 , 并且 认为 在 这个 阶段 , 周期 类 行业 会 率先 复苏 , 而 消费类 行业 的 恢复 会 滞后 于 经济周期 。 资料 显示 , 国投 瑞银 创新 动力 最新 股票 仓位 为 94.26% , 已经 非常 接近 95% 的 上限 。']
{'财经': 227, '华夏': 86, '大盘': 116, '逆势': 236, '减仓': 66, '大多数': 114, '基金': 104, '一季度': 28, '加仓': 79, '晨报': 163, '记者': 224, '李锐': 171, '一片': 29, '加仓声': 80, '备受': 112, '市场': 125, '关注': 62, '就是': 121, '其中': 63, '一个': 27, '随着': 247, '季报': 118, '披露': 147, '来自': 173, 'wind': 26, '资讯': 230, '统计数据': 214, '显示': 162, '目前': 198, '开放式': 131, '偏股': 58, '型基金': 103, '仓位': 49, '普遍': 164, '上涨': 33, '平均': 127, '涨幅': 187, '达到': 233, '10': 0, '百分点': 197, '几乎': 69, '接近': 155, '牛市': 189, '水平': 180, '不过': 38, '作为': 53, '赚钱': 231, '之一': 45, '举动': 44, '颇受': 251, '不但': 36, '没加仓': 181, '反而': 92, '大幅': 115, '由此': 196, '看出': 202, '后市': 98, '判断': 74, '分歧': 71, '日益': 159, '明显': 161, '下降': 35, '整体': 158, '乐观': 46, '声中': 110, '股票': 218, '出现': 70, '上升': 31, '正常': 176, '如果': 117, '恰恰': 139, '经理': 213, '王亚伟': 193, '掌舵': 153, '刚刚': 72, '不同于': 37, '确实': 206, '降低': 245, '截至': 141, '31': 8, '55': 15, '63': 18, '相比': 201, '去年': 89, '四季度': 101, '60': 17, '41': 12, '持仓': 149, '78': 22, '换句话说': 151, '没有': 182, '而是': 216, '类型': 210, '做法': 59, '恰好相反': 138, '同时': 95, '根据': 175, '净值': 65, '增长率': 109, '37': 11, '76': 21, '同期': 96, '业绩': 40, '排在': 154, '前十名': 77, '率先': 192, '105': 1, '51': 14, '79': 23, '相差无几': 200, '短短': 203, '三个': 30, '时间': 160, '惊人': 140, '增加': 107, '资料': 229, '2008': 4, '年末': 128, '66': 19, '制造': 75, '石化': 204, '减持': 68, '行业': 220, '配置': 241, '来看': 172, '幅度': 126, '选择': 237, '变动': 93, '特别': 190, '部分': 240, '还是': 234, '尽管': 122, '不高': 39, '制造业': 76, '22': 5, '28': 7, '占据': 87, '半壁江山': 85, '当时': 132, '26': 6, '59': 16, '此外': 177, '石油': 205, '化学': 84, '塑胶': 106, '塑料': 105, '板块': 174, '得到': 134, '类似': 209, '遭遇': 239, '最新': 166, '69': 20, '降幅': 246, '机械': 170, '设备': 225, '仪表': 50, '增持': 108, '比较': 179, '18': 3, '去年末': 90, '34': 9, '对于': 120, '金融保险': 243, '房地产': 142, '同样': 97, '采取': 242, '策略': 208, '减少': 67, '45': 13, '其它': 64, '形成': 133, '鲜明对比': 254, '包括': 83, '持有': 150, '比例': 178, '季末': 119, '12': 2, '35': 10, '房地产业': 143, '谨慎': 226, '展望': 123, '态度': 136, '非常': 248, '表示': 221, '股市': 217, '已经': 124, '充分': 60, '反映': 91, '投资者': 146, '未来': 169, '经济': 211, '快速': 135, '复苏': 113, '预期': 249, '充足': 61, '流动性': 185, '助推': 82, '估值': 51, '相对': 199, '上市公司': 32, '状况': 191, '甚至': 195, '有所': 167, '透支': 238, '换手率': 152, '处于': 111, '历史': 88, '高位': 253, '投机': 144, '力量': 78, '主导': 42, '预计': 250, '二季度': 47, '有望': 168, '维持': 215, '活跃': 184, '资产': 228, '泡沫化': 183, '风险': 252, '值得': 57, '警惕': 222, '依然': 54, '国投': 102, '瑞银': 194, '创新': 73, '动力': 81, '认为': 223, '中国': 41, '可能': 94, '最先': 165, '低谷': 52, '开始': 130, '主要': 43, '借助于': 56, '政府': 157, '投资': 145, '拉动': 148, '信贷': 55, '放松': 156, '私人': 207, '启动': 99, '仍然': 48, '股票市场': 219, '较为': 232, '并且': 129, '这个': 235, '阶段': 244, '周期': 100, '消费类': 186, '恢复': 137, '滞后': 188, '经济周期': 212, '94': 24, '95': 25, '上限': 34}
  (0, 227)    1.0
  (1, 236)    0.37665394749153414
  (1, 224)    0.37665394749153414
  (1, 163)    0.37665394749153414
  (1, 116)    0.28645503549351437
  (1, 114)    0.28645503549351437
  (1, 104)    0.28645503549351437
  (1, 86)    0.28645503549351437
  (1, 79)    0.28645503549351437
  (1, 66)    0.28645503549351437
  (1, 28)    0.28645503549351437
  (2, 254)    0.025061547389696848
  (2, 253)    0.025061547389696848
  (2, 252)    0.025061547389696848
  (2, 251)    0.025061547389696848
  (2, 250)    0.025061547389696848
  (2, 249)    0.025061547389696848
  (2, 248)    0.050123094779393695
  (2, 247)    0.025061547389696848
  (2, 246)    0.025061547389696848
  (2, 245)    0.050123094779393695
  (2, 244)    0.025061547389696848
  (2, 243)    0.07518464216909054
  (2, 242)    0.025061547389696848
  (2, 241)    0.025061547389696848
  :    :
  (2, 24)    0.025061547389696848
  (2, 23)    0.025061547389696848
  (2, 22)    0.050123094779393695
  (2, 21)    0.050123094779393695
  (2, 20)    0.025061547389696848
  (2, 19)    0.025061547389696848
  (2, 18)    0.025061547389696848
  (2, 17)    0.025061547389696848
  (2, 16)    0.050123094779393695
  (2, 15)    0.025061547389696848
  (2, 14)    0.025061547389696848
  (2, 13)    0.025061547389696848
  (2, 12)    0.025061547389696848
  (2, 11)    0.025061547389696848
  (2, 10)    0.025061547389696848
  (2, 9)    0.025061547389696848
  (2, 8)    0.050123094779393695
  (2, 7)    0.025061547389696848
  (2, 6)    0.050123094779393695
  (2, 5)    0.025061547389696848
  (2, 4)    0.025061547389696848
  (2, 3)    0.025061547389696848
  (2, 2)    0.025061547389696848
  (2, 1)    0.025061547389696848
  (2, 0)    0.07518464216909054
0.0

Process finished with exit code 0
 

猜你喜欢

转载自blog.csdn.net/cs123456789dn/article/details/88297183