@elibinary
2017-08-05T11:53:30.000000Z
字数 3782
阅读 1230
MachineLearning
最近要解决一个广告内容识别的问题,在解决实际问题之前需要对训练文本进行预处理,要先提取出包含信息多的关键特征词汇,剔除掉无关紧要的噪声词,以此来提高处理效率及增加精准度
文本特征提取主要用来提取出对待处理文本有价值的特征词,以此来缩小所需处理的集合,通常自然文本中会大量充斥着‘的、了’等等的停用词,以及一些对于处理区分度很低的词。这种对于目的无关紧要的词不仅会耗费掉大量的计算能力还有可能产生噪音影响结果。
所谓互信息是对于两个随机变量间相互依赖性的度量。对于两个离散随机变量 X, Y 的互信息可以定义为:
其中 P(x,y) 是 X, Y 的联合概率分布函数,P(x) 是 X 的边缘概率分布函数,P(y) 如是。
从公式看,互信息所度量的就是 X 和 Y 所包含的信息量,它就是在对当知道变量中任何一个,对于另一个不确定度减少的程度进行求值。
从公式可知,当 X 和 Y 相互独立时
用不确定性来说明就是,Y 的出现对于 X 的不确定性的减少量就是 X 和 Y 的互信息量,用公式表示就是:
把互信息应用在文本特征提取上面来,比较简单的一种做法就是来度量目标词 X 与文本类别 Y 的互信息,简单来说就是去度量目标 X 的存在给文本来别 Y 所带来的信息量,带入互信息公式即可求得一个依赖度分数,以高到低取 n 个来作为目标文本的特征词。
这个还是一个基于统计的计算方法,是一种经常被用在信息检索和文本挖掘的加权算法。它主用用来评估一个词对于一个文本的重要程度。
它其实是两个计算结果的运算结果
其中 TF 全称 Term Frequency,也就是词频。对于一个文本来说,一个词的词频就是指该词出现在该文本中的频率。主要用来表述其对于目标文本的内容描述能力
而 IDF 全称 Inverse Document Frequency,逆向文件频率。是一个词普遍重要性的度量,可以由总文件数目除包含该词的文本数再对其结果求对数得到。主要用来表述其对文本的区分能力
最终得分取二者的乘积:
可以看出,最终得分与目标词在目标文档中出现的次数成正比,与目标词在整个文档集中出现的次数成反比。
TF-IDF 认为对于区分文档最有意义的词是在文档中出现频率高,而在整个文档集的其它文档中出现频率少的词。其引入逆文本频率 idf 的目的其实是一种抑制噪声的加权,其目的主要是突出重要词而抑制次要词。
它的缺点也显而易见,它单纯认为文本频度小的词要比文本频度大的更有用,而这其实并不一定正确,另一方面 tf-idf 算法毫不关心单词出现的位置信息。但虽然如此,在计算单词权重的方面它依然是一个简单但却非常有效的方式。
下面看下我基于 TF-IDF 处理的文本特征词汇结果,首先是拜托勤劳的运营妹纸收集到的一些目标文本集合,大概像这样:
召文字输入元,没有其他限制 一千字③0,⑤千字①⑤0 以此类推,工資當天發放 多勞多得,每天賺9⑨0~①⑧0不等 詳情+威信945630502
独家减肥丸子,自己吃了瘦了14斤。推荐给大家,月瘦10-20斤,不反弹,不忌口,➕v:Lmumu5
召文字输入元,没有其他限制 一千字③0,⑤千字①⑤0 以此类推,工資當天發放 多勞多得,每天賺9⑨0~①⑧0不等 詳情+威信:9⃣4⃣5⃣6⃣3⃣0⃣5⃣0⃣2⃣ 正规平台 支副宝实名认证收款
啦啦啦,我是卖套的小行家💁唯一一款玻尿酸套套➕002极限薄➕女人有滋阴效果 男人有延时作用[偷笑][偷笑] V信 yunyun335108
入职打字 有兼职加2085379596
这个真的有这么好吗,我脸上的癍也跟着很多年,总是祛不了。怎么关注,希望能够帮得到我。
......
......
......
vk118网络兼职赚钱~无论你是学生还是上班族还是宝妈,只要你敢尝试,带你赚到飞~正规平台绝不欺骗!正规平台绝不骗人!只要你有手机,将空闲时间变成最高价值!加微信号AnastasiaLeslie咨询~
吃点水果,喝杯瘦身奶茶好像还不错哦!
我这里的目标文本集合数量有限,大致只有 50 条左右
先进行分词处理,这里使用成熟的中文分词库来直接处理,我的脚本是用 python 实现的,分词使用 jieba 来进行细粒度分词
['000', '002', '10', '100', ... , '17767253101', '18726533213', '1919903720', '20', '200', '一下', '一个', '一个月', '一些', '一千', '一款', '一直', '一种', '一起', '万字', '三十', '上班', '上班族', '下去', '下来', '不了', '不到', '不敢', '不是', '不用', '不错', '专属', '丸子', '了解', '二天', '互助', '互相', '互相监督', '产后', '产品', '享瘦', '亲爱', '亲身', '亲身经历', '人设', '以上', '以此', '以此类推', '价值', '任务', '优惠', '优惠券', '体质', '作用', '你们', '佣金', '佩服', '佳人', '信号', '信息', '健康',
...
'皮夫', '皮肤', '监督', '目前', '目标', '相关', '看来', '真的', '知识', '离远点', '私信', '空余', '空闲', '第二', '第二天', '简单', '类推', '精选', '糖果', '纠正', '纯天然', '终结', '经历', '绝不', '网站', '网络', '群主', '聊会', '肥胖', '能加', '能够', '脸上', '调理', '贝基', '资料', '资源', '赚钱', '跟着', '路过', '身体', '身经', '软件', '轻松', '输入', '过食', '运动', '还是', '还有', '这个', '这么', '这里', '远点', '里面', '链接', '长高', '门槛', '问题', '阅读', '限制', '需敷包', '需要', '靓伊', '饮食', '验证', '骗人', '麻烦', '鼓励']
大概分出 340 个词汇
接下来对每个词计算其 TF-IDF 得分,下面就只取前面几个来作为示例
减肥 0.287097663035
关注 0.234898087937
每天 0.18269851284
可以 0.156598725292
平台 0.156598725292
以此 0.130498937743
以此类推 0.130498937743
分享 0.130498937743
文字 0.130498937743
此类 0.130498937743
没有 0.130498937743
类推 0.130498937743
自己 0.130498937743
这个 0.130498937743
300 0.104399150194
一下 0.104399150194
一个 0.104399150194
不是 0.104399150194
了解 0.104399150194
互相 0.104399150194
威信 0.104399150194
很多 0.104399150194
怎么 0.104399150194
推荐 0.104399150194
时间 0.104399150194
正规 0.104399150194
瘦身 0.104399150194
發放 0.104399150194
詳情 0.104399150194
输入 0.104399150194
限制 0.104399150194
10 0.0782993626458
100 0.0782993626458
一千 0.0782993626458
一款 0.0782993626458
千字 0.0782993626458
工資 0.0782993626458
打开 0.0782993626458
攻众號 0.0782993626458
效果 0.0782993626458
朋友 0.0782993626458
淘宝 0.0782993626458
脸上 0.0782993626458
因为目标文本数量比较少,而且我计算 IDF 的值是在目标文本的基础上来计算的(IDF 的计算可以去网上去找一个语料库来作为目标文本集),所以其结果的精确度还是不够理想。
总结:
上面介绍的两种算法都是基于统计的方法,其实基于统计的其他方法还有很多,如二次信息熵、信息增益方法、x2统计法、遗传算法、模拟退火法等等,当然也有很多非统计方法的算法这里就不一一列举了。
另外,TF-IDF 不单用在文本特征处理上,在搜索方面也非常普遍,我前些时间了解 Elasticsearch 的时候,它默认也是使用 TF-IDF 来作为相似度算法的,主要被应用在相关性评分 _score 的计算上。
参考:
Introduction to Information Retrieval - Feature selection