您的位置:首页 > 其它

SegWord项目规划初稿

2006-06-06 12:23 169 查看
SegWord项目准备7月份开始,现已有部分朋友加入这个项目中来。为了获得更多朋友的支持,以及,接纳更多的朋友参与,特把项目规划的文件初稿贴发于此。若有朋友对此开源项目感兴趣,可发个人简历(或自我介绍)到percyleeCn (at) gmail.com,当然,也欢迎您提出建议或个人看法与我们进行交流。

SegWord项目规划

修订历史
版本号
日 期
作者
修订细节
审批人
审批日期
0.1
2006-1-4
percylee
初稿

项目介绍

SegWord是一个开放项目[1],由其小组成员进行开发维护,稳定版本软件(包括程序与文档)将公开在网络上供参考与交流。下面是其简单介绍:

SegWord为一个分词系统,满足:
(1)分词
(2)获得义性分布
(3)词表自调整
三个目的。 其中
(1)表明该系统可对汉语文本进行分词;这是这个系统的基本属性之一。但是,设计者认为不能为分词而分词,故本系统的研究重点为目的(2)和(3)。
(2)更广泛的看,分词的实质是“组合”,即由小结构组合为大结构并对结构的属性同时进行组合与变换。也就是说,分词不仅要给出词的分割,也应给出这种结构所对应的属性,例如词性,语义选项,未登录词属性等,统称为义性分布。这是后续处理的重点依据。
(3)分词依赖于一定的词表。但是,词表本身若由人来提供,总是存在一定的局限。考虑机器学习的运用,寻找词表自调整的方法与思路。这也是本项目的难点。
例如,对于输入:
这是一种烤制猪排、羊排和牛排的方法。
希望经SegWord处理后,可以获得:
这 是 [一种] [烤制] [猪排] 、 [羊排] 和 [牛排] 的 [方法]。
同时,各个词语单位的义性可以自动习得,如“烤制”是v,“牛排”是n,若词库中没有收录“羊排”,计算机可以习得这是一个和“牛排”近似的结构,经一定的策略可以对词库进行更新。
综上,本分词系统将是一个挑战,也是对中文信息处理进行突破的一种新尝试。

为什么要做分词

为什么要做分词?
这个问题的第一层意思,就是分词的必要性,对于中文信息处理而言。由于NLU&NLP学科的发展,其应用的便利性和紧迫性已经深入人心,如信息检索、文本分类、自动问答、自动摘要、信息过滤等,尤其是在互联网发展的带动下,广泛而深入的影响着人们生活中的各个领域各个方面。
对于中文而言,这些技术的发展都依赖于中文信息处理的发展。而中文信息处理中,分词又是至关重要的一步。有论述[2]
我们知道,汉语的中文信息处理就是要“用计算机对汉语的音、形、义进行处理。” [1], 我们还知道,“词是最小的能够独立活动的有意义的语言成分。”[2] 然而,汉语文本中词与词之间却没有明确的分隔标记,而是连续的汉字串。显而易见,自动识别词边界,将汉字串切分为正确的词串的汉语分词问题无疑是实现中文信息处理的各项任务的首要问题。

