中文分词原理、词法分析、依存关系

  1. 为什么要进行中文分词?
  2. 中文分词技术的分类
  3. 逐词遍历法
  4. 基于字典、词库匹配的分词方法(机械分词法)
    1. 最大正向匹配法
    2. 逆向最大匹配法 (Reverse maximum matching method)
    3. 最少切分法
    4. 双向匹配法
  5. 全切分和基于词的频度统计的分词方法
    1. 全切分
  6. 基于知识理解的分词方法
  7. 一种新的分词方法
  8. 依存关系标识
    1. 定中关系ATT
    2. 数量关系QUN(quantity)
    3. 并列关系COO(coordinate)
    4. 同位关系APP(appositive)
    5. 附加关系ADJ(adjunct)
    6. 动宾关系VOB(verb-object)
    7. 介宾关系POB(preposition-object)
    8. 主谓关系SBV(subject-verb)
    9. 比拟关系SIM(similarity)
    10. 时间关系TMP(temporal)
    11. 处所关系LOC(locative)
    12. “的”字结构DE
    13. “地”字结构DI
    14. “得”字结构DEI
    15. “所”字结构SUO
    16. “把”字结构BA
    17. “被”字结构BEI
    18. 状中结构ADV(adverbial)
    19. 动补结构CMP(complement)
    20. 兼语结构DBL(double)
    21. 关联词CNJ(conjunction)
    22. 关联结构 CS(conjunctive structure)
    23. 语态结构MT(mood-tense)
    24. 连谓结构VV(verb-verb)
    25. 核心HED(head)
    26. 前置宾语FOB(fronting object)
    27. 双宾语DOB(double object)
    28. 主题TOP(topic)
    29. 独立结构IS(independent structure)
    30. 独立分句IC(independent clause)
    31. 依存分句DC(dependent clause)
    32. 叠词关系VNV (verb-no-verb or verb-one-verb)
    33. 一个词YGC
    34. 标点 WP

为什么要进行中文分词?

词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的基础与关键。

Lucene中对中文的处理是基于自动切分的单字切分,或者二元切分。除此之外,还有最大切分(包括向前、向后、以及前后相结合)、最少切分、全切分等等。

中文分词技术的分类

分词算法可分为三大类:
1、基于字典、词库匹配的分词方法;
2、基于词频度统计的分词方法;
3、基于知识理解的分词方法。

第一类方法应用词典匹配、汉语词法或其它汉语语言知识进行分词,如:最大匹配法、最小分词方法等。这类方法简单、分词效率较高,但汉语语言现象复杂丰富,词典的完备性、规则的一致性等问题使其难以适应开放的大规模文本的分词处理。第二类基于统计的分词方法则基于字和词的统计信息,如把相邻字间的信息、词频及相应的共现信息等应用于分词,由于这些信息是通过调查真实语料而取得的,因而基于统计的分词方法具有较好的实用性。

下面简要介绍几种常用方法:

逐词遍历法

逐词遍历法将词典中的所有词按由长到短的顺序在文章中逐字搜索,直至文章结束。也就是说,不管文章有多短,词典有多大,都要将词典遍历一遍。这种方法效率比较低,大一点的系统一般都不使用。

基于字典、词库匹配的分词方法(机械分词法)

这种方法按照一定策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。识别出一个词,根据扫描方向的不同分为正向匹配和逆向匹配。根据不同长度优先匹配的情况,分为最大(最长)匹配和最小(最短)匹配。根据与词性标注过程是否相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的方法如下:

最大正向匹配法

通常简称为MM法。其基本思想为:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典。若字典中存在这样的一个i字词,则匹配成功,匹配字段被作为一个词切分出来。如果词典中找不到这样的一个i字词,则匹配失败,将匹配字段中的最后一个字去掉,对剩下的字串重新进行匹配处理…… 如此进行下去,直到匹配成功,即切分出一个词或剩余字串的长度为零为止。这样就完成了一轮匹配,然后取下一个i字字串进行匹配处理,直到文档被扫描完为止。

其算法描述如下:

