一种基于循环神经网络的中文人名识别方法
【专利摘要】本发明提供了一种基于循环神经网络的中文人名识别方法,本发明包括:S1、语料预处理;S2、词向量训练,利用word2vec工具进行词向量训练;S3、中文人名识别模型训练,利用S1处理后得到的数据以及S2训练得到的词向量对神经网络模型进行训练。S4、人名识别以及后处理,利用S3训练得到的模型在测试语料上进行人名识别,并利用上下文规则,扩散算法对模型识别出来的人名进行后处理,最后得到人名。利用本发明能有效的降低在中文人名识别时特征选取的复杂性,通过词向量充分利用中文文本中蕴含的丰富的句法和语法信息,从而增加模型的泛化能力,并且同时识别了日本人名和外国音译人名,扩大了中文人名识别的广度。
【专利说明】
一种基于循环神经网络的中文人名识别方法
技术领域
[0001] 本发明涉及自然语言处理、深度学习以及命名实体识别等领域,尤其是一种适用 于中文文本中的中国人名、日本人民和外国音译人名的识别方法。
【背景技术】
[0002] 随着互联网技术的快速发展,新信息急剧膨胀,从海量数据中提取出有用信息的 需求愈加迫切。如何从大规模的,非结构化的语言文本中快速有效的获得有用的信息和知 识已经成为自然语言处理领域的研究热点。而中文信息与英文等语言相比,汉语缺少分隔 标记,为命名实体识别增加了难度。但是命名实体识别在信息抽取、机器翻译和文本分类等 领域有重要影响。而命名实体识别任务中由于人名的随意性使得人名识别是最为困难的任 务,此外,中文人名在未登录词中占有较大的比重,因此,解决中文人名识别能够有效的提 高未登录词的识别的效果,从而显著地提高信息抽取、机器翻译等系统的性能。
[0003] 目前,中文人名识别的方法中比较成熟的方法主要有两种:基于统计的方法和基 于机器学习的方法。
[0004] 基于规则的方法需要对语料进行分析,并根据人名的特点人工构造规则,然后通 过定义好的规则对语料进行匹配,匹配到的结果即被认为是人名。此种方法无需标注语料 且实现比较简单,合理和全面的规则集可以在实验中取得很好的识别效果,但我们不可能 穷举出所有的规则,因此人工构造的规则集一般仅适合当前语料,移植性较差,缺乏泛化能 力。
[0005] 基于机器学习的方法主要将人名识别问题转化为序列标注问题或者分类问题,通 过对训练语料的学习构建模型,然后使用训练好的模型对测试文件进行人名识别,该方法 性能的好坏主要在于特征的选取,好的特征可以提高系统的性能。因此该方法在特征的选 取上会耗费大量的时间。此外特征需要人工手动选取,人工干预过多,特征选取的不好将会 导致特征稀疏等问题,影响系统的性能。
[0006] 因此如何减少人工干预,降低特征选取的复杂性,提高系统的泛化能力成为当前 中文人名识别亟待解决的问题。此外,目前中文人名识别系统主要针对中国人名进行识别, 而对于日本人名、外国音译人名以及少数民族音译人名涉及较少,对于中文人名识别的广 度急需提高。
【发明内容】
[0007] 鉴于上述问题,本发明目的是提供一种基于循环神经网络的中文人名识别方法。 该方法利用大规模的中文文本训练词向量,并仅使用蕴含丰富语义信息的词向量作为循环 神经网络模型训练特征,避免人工干预,有效的降低了特征选取的复杂性。此外该方法在有 限训练语料的前提下可以通过扩充词向量的训练文本丰富词向量信息,从而增加模型的泛 化能力。此外,该方法添加了对日本人名、外国音译人名以及少数民族音译人名的识别功 能,扩大了中文人名识别的广度。
[0008] 本发明的技术方案:
[0009] -种基于循环神经网络的中文人名识别方法,步骤如下:
[0010] 步骤1:对训练语料进行预处理:
[0011] 步骤(a):利用中文分词工具对训练语料进行分词,并建立词词典;词词典中为每 一个词分配序号,序号从1号开始编号,〇号保留用来表示没有出现在词词典中的词;
[0012] 步骤(b):先利用步骤(a)中的词词典对分词后的训练语料进行数字化处理,将结 果保存到数字化文本中;再为每一个词分配分类标签,将结果保存到分类标签文本中;
[0013] 步骤2:词向量训练:先利用中文分词工具对大规模中文文本进行分词,再使用 W〇rd2vec对分词后的大规模中文文本进行训练得到词向量文件,并根据步骤1中得到的词 词典对词向量文件进行筛选,仅保留分词词典中存在词的词向量,并存入词向量矩阵文本 中。在循环神经网络模型中,使用词向量表示词,而词向量是可以事先通过大规模的中文文 本训练得到,同时词向量中还会包含大规模中文文本中的句法、语义等丰富的信息。因此本 文使用大规模中文文本训练得到的词向量去替换神经网络模型中的初始词向量,通过此操 作,神经网络模型在初始阶段,词向量就已经包含了丰富的信息,模型在已知丰富信息的前 提下,接收训练语料进行模型的训练可以大大的提高系统的性能。
[0014] 步骤3:中文人名识别模型训练;将步骤1生成的数字化文本、分类标签文本以及步 骤2生成的词向量矩阵文本作为循环神经网络模型的输入,进行中文人名识别模型的训练。
[0015] 步骤a):首先根据循环神经网络模型的窗口参数win的大小,将当前词t的前win/2 和后win/2个词所对应的词向量进行首尾相接,组合成新的词向量表示当前词,记为w( t); [0016] 步骤b):将待处理的句子按照mini-batch原则进行分块。
[0017] 步骤c):使用循环神经网络模型对步骤b)中的每一个块进行训练;将步骤a)中得 到的词向量w(t)和前一步隐藏层的输出作为当前层的输入,通过激活函数变换得到隐藏 层,如公式所示:
[0018] s(t) = f (w(t)u+s(t-l)w)
[0019] 式中,f为神经单元节点的激活函数,w(t)表示当前词t的词向量,s(t-l)表示前一 步隐藏层的输出,w和u分别表示前一步隐藏层与当前隐藏层的权重矩阵和输入层与当前隐 藏层的权重矩阵,s(t)表示当前步隐藏层的输出。
[0020] 然后,利用隐藏层输出得到输出层的值,如公式所示:
[0021] y(t)=g(s(t)v)
[0022]式中,g为softmax激活函数,v表示当前隐藏层与输出层的权重矩阵,y(t)为当前 词t的预测值。
[0023]步骤d):对步骤c)中获得的预测值y(t)与真实值进行比较,若两者的差值高于某 一设定阈值时,就会通过逆向反馈神经网络对各层之间的权重矩阵进行调整。
[0024]步骤e):循环神经网络模型中学习率自调整,在训练过程中,模型经过每次迭代之 后都会对开发集进行结果测试,如果在设定的迭代次数内都未在开发集上获得更好的效 果,则对学习率进行减半,进行下一次迭代操作。至学习率低于所设阈值停止训练,模型达 到收敛状态。
[0025] 步骤4:人名识别及后处理:
[0026]步骤a:使用中文分词工具对测试语料进行分词,并使用步骤1中得到的词词典对 分词后的测试语料进行数字化操作,得到数字化文本。
[0027] 步骤b:利用步骤3训练得到中文人名识别模型,对步骤a得到的数字化文本进行测 试,并将识别的中文人名作为候选人名。
[0028] 步骤c:使用上下文规则筛选候选人名,过滤不符合规则的人名
[0029]步骤d:使用基于篇章的全局扩散算法召回已经识别出而在上下文信息不足或者 上下文信息过拟合的位置中未被识别的人名。
[0030]步骤e:使用基于篇章的局部扩散算法召回有名无姓、有姓无名的人名,将经过筛 选后的人名定为最终人名。
[0031]本发明的有益效果:本发明能有效的降低在中文人名识别时特征选取的复杂性, 充分利用大规模中文文本中蕴含的丰富的句法和语法信息,从而增加模型的泛化能力,在 识别中国人名的同时,还对日本人名和外国音译人名进行了识别,扩大了中文人名识别的 广度。
【附图说明】
[0032] 图1为本发明语料预处理、词向量训练以及中文人名识别模型训练流程图。
[0033] 图2为本发明人名识别及其后处理流程图。
[0034]图3为本发明实验效果图。
【具体实施方式】
[0035]以下结合附图和技术方案,进一步说明本发明的【具体实施方式】。
[0036]图1显示了中文人名识别模型的预处理、词向量训练以及中文人名识别模型训练 流程。
[0037]图2表示了后处理的流程,下面综合图1对本发明加以详细说明。
[0038]下面以1998年《人民日报》作为数据集,用一个具体实例对本发明加以详细说明。 [0039] 步骤1、对1998年《人民日报》数据预处理:具体子步骤如下:
[0040] 利用分词工具nihao分词对语料进行分词处理,得到词词典。然后利用词词典对分 词后的每一个词进行数字化处理并分配分类标签,最终每一个词都有一个数字编号和一个 分类标签。(以句子"清朝著名学者郭嵩焘曾说"为例):
[0041]
[0042]
[0043] 步骤2:word2vec词向量训练:使用分词工具nihao分词对2000年《人民日报》语料 进行分词,并利用w〇rd2vec工具对分词后的语料进行词向量训练,获得每一个词的上下文 信息表示,比如上例中姓氏"郭"的词向量表示为〈0.229802-0.477945-0.478067 1.801231 1.433267 0.143571-0.641199 1.334321…〉。结合步骤1中得到的词词典对词向量进行过 滤,将结果存入词向量矩阵文本中。
[0044] 在词向量的训练过程中,我们采用CB0W模型进行训练,滑动窗口大小为5,词向量 维度为1〇〇。
[0045] 步骤3:模型训练及参数选择:我们采用循环神经网络(RNN)作为模型。中文人名识 别中需要识别的类型有中国姓氏,中国名字,日本姓氏,日本名字和音译人名五种,加上一 个负类,所以我们模型的预测类别为6类,经过多次实验,我们选择9层神经网络模型,输入 层有500维(滑动窗口 5,词向量100维),隐藏层节点个数为100,预测类别为6。我们利用反向 传播以及梯度下降算法,借助于《人民日报》训练集中的标注数据训练该模型,并在训练的 过程中对学习率和词向量进行自学习调整。
[0046] 关于模型超参数选择如下表所示:
[0048] 步骤4:人名识别及后处理:首先,对测试语料进行分词,并使用步骤1得到的词词 典进行数字化操作,然后利用步骤3训练得到中文人名识别模型,在数字化之后的测试语料 上进行测试,将中文人名识别模型识别出的人名作为候选。然后,利用上下文规则筛选候选 人名,过滤不符合规则的人名。最后,利用基于篇章的全局扩散算法召回已经识别出而在上 下文信息不足或者上下文信息过拟合的位置中未识别的人名,并且利用基于篇章的局部扩 散算法召回有名无姓、有姓无名的人名,最终确定人名。
【主权项】
1. 一种基于循环神经网络的中文人名识别方法,其特征在于,步骤如下: 步骤1:对训练语料进行预处理: 步骤(a):利用中文分词工具对训练语料进行分词,并建立词词典;在词词典中为每一 个词分配序号,序号从1号开始编号,〇号保留用来表示没有出现在词词典中的词; 步骤(b):先利用步骤(a)中的词词典对分词后的训练语料进行数字化处理,将结果保 存到数字化文本中;再为每一个词分配分类标签,将结果保存到分类标签文本中; 步骤2:词向量训练:先利用中文分词工具对大规模中文文本进行分词,再使用 W〇rd2vec对分词后的大规模中文文本进行训练得到词向量文件,并根据步骤1中得到的词 词典对词向量文件进行筛选,仅保留分词词典中存在词的词向量,并存入词向量矩阵文本 中; 步骤3:中文人名识别模型训练:将步骤1生成的数字化文本、分类标签文本以及步骤2 生成的词向量矩阵文本作为循环神经网络模型的输入,进行中文人名识别模型的训练; 步骤a):根据循环神经网络模型的窗口参数win的大小,将当前词t的前win/2和后win/ 2个词所对应的词向量进行首尾相接,组合成新的词向量表示当前词,记为w( t); 步骤b):将待处理的句子按照mini-batch原则进行分块; 步骤c):使用循环神经网络模型对步骤b)中的每一个块进行训练;将步骤a)中得到的 词向量w(t)和前一步隐藏层的输出作为当前层的输入,通过激活函数变换得到隐藏层,如 公式所示: s(t) = f (w(t)u+s(t-l )w) 式中,f为神经单元节点的激活函数,W(t)表示当前词t的词向量,S(t-l)表示前一步隐 藏层的输出,w和u分别表示前一步隐藏层与当前隐藏层的权重矩阵和输入层与当前隐藏层 的权重矩阵,s(t)表示当前步隐藏层的输出; 再利用隐藏层输出得到输出层的值,如公式所示: y(t) = g(s(t)v) 式中,g为sof tmax激活函数,v表示当前隐藏层与输出层的权重矩阵,y (t)为当前词t的 预测值; 步骤d):对步骤c)中获得的预测值y(t)与真实值进行比较,若两者的差值高于某一设 定阈值时,通过逆向反馈神经网络对各层之间的权重矩阵进行调整; 步骤e):循环神经网络模型中学习率自调整,在训练过程中,循环神经网络模型经过每 次迭代后,对开发集进行结果测试,如果在设定的迭代次数内都未在开发集上获得更好的 效果,则对学习率进行减半,进行下一次迭代操作;至学习率低于所设阈值停止训练,循环 神经网络模型达到收敛状态; 步骤4:人名识别及后处理: 步骤a:使用中文分词工具对测试语料进行分词,并使用步骤1中得到的词词典对分词 后的测试语料进行数字化操作,得到数字化文本; 步骤b:利用步骤3训练得到中文人名识别模型,对步骤a得到的数字化文本进行测试, 并将识别的中文人名作为候选人名; 步骤c:使用上下文规则筛选候选人名,过滤不符合规则的人名; 步骤d:使用基于篇章的全局扩散算法召回已经识别出而在上下文信息不足或者上下 文信息过拟合的位置中未被识别的人名; 步骤e:使用基于篇章的局部扩散算法召回有名无姓、有姓无名的人名,将经过筛选后 的人名定为最终人名。
【文档编号】G06N3/02GK105868184SQ201610308475
【公开日】2016年8月17日
【申请日】2016年5月10日
【发明人】黄德根, 徐新峰
【申请人】大连理工大学