朗新微课堂|文本挖掘技术分享

[复制链接]
发表于 2018-9-23 16:22:34 | 显示全部楼层 |阅读模式


                        前 言


一、范围文本数据挖掘(Text Mining)是指从文本数据中抽取有价值的信息和知识的计算机处理技术可以看做是数据挖掘的一个应用方向。受限于个人经验及能力,本文只尝试围绕本领域的关键问题及一些常见的应用场景给出一个较直观的介绍。


二、背景知识基于个人学习经验,对一些认为值得一读的书进行简单介绍以为读者参考。

  • 《最优化导论》
     介绍最优化计算的基础知识及各类优化问题的常用求解方法及算法,包括各类常用一维搜索方法、全局搜索方法、以及线性规划问题的各种求解算法等。是很好的自学入门书

  • 《数据挖掘导论》
数据挖掘算法的经典入门书,涵盖数据预处理、分类、聚类、关联分析、异常检测各个经典的场景及相关算法的介绍。

  • 《统计学习方法》
从概率统计的角度介绍了有监督机器学习的经典算法。相比《数据挖掘导论》对于具体算法的实现流程和细节的介绍,本书侧重的是更基础的模型或算法的推导过程。两者可以互为补充

  • 《Machine learning In Action》
介绍一些常见的机器学习算法,并提供简单易学的基于Python的实现代码。本书的特点是简单但又不失代表性,更侧重于应用实践,适合入门


文本挖掘

一、特征选择特征选择在业界中一直被认为十分重要。当前特征选择可以分为两个方向:一是人工选择特征,这是传统的做法;二是以深度学习为代表的机器自动学习选择特征本文主要介绍人工特征选择。
文本挖掘应用的特征包括两方面:文档(或文档集)层面的特征&语义层面的特征
1文档-词项频率相关特征

  • 文档频率(DF):文档集里有多少文档包含某一词项.
  • 词项频率(TF): 某一词项在指定文档中出现的次数。
  • 逆文档频率(IDF):文档频率的倒数。其基于一个虽然简单但很有效的观点:如果包含词项t的文档越少,则说明词项t具有更好的类别区分能力。通常结合TF构成TF-IDF指标,用于评估一个词项对于文档集中一份文档的重要程度。
2信息熵相关特征

  • 信息熵(entropy): 是香农最早提出来的,用来衡量一个系统的复杂度。P(x)是变量出现的概率。信息熵越大,变量包含的信息量就越大,变量的不确定性也越大。

  • 条件熵(conditional entropy ) :表示在已知随机变量Y的条件下随机变量X的不确定性。
  • 左右熵:在自然语言处理中,左右熵是一个非常重要的统计特征,常用在新词提取应用里,体现字串的上下文的独立程度。
  • 互信息(mutual information): 互信息用来衡量两个变量之间的相关性。互信息越大,相关性越大,反之亦然。
3语义特征通常是利用自然语言技术提取文档的浅层语义特征。因此自然语言处理技术是文本挖掘应用的基础技术之一。可参见文档《自然语言处理技术介绍》。
4其他特征其它一些作用类似互信息的有监督学习的特征,例如基于卡方相关性检验的卡方特征等。


2、关键词提取从一篇文档或文档集中抽取最具有表达意义的TOPN个词汇或短语。关键词可以应用于精化阅读、信息检索等应用。
1算法关键词提取可以分为有监督学习无监督学习两类。无监督学习算法常用的有基于词频的(如TDF/IDF)、基于投票的(如TextRank)算法等;有监督学习算法通常在“分类”等应用里,用于特征提取或者类别标签提取,如基于互信息、卡方特征等。这里以无监督算法TextRank为例进行介绍。
TextRank属于无监督学习算法,因此不需要事先对语料库进行标注,可以直接应用在文档或者文档集里。但在实际应用里,通常会通过自然语言处理技术对数据进行预处理。 
1应用示例                         文档关键词提取
以今年奥运会主办城市“里约”的说明为例,输入(摘自百度百科):
里约热内卢(葡萄牙语:Rio de Janeiro,意即“一月的河”),简称“里约”,曾经是巴西的首都(1763年-1960年),位于巴西东南部沿海地区,东南濒临大西洋,海岸线长636公里。里约热内卢属于热带海洋性气候,终年高温,气温年、日较差都小,季节分配比较均匀。
里约热内卢是巴西乃至南美的重要门户,同时也是巴西及南美经济最发达的地区之一,素以巴西重要交通枢纽和信息通讯、旅游、文化、金融和保险中心而闻名。里约热内卢是巴西第二大工业基地。市境内的里约热内卢港是世界三大天然良港之一,里约热内卢基督像是该市的标志,也是世界新七大奇迹之一。
里约热内卢也是巴西联邦共和国的第二大城市,仅次于圣保罗,又被称为巴西联邦共和国的第二首都,拥有全国最大进口港、是全国经济中心,同时也是全国重要的交通中心。背山面水,港湾优良。工业主要有纺织、印刷、汽车等,有七百多家银行和最大的股票交易所;有世界最大的马拉卡纳球场。海滨风景优美,为南美洲著名旅游胜地。
里约热内卢曾在马拉卡纳球场举办过1950年巴西世界杯和2014年巴西世界杯两次世界杯。[1]
20091002日,里约热内卢获得2016年第31届夏季奥林匹克运动会举办权,201685日,2016年里约热内卢奥运会在马拉卡纳球场开幕,里约热内卢成为奥运史上首个主办奥运会的南美洲城市,同时也是首个主办奥运会的葡萄牙语城市
提取排名前10个的关键词如下:
里约热内卢, 巴西, 重要, 马拉卡纳, 世界, 球场, 最大, 首都, 旅游, 中心
可以看到提取的关键词很好的表达了里约的关键性质:(曾经的、第二)首都、球场、旅游、(旅游、工业等)中心等。
                          文档集关键词提取