这个问题的第二层意思,就是在目前的环境下,分词已经是得到深入开展、有各种成熟成果和应用的项目,是否有必要继续提出SegWord一切从头开始做?
虽然已有相关大学、研究院或商业公司在这个问题上进行了比较成熟的探索,行业中也已经有了比较成熟可用的分词软件,但我们认为分词仍然是留有大量问题的领域,对于中文信息处理而言,有些思路需要从分词开始探索。例如,我们给出如下问题:
(1) 分词对于中文信息处理而言,不仅仅是一个预处理过程,或第一步。分词的重点不仅在分,给出词的词性标注,同时在语言的动态处理过程中,要探索各个应用领域的不同理解要求下分词在“中文信息处理”的整体计算上具有什么作用,如何进行交互?
例如,一个很生活化的中文句子:
明儿天气如何?要下大雨吗?
我们现有的分词系统可能会给出类似如下的结果:
明 儿 天气 如何 ? 要 下 大 雨 吗 ?
明儿 天气 如何 ? 要 下 大雨 吗 ?
我们如果用它去做搜索,我们需要哪些信息?或者,我们若是做问答系统,那么又有哪些信息更重要,是关注的焦点?换句话说,语言的语义和语用关系如何影响这句话的分词与知识标注?所分之词对后续短语处理或统计模型的计算有什么影响?在知识表达的符号集上针对各种应用是否有个工程意义上的完备集合?
诸如此类,分词如果孤立的去看,最终将会影响中文信息处理;事实上,我们更愿意把分词看作一个连续的、对整体有着深远影响的处理阶段:分词系统的设计应该基于这方面的考虑,反映这方面的成果。但目前,我们没有看到现有的分词系统在这个问题上有什么系统的考虑或进展。
(2) 中文信息处理有理性与经验之争。理性主义强调语感,归纳各种语法和语义的规则,而经验主义则着重数学统计模型,从可能性计算来统帅语言知识的处理。虽然有大量学者提出二者应该融合,但应该如何融合,目前还没有一个比较好的方案。就分词而言,比如对于歧义结构的处理,对于未登录词和新词的识别,有些系统在用规则的方法,有些系统在用统计的模型,所以我们仍然在面临一个基本的问题:
对于分词的处理,及其意义的确定,是否可以综合语法、语义、语用信息和统计信息进行综合计算?
换句话,有些类似的问题可以表达这方面的思考:语义是否具有统计规律?数学模型是否有精确的、可于人匹配的概念解释?等等。单纯的融合不是我们的目标,我们认为,就目前的环境下,在探索知识计算的过程中,为了获得更好的计算模型与处理效果,我们应该探索融合之路,首先就从分词上开始。
(3) 人类对于语言理解的深度是一个变化的过程,因为人类的知识结构在发生变化,人类在学习。同样,我们有理由相信一个能够有效处理人类语言的机器,它应该具备机器学习的能力和机制。
但是这种学习的能力与机制,当运用于非结构化信息的人类语言上,应该具有一种什么样的形式?比如对于分词,如下一个句子:
我要喝王老吉!
一个运行了三个月的系统,与一个运行了三年的系统,是否可以表现出一定的差别?对词汇的掌握上,对语言结构的推断能力上。(由“喝”大体推断出“王老吉”是什么,或者由学习到的知识储备知道它具体是什么)

这种非常基本的问题,对于技术的发展而言意义重大。基于这种认识,我们提出了SegWord的三个目标。并认为即使在当前的环境下,SegWord所做的探索工作也必是有其作用的。

三个目标的意义

SegWord项目有三个目标,分别为:

(1)分词
(2)获得义性分布
(3)词表自调整
并在综合介绍中给出了初步的解释,我们在此重点说明(2)和(3)。
首先要说明的是,这三个目标提出的背景,就是在“为什么做分词”中所提出的诸多问题:对于那些问题的考虑,是提出SegWord项目的促因。
在这个背景下,(2)主要考虑的出发点是:

义指的是语义,成词单位的意义,性指的是词性,成词单位的传统词法属性。比如,可有如下例子:
桌子 词性是n 语义是人用物品,属性如何如何
漂亮 词性是adj 语义是好看,让人赏心悦目
若形成短语
漂亮的桌子
就语言层面而言提供的知识是一个桌子,且其显著特征是外表好看,让人赏心悦目。在分词的过程中,要提供对这些知识的获取或表达,也就要求我们考虑语法、语义、语用三平面的综合信息,考虑分词在语言理解与处理中的综合影响,寻找意义表达与数学模型之间的融合的可能性与方案。

而(3)的主要出发点是,则是考虑机器学习与中文信息处理(分词)的综合。可见于上面对机器学习的讨论,以及在分词中的影响。

就此而言,SegWord是一个中文信息处理领域以自然语言理解为着眼点的项目。它将具备分词功能,但不为分词而分词。


项目规划

基本技术问题

这里所言的,是SegWord项目中将要遇到的一些基本的技术问题,它们将被安排到不同的阶段进行讨论和解决。
问题清单如下:

1. 不同编码的转化
主要是GBK码与BIG5码、Unicode码之间的文本的相互转化。
2. 中文字符串的hash函数
目标是获得:
Hash_value = hash ( Unicode_key )
其中Unicode_key是unicode编码的中文词汇字符串。

设计此函数的目的是,词库的主结构争取以散列表来建立。若该散列表的填充因子能大于70%,则散列词库是可以成功使用的,而以中文词汇串作为key来访问词库的速度也是与词库规模无关的。(将是O(1)或者与O(key.length),如果是开散列,则需要另外考虑碰撞期望,我们不在此讨论)
然而有两个学术性质的问题需要讨论:
(1) 通用中文词汇字符串(Unicode编码)是否存在一个散列效果比较好的散列函数?
(2) 领域对中文词汇字符串的散列效果是否存在不可忽视的影响?相关参数能否确定?

