背景:文本分类技术汇总:
因为公司需求,开始探索文本挖掘技术在通信行业方面的应用,现将过程中常用的技术和原理更新如下。文本分类方法经过长期的研究在很多场景下已经得到了应用,但是短文本分类问题起步较晚,且一直也没有什么通用的,效果良好的方法,短文本分类的重点在特征处理环节和分类算法上面。因为其存在两个问题,1、短文本提供的词语少,提供的有效信息有限。2、根据分词结果构建的词频或者特征矩阵通常十分稀疏,大多数算法在处理稀疏矩阵问题时候,效果都不好。常用的处理短文本的方法基本可分为两类:一类是基于某种规则改进分类过程,优化改进模型;另一类是基于外部语义信息扩充短文本信息量,从而提高分类效果。下面讲述探索过程中的用到的技术及其原理:
文本挖掘传统方法讲述
常见流程:
一:分词
1、常用中文分词工具:jieba、SnowNLP(MIT)、pynlpir、thulac
在文本探索中主要用到了jieba库,所以下面主要对jieba库进行讲述,jieba分词是国内程序员开发的一款非常好用的开源中文分词的库。
原理讲述:
首先,基于词的前缀集合结构实现高效的词图扫描,生成句子汉字所有可能成词情况所构成的有向无环图
其次,采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
最后, 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
用法试例:
# encoding=utf-8
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))
输出:
【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
【精确模式】: 我/ 来到/ 北京/ 清华大学
【新词识别】:他, 来到, 了, 网易, 杭研, 大厦 (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算,
因为公司需求,开始探索文本挖掘技术在通信行业方面的应用,现将过程中常用的技术和原理更新如下。文本分类方法经过长期的研究在很多场景下已经得到了应用,但是短文本分类问题起步较晚,且一直也没有什么通用的,效果良好的方法,短文本分类的重点在特征处理环节和分类算法上面。因为其存在两个问题,1、短文本提供的词语少,提供的有效信息有限。2、根据分词结果构建的词频或者特征矩阵通常十分稀疏,大多数算法在处理稀疏矩阵问题时候,效果都不好。常用的处理短文本的方法基本可分为两类:一类是基于某种规则改进分类过程,优化改进模型;另一类是基于外部语义信息扩充短文本信息量,从而提高分类效果。下面讲述探索过程中的用到的技术及其原理:
文本挖掘传统方法讲述
常见流程:
一:分词
1、常用中文分词工具:jieba、SnowNLP(MIT)、pynlpir、thulac
在文本探索中主要用到了jieba库,所以下面主要对jieba库进行讲述,jieba分词是国内程序员开发的一款非常好用的开源中文分词的库。
原理讲述:
首先,基于词的前缀集合结构实现高效的词图扫描,生成句子汉字所有可能成词情况所构成的有向无环图
其次,采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
最后, 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
用法试例:
# encoding=utf-8
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))
输出:
【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
【精确模式】: 我/ 来到/ 北京/ 清华大学
【新词识别】:他, 来到, 了, 网易, 杭研, 大厦 (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算,