以马丁著名的《冰与火之歌》系列来做个有趣的实验。
对于以人物为主的小说,通过关键词提取可以从某个角度识别出主要角色。
结果如下:
冰与火之歌卷一:权力的游戏上
 
奈德,琼恩,国王,爵士,知道,布兰,劳勃,艾莉亚,利昂,已经,珊莎,大人, 起来,塔克,凯特琳,父亲,最后,兰尼斯,告诉,现在,丹妮,骑士,声音,夫人,看着,里斯,觉得,眼睛,之后,孩子,罗柏,哥哥,一边,东西,凯特,小指头,城堡,尼斯,看到,下来,儿子,身边,发现,家族,突然,多斯拉克,地方, 微笑,一定,离开
冰与火之歌卷一:权力的游戏下
 
爵士,父亲,利昂,大人,琼恩,国王,知道,奈德,丹妮,已经,布兰,罗柏,珊莎,骑士,儿子,起来,兰尼斯,艾莉亚,塔克,告诉,卓戈,劳勃,最后,一边, 声音,公爵,眼睛,孩子,之后,艾德,乔佛里,凯特琳,诸神,现在,伯爵,夫人,觉得,听见,看着,看到,希望,身边,仿佛,家族,东西,应该,一定,里斯, 女人,或许
冰与火之歌卷二:列王的纷争上
 
爵士,利昂,父亲,大人,艾莉亚,国王,知道,布兰,骑士,尼斯,起来,学士, 陛下,已经,尤伦,史坦,席恩,伯爵,夫人,乔佛里,儿子,塔克,最后,琼恩, 里斯,蓝礼,珊莎,兰尼斯,东西,一边,城堡,罗柏,之后,一定,觉得,现在, 戴佛斯,孩子,劳勃,太后,瑟曦,发现,家族,告诉,喜欢,诸神,应该,看到, 弟弟
冰与火之歌卷二:列王的纷争下
 
爵士,利昂,大人,席恩,国王,知道,琼恩,尼斯,父亲,告诉,珊莎,布兰,骑士, 艾莉亚,史坦,乔佛里,夫人,最后,兰尼斯,一边,眼睛,城堡,戴佛斯,起来, 丹妮,现在,陛下,公爵,之后,塔克,瑟曦,声音,离开,一起,弟弟,之前,之间, 伯爵,孩子,诸神,发现,似乎,必须,已经,身边,太后,或许,黑暗,希望, 里斯
冰与火之歌卷三:冰雨的风暴上
 
爵士,父亲,利昂,知道,大人,詹姆,国王,琼恩,告诉,骑士,艾莉亚,眼睛,珊莎,起来,公爵,不能,丹妮,夫人,山姆,心想,孩子,戴佛斯,女人,城堡,陛下, 儿子,兰尼斯,乌鸦,最后,发现,塔克,东西,一起,已经,离开,一边,伯爵,罗柏,喜欢,看到,明白,蕾妮,布兰,无法,之后,可能,瑟曦,奴隶,也许,男孩
冰与火之歌卷三:冰雨的风暴中
 
国王,大人,爵士,琼恩,父亲,艾莉亚,知道,伯爵,罗柏,詹姆,告诉,陛下,艾德,猎狗,城堡,凯特琳,起来,儿子,戴佛斯,也许,孩子,无法,看到,瓦德, 母亲,眼睛,夫人,一起,利昂,尼斯,心想,家族,离开,公爵,女人,需要,骑士,之后,现在,之前,贝里,凯特,火焰,兰尼斯,最后,塔克,明白,布兰,山姆,东西
冰与火之歌卷三:冰雨的风暴下
 
