多粒度分词演示系统设计和实现计算机科学与技术专业.docx
《多粒度分词演示系统设计和实现计算机科学与技术专业.docx》由会员分享,可在线阅读,更多相关《多粒度分词演示系统设计和实现计算机科学与技术专业.docx(32页珍藏版)》请在课桌文档上搜索。
1、摘要.1 Abstract.2 前言.3 第1章绪论.4 1.1 研究背景.4 1.2 分词概述.5 1.3 本文的主要工作.6 第2章基于词典匹配和动态规划树状解码的多粒度分词算法.8 2.1 算法实现.8 2.2 优化.10 2.3 评价.11 第3章基于神经网络分类模型和动态规划序列解码的多粒度分词方法13 3.1 介绍.13 3.2 模型搭建.14 3.3 模型训练.16 3.4 模型结果处理.17 3.5 评价.19 第4章多粒度分词演示系统构建.22 4.1 后端程序.22 4.2 网页前端.23 4.3 效果展示.24 第5章总结与展望.27 5.1 本文总结.27 5.2 后续
2、工作展望.27 致谢.错误!未定义书签。参考文献.29 附录.31 中文分词一直是中文信息处理领域的一项重要技术,它是机器翻译,搜索引擎,文本分类等应用不可或缺的基础部分。中文分词方法也在不断地发展,但是这些方法仅仅聚焦于单粒度分词,即一个句子被分割成唯一的一个词序列。于是,最近有人系统地在数据驱动的机器学习框架下正式提出并解决了中文多粒度分词任务。该毕业设计旨在实现一个多粒度分词演示系统,让用户在浏览器一端输入中文句子,网页能够即时的显示多粒度分词结果。因此本文的工作大体上可以分为两部分。第一部分,实现多粒度分词算法。主要尝试了两种算法,第一种基于词典匹配的动态规划解码算法,第二种基于深度学
3、习的前馈神经网络模型。最后用两者在1500个测试句子上进行评价,比较它们的优劣。第二部分为Web网页的设计,前端选用普通的css+JavaScript+html技术,后端则选用python的Flask框架搭建,通过调用前面设计好的算法实现分词,把结果传到前端,最后再将结果以合适的形式展现出来。关键词:自然语言处理;中文信息处理;中文分词;多粒度分词;Web开发Abstract ChinesewordsegmentationhasalwaysbeenanimportanttechnologyinthefieldofChineseinformationprocessing.Itisanindisp
4、ensablepartofmachinetranslation,searchengine,textclassificationandotherapplications.Chinesewordsegmentationmethodsarealsoconstantlyevolving,butthesemethodsfocusonlyonsingle-grainedsegmentation.Asaresult,ithasrecentlybeensystematicallyproposedandsolvedinthedata-drivenmachinelearningframeworkforChines
5、emulti-grainedwordsegmentationtasks.Thegraduationprojectaimstoimplementamulti-grainedwordsegmentationdemonstrationsystem,allowinguserstoinputChinesesentencesatthebrowser,andthewebpagescaninstantlydisplaymulti-grainedwordsegmentationresults.Therefore,thisworkcanberoughlydividedintotwoparts.Thefirstpa
6、rt,toimplementmulti-grainedwordsegmentationalgorithm.Twoalgorithmsaremainlytried,thefirstonebasedonscoreswhichiscalledCKYdecodingalgorithmandthesecondonebasedondeeplearningusingthefeedforwardneuralnetworkmodel.Finally,thetwowereevaluatedon1500testsentencestocomparetheirmerits.Thesecondpartisthedesig
7、nofawebpage.Thefrontendusestheordinarycss+JavaScript+htmitechnology,andthebackendusestheflaskframeworkofpython.Bycallingthepreviouslydesignedalgorithm,thewordsegmentationisachieved,theresultispassedtothefrontend,andtheresultisfinallyshowninasuitableform.Keywords:Naturallanguageprocessing;Chineseinfo
8、rmationprocessing;Chinesewordsegmentation;multi-grainedwordsegmentation;Webdevelopment和大部分西方语言不同,一个汉语句子中间没有明显的分隔符,它是由连续的字序列构成的。因此对中文进行处理的第一步就是进行自动分词,即将字串转变成词串。自动分词的重要前提是确定词的分界要按什么标准进行划分。中文中具有意义的最小单位是词(含单字词),但是词的定义非常抽象且因人而异。给定某文本,按照不同的标准的分词结果往往不同。词的标准成为分词问题一个很大的难点,没有一种标准是被公认的。作为中文信息处理的第一步,分词已经在过去几十年里
9、被广泛研究并且做出巨大进步。同时分词的方法也在逐渐地改进,从基于词典的最大匹配,到基于语言模型分值和其他数据的路径搜寻分词,到基于字符的序列标记。最近,神经网络模型通过有效的学习字符和文本内容含义也取得了成功。但是大部分这些研究都主要聚焦于单粒度分词,即一个句子被分割成一个单一的词序列。然而由于中文语言的特殊性,人们对于词的定义和分界存在着非常大的歧义。在不同的语料集中,对同一句子的分词结果可能不同,这就给数据标注带来了挑战。同时,在不同的应用中,中文分词的粒度粗细也会影响结果。于是为了解决上述问题,多粒度分词任务被系统地提出。给定一个句子输入,目标是产生不同粒度的所有单词结构本工作主要是实现
10、简单的多粒度分词算法和模型,并且通过Web开发技术调用模型,在网页端能显示出树状的分词结果。本文实现的多粒度方法主要是以下两种。第一种方法把句子看作一棵成分分析树,由各个子成分组成,为每个句子成分(span)赋予一个分值,该分值通过查字典获得。目标就是找到一棵分值最大的树,作为分词的结果。第二种方法是利用深度学习理论搭建一个前馈神经网络,把多粒度分词任务看作序列标注进行学习和训练。再把结果进行规制约束或解码得到一棵最优的树。最后利用Flask框架搭建后端,把分词结果传到前端,前端再利用JavaScript技术显示出结果。第1章绪论 本章首先介绍了中文分词的研究背景和意义,其次引出多粒度分词任务
11、和意义。并概述了本文所做的主要工作和贡献。1.1研究背景 中文信息处理(CIP,ChineseInformationProcessing)是自然语言处理(NLP,NaturalLanguageProcessing)的一个分支领域,目的是让计算机正确的处理中文,甚至能够理解中文。但是和大部分西方语言不同,一个汉语句子中间没有明显的分隔符,它是由连续的字序列构成的。因此对中文进行处理的第一步就是进行自动分词,即将字串转变成词串川。机器翻译(MT,MachineTranslation)搜索引擎、自动校对、语音合成、自动摘要、自动分类等许多应用,都需要用到分词。自动分词的重要前提是以词的分界要按什么标
12、准进行划分。中文中具有意义的最小单位是词(含单字词),但是词的定义非常抽象且因人而异。中文不像英文和法文那些“隔离”的语言,而是属于“多合成”的类型。它的复合词是从土生土长的词素中产生的。词素和复合词之间的模糊界限导致了对于词的概念的认知分歧。研究表明,中国母语人共识比例在没有经过共同指导培训的情况下仅为76%。给定某文本,按照不同的标准的分词结果往往不同。词的标准成为分词问题一个很大的难点,没有一种标准是被公认的。中文分词的另一个难点在于消除歧义,分词歧义主要包括如下几个方面:(1)交集歧义,例如:研究/生命/的/起源 研究生/命/的/起源(2)组合歧义,例如:他/从/马/上/下来 他/从/
13、马上/下来(3)未登录词,例如:蔡英文/和/特朗普/通话 蔡英文/和/特朗/普通话 最后,词的颗粒度选择问题也是分词的一个难题。对于“苏州大学”这个短语,可以认为这是一个整体,表示苏州的一所大学。但也可以认为是“苏州”和“大学”两个词构成的短语。在不同的应用中,分词粒度的粗细很有可能影响结果。比如在机器翻译中,一般来讲颗粒度大翻译效果好。比如“联想公司”作为一个整体时,很容易找到它对应的英文翻译LenOV0,如果分词时将它们切开,可能翻译失败。然而,而在网页搜索中,小的颗粒度比大的颗粒度好。比如“苏州大学”如果作为一个词,当用户搜索“苏州”时,很可能就找不到苏州大学的相关内容。1.2 分词概述
14、 传统的分词方法有许多。基于词典的最大匹配,基于语言模型分值和其他数据的路径搜寻分词,基于统计的语言模型,基于字符的序列标记等等。基于词典的分词方法又被称为机械分词方法,它根据一定的规则把句子中的各个切分字符串与分词词典中的词进行比对,如果在词典中找到切分的字符串则说明匹配成功,将该字符串作为一个词切分出来。基于词典的分词方法有正逆向最大匹配最长匹配和最短匹配等等。机械分词方法实现比较简单,但由于要不断遍历词典,而且词典可能很多,其效率和准确性容易受词典的结构和容量影响。基于字符的序列标注的基本思想是根据每个词中每个字的位置,对每个字打上指定标签中的一个,从而达到分词的效果。有人还提出通过在统
15、计中文分词模型中融入词典相关特征的方法,使得统计中文分词模型和词典有机结合起来。一方面可以进一步提高中文分词的准确率,另一方面大大改善了中文分词的领域自适应性。最近,随着深度学习的普及,运用神经网络模型成为了中文分词的重要方法。神经网络模型通过有效的学习字符和文本内容含义已经取得了很多成功 助。随着从最简单的前馈神经网络到循环神经网络再到现在的长短时记忆网络,分词的方法和准确率在不断提升。然而之前的分词方法都仅仅聚焦于单粒度分词(SWS,Single-grainedWordSegmentation)0即一个句子被分割成一个单一的词序列。但是单粒度分词存在一些问题,例如分词的标准每个人都或多或少
16、有差别,导致标注数据有很多差别。粗粒度分词和细粒度分词在不同应用中的需求不一样,有可能是互补的。为了解决单粒度分词的许多问题,多粒度分词(MWS,Multi-grainedWordSegmentation)问题被系统地提出,给定一个句子输入,目标是产生不同粒度的所有单词的层次结构【,就像下一页的图1.1中表示的一样。图 11:MWS 的结果示例 1.3 本文的主要工作 本文以多粒度分词方法为研究对象,实现了两种多粒度分词基准方法,对比两者的各种优缺点。在实现方法的基础上,利用Web开发技术,搭建一个网页端的演示系统,用户可以输入文本即时地产生分词结果。本文使用的多粒度分词数据是从三个单粒度分词
17、语料库MicrosoftResearchCorpus(MSR),北京大学人民日报语料库(PPD)和PennChineSeTreebank(CTB)中得到的。这些语料库分词的规范和粒度不同,因此可以用来产生多粒度分词数据。具体做法是选择任意两个不同的语料库,利用耦合模型把两个标注规范相互转化,从而得到具有多个标注规范的数据L图Ll显示了该转化过程。因此,用三个耦合模型可以得到三个伪MWS训练集,三个伪MWS开发集和三个伪MWS测试集。I I I I I /N 全国各也 S A A Z 开发集合并在一起作为一个整体,而测试集则是从三个伪测试集中各挑选500个句子,重新进行人工标注得到真实的MWS数
18、据。表1.1记录了1500个句子在人工标注前后的粒度变化。表1.2记录了各个数据集的信息。词典文件则是从三个训练集中统计得到。于是本文的具体工作可以分为如下几点:(1)使用两种方法实现多粒度分词,一种是基于词典匹配的动态规划解码算法,另一种则是运用了人工神经网络模型,把多粒度分词看成是序列标注任务。(2)分别用这两种方法在测试集上评价,比较两种的优劣。(3)利用Web开发技术实现一个网页端的演示系统,用来展示多粒度分词结果。备注 单词数 粒度分布 I1 2 3 人工标注前 44593 74.5%24.0%1.5%人工标注后 45279 71.6%26.8%1.6%表 1.1:测试集标注前后变化
19、 数据集 句子数 单词数 CTB-train 15,894 473,348 MSR-train 76,336 2,428,727 PPD-train 46,398 1,225,386 All-dev 5,777 175,271 test 1,500 45,279 表 1.2:各个数据集的信息 I形式上,如果有另外两个单词Sl和s2满足任何一个单词,我们称它为三粒度单词,条件:1)s2siws(如图I中的“全国各地”);2)s2ssl(如全国”);3)sss2(如“全”),其中表示子串。二粒度的定义是类比的;否则是单粒度的。第2章基于词典匹配和动态规划树状解码的多粒度分词算法 本章主要用一种简单
20、方法实现多粒度分词,即基于词典匹配的动态规划解码算法,以下都简称为CKY(Cocke-Younger-Kasamialgorithm,可以叫做CYK或CKY算法)解码算法,并且提出几种优化方案。2.1算法实现 假设一个句子由一个字符序列构成S=ClC2Cn,nIo定义句子中的所有可能成分为SPm=GG+1卬其中liru很容易得到每个长度为九的句子共有九+n-1+n2+1=(n+1)Xn/2个SPcm。每个span对应四个可能 的标签和分值,分别是null,W,WX,S null是空标签,用来处理二叉化问题,会在后面的结果中删除;W表示一个词;WX表示W和X两个标签,X表示句子中粒度极大词,不能
21、与旁边的词组合;S表示整个句子。如图1.1所示,C标签代表一个字符,可以忽略。如果某个span在词典中出现,则其W和WX的分值为1,null的分值为.100OOo整个句子的S分值为10000,其余分值全为0。以“我是中国人”为例,表2.1列出了所有SPan对应的分值。表 2.1:“我是中国 人”所有 span 对应的所彳 label.score Xspanscorex 我 是 中 国 人 我是 是中 中国 国人 null-IO4-IO4-IO4-IO4-IO4 0 0-IO4-IO4.W 1 1 1 1 1 0 0 1 1.WX 1 1 1 1 1 0 0 1 1.S 0 0 0 0 0 0
22、0 0 0.做好如下准备工作后,我们的目标就是找到一棵分值最大的树。一个句子的分词结果可以看成由各个SPaTl组成的树,树的分值就是左右子树分值加上根节点分值之和,定义如下:accum-scoreCiCi+1.Cj)=accum-score(CiC+1Q)+accum_score(Ck+1Ck+2.Q)+score(CiCi+1.Cj)其中 SCore(GG+1.Q)=max(label_socre(CiCi+1.G),=argmax(accum_score(CiCi+1Ck)+accum-score(Ck+1Ck+2.Cj)k就 是 对 应 每 个SPm要 求 的 最 佳 分 割 点。特 别
23、 的 对 于 长 度 为1的spa*accum_score(Ci)=score(Ci),k=-Io要求Tna%(acciun_SCOre(Ciei+.Cj)和所 有的k就要用到动态规划的思想,所谓动态规划就是把最优解问题划分为一个个子问题,求每个子问题的最优解,这些最优解又被下一步的问题所利用,最终得到原问题的最优解。有了上面的公式,我们从长度为1的SPm开始,可以求得长度为2的SPan的最佳分割点和总的分值,在依次求得长度为3、4,直到求得长度为几也就是整个句子的最佳分割点。伪代码见算法1。算法 1:CKY 算法核心部分 1:forlengthinrange(1,n)2:forstartin
24、range(O,n-length)3:本次计算的 span 长度为 length,起始点为 start 4:1)找到分值最大的分割点 5:2)存储最大分值和对应分割点,供后面的 SPan 计算分值 6:endfor 7:endfor 而要生成树,就从长度最长的SP即即句子开始回溯,根据最佳分割点k把整个句子分成左右两个SPQ九,同样的找到这两个SPQ九的最佳分割点,继续分割,直到SPan的长度为1,这样就生成了一棵二叉树。把树中的每个节点替换成对应SPm的最佳IabeL再把null标签删除就得到了类似第4页中图1.1的树状结果。算法的转化过程见上一页的图2.1。利用Python语言的灵活性,本
25、文用其自带的IiSt类来存储一棵树,例如“我是中国人”的分词结果可能为:S,WX,我,WX,是,WX,W,中,国,W,人一个列表代表了一棵子树,列表的第一个元素代表根节点,不断的嵌套形成树的层次结构。其中每个中文前面默认有一个tiCff标签,代表一个字符。“WX”理解为两个标签。2.2 优化 这种方法和基于词典的机械分词方法有些类似。其效率和准确性容易受词典容量的约束。另外词典的结构还直接影响词典的查询速度。如果词典采用线性表结构存储,而且长度很大,那么对于长度为TI的句子要遍历 5+1)X几/2遍,那将浪费大量时间。除了效率外,我们发现CKY算法的准确率P值非常低,原因在于词典中存在大量单字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 粒度 分词 演示 系统 设计 实现 计算机科学 技术 专业

链接地址:https://www.desk33.com/p-1260034.html