(1)初始化当前位置计数器,置为0;
(2)从当前计数器开始,取前2i个字符作为匹配字段,直到文档结束;
(3)如果匹配字段长度不为0,则查找词典中与之等长的作匹配处理。

逆向最大匹配法 (Reverse maximum matching method)

通常简称为RMM法。RMM法的基本原理与MM法相同 ,不同的是分词切分的方向与MM法相反,而且使用的分词辞典也不同。逆向最大匹配法从被处理文档的末端开始匹配扫描,每次取最末端的2i个字符(i字字串)作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。相应地,它使用的分词词典是逆序词典,其中的每个词条都将按逆序方式存放。在实际处理时,先将文档进行倒排处理,生成逆序文档。然后,根据逆序词典,对逆序文档用正向最大匹配法处理即可。

由于汉语中偏正结构较多,若从后向前匹配,可以适当提高精确度。所以,逆向最大匹配法比正向最大匹配法的误差要小。统计结果表明 ,单纯使用正向最大匹配的错误率为 1/16 9,单纯使用逆向最大匹配的错误率为 1/245。例如切分字段“硕士研究生产”,正向最大匹配法的结果会是“硕士研究生 / 产”,而逆向最大匹配法利用逆向扫描,可得到正确的分词结果“硕士 / 研究 / 生产”。

当然,最大匹配算法是一种基于分词词典的机械分词法,不能根据文档上下文的语义特征来切分词语,对词典的依赖性较大,所以在实际使用时,难免会造成一些分词错误,为了提高系统分词的准确度,可以采用正向最大匹配法和逆向最大匹配法相结合的分词方案(即双向匹配法,见(四)。)

最少切分法

使每一句中切出的词数最小。

双向匹配法

将正向最大匹配法与逆向最大匹配法组合。先根据标点对文档进行粗切分,把文档分解成若干个句子,然后再对这些句子用正向最大匹配法和逆向最大匹配法进行扫描切分。如果两种分词方法得到的匹配结果相同,则认为分词正确,否则,按最小集处理。

全切分和基于词的频度统计的分词方法

基于词的频度统计的分词方法是一种全切分方法。在讨论这个方法之前我们先要明白有关全切分的相关内容。

全切分

全切分要求获得输入序列的所有可接受的切分形式,而部分切分只取得一种或几种可接受的切分形式,由于部分切分忽略了可能的其他切分形式,所以建立在部分切分基础上的分词方法不管采取何种歧义纠正策略,都可能会遗漏正确的切分,造成分词错误或失败。而建立在全切分基础上的分词方法,由于全切分取得了所有可能的切分形式,因而从根本上避免了可能切分形式的遗漏,克服了部分切分方法的缺陷。

全切分算法能取得所有可能的切分形式,它的句子覆盖率和分词覆盖率均为100%,但全切分分词并没有在文本处理中广泛地采用,原因有以下几点:

1.全切分算法只是能获得正确分词的前提,因为全切分不具有歧义检测功能,最终分词结果的正确性和完全性依赖于独立的歧义处理方法,如果评测有误,也会造成错误的结果。

2.全切分的切分结果个数随句子长度的增长呈指数增长,一方面将导致庞大的无用数据充斥于存储数据库;另一方面当句长达到一定长度后,由于切分形式过多,造成分词效率严重下降。

基于词的频度统计的分词方法:

这是一种全切分方法。它不依靠词典,而是将文章中任意两个字同时出现的频率进行统计,次数越高的就可能是一个词。它首先切分出与词表匹配的所有可能的词,运用统计语言模型和决策算法决定最优的切分结果。它的优点在于可以发现所有的切分歧义并且容易将新词提取出来。

基于知识理解的分词方法

该方法主要基于句法、语法分析,并结合语义分析,通过对上下文内容所提供信息的分析对词进行定界,它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断。这类方法试图让机器具有人类的理解能力,需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式。因此目前基于知识的分词系统还处在试验阶段。

一种新的分词方法

并行分词方法:这种分词方法借助于一个含有分词词库的管道进行 ,比较匹配过程是分步进行的 ,每一步可以对进入管道中的词同时与词库中相应的词进行比较 ,由于同时有多个词进行比较匹配 ,因而分词速度可以大幅度提高。这种方法涉及到多级内码理论和管道的词典数据结构。