爵士,利昂,琼恩,珊莎,大人,国王,父亲,知道,詹姆,起来,骑士,夫人,乔佛里,城堡,告诉,长城,陛下,孩子,山姆,丹妮,最后,不能,之后,也许,眼睛,艾莉亚,儿子,心想,尼斯,一起,野人,公爵,瑟曦,离开,现在,布兰,发现,无法, 黑暗,斗篷,东西,看到,侏儒,学士,地方,可能,几乎,里斯,声音,劳勃
冰与火之歌卷四:群鸦的盛宴上
 
爵士,父亲,大人,蕾妮,山姆,知道,骑士,詹姆,瑟曦,国王,学士,告诉,起来, 儿子,女人,眼睛,母亲,亲王,之后,珊莎,太后,男孩,已经,陛下,弟弟,不能, 发现,夫人,家族,孩子,公爵,看到,声音,心想,伊伦,仿佛,一边,现在,离开, 利尔,女儿,一起,城堡,或许,队长,最后,艾莉亚,也许,必须,需要
冰与火之歌卷四:群鸦的盛宴中
 
爵士,瑟曦,詹姆,大人,陛下,骑士,国王,蕾妮,太后,夫人,父亲,维克塔利昂,起来,知道,告诉,城堡,女人,劳勃,眼睛,伯爵,现在,家族,需要,山姆,心想,孩子,之后,儿子,已经,女孩,离开,不能,最后,应该,喜欢,修士,一起,之前,或许,身边,弟弟,男人,也许,兄弟,发现,一边,微笑,领主,船长,无法
冰与火之歌卷四:群鸦的盛宴下
 
爵士,詹姆,大人,父亲,瑟曦,告诉,知道,蕾妮,骑士,山姆,夫人,女孩,太后, 眼睛,陛下,起来,阿莲,孩子,一起,心想,儿子,小姐,国王,女儿,玛格丽,喜欢,女人,猫儿,之后,最后,现在,劳勃,不能,必须,需要,伯爵,离开,城堡,艾德,奔流,王后,黑鱼,男孩,学士,家族,无法,母亲,回来,希望,看到
冰与火之歌5魔龙的狂舞
 
大人,已经,知道,利昂,琼恩,爵士,起来,国王,现在,看到,骑士,丹妮,告诉, 需要,奴隶,父亲,女王,之后,女人,眼睛,男孩,女孩,尼斯,陛下,可能,一起, 史坦,带着,希望,之前,男人,声音,发现,不能,最后,应该,孩子,侏儒,城堡, 儿子,渊凯,也许,长城,喜欢,必须,地方,东西,王子,名字,学士


3、自动摘要指从文档中自动抽取关键句,用以表达文档的中心意思。自动摘要可以应用于信息检索等领域。
1算法目前主流公开的自动摘要算法的基础思想就是找出文档中包含信息最多的TOPN个句子,然后组合表示。通常算法要考虑的指标包括词频、词的关键性、句子长度、句子位置等。这里我们以TextRank算法为例。
基于TextRank自动摘要的计算流程和“关键词提取”类似,不同的地方如下:

  • 关键词提取里,顶点存储的是一个个“词项”;自动摘要里存储的是每个“句子”。
  • “相邻”(或叫“共现”)关系(即“图”数据结构里的“边”)表示的意义不同。关键词提取里,相邻关系可以用词项之间的位置来量化;而在自动摘要里,相邻关系通常采用句子之间的相似度来量化。即两个句子之间的相似性达到指定阀值,则认为两者是关联的(即互相推荐)。句子相似度计算有多种方式,可以按照句子里主要词项的重叠度来比较,也可以采用余弦相似度等计算方式。
2应用示例在新闻阅读等应用里经常会对新闻进行自动摘要。摘抄新浪网新闻举例:
新华社甘肃酒泉8月16日电(记者吴晶晶、杨维汉、徐海涛) 2016年8月16日1时40分,我国在酒泉卫星发射中心用长征二号丁运载火箭成功将世界首颗量子科学实验卫星“墨子号”发射升空。这将使我国在世界上首次实现卫星和地面之间的量子通信,构建天地一体化的量子保密通信与科学实验体系。
量子卫星首席科学家潘建伟院士介绍,量子通信的安全性基于量子物理基本原理,单光子的不可分割性和量子态的不可复制性保证了信息的不可窃听和不可破解,从原理上确保身份认证、传输加密以及数字签名等的无条件安全,可从根本上、永久性解决信息安全问题。
  量子卫星2011年12月立项,是中科院空间科学先导专项首批科学实验卫星之一。其主要科学目标一是进行星地高速量子密钥分发实验,并在此基础上进行广域量子密钥网络实验,以期在空间量子通信实用化方面取得重大突破;二是在空间尺度进行量子纠缠分发和量子隐形传态实验,在空间尺度验证量子力学理论。
  工程还建设了包括南山、德令哈、兴隆、丽江4个量子通信地面站和阿里量子隐形传态实验站在内的地面科学应用系统,与量子卫星共同构成天地一体化量子科学实验系统。
  潘建伟表示,我国自主研发的量子卫星突破了一系列关键技术,包括高精度跟瞄、星地偏振态保持与基矢校正、星载量子纠缠源等。量子卫星的成功发射和在轨运行,将有助于我国在量子通信技术实用化整体水平上保持和扩大国际领先地位,实现国家信息安全和信息技术水平跨越式提升,有望推动我国科学家在量子科学前沿领域取得重大突破,对于推动我国空间科学卫星系列可持续发展具有重大意义。
  本次任务还搭载发射了中科院研制的稀薄大气科学实验卫星和西班牙科学实验小卫星。量子卫星发射入轨后将进行3个月左右的在轨测试,然后转入在轨运行阶段。
  量子卫星工程由中科院国家空间科学中心抓总负责;中国科学技术大学负责科学目标的提出和科学应用系统的研制;中科院上海微小卫星创新研究院抓总研制卫星系统,中科院上海技术物理研究所联合中科大研制有效载荷分系统;中科院国家空间科学中心牵头负责地面支撑系统研制、建设和运行;对地观测与数字地球科学中心等单位参加。
  据介绍,长征二号丁运载火箭由中国航天科技集团公司所属上海航天技术研究院研制。此次发射是长征系列运载火箭的第234次飞行。
