文本预处理技术( 二 )


3.1 最短路径分词算法
基于算法求解最短路径 。该算法适用于所有带权有向图,求解源节点到其他所有节点的最短路径,并可以求得全局最优解 。本质为贪心算法,在每一步走到当前路径最短的节点,递推地更新原节点到其他节点的距离 。针对当前问题,算法的计算结果为:“他/说/的/确实/在理“ 。可见最短路径分词算法可以满足部分分词要求 。但当存在多条距离相同的最短路径时,只保存一条,对其他路径不公平,也缺乏理论依据 。
3.2 N-最短路径分词算法
N-最短路径分词是对算法的扩展,在每一步保存最短的N条路径,并记录这些路径上当前节点的前驱,在最后求得最优解时回溯得到最短路径 。该方法的准确率优于算法,但在时间和空间复杂度上都更大 。
4 基于HMM模型的分词算法
HMM模型认为在解决序列标注问题时存在两种序列,一种是观测序列,即人们显性观察到的句子,而序列标签是隐状态序列,即观测序列为X,隐状态序列是Y,因果关系为Y->X 。因此要得到标注结果Y,必须对X的概率、Y的概率、P(X|Y)进行计算,即建立P(X,Y)的概率分布模型 。
要注意的是,该模型创建的概率图与上文中的DAG图并不同,因为节点具有观测概率,应该使用算法求解最大概率的路径 。
文本清洗
一般清理需要清洗以下数据:
1、大写转小写
对于计算机而言,一个单词的大写和小写是同一个意思 。
2、无用的标签
例如:“”,这些在文本中没有表达实质意义 。
3、特殊的符号
例如:标点符号和表情符号 。当然,我在用生成摘要时,是要保留标点符号的,需要结合业务场景处理 。
4、停用词
对于无含义的词,例如介词,需要清除,以便为后续处理降低复杂度 。
5、拆分黏在一起的词
我们人类在社交论坛上产生的文本数据,本质上是完全非正式的 。多数推特都伴随着很多黏着在一块的单词比如,等等 。这些用简单的规则和正则表达式就可以把它们拆分成正常的形式 。
6、查找俚语
社交媒体上充斥着俚语单词 。在制作自由文本(free text)时这些词都应该被转换成标准词 。像luv这样的词会被转成love,Helo转成Hello 。查找上撇号的相似方式也可以用来将俚语转换成标准词 。网上有很多资源,提供了所有可能的俚语的列表 。这应该是你的圣杯,你可以将他们作为你的查询字典来转换 。
7、 解码数据
这是一个信息转换的过程,将复杂符号转换成简单易于理解的字符 。文本数据可能受到不同形式的编码,像是“Latin”,“UTF8”等 。因此,为了更好的分析,必须让所有的数据保持标准的编码格式 。UTF-8编码是被广泛接受的编码形式,推荐使用 。
标准化
对于标准话,主要是对英文单词的不同变化和变形标准化,有两种方法,分别是:词干提取()和词形还原() 。
1、
提取是将词还原成词干或词根的过程 。
例如:’’/‘’/‘’等,都可以还原成’’ 。总而言之,它们都表达了分成多个路线或分支的含义 。这有助于降低复杂度,并同时保留词所含的基本含义 。是利用非常简单的搜索和替换样式规则进行的 。
这样可能会变成不是完整词的词干,但是只要这个词的所有形式都还原成同一个词干即可 。因此 它们都含有共同的根本含义 。
2、
就是去掉单词的词缀,提取单词的主干部分,通常提取后的单词会是字典中的单词,不同于词干提取(),提取后的单词不一定会出现在单词中 。比如,单词“cars”词形还原后的单词为“car”,单词“ate”词形还原后的单词为“eat” 。