依存关系标识

句法依存关系接口可以解析出的依存关系标识如下:

定中关系ATT

定中关系就是定语和中心词之间的关系,定语对中心词起修饰或限制作用。

如:工人/n师傅/n(工人/n ← 师傅/n)。

数量关系QUN(quantity)

数量关系是指量词或名词同前面的数词之间的关系,该关系中,数词作修饰成分,依存于量词或名词。

如:三/m天/q(三/m ← 天/q)。

并列关系COO(coordinate)

并列关系是指两个相同类型的词并列在一起。

如:奔腾/v咆哮/v的怒江激流(奔腾/v → 咆哮/v)。

同位关系APP(appositive)

同位语是指所指相同、句法功能也相同的两个并列的词或词组。

如:我们大家 (我们 → 大家)。

附加关系ADJ(adjunct)

附加关系是一些附属词语对名词等成分的一种补充说明,使意思更加完整,有时候去掉也不影响意思。

如:约/d 二十/m 多/m 米/q 远/a 处/n (二十/m → 多/m,米/q → 远/a)。

动宾关系VOB(verb-object)

对于动词和宾语之间的关系我们定义了两个层次,一是句子的谓语动词及其宾语之间的关系,我们定为OBJ,在下面的单句依存关系中说明;二是非谓语动词及其宾语的关系,即VOB。这两种关系在结构上没有区别,只是在语法功能上,OBJ中的两个词充当句子的谓语动词和宾语,VOB中的两个词构成动宾短语,作为句子的其他修饰成分。

如:历时/v 三/m 天/q 三/m夜/q(历时/v → 天/q)。

介宾关系POB(preposition-object)

介词和宾语之间的关系,介词的属性同动词相似。

如:距/p球门/n(距/p → 球门/n)。

主谓关系SBV(subject-verb)

主谓关系是指名词和动作之间的关系。

如:父亲/n 逝世/v 10/m 周年/q 之际/nd(父亲/n ← 逝世/v)。

比拟关系SIM(similarity)

比拟关系是汉语中用于表达比喻的一种修辞结构。

如:炮筒/n 似的/u 望远镜/n(炮筒/n ← 似的/u)。

时间关系TMP(temporal)

时间关系定义的是时间状语和其所修饰的中心动词之间的关系。

如:十点以前到公司(以前 ← 到)。

处所关系LOC(locative)

处所关系定义的是处所状语和其所修饰的中心动词之间的关系,如:在公园里玩耍(在 ← 玩耍)。

“的”字结构DE

“的”字结构是指结构助词“的”和其前面的修饰语以及后面的中心词之间的关系。

如:上海/ns 的/u 工人/n(上海/ns ← 的/u,的/u ← 工人/n)。

“地”字结构DI

“地”字结构在构成上同DE类似,只是在功能上不同,DI通常作状语修饰动词。

如: 方便/a 地/u 告诉/v 计算机/n(方便/a ← 地/u,地/u ← 告诉/v)。

“得”字结构DEI

助词“得”同其后的形容词或动词短语等构成“得”字结构,对前面的动词进行补充说明。

如:讲/v 得/u 很/d 对/a(讲/v → 得/u,得/u → 对/a)。

“所”字结构SUO

“所”字为一结构助词,后接一宾语悬空的动词做“的”字结构的修饰语,“的”字经常被省略,使结构更加简洁。

如:机电/b 产品/n 所/u 占/v 比重/n 稳步/d 上升/v(所/u ← 占/v)。

“把”字结构BA

把字句是主谓句的一种,句中谓语一般都是及物动词。

如:我们把豹子打死了(把/p → 豹子/n)。

“被”字结构BEI

被字句是被动句,是主语接受动作的句子。

如:豹子被我们打死了(豹子/n ← 被/p)。

状中结构ADV(adverbial)

状中结构是谓词性的中心词和其前面的修饰语之间的关系,中心词做谓语时,前面的修饰成分即为句子的状语,中心词多为动词、形容词,修饰语多为副词,介词短语等。

如:连夜/d 安排/v 就位/v(连夜/d ← 安排/v)。