通过TextRank算法自动摘要,获取TOP5的关键字作为摘要,结果如下:
我国在酒泉卫星发射中心用长征二号丁运载火箭成功将世界首颗量子科学实验卫星,   本次任务还搭载发射了中科院研制的稀薄大气科学实验卫星和西班牙科学实验小卫星, 中科院国家空间科学中心牵头负责地面支撑系统研制、建设和运行, 是中科院空间科学先导专项首批科学实验卫星之一,   量子卫星工程由中科院国家空间科学中心抓总负责。


4、新词/短语提取指在文档或文档集里发现一些固定组合的短语或者未被词典收录的新词。例如新出现的网络词汇,如“内牛满面”等,以及一些新晋品牌名。由于中文分词算法里经常需要应用到“词典”,而未被词典收录的所谓“未登录词”,需要依靠新词提取来自动识别和提取。
1算法新词提取的主要思想是考虑“共现关系”,即经常出现在一起的字、词组合可以被认为是新词或者短语。共现关系不仅仅只考虑共现频率,还需要两个变量之间的依赖程度以及变量与其它词之间的关系。
2应用示例新词提取和短语提取思想类似,但具体处理细节有差异。以下实验以短语提取为例: 这里以“西游记”来实验。前100个识别出来的短语如下:
八戒沙僧, 观音菩萨, 满心欢喜, 行者沙僧, 西天取经, 十分欢喜, 大闹天宫, 山神土地, 花果山水帘洞, 心中暗想, 笑道师父, 大王爷爷, 观世音菩萨, 三藏师徒, 师父师弟, 哪吒太子, 笑道和尚, 东胜神洲, 行者笑道, 八戒笑道, 行者八戒, 东土大唐, 沙僧八戒, 唐僧师父, 倒换关文, 太白金星, 唐僧徒弟, 四大天师, 西天拜佛, 大小官员, 心中大怒, 八大金刚, 东土唐驾, 李天王太子, 行者师父, 唐僧取经, 十世修行, 两班文武, 长嘴和尚, 东洋大海, 南海菩萨, 心中暗喜, 御弟三藏, 大圣爷爷, 贫僧东土, 笑道原来, 忍不住笑道, 却说行者, 沙僧师父, 躬身施礼, 行者老孙, 护国天王, 上前施礼, 玉面公主, 保护唐僧, 跪在面前, 公主娘娘, 施礼大圣, 三藏行者, 猪八戒沙和尚, 问道长老, 行者铁棒, 木叉行者, 皇宫内院, 土地城隍, 唐太宗皇帝, 毛脸雷公, 大唐取经, 沙僧笑道, 乌巢禅师, 紫竹林中, 天竺国大, 三藏徒弟, 大唐皇帝, 笑道妖精, 笑道老师, 灵霄宝殿, 沙僧行李, 行者施礼, 近前跪下, 听见行者, 一齐跪下, 慌忙跪下, 行者上前, 取经和尚, 笑道猴子, 取经圣僧, 唐僧八戒, 金刚菩萨, 行者扯住, 笑道呆子, 侍奉香火, 沙僧行者, 磕头礼拜, 卷帘大将, 上前扯住, 行李马匹, 西方路上, 伏侍师父, 笑道列位



5、文本分类指根据预定义的类别体系,自动将文本进行归类,可以将一个文本归到一个或多个类别。文本分类是文本挖掘领域的一个重要内容,通常用来解决信息检索、情感分析等问题。
1算法文本分类属于数据挖掘领域的“分类”问题,因此常规的“分类”算法一般都可以应用于文本分类。同样文本分类的一般步骤也包括文本预处理、特征准备、训练、测试及模型评估等环节。本节主要关注特征准备及算法选择环节。
 特征准备