除此之外,我们需要讨论这个hash函数如何进行设计?(我们知道,英文字符串有一些散列效果比较好的hash函数,如ELFhash算法。我们可以做一定的参考。)
本来,一个类似于Trie结构的堆结构访问速度也是比较快的,但对于SegWord的第三个目标(通过学习实时调整词库)来讲,词库设计成这种结构却是一个根本性的障碍:一旦词库发生更新,则速度会大大的受影响。所以我们将尝试寻找这种hash函数。

3. 词语的标注体系与词库初始库的建立
此问题的难点更多的在于语言学方面,即采用什么样的标注体系。现有的标注体系中,大部分是落在语法(或句法)平面的,如词性是名词、动词或者形容词等,而典型如北大制定的标注标准,也包含部分语用信息,如习语、人名、地名、机构名等。但是语义信息如何进行标注,还难以有一个合理的标准,虽然这方面可以参考HowNet和HNC的工作,但这两者的语义资源都是人工建立、耗费了大量的人力物力的,一方面我们没有做资源的实力,另一方面,人工建立与机器习得在思路上还是有根本性区别的。

但是我们的工作仍需要继续:
(1) 义性的选择,语法(句法)、语义、语用三平面的信息如何进行和谐标注?
(2) 标注符号是否可以进行计算?如何进行计算?(目前可以不讨论跨平面标注符号的计算问题)
(3) 是否有必要标注词语在上级语言单位中的角色?(倾向于不进行标注,问题1和2才是主要问题)

中国传媒大学的标注体系由北大的发展而来,他们可以同时标注语法信息和语用信息,如一个习语同时也可以标注词性(采用 词汇/标注1/标注2 的方式来进行)。这是上次参加HNC与语言学研讨会所得到的一个信息,对我们有所启发。
在标注体系确定以后,我们可以考虑词库初始库的建立。

4. 通用组合结构
通常来讲,字、词、短语以及句子(甚至篇章)都是文本中的不同的语言单位。对于汉语,人们习惯性认为分词是第一步的工作,要把串进行切词。我们认为,更广泛的来看,分词的实质是“组合”,即有小语言单位实体组合为大语言单位的实体,同时对语言结构的属性进行变换与组合。
比如输入串:
一个高大的身影
分词需要处理的是:
一个[一+个] 高大[高+大] 的 身影[身+影]
而短语处理需要处理的是:
[一个 [高大 的 身影]]
它们有共同的、抽象的东西。

基于这种认识,我们需要设计一种通用组合结构(数据结构),可以适应于任何级别的语言单位的计算。当然,这种数据结构不仅要适应各种语言单位的计算,也需要适应于各种语言知识的表达;这也是我们需要深入讨论的一个问题。

5. 歧义发现
中文分词将会遇到众多的歧义难点,而在处理这些歧义之前,我们首先应该能够发现它们。这就是我们首先要提出讨论的第一个问题。
(1) 切分歧义
有朋友提到的两个例子,大概是:
我吃烤肉。 我烤肉吃。
技术和服务
歧义字段“烤肉”与“和服务”是非常典型的两个例子。对于前者,在不同的语言环境中可以分别切分为“烤肉”和“烤 肉”,部分与整体均可能成词,这种歧义结构通常称为组合型歧义。对于后者,在不同的语言环境中可以分别切分为“和 服务”与“和服 务*”,此时成词部分存在交叉,常常被称为交集型歧义。如果交集型歧义与组合型歧义同时存在,则一般可称为混合型歧义。
对于交集型歧义的字段,还有一些例子:
成为了 展现在世人 邓小平等 城市中心
韦向峰《汉语字段处理的几点思考》
对于组合型歧义,另有例子:
"把手","这个门的把手坏了好几天了","你把手抬高一点儿"
"本书","本书讨论的问题是一个老生常谈的问题","那本书写得非常精彩"
"并排","这条马路可以并排行驶四辆大卡车","教务科指定了专任讲师并排好了课程时间表"
北大《汉语分词中的组合歧义实例》