动补结构CMP(complement)

补语用于对核心动词的补充说明。

如:做完了作业(做/v → 完)。

兼语结构DBL(double)

兼语句一般有两个动词,第二个动词是第一个动作所要表达的目的或产生的结果。

如:[7]曾经/d [8]使/v [9]多少/r [10]旅游/n [11]人/n [12]隔/v [13]岸/n [14]惊叹/v [15]!/wp(使 → 人/n ,/v使/v → 惊叹/v)。

关联词CNJ(conjunction)

关联词语是复句的有机部分。

如:只要他请客,我就来。(只要 ← 请 ,就 ← 来)。

关联结构 CS(conjunctive structure)

当句子中存在关联结构时,关联词所在的两个句子(或者两个部分)之间通过各部分的核心词发生依存关系CS。

如:只要他请客,我就来。(请 ← 来)。

语态结构MT(mood-tense)

汉语中,经常用一些助词表达句子的时态和语气,这些助词分语气助词,如:吧,啊,呢等;还有时态助词,如:着,了,过。

如: [12]答应/v [13]孩子/n [14]们/k [15]的/u [16]要求/n [17]吧/u [18],/wp [19]他们/r [20]这/r [21]是/v [22]干/v [23]事业/n [24]啊/u [25]!/wp([12]答应/v ← [17]吧/u,[21]是/v ← [24]啊/u)。

连谓结构VV(verb-verb)

连谓结构是同多项谓词性成分连用、这些成分间没有语音停顿、书面标点,也没有关联词语,没有分句间的逻辑关系,且共用一个主语。

如:美国总统来华访问。(来华/v → 访问/v)。

核心HED(head)

该核心是指整个句子的核心,一般是句子的核心词和虚拟词(或ROOT)的依存关系。

如:这/r 就是/v恩施/ns最/d]便宜/a的/u出租车/n,/wp相当于/v北京/ns的/u “/wp 面的/n ”/wp 。/wp /(就是/v ← /

前置宾语FOB(fronting object)

在汉语中,有时将句子的宾语前置,或移置句首,或移置主语和谓语之间,以起强调作用,我认识这个人 ← 这个人我认识。

如:他什么书都读(书/n ← 读/v)。

双宾语DOB(double object)

动词后出现两个宾语的句子叫双宾语句,分别是直接宾语和间接宾语。

如:我送她一束花。(送/v → 她/r,送/v → 花/n)。

主题TOP(topic)

在表达中,我们经常会先提出一个主题性的内容,然后对其进行阐述说明;而主题部分与后面的说明部分并没有直接的语法关系,主题部分依存于后面的核心成分,且依存关系为TOP。

如:西直门,怎么走?(西直门 ← 走)。

独立结构IS(independent structure)

独立成分在句子中不与其他成分产生结构关系,但意义上又是全句所必需的,具有相对独立性的一种成分。

如:事情明摆着,我们能不管吗?

独立分句IC(independent clause)

两个单句在结构上彼此独立,都有各自的主语和谓语。

如:我是中国人,我们爱自己的祖国。(是 → 爱)

依存分句DC(dependent clause)

两个单句在结构上不是各自独立的,后一个分句的主语在形式上被省略,但不是前一个分句的主语,而是存在于前一个分句的其他成分中,如宾语、主题等成分。规定后一个分句的核心词依存于前一个分句的核心词。该关系同连谓结构的区别是两个谓词是否为同一主语,如为同一主语,则为VV,否则为DC。

如:大家/r叫/v 它/r “/wp 麻木/a 车/n ”/wp ,/wp 听/v起来/v 怪怪的/a 。/wp(叫/v → 听/v)。

叠词关系VNV (verb-no-verb or verb-one-verb)

如果叠词被分开了,如“是 不 是”、“看一看”,那么这几个词先合并在一起,然后预存到其他词上,叠词的内部关系定义为:(是1→不;不→是2) 。

一个词YGC

当专名或者联绵词等切散后,他们之间本身没有语法关系,应该合起来才是一个词。如:百 度。

标点 WP

大部分标点依存于其前面句子的核心词上,依存关系WP。

script>