一、自然语言处理与文本分析及挖掘原理
(一)语言的统计特性原理
自然语言从统计角度看存在一定规律。例如,在大量文本中,单词的出现频率呈现幂律分布,少数单词高频出现,多数单词低频出现。可以用概率公式来描述单词的出现情况,对于单词 w w w在语料库 C C C中的概率:
P ( w ) = c o u n t ( w ) ∣ C ∣ P(w)=\frac{count(w)}{|C|} P(w)=∣C∣count(w)
其中 c o u n t ( w ) count(w) count(w)是单词 w w w在语料库中的出现次数, ∣ C ∣ |C| ∣C∣是语料库的总词数。这种统计特性为文本处理中的模型构建提供了基础,比如在构建语言模型时,可根据单词的统计概率来预测句子的合理性。
(二)语义和语法原理
语义原理
语义分析旨在理解文本的含义。词汇语义通过词汇表(如WordNet)来确定单词间的关系,像“汽车”和“轿车”可能是同义词关系。句子语义则需要分析句子结构,例如通过语义角色标注,在句子“小明给小红一本书”中,“小明”是施事者,“小红”是受事者,“一本书”是客体,“给”是动作,这有助于理解句子的核心语义。
语法原理
语法规则规定了单词如何组成合法的句子。在英语中,句子通常有明确的语法结构,如主谓宾结构。以句子“I love you”为例,“I”是主语,“love”是谓语动词,“you”是宾语。通过分析语法结构,可以对文本进行预处理,比如在词性标注和句法分析任务中。
(三)文本结构原理
宏观结构
文本从宏观上有层次结构,比如一本书包含多个章节,章节包含多个段落,段落包含多个句子。在电子文档(如HTML文件)中,这种结构通过标签体现,如<html>
、<body>
、<p>
等标签分别表示不同的层次结构。在纯文本中,可以通过标点符号、段落缩进等方式分析结构。
微观结构
在句子层面,存在微观结构,如词序和词性搭配。在英语中,形容词一般在名词前修饰名词,像“beautiful flower”,“beautiful”修饰“flower”。分析微观结构有助于文本预处理,如词性标注和分词。
二、自然语言处理与文本分析及挖掘方法
(一)文本预处理方法
分词
-
中文分词
- 基于词典的方法:例如正向最大匹配法,假设词典中最大词长为 L L L,句子长度为 n n n,对于位置 i i i( 1 ≤ i ≤ n 1\leq i\leq n 1≤i≤n),从 i i i开始取长度为 j j j( 1 ≤ j ≤ L 1\leq j\leq L 1≤j≤L且 i + j − 1 ≤ n i + j - 1\leq n i+j−1≤n)的字符串与词典匹配,直到找到一个词。如句子“自然语言处理很有趣”,词典中有“自然语言处理”等词,从左向右先取“自然语言处理”,匹配成功。但这种方法存在歧义问题,比如“乒乓球拍卖完了”,可能有不同的分词结果。
- 基于统计的方法:利用统计语言模型,如N - Gram模型,计算不同分词组合的概率,选择概率最高的分词方式。通过在大量文本数据上学习单词的共现概率,来确定最佳分词。
-
英文分词:英文单词间通常有空格分隔,但也有特殊情况,如缩写(“I’m”需分为“I”和“'m”)和连字符连接的单词(“e - mail”作为一个词),可以用简单规则或正则表达式处理。
词性标注
常用隐马尔可夫模型(HMM),对于单词序列 w 1 , w 2 , ⋯ , w n w_1,w_2,\cdots,w_n w1,w2,⋯,wn,设词性序列为 t 1 , t 2 , ⋯ , t n t_1,t_2,\cdots,t_n t1,t2,⋯,tn,HMM公式为:
P ( t 1 , t 2 , ⋯ , t n ∣ w 1 , w 2 , ⋯ , w n ) = P ( t 1 , t 2 , ⋯ , t n ) × P ( w 1 , w 2 , ⋯ , w n ∣ t 1 , t 2 , ⋯ , t n ) P ( w 1 , w 2 , ⋯ , w n ) P(t_1,t_2,\cdots,t_n|w_1,w_2,\cdots,w_n)=\frac{P(t_1,t_2,\cdots,t_n)\times P(w_1,w_2,\cdots,w_n|t_1,t_2,\cdots,t_n)}{P(w_1,w_2,\cdots,w_n)} P(t1,t2,⋯,tn∣w1,w2,⋯,wn)=P(w1,w2,⋯,wn)P(t1,t2,⋯,tn)×P(w1,w2,⋯,wn∣t1,t2,⋯,tn)
在实际应用中,通过在大规模语料库上训练来估计模型参数,包括状态转移概率 P ( t i ∣ t i − 1 ) P(t_i|t_{i - 1}) P(ti∣ti−1)和观测概率 P ( w i ∣ t i ) P(w_i|t_i) P(wi∣t