与结构化数据分类相比,文本分类有其自身特点,主要区别体现在特征上:

  • 常用的文本表示模型如VSM,将文本的每个词项作为一个特征,因此文本特征通常是高维度的。
  • 由于词项有很多(一般估计是几十万W的级别),而一篇文章的内容通常有限,因此文本特征通常是稀疏的。 
                         算法选择
如上文所述,常规的分类算法特别是那些适用性强的算法如朴素贝叶斯、KNNSVM、最大熵等,都可以有效地应用在文本分类问题上。
2应用示例以下针对某个客服工单数据集,进行模型训练和测试。
                         数据集说明
工单数据已经经过人工分类,分为41个类别,为了方便说明,这里指选取工单数超过150条的8个类别作为示例数据。类别体系(类别名字--记录数)如下:
人员态度317
业扩超时169
频繁停电880
欠费停复电170
表计线接错236
用电变更179
人员违规330
催缴费   406
                         训练及测试结果分析
分别应用朴素贝叶斯和最大熵分类算法进行测试,结果显示在该数据集和分类体系下,两个算法的效果没有明显的差别。以下以朴素贝叶斯分类的结果作为示例进行分析。 模型的测试结果
< 催缴费: TP=78 FN=4 FP=5 TN=453; Acc 0.983 P 0.940 R 0.951 F1 0.945>
< 频繁停电: TP=176 FN=0 FP=0 TN=364; Acc 1.000 P 1.000 R 1.000 F1 1.000>
< 业扩超时: TP=30 FN=4 FP=3 TN=503; Acc 0.987 P 0.909 R 0.882 F1 0.896>
< 欠费停复电: TP=32 FN=2 FP=5 TN=501; Acc 0.987 P 0.865 R 0.941 F1 0.901>
< 表计线接错: TP=48 FN=0 FP=1 TN=491; Acc 0.998 P 0.980 R 1.000 F1 0.990>
< 用电变更: TP=34 FN=2 FP=8 TN=496; Acc 0.981 P 0.810 R 0.944 F1 0.872>
< 人员态度: TP=63 FN=1 FP=1 TN=475; Acc 0.996 P 0.984 R 0.984 F1 0.984>
< 人员违规: TP=53 FN=13 FP=3 TN=471; Acc 0.970 P 0.946 R 0.803 F1 0.869>
由此可见,在本例的分类体系下,分类算法可以轻易地取到很好的结果。这主要是由于这几个类别的内容比较容易区分,因此可以较容易地找到区分各个类别的有效的特征词。
                          类别关键词
训练过程中产生的类别关键词也非常有代表性,这里选取了关联性最强的前50个关键词,见下表:
(态度,人员态度)    2.3300
(接错,表计线接错)   2.0461
(总户号,催缴费)    2.0196
(新装,业扩超时)    1.9896
(停电,欠费停复电)   1.9188
(催错,催缴费)     1.7333
(线路,表计线接错)   1.6849
(欠费,欠费停复电)   1.5536
(垫付,欠费停复电)   1.4935
(电费,催缴费)     1.4494
(表计,表计线接错)   1.3488
(承诺,人员违规)    1.3280
(通知单,催缴费)    1.3181
(办理,用电变更)    1.3107
(,人员态度)     1.2608
(,用电变更)     1.2128
(,人员态度)     1.2091
(行为,人员违规)    1.1585
(抄表,欠费停复电)   1.1495
(辱骂,人员态度)    1.1205
(,表计线接错)    1.0878
(移表,用电变更)    1.0743
(,人员态度)     1.0723
(人员,人员违规)    1.0680
(号为,催缴费)     1.0454
(规定,业扩超时)    1.0197
(户号,催缴费)     0.9760
(断电,欠费停复电)   0.9401
(,人员违规)     0.9363
(时间,欠费停复电)   0.9258
(收到,催缴费)     0.9086
(通知书,欠费停复电)  0.9048
(更名,用电变更)    0.9036
(造成,欠费停复电)   0.8971
(安装,业扩超时)    0.8851
(增容,业扩超时)    0.8802
(抄表员,欠费停复电)  0.8737
(规定,欠费停复电)   0.8662
(,催缴费)      0.8460
(业务,用电变更)    0.8350
(损坏,人员违规)    0.8221
(实施,欠费停复电)   0.8161
(收取,人员违规)    0.8101
(17,人员违规)   0.8099
(,表计线接错)    0.8042
(电话,人员态度)    0.7992
(,用电变更)     0.7970
(6,人员违规)    0.7898
(短信,催缴费)     0.7834
(违规,人员违规)    0.7788  
可以看到关键词较好地对相关类别进行了描述:

  • “人员态度”类别:关键词分别是 “态度”、“差”、“辱骂”、“电话”等
  • “表计线接错”类别:关键字分别是“接错”、“表计”、“线路”等
  • “催缴费”类别:关键字分别是“总户号”、“催错”、“短信”、“电费”等
  • “人员违规”类别:关键字分别是“人员”、“违规”、“承诺”、“行为”等
  • “业扩超时”类别:关键字分别为“安装”、“增容”、“新装”、“规定”等
  • “用电变更”类别:关键字分别为“移表”、“更名”、“业务”、“办理”等
  • “欠费停复电”类别:关键字分别为“垫付”、“欠费”、“抄表”、“断电”、“时间”等
  • “频繁停电”类别中关键字的相关度都相对较低,我们将关键词扩展到100个,可以找到以下关键词“生活”、“次”、“严重”、“影响”、“解决”、“停电”等。


6、(常规)文本聚类根据数据源、任务目的、性能等要求的不同,文本聚类有很多种不同的形态,实际上包括下面要讲述的“主题分析”、“检索结果聚类”等都可以看做是聚类任务。
 和文本分类的目标类似,都是利用机器将文本进行分类。不同之处在于文本分类通常是基于有监督学习算法,而聚类通常采用无监督学习算法。因此聚类对数据的要求相对更低,使用更灵活,具备更高的自动化处理能力。
和结构化数据聚类类似,文本聚类通常也是作为其它数据挖掘任务的中间步骤(不是最终目的)。
1算法文本聚类的一般步骤包括文本预处理、特征准备、聚类、结果评估等环节。
本节主要关注特征准备及算法选择两个环节。
 特征选择
参与聚类的文本一般也具有高维、稀疏的特点。不同于文本分类的是,聚类任务由于缺少人工预标注的训练数据,通常没有办法直接应用互信息、卡方等能够预先关联类别的特征。因此在实际应用中,通常采用文档-词项频率等相关特征,构建所谓的向量空间模型(VSM)作为特征集。
算法选择
由于聚类算法的选择对最终结果的影响很大,因此这里做较详细的介绍。
如果按通常传统的数据挖掘任务的分类体系:聚类、分类(预测)、关联分析、异常分析等。那么在这里面聚类算法是最多样化的。这可以理解,例如和“分类”相比,“分类”任务等于是预先指定了各个类别的中心点,各种分类算法要做的就是基于训练集尽可能地逼近找到这个中心点,因此通常情况下,选择不同的分类算法对结果影响不是很大。而聚类任务则不同,数据集的多样性也导致了类别分布的多样性。由于缺少人工先验知识的引导(有别于分类任务里已经进行了训练集的类别标注),因此需要人工更多地进行参数的预调,例如很多聚类算法如kmeansLDA等,需要预指定要聚类的类别个数,kmeans 甚至要求指定初始的类别的中心点,而聚类的个数以及初始中心点的不同选择,将很大影响聚类的效果;另外数据分布的特点,也很大的影响了算法的选择,例如对于基于密度区分的数据集,如果采用基于形状的聚类算法,结果可能会很糟糕。
聚类算法通常分为以下几类(借用外部的图以及部分说明):
1) 基于划分的方法(Partition-based methods)
简单的理解这是基于形状的聚类(虽然在高维度下面人工已经无法区分形状)。算法原理是“类内的点都足够近,类间的点都足够远”。代表算法有KMeans以及它的很多表亲(如K-medoids)。
数据集示例如下图:
 

2) 基于密度的方法(Density-based methods)
和基于距离的相似度计算不同,它是基于密度的,这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。其基本思想是只要一个区域中的点的密度超过指定阀值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN、DENCLUE等。
数据集示例如下图:
 
 

3) 基于层次的方法(Hierarchical methods)
基于层次的方法假定数据集是有层次的,例如经过树形分类的文档集。其基本思想是对数据集进行层次似的分解,直到某种条件满足为止。具体可分为“自底向上(凝聚型层次聚类)”和“自顶向下(分裂型层次聚类)”两种方式。凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足;而分裂型层次聚类正好相反。代表算法有BIRCH、CURE 等
4) 基于网格的方法(Grid-based methods)
基于网络的方法的基础思想:首先将数据空间划分成为有限个单元(cell)网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。代表算法有:STINGCLIQUEWAVE-CLUSTER
5) 基于模型的方法(Model-based methods)
基于模型的方法是给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。通常有两种方向:统计的方案和神经网络的方案。
2应用示例 算法选择及参数设置
在不清楚数据集里数据分布的前提下,采用较通用的KMeans算法进行试验。KMeans通过多次迭代来使寻找最稳定(质心不再发生变化)的质心(即类别的中心.点),其停止条件一般是目标函数(如最小化对象到其簇质心的距离的平方和)达到最优值或者达到最大迭代次数。KMeans实际上是EM算法的一种特殊情况。
运用KMeans算法的一个主要问题是要确定好“聚类个数K”和初始质心。实际应用中一般通过多次尝试或者借助一些机器学习算法进行预处理以尝试获取较优的值。由于这里我们采用分类数据,因此直接借用人工分类体系的数量8进行试验,初始质心采用随机产生的方法。
特征选择
特征基于向量空间模型,并采用TDF/IDF作为权重值,选择排名前200的单词作为特征集。
结果及分析
下表是聚类结果,总共8个聚类,每一行里的词表示与该类最相关的关键词。
1、查询[1]用电[1]供电[1]更名[1]过户[1]办理[1]系统[1]业务[1]申请[1]营业厅[1.0057843809601077]
2、邻居[1]户号[1][1]电工[1][1]线路[1.517683950036872]接错[1.6358046173373475]将其[1.2633389032310458]表计[1.5928264468434248]物业[1]
3、错误[1]抄表人员[1]情况[1]户号[1]存在[1]收到[1]催错[1]总户号[1]通知单[1.0326610123464692]电费[1]
4、来电[1]投诉[1][1]人员[1]情况[1]态度[1.5843158303265383]在对[1.7611852048799124][1.7294237661271383][1.6597614028363046][1]
5、问题[1]居民[1]正常[1]彻底解决[1]出现[1]地点[1]生产[1]没有解决[1]严重影响[1]生活[1]
6、未[1]人员[1]时间[1]未到[1]来电[1]抄表人员[1]工作人员[1]投诉[1]存在[1]欠费[1]
7、正常[1]生产[1]彻底解决[1]浙江省[1][1][1]请勿[2.2505625946137906]保密[2.2806384770876216][1.387780481645715]联系[1]
8、上门[1.0722201728434533]营业厅[1.1284037793977684]时间[1.341501325716976]办理[1.237850640569233]规定[1.5476649791095776]申请[1.4241543489147417]此事[1.7122453962846014]无人[1.416936181870161]新装[1.6385631894456534]超出[1.6083212476275448]
通过比对原始明细数据,可以做出如下推测:

  • 类别1:表达的是去营业厅办理更名、过户等业务引起的投诉。对应的原始类别包括催缴费、用电变更、欠费停复电等。其中主要是用电变更。
  • 类别2:表计线路接错引起的投诉。
  • 类别3:电费催缴催错引起的投诉
  • 类别4:态度差引起的投诉
  • 类别5:某种原因严重影响生产、生活。这里原因没有出来,对比原始数据,可以推测大部分原因是“频繁停电”。
  • 类别6:由于欠费停电,抄表人员的某种行为(可能是拉闸 )引起的投诉。
  • 类别7:一些有保密要求的客户的投诉
  • 类别8:去营业厅申请新装引起的投诉。
需要指出的是由于“分类”和“聚类”的标准并非总是一致,实际上往往是不一致的。


7、主题模型分析 实际上一篇文章的主题往往有多个,但各个主题在文章中的比重不同。业界常用的有多种主题模型,如PLSA(Probability Latent Semantic Analysis),LDALatent Dirichlet Allocation)等。理论上来说,LDA的生成过程更加符合实际文本的生成过程,而且相对不容易过拟合,因此近年来LDA的应用更为广泛。本章节以LDA为例介绍文档集的主题分析。
1算法LDA主要是设定了一个文档的生成模型,其基本设定是每篇文档由多个主题按照不同的概率混合而成,每个主题由多个关键字按不同的概率混合而成。基于以上设定,一篇文章的生成过程如下:
1、决定该文档的词的数量N。N通常采用泊松分布生成。
2、 决定该文档的主题的混合分布(主题数量对于整个数据集是固定的)。例如对于本文,有50%是属于数据挖掘主题,10%属于自然语言处理主题,40%属于数据分析主题。这个主题的分布函数就叫做Dirichlet分布。
3、 基于以下过程产生文档的每个词:
3.1、基于主题的多项分布函数,获取一个具体主题。
 3.2、基于主题的多项分布函数,产生一个词。例如对于本文档集(假定本文的每个章节是一篇文章),主题“数据挖掘”有“聚类”(40%)、“分类”(20%)、“回归分析”(20%)、“概率分布”(20%)等词。那个这个词是“聚类”的概率是40%。    
以上就是LDA的设定。LDA的目标就是针对指定数据集,基于以上文档集产生的设定,反向学习各个隐藏变量及多项分布。
LDA可以应用在文本检索、图像分类、文本分类等任务,通常用来做主题抽取、或者用做降维的一种手段等。
2应用示例示例采用的数据集和“常规文本聚类”采用的数据集一样: 8个类别的分类数据,删除了已有的类别标记。这里同样指定8个主题数量,进行主题分析。
表的主题分布可以看到每篇文档的主题分布相对较集中:
1、1 1 1 1 1 1 1 1
2、1 1 1 1 1 1 1 1
3、1 1 1 1 1 1 1 1 
 每个主题里词的分布,这里选取概率最高的前10个词。
