文本挖掘可能更侧重于挖掘,跟NLP自然语言处理侧重点不一样,不过其依赖于自然语言处理,我的感觉就相当于计算机视觉依托于图像处理这个方向,大家侧重点不一样。
自然语言处理主要流程
文本->分句->分词->词性标注->短语分析->句法分析->语义分析->语篇分析->理解
分句这个一般有标点符号相隔,这个便于处理。下面主要解决分词问题。分词的解决也就是解决特征提取的问题,我们在图像处理的时候要解决的第一个问题就是特征提取,选择什么样合理的特征。
下面说一下分词基本方法:
- 基于词典的方法
- 基于标注的分词
-
基于词典的方法中基于匹配的方法
最大匹配算法(MM)
具体思路:设定最大词长,对输入字符串的最左边开始,根据最大词长取出最大候选子串w,如果w在词表中,将w加入到输出字符串中,原字符串去掉w,如果不在词表中,去掉w的最右边的字后进行查表,直到查到该w在词表中。重复上面的步骤,直到分词结束。
还有其它方法,逆向最大匹配法(RMM),该方法与MM法方向相反,是从右向左。对于我们汉语来说该方法比MM略微好点。
双向匹配法,就是在比较一下MM跟RMM
最佳匹配法,这个方法将词典中的单词根据在文本中出现频度的大小进行了排列,这样对词进行匹配的时候会提高匹配的速度。
基于词典的方法中基于概率法分词
基本思想:将一个待切分的字符串的多种可能的分词结果,将其中概率最大的那个作为该字符串的分词结果。
那这个词的概率怎么求呢,在朴素贝叶斯一文中给出了介绍http://www.cnblogs.com/fengbing/p/3517962.html
基于词典的方法中最短路径分词方法
基本思想:在词图上选择一条词数最少的路径 构建词图将词典中的每一个词作为一个节点构造成为一个有向无环图。最短路径图论中有Dijkstra跟Floyd方法
基于词典的方法解决未登录词识别
未登录词识别包括数字识别、命名实体识别、形式词、离合词,具体如下:
数字识别
通过正则表达式、这个在介绍朴素贝叶斯的时候给出了部分介绍http://www.cnblogs.com/fengbing/p/3517962.html
另外通过有限状态转移网络,这个方法原本也是用来生成和识别正则表达式
命名实体识别
人名、地名、机构名
专业术语
形式词、离合词
看看,看一看,打听打听,高高兴兴,乐呵呵
游了一会儿泳, 担什么心
基于标注的方法
该方法不考虑文字词语出现的频率信息,考虑上下文语境,将所有的字根据预定义的特征进行词位特征学习,获得一个训练模型。然后对待分字符串的每一个字进行词位标注,最后根据词位定义获得最终的分词结果。
该方法的关键在于机器学习方法,我们可以采用前面介绍的部分机器学习方法,如支持向量机。
基于规则的方法
主要依靠上下文来判定兼类词。
这是一张白纸
• “白”出现在名词”纸”之前,判定为形容词
他白跑了一趟
• “白”出现在动词“跑”之前,判定为副词
词性连坐
在并列的联合结构中,联合的两个成分的词类应该相同,如果其中一个为非兼类词,另一个为兼类词,则可把兼类词的词性判定为非兼类词的词性。
例:我读了几篇文章和报告
• “文章”为名词,是非兼类词,“报告”为动-名兼类词,由于处于联合结构中,故可判定“报告”为名词
基于统计的方法
基于规则的方法是研究自然语言处理时就采用的方式,认为计算机处理跟人的思维一致,在吴军老师《数学之美》一本书中讲述了这一过程,从规则转到统计,看上去很正常的事,科学家们花了几十年的功夫。
那何为基于统计呢,下面引用《数学之美》一文
假设一个句子S有几种分词方法,为了简单起见有三种:
这些ABC都是汉语中的词,我们怎么知道哪一种分词的方式最好呢,也就是根据这种方式分词之后这个句子出现的概率最大。也就是说如果是最好的办法,则会满足如下条件:
下面是怎么计算,我们不可能统计出所有句子的个数。解决这个问题采用了如下模型:
我们利用条件概率,我们知道:
我们发现计算前面几个可能好计算,但是越往后越难,然后马尔科夫给出了一个简单的办法,就是考虑任意一个词出现的概率只与它前面的词有关,这样可以化简为:
这个假设在数学上称为马尔科夫假设,对应的统计语言模型是二元模型,如果一个词假设跟前面N个词决定,那这个就叫N元模型。
实际使用中还需考虑很多问题,数学之美一书中也有部分介绍。
不过统计学也有一定的缺陷,主要可能由语料库有关,将基于统计的方法跟基于规则的方法结合,可能会有一定的帮助。
最后,我们考虑分词的时候,对于一些介词、常用词不予考虑,这个叫停用词,还有对于英语中不同的词根这个也视为同一个词。
学习参考:http://www.icst.pku.edu.cn/course/mining/12-13spring/index.html