公开/公告号CN101246472A
专利类型发明专利
公开/公告日2008-08-20
原文格式PDF
申请/专利权人 腾讯科技(深圳)有限公司;
申请/专利号CN200810089822.6
申请日2008-03-28
分类号G06F17/27(20060101);
代理机构11018 北京德琦知识产权代理有限公司;
代理人宋志强;麻海明
地址 518044 广东省深圳市福田区振兴路赛格科技园2栋东403室
入库时间 2023-12-17 20:36:43
法律状态公告日
法律状态信息
法律状态
2016-01-20
专利权的转移 IPC(主分类):G06F17/27 登记生效日:20151230 变更前: 变更后: 申请日:20080328
专利申请权、专利权的转移
2010-10-06
授权
授权
2008-10-15
实质审查的生效
实质审查的生效
2008-08-20
公开
公开
技术领域
本发明涉及文本信息自动处理技术领域,特别涉及一种汉语文本的大、小粒度切分实现方法和装置。
背景技术
由于汉语文本是基于单字的,即一段汉语文本是由单字组成的,表达该文本意义的词与词之间不像英语那样有显式的分隔标记,因此为了对汉语文本进行语义分析处理,首要的任务是对该文本中的每个词增加一个词界标记,使得所形成的词串能反映句子的本意。
现有的中文分词方法一般都能符合中文分词的基本要求,但中文分词是对文本最基础的分析处理,基于该处理之上,还有很多其他后续的文本处理操作,如汉语语音合成、汉语-外语语义自动翻译、汉语信息检索等,首先由分词单元对汉语文本进行分词处理,然后将分词结果提交给语音合成单元、机器翻译单元或检索单元进行后续处理,因此中文分词阶段应能根据后续的处理需求,保留相应的文本信息,以提高后续处理的效率。
现有的基于转换的错误驱动学习方法(TBL)是一种符号式的机器学习方法。由于该算法是一种机器学习算法,所以将其运用于分词粒度调整时,需要三个重要的组成部分:未切分的训练语料、标准语料和规则模版。其中:
未切分的训练语料,用于分词系统切分
标准语料,按特定的粒度标准切分好的语料
规则模版,表示一个规则集,它限定了学习中可能会用到的转换规则
使用TBL学习粒度调整规则的流程如下所示:
1、首先,利用分词系统对未切分的训练语料进行切分,形成最初的训练语料;
2、根据规则模板,构造所有可能的转换规则,并将其作用于训练语料,产生新的标注语料。通过比较标准语料和标注语料,选择能最大减少分词错误数的那条转换规则;
3、一旦选取某条转换规则,就把它作用于当前训练语料中,进行重新标注,形成新的训练语料;
4、重复步骤2,3,直到最终的分词粒度一致;
5、输出最终的转换规则序列。
实际应用时,需将上面得到的转换规则序列用于分词结果的后处理。即将转换规则序列作用于分词系统分词的结果,通过规则调整来得到所需的分词粒度。
该方法只能实现用单一粒度进行分词。但是,不同领域的文本处理操作需要不同粒度的分词结果。根据统计结果显示,在汉语语音合成、汉语-外语语义自动翻译等领域,需要分词单元提供一个粒度较大的分词结果,如正则表达式词“2007年10月17日”经过汉语分词处理后应保持原样,这样以提高语音合成或机器翻译的准确率。但对于汉语信息检索等领域来说,则需要提供一个粒度较小的结果,如同样是上述正则表达式词汇,则需要分成“2007/年/10/月/17/日”,这样做的目的是提高信息检索的召回率。因为常常用户在进行检索的时候,自己的需求不是很明确,或者说自己输入的检索词并不能完全表达自己的意愿,因此通过汉语分词对检索词分析,提供一个较小的粒度,然后提供给用户更多的信息,以备选择。
综上所述,现有技术的缺点在于,无法针对不同后续汉语文本处理需求提供相应粒度的汉语分词结果。
发明内容
有鉴于此,本发明实施例提出一种大、小粒度切分实现的方法,能够满足不同后续汉语文本处理需求。该方法包括如下步骤:
设置大粒度切分方式和小粒度切分方式;
根据输入的粒度需求,采用相应的粒度切分方式对汉语文本进行切分处理,并输出切分后的汉语文本。
本发明实施例还提出一种汉语文本的大、小粒度切分装置,包括:
模式词识别与粒度区分模块,用于识别汉语文本中的模式词,并对所识别的模式词进行粒度切分,并输出所述模式词作为模式词的大粒度切分结果,输出粒度切分后的模式词作为模式词的小粒度切分结果;
命名实体词识别模块,用于识别汉语文本中的命名实体词,输出识别出的命名实体词以及所述命名实体词的粒度信息;
输出模块,用于根据所述模式词识别与粒度区分模块得到的模式词的大粒度切分结果或小粒度切分结果,以及所述命名实体词识别模块所得到的命名实体词和所述命名实体词的粒度信息,并根据实际输入的粒度需求,输出根据所述粒度需求所对应的粒度划分的汉语字符串。从以上技术方案可以看出,预先设置大、小两种粒度划分标准,则可以根据实际需要采用相应的粒度对文本进行切分,能够满足不同后续汉语文本处理需求。
附图说明
图1为本发明实施例的汉语文本的大、小粒度切分基本实现流程图;
图2为本发明实施例根据模式词粒度标准对字符串进行粒度划分的流程图;
图3为本发明实施例对中文地名类命名实体词的识别及粒度划分过程示意图;
图4为本发明实施例对中文组织结构名类命名实体词的识别及粒度划分过程示意图;
图5为本发明实施例的汉语文本的大、小粒度切分装置框图。
具体实施方式
本发明实施例方案的基本流程如图1所示,包括如下几个基本步骤:
步骤101:制定对模式词、以及对于人名、地名和组织机构名这类命名实体词的识别规则,及其相应的大粒度区分信息和小粒度区分信息。
其中,对模式词的识别规则包括:
在识别规则中加入粒度信息,即粒度区分点。然后用确定性的有限状态自动机(Deterministic Finite Automaton,DFA)表示该识别规则,这样在分词过程中,就可以使用该有限状态自动机来识别符合规则的模式词。这样最终输出的时候,可以根据用户的大、小粒度需求,实用上述DFA对模式词进行划分,给出相应粒度的模式词。
制定模式词的粒度标准,根据所述模式词粒度标准,在识别这类模式词的正则表达式中加入大粒度信息和小粒度信息。。
本发明实施例共制定了以下的模式词的粒度标准:
(1)日期词
如“2007年10月18日”等,这类词汇在大粒度下的切分方式为:“2007年10月18日”,小粒度下的切分方式为:“2007/年/10/月/18/日”。即数字词和日期单位需切开。
(2)时间词
如“5分43秒”等,这类词汇在大粒度下的切分方式为:“5分43秒”,小粒度下的切分方式为:“5/分/43/秒”。即数字词和时间单位需切开。
(3)电子邮件(Email)地址
如“jianzhu@tencent.com”等,这类词汇在大粒度下的切分方式为:
“jianzhu@tencent.com”,小粒度下的切分方式为:
“jianzhu/@/tencent/./com”。即‘@’前面的词需切开,同时‘@’后面的字符串需要以‘.’符号为分隔切开。
(4)英文串
将连续的英文字符识别一个词,比如“search”,作为一个整体切出,没有大、小粒度区别;“abc-dcb”这类与其它字符混杂的英文串,大粒度切分方式为“abc-dcb”,小粒度切分方式为“abc/-/dcb”,及英文字符与其它字符分开;“abc123”这类英文串,大粒度切分方式为“abc123”,小粒度切分方式为“abc/123”,即英文和数字需切开。
(5)电话号码
如“86-10-62671188”,这类词汇在大粒度下的切分方式为:“86-10-62671188”,小粒度下的切分方式为:“86/-/10/-/62671188”,即电话号码中用‘-’字符隔开的数字串需要切开。
(6)金钱
如“500RMB”,这类词汇在大粒度下的切分方式为:“500/RMB”,小粒度下的切分方式为:“500/RMB”,即金钱中的数字和金钱单位需要切开。
(7)网址
如“www.qq.com”,这类词汇在大粒度下的切分方式为:“www.qq.com”,小粒度下的切分方式为:“www/./qq/./com”,即英文串中间有其他符号时,英文串需要和这些符号切开。
(8)分数
如“四分之三”、“1/2”,这类词汇在大粒度下的切分方式为:“四分之三”、“1/2”,小粒度下的切分方式为:“四分/之/三”、“1///2”,即分子和分母需要切开。
(9)百分数
如“98%”,这类词汇在大粒度下的切分方式为:“98%”,小粒度下的切分方式为“98/%”,即数字和百分号需切开。
(10)数字串
如“500”,这类词汇的大粒度和小粒度的切分方式均为“500”,同时带小数点的数,如“3.1415”,其大粒度和小粒度的切分方式也是一样的。
(11)年龄
如“25岁”,这类词汇在大粒度下的切分方式为:“25岁”,小粒度下的切分方式为:“25/岁”,即数字和年龄单位需要切开。
(12)重量
如“60公斤”,这类词汇在大粒度下的切分方式为:“60公斤”,小粒度下的切分方式为:“60/公斤”,即数字和重量单位需要切开。
(13)长度
如“60mm”,这类词汇在大粒度下的切分方式为:“60mm”,小粒度下的切分方式为:“60/mm”,即数字和长度单位需要切开。
(14)温度
如“零下20摄氏度”、“20℃”,这类词汇在大粒度下的切分方式为:“零下20摄氏度”、“20℃”,小粒度下的切分方式为:“零下/20/摄氏/度”、“20/℃”,即数字和温度单位需要切开。
(15)面积
如“50平方公里”,这类词汇在大粒度下的切分方式为:“50平方公里”,小粒度下的切分方式为:“50/平方/公里”,即数字、平方和长度单位之间需要切开。
(16)容积
如“500立方米”,这类词汇在大粒度下的切分方式为:“500立方米”,小粒度下的切分方式为:“500/立方/米”,即数字、立方和长度单位之间需要切开。
(17)速度
如“20米/S”,这类词汇在大粒度下的切分方式为:“20米/S”,小粒度下的切分方式为:“20/米///S”,即数字、长度和时间单位之间需要切开。
(18)功率
如“300W”,这类词汇在大粒度下的切分方式为:“300W”,小粒度下的切分方式为:“300/W”,即数字和度量单位之间需要切开。
(19)序数词
如“第19届”,这类词汇在大粒度下的切分方式为:“第19届”,小粒度下的切分方式为:“第/19/届”,即序数词“第”、数字和单位之间需要切开。
(20)角度
如“38度”,这类词汇在大粒度下的切分方式为:“38度”,小粒度下的切分方式为:“38/度”,即数字和角度单位之间需要切开。
根据上述模式词粒度标准,在书写识别模式词的正则表达式中加入粒度信息。然后分别编译生成两个DFA模块:一个DFA模块中不包含粒度信息,该DFA模块用于模式词识别,称为模式词识别单元;一个DFA模块中包含粒度信息,该DFA模块用于小粒度区分,称为小粒度区分单元。
对命名实体词的识别规则包括:
从已进行标注的语料中抽取出命名实体词,对命名实体词进行分类,然后给每一类命名实体词制定一个识别类模板,同时用识别类模板对相应的命名实体词进行标注,得到包含粒度信息的命名实体词识别模型和关键词库。具体地说,使用隐马可夫模型(hidden Markov models,HMM)训练工具训练命名实体词语料以得到HMM模型,同时从该训练语料中抽取得到一个关键词库。这样在分词的过程中,就可以使用关键词库和HMM模型来识别人名、地名和组织机构名这类命名实体词,同时在识别的过程中记录命名实体词的粒度信息。这样在最终输出的时候,就可以根据用户的大、小粒度需求,采用所记录的命名实体词的粒度信息对文本进行中命名实体词进行划分,给出相应粒度的命名实体词。
步骤102:根据用户的大、小粒度需求,用所得的有限状态机、HMM模型和/或关键词库,对汉语文本进行区分,得到相应粒度的区分结果。
本发明实施例的根据模式词粒度标准对字符串进行粒度划分的流程如图2所示,待划分的字符串首先经过步骤201的模式词识别过程,得到模式词,所述模式词为大粒度的区分结果;再经过步骤202的小粒度区分过程,得到小粒度的区分结果;最后根据实际输入的粒度需求进行步骤203的输出处理,得到相应粒度的模式词区分结果。
用于执行步骤201的模式词识别单元的生成过程包括:将包含粒度信息的正则表达式进行粒度点移除和DFA转换,所述模式词识别单元不包含粒度区分信息,用于识别模式词。而用于执行步骤202的小粒度区分单元的生成过程包括:将包含粒度信息的正则表达式进行DFA转换过程,小粒度区分单元包括粒度区分信息,用于将模式词进行小粒度的区分。
以下是一个用于识别英文数字串的正则表达式,该表达式中包含粒度信息,粒度信息用(0x06)字符表示。
%{number}:([0-9]|0|1|2|3|4|5|6|7|8|9)
%{english}:([a-z]|[A-Z]|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|
z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z)
english:({number}{number}*□{english}{english}*)|({english}{english}*□{number}{number}*)|(
{number}{number}*□{english}{english}*□{number}{number}*)|{english}{english}*□{number}
{number}*□{english}{english}*|({english}{english}{english}*)
使用上面的正则表达式,就可以生成一个包含粒度信息的DFA,同时将该正则表达式中的粒度信息移除后,通过DFA转换生成一个不包含粒度信息的DFA。以下是经过粒度信息移除后的正则表达式:(粒度移除即为将正则表达式中的□(0x06)字符去掉)
english:({number}{number}*{english}{english}*)|({english}{english}*{number}{number}*)|(
{number}{number}*{english}{english}*{number}{number}*)|{english}{english}*{number}
{number}*{english}{english}*|({english}{english}{english}*)
通过使用上面两个规则生成的两个DFA,分别为不包含粒度信息的模式词识别单元,以及包含粒度信息的小粒度区分单元,就可以用来对“abc123”这类的字符串识别了,该字符串在大粒度下的输出结果为“abc123”,小粒度下的输出结果为“abc/123”。
本发明实施例的命名实体词的识别类模板如表1所示,
表1
下面,对几种常见的命名实体词的识别过程进行介绍:
1、中文人名:
当实际切分过程中遇到姓的时候,则分别将该单字后面的一个单字和两个单字分别与该姓组合,作为一个候选人名加入到对于人名类的命名实体词的识别类模板中,同时分别计算这两个人名的命名实体词概率,并记录粒度信息,其中姓氏和名字在最后输出时,在小粒度情况下需分开输出,而大粒度情况下,则作为一个整体输出。如“周小川”,在大粒度下的切分结果为“周小川”,而小粒度下的切分结果为“周/小川”;
2、对于外文译名,无论是人名、地名还是组织机构名,作为一个整体输出,无大、小粒度信息;
3、对于中文地名这类命名实体词,通常是“地名开始词+一个或多个修饰语+地名关键词”的形式,当然,也可能没有修饰语或开始词,因此在实际分词过程中,当遇到LK关键词时,则向前回溯,同时生成候选地名,并记录粒度信息。
对中文地名类的命名实体词的识别过程可由图3表示,其中,每一个方格代表一个汉字,具体包括如下步骤:
步骤301:根据关键词库识别到一个地名关键词(LK)时,以该词为起点向前回溯识别,例如图3所示,回溯两个字识别词1(W1)或三个字识别词2(W2)。
步骤302:如果不能继续回溯识别,即再回溯得到的词不属于关键词库中的地名开始词LB或地名非关键词NLK,将W1或W2标为地名开始词(LB),将识别出的“LB+LK”作为最终识别的词LW1或LW2,并且在LB和LK之间设置粒度点。
步骤303:如果还可以继续回溯识别,将识别出的W1或W2标为非地名关键词(NLK),同时以词W1或W2作为起点,继续向前回溯识别,回溯长度为最大词长(max length word,mlw),并将该词标为W1或W2。并在NLK和LK之间设置粒度点。
步骤304:假设回溯得到的词为地名开始词(LB),并在LB和NLK之间也设置粒度点,将识别出“LB+NLK+…+LK”词。
步骤305:由于地名关键词之前的修饰语以及地名开始词的数目不会太多,因此可以对回溯的次数进行相应限制,本发明实施例将回溯次数限制为6次。如果取到第六个最长的前驱词,或者句子第一个词,则停止识别,否则返回步骤303。
通过上述过程,可以得到所有的备选地名词及其小粒度信息。这样输出的时候就可以根据大、小粒度要求,分别以两种格式输出了。如“郑州采育场”,在大粒度下的输出结果为“郑州采育场”,在小粒度下的输出结果为“郑州/采育场”。
4、对于中文组织机构名的识别及其大、小粒度信息,可利用识别地名同样的方法得到。中文组织机构明识别过程和大、小粒度获取过程如图4所示,其中各个缩写词的含义可参照表1。
通过上述过程,可以得到所有的备选组织机构名词及其小粒度信息。这样输出的时候就可以根据大、小粒度要求,分别以两种格式输出了。如“阿根廷联邦法院”在大粒度下的输出结果为“阿根廷联邦法院”,在小粒度下的输出结果为“阿根廷/联邦/法院”。
本发明实施例提出的一种汉语文本大、小粒度切分装置如图5所示,包括:
模式词识别与粒度区分模块510,用于识别汉语文本中的模式词,并对所识别的模式词进行粒度切分,并输出所述模式词作为模式词的大粒度切分结果,输出粒度切分后的模式词作为模式词的小粒度切分结果;
命名实体词识别模块520,用于识别汉语文本中的命名实体词,输出识别出的命名实体词以及所述命名实体词的粒度信息;
输出模块530,用于根据所述模式词识别与粒度区分模块510得到的模式词的大粒度切分结果或小粒度切分结果,以及所述命名实体词识别模块520所得到的命名实体词和所述命名实体词的粒度信息,并根据实际输入的粒度需求,输出根据所述粒度需求所对应的粒度划分的汉语字符串。所述模式词识别与粒度区分模块510可以进一步包括:模式词识别单元511和小粒度区分单元512。
所述模式词识别单元511根据预先制定的模式词识别规则,用确定性的DFA表示该规则,这样在分词过程中,就可以使用该有限状态自动机来识别符合规则的模式词。
小粒度区分单元512根据模式词识别规则,以及相应的粒度信息,用DFA标识带有粒度信息的识别规则,对模式词识别单元511识别出的模式词进行进一步的小粒度区分。模式词的识别规则和粒度信息如前所述,这里不再赘述。其中,模式词识别单元511所识别的模式词作为模式词大粒度区分结果,小粒度区分单元502对模式词进行进一步小粒度区分得到的是模式词的小粒度区分结果。
命名实体词识别模块520,用于识别汉语文本中的命名实体词,输出识别出的命名实体词以及粒度信息。该模块具体包括:
命名实体词识别模型单元521,用于根据标注好粒度信息的语料进行训练,从所述语料中抽取出命名实体词,给每一类命名实体词制定一个识别类模板,用所述识别类模板对相应的命名实体词进行标注,得到一个经过识别类模板标注好的命名实体词训练语料模型。该命名实体词训练语料模型可以为HMM模型。
关键词库单元522,用于从命名实体词训练语料中抽取得到关键词库。
识别单元523,用于根据命名实体词训练语料模型以及关键词库对命名实体词进行识别,并在识别过程中记录命名实体词的粒度信息。识别过程参见图3或图4。
输出模块530,用于根据实际输入的粒度需求,输出根据相应粒度划分的汉语字符串。
本发明实施例提出的大、小粒度分词方案可以提供不同粒度的分词结果,满足各种文本处理过程的不同粒度区分需求,例如用于信息检索系统增加索引项,用于文本分析中增加分析粒度,用于机器翻译和语音识别等领域提高输出结果的精度,或者应用到竞价广告、窄告的用户关键词推荐系统中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 一种大晶体发芽和培养的方法,通常是通过盐溶液的强度来实现的
机译: 一种用于生产螺旋带的大长度螺旋线,一种用于将填充材料引入到头盔中的方法和装置,一种用于将两个网状网格包裹的装置以及一种螺旋带
机译: 一种用于生产螺旋带的大长度螺旋线,一种用于将填充材料引入到头盔中的方法和装置,一种用于将两个网状网格包裹的装置以及一种螺旋带