Topic 0th:
客户 1      供电公司 1
尽快 1      户号 1
电费 1      表示 1
通知单 1   相关 1
合理 1     部门 1
Topic 1th:
客户 1      尽快 1
停电 1      问题 1
正常 1     至今 1
彻底解决 1 部门 1
非常 1     反映 1
Topic 2th:
联系 1      回访 1
客户 1        XXXX 1
XX省 1      地市 1
需要 1      表示 1
镇 1       村 1
Topic 3th:
客户 1      处理 1
尽快 1      营业厅 1
申请 1     办理 1
业务 1     反映 1
要求 1     核实 1
Topic 4th:
客户 1      尽快 1
供电公司 1    表示 1
相关 1       部门 1
解释 1     核实 1
要求 1     非常 1
Topic 5th:
客户 1      尽快 1
表示 1      非常 1
部门 1     来电 1
解释 1     要求 1
投诉 1     不满 1
Topic 6th:
客户 1      工作人员 1
处理 1      表示 1
工单 1      反映 1
联系 1      核实 1
问题 1      关联 1
Topic 7th:
客户 1      停电 1
供电公司 1 尽快 1
表示 1     电费 1
核实 1     工作人员 1
投诉 1      来电 1
可以看到,每个主题里的概率最高的TOP N个词,可以自动作为主题的描述。但在本例里关键词的效果似乎不如上个章节基于KMeans的结果更具有描述性。这里的原因是多方面的,其中一个比较明显的原因是Kmeans聚类时,我们通过TDF/IDF进行了特征过滤,而本例里没有进行特征过滤。因此可以看到本例里所有的主题里都有“客户”这个词,这是由于在原始数据里“客户”这样的词出现频率很高,但同样地几乎出现在所有的记录里,因此在KMeans聚类示例里被过滤掉了,而在本例里没有进行处理。


8、检索结果聚类在我们的全文检索应用支撑平台里,提供对检索结果进行自动聚类的功能,给用户另一种结果展示的选择。检索结果聚类应用有以下特点:

  • 数据源都是短文本
从检索引擎直接返回的结果都是原始文本的片段(通常是原文的摘要)。

  • 性能要求高
检索应用属于在线系统,因此要求快速地(秒级) 完成结果的聚类。

  • 类别的可描述性
需要提供可读性强的聚类描述标签

  • 文档需要跨类别
由于一篇文档不可避免地可以同时属于多个主题,因此要允许一篇文档被分配到多个类别里。
1算法STC是业界经常采用的检索结果聚类算法。具有以下特点:

  • 适用于短文本
其它的聚类算法(如KMeans)往往采用词袋模型(即将文本表示为单词的集合),丢失了重要的文本单词之间的顺序信息。而STC将文本当做字串,有效地保留了顺序信息。而对于短文本来说,单词本身的特征信息有限,因此所保留的顺序信息对于相似度比较来说,可能带来较显著的作用。

  • 高性能
STC是增量的,线性时间的算法,时间复杂度是O(N) N指参与聚类的文档片段的数量。由于都是文档都是小片段,这里每片文档的单词数量可以假定为一个常数。

  • 能够快速地提取出每个类别的关键标签
STC是基于后缀树(suffix tree)存储以取得高性能。这里抄一个常用的描述图来进行较直观的说明




2应用示例本示例采用的数据集和上节“常规文本聚类”采用的数据集一样: 8个类别的分类数据,删除了已有的类别标记。
实际上用这个数据集作为STC聚类的演示,并不是很合适,特别是在关键词提取方面,和上面KMEANSLDA聚类做对比,并非公平。但本数据集的各个文档相对来说都比较小,大部分只有几百个汉字,符合检索结果的特点,因此也可以一试。值得一提的是,STC聚类并不需要预先指定聚类数量,它的最终数量取决于基类簇的合并阀值的设置。
结果如下(总共产生69个聚类,这里摘录前面几个类别作为演示)
cluster.there are [69] clustered  gener
严重影响 居民 正常 生活 生产 客户, docs:711
情况 非常 不满 要求, docs: 427
营业厅 核实, docs: 374
故障 问题, docs: 349   
反映 工作人员, docs: 343
经查 停电 信息, docs: 334
业务 营业厅, docs: 317
客户 来电 投诉 供电公司 工作人员, docs: 313
客户 来电 投诉 供电公司 将 户号, docs: 309

 数据源总共只有2000来条记录,但各个类别的记录数的综合远远超过数据源的记录数。这是因为STC是允许一条记录跨越多个主题。从我们的直觉来 看,本次实验的结果并不好。一是关键词并不能很好的反应类别,而是聚类的重叠度过高。这些通过对原始数据进行处理,并且进行算法参数优化,应该有较大的改进空间。同时可以看到STC聚类的速度确实非常快。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门版块:
帖子推荐:
图文热帖:
客服咨询

400-1234-5678

服务时间 9:00-22:00

 
QQ在线咨询
售前咨询热线
400-888-8888
售后服务热线
010-12345678
快速回复 返回顶部 返回列表