这些切分歧义结构,需要一个识别算法。这其中有两点需要注意:
(a) 成词的基本策略
两种基本歧义结构,虽然有一个大致的定义,但也是模糊的。首先我们没有明确的概念什么是“词”,自然“成词”的标准也是模糊的。人可以通过语感来分析,而机器不能,它只能寻求他法,例如,通过查阅词典(在词典中出现便认为是成词),或者通过计算共现概率(超过一定的阀值也认为是成词)。这种“成词”的基本定义,对歧义发现以及分词的影响是深远的,需要加以仔细的讨论与研究。
(b) 识别歧义的深层特征
即使是同一基本类型的歧义字段,它们也有自己的内部深层特征。例如:
技术和服务
“和”可以作为并联结构的标志,也可以作为“和服”的构成字。而一般对并联结构,在后续的语言处理中是可以专门处理的。若这一特征同时也能识别出,是否可以提前利用“并联结构标志”的相关信息来处理该歧义?
又如,
我 吃/v 烤肉/n。 我 烤/v 肉/n 吃/v。
“烤肉”还是“烤 肉”,一个是名词一个是“v+n”的结构,将会对所在句子的结构产生深远的影响。若这一特征可以表示并识别出来,对于该歧义的处理具有很好的启发?
总之,这些深层特征若能以合理的代价同时识别出来,将会对后续的处理大大的有益处。但具体说来,这应该是我们要仔细讨论和研究的第二点。

(2) 成词的单位
因为汉语中“词”难以有个确切的定义,所以有一部分表面上看起来是组合型歧义的字段,实际上不应该以歧义来处理,而应该考虑成“词”的颗粒度问题。例如
一场 大雨 一场 大 雨
事实上切分为“大雨”,或者“大 雨”,语感上都是可以的。只不过相对来说,前者是大粒度的切词,后者是小粒度而已。对于这种不同,需要考虑的是:
(a) 是否可以从歧义识别中分离出来?
(b) “词”的数据结构,是否可以把这种粒度区分出来?有无必要?
这个问题应该是比较困难的。

(3) 兼类的识别
可以认为,相对于切词歧义,兼类是另一类歧义问题。它的歧义在于,对于一个成词单位,它同平面内可选的义性超过一个。比如“服务”就存在n和v的兼类问题。不考虑义性的计算,兼类的识别是相对比较容易的。

6. 词库的统计模型
在词库建立的初始,本项目准备同时加入词语的统计知识,也就是建立相应的统计模型。但建立一个什么样的模型,对后续的处理乃至SegWord的应用会产生什么样的影响(也是我们建立模型的基本因素),是需要我们仔细探讨与研究的。

7. 分词算法
目前的分词算法中,有机械分词算法、统计模型的算法和利用规则的算法。我们的问题是,要探索出一种算法框架,可适应于我们数据结构设计(通用组合结构、Hash算法等),并能够容纳以下问题的解决方案,即适应于义性标注和词库自调整的需求。

8. 歧义结构的处理
9. 专有名词的识别
专有名词包括:
人名
中文人名,译名,少数民族人名,外国人名
地名(类似于人名)
机构名(类似于人名)
专有名词缩略语
人名缩略语
地名缩略语
机构名缩略语

10. 新词的识别
新词指的是除专有名词之外的未登录词。例如重叠词、方言、科技词汇、特殊使用词语等。
11. 词语关联性的统计模型
12. 词语义性的标注
13. 词语中语用信息的挖掘
词语中具有一定的语用信息,如:成语、习惯用语、语气词等,在义性标注之后,要对此问题给予研究,寻求识别与表达方法。
14. 新词发现与机器学习
15. 词库自调整算法

项目总体规划

项目总体规划可见于下图:



项目准备

中文词汇的Hash算法

词语标注体系与初始词库

中文编码的转换

初始词库

通用组合结构(DS)

分词语料库

分词算法

歧义发现

歧义结构的处理

专名识别

新词识别

词库的统计模型*

义性标注

关联性统计模型*

语用信息的挖掘

机器学习与词库自调整

自适应词库

专名知识库

SegWord项目总体规划图

如该图所示,SegWord项目可大致划分为五个阶段:

(1) 经过项目准备,研究中文词汇Hash算法、词语标注体系和初始词库、中文编码转换(可选)三个问题。
(2) 在初始词库和分词语料库的基础上,研究通用组合结构和词库的统计模型(此时词库需要附加统计知识)。
(3) 研究分词算法,并在专名知识库和分词语料库的支持下,研究专名的识别,歧义结构的发现和处理。
(4) 研究词语关联性的统计模型,做义性分布,并研究语用信息的挖掘(可选)。
(5) 研究机器学习与分词的结合,设计词库自调整算法,建立自适应词库。



<完毕>


[1] (权利要求暂缺)

[2] 见论文《汉语分词在中文软件中的应用》微软亚洲研究院
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: