中英文分词系统设计.docx
中英文分词系统摘要自然语言处理是人工智能领域的一个重要分支,主要研究如何利用计算机来理解和生 成自然语言,文本分词是自然语言处理的一个重要阶段,是将连续的字序列按照一定的规 范重新组合成词序列的过程。而分词技术是信息处理的基础环节,分词的主要任务就是通 过计算机自动完成对中英文句子的切分。依靠专门的算法,识别出独立的词,并在词与词 之间用分隔符分割开。本毕业设计主要介绍分词的开展现状、分词算法、系统功能和实现流程,进而实现一 个中英文分词原型系统,能够对汉语和英语两种语言同时存在的文本进行分词,对于中文 文本,采用机械分词方法中的正向最大匹配方法,假设在词典中找到某个字符串,那么匹配成 功。假设存在多个词条与待分析汉字串匹配,那么选取最长的字符串;对于英文文本,利用单 词之间的空格和其它的分隔符将英文文本分成单词序列。关键词:分词算法 最大匹配方法词典基本思想:逆向最大匹配算法与正向最大匹配算法思想是类似的,只是匹配的方向有 所区别,逆向的是从右到左,减词方向是从左到右。该算法比正向最大匹配算法的精确度 要高一些。算法流程:第一步:获取待分词文本和最大单词长度,设P为待分析文本,初始值为用户输入的 句子,Q、A分别为分词结果和候选子串,初始值都为空;第二步:假设P不为空,从P右边取出候选子串A;假设P为空,直接输出Q作为分词结 果;第三步:查词典,假设A在词典中,将A加入到Q中,并将A从P中去掉,重新执行 上一步;假设A不在词典中,将A的最左边一个字去掉,转第三步,直到分词结束为止。(3)设立切分标志算法基本思想:切分标志分为自然切分和非自然切分标志,自然切分标志是指文章中出现 的非文字符号,如标点符号、空格等;非自然标志是利用词缀和不构成词的词,它单独存 在却是个词,在词典中无法找到;切分标志法主要作为一种预处理的方法口叫设立切分标志首先收集大量的切分标志,分词时先找出切分标志,把句子切分成一些 较短的字段,再利用机械类的算法或者其他的算法进行进一步的切分,进而到达分成词的 效果。总结:正向最大匹配和逆向最大匹配是最基本的核心算法。其他的改进算法一般都是 在这两种算法的基础上从词典的个数、组织结构和种类等方面对词典进行重构而得到的。2. 4. 2基于理解的分词方法基于理解的分词方法又名基于人工智能的分词方法,该分词方法处理方法是利用句法 和语义信息的分析来进行分词。它由三个局部组成:分词子系统、句法语义子系统和总控 局部。总控局部可以协调分词子系统获得有关词、句子等的句法和语义信息,让计算机模 拟了人对句子的理解过程,这种分词方法需要用到大量的语言知识和信息、。目前基于理解 的分词方法主要有专家系统分词法和神经网络分词法等,由于汉语语言知识的笼统、复杂 性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还 处在试验阶段口久通常基于理解的分词方法有:(1)专家系统分词算法。为了使知识库的维护与推理机的实现互不干扰,并且让知识库易于维护和管理,可以 从专家系统角度把分词的知识从实现分词的过程的推理机中独立出来来实现,。专家系统 分词算法还具有发现多种歧义字段的能力和一定的自学功能。专家分词方法将分词所需要的语法,语义以及句法知识从系统的结构和功能上别离出来。它主要是从模拟人脑功能出发,构造推理过程,将分词过程看作是知识推理过程,将 知识的表示,知识库的逻辑结构与维护作为首要考虑的问题,知识库是专家系统具有智能 的关键性部件“支(2)神经网络分词法该方法是模拟人脑并行,分布处理和建立数值计算模型工作的。它将分词知识所分散 隐式的方法存入神经网络内部,最后给出神经网络自动分词结果。(3)神经网络专家系统集成式分词法。该方法可以比拟充分发挥神经网络与专家系统二者优势,首先启动神经网络进行分 词,当神经网络对新出现的词不能给出准确切分是,便激活专家系统进行分析判断,依据 知识库进行推理,得到初步分析,并开始启动学习机制对网络进行训练,进一步提高分词 效率。2. 4. 3基于统计的分词方法该方法又称为无字典分词,所应用的主要的统计模型有:N元文法模型、隐Marker 型和最大幅模型等“6】。在实际应用中一般是将其与基于词典的分词方法结合起来。既发挥 匹配分词切分速度快、效率高的特点,Y - N用了无词典分词结合上下文识别生词、自动 消除歧义的优点。词是比拟稳定的字的组合,在文本文档中,如果相邻的字出现的次数越多,那么它构 成一个词的概率就很大,因此字符与字符相邻共现的频率能够较好的反映成词的概率。所 以可以对语料中相邻共现的各个字符的组合的频度进行统计,计算它们的出现频率。该方 法对于大的语料,分全率还可以,但是对于小的语料分全率就比拟低口叫5分词算法优缺点比拟(1)基于字符串匹配的分词方法优点:简单、方便容易实现缺点:由于机械类的分词方法无法避开自然语言表达的方式丰富多彩,新的词汇不断 出现和汉语语句结构的复杂性,这使得机械分词方法面临着很多问题:一词多义问题、歧 义问题和未登录词识别的问题,这些问题直接影响了分词的精确度。(2)基于理解的分词方法优点:比上一种方法更加准备,是模拟人对句子的理解过程来分词;缺点:实现起来难,由于语言知识的笼统、复杂性,难以将各种语言信息组织成计算 机可直接读取的形式,因此基于理解的分词系统目前还没有实现。(3)基于统计的分词方法优点:没有待处理文本领域的限制;不需要加载词典;能够有效地自动排除歧义,能够识别很好的识别未登录词。缺点:需要大量的实验数据,用以建立统计模型的参数;计算量、统计量大;分词结 果受实验数据影响,精度较低;经常切分出一些共现频度高,但并不是词的常用字组。第3章中英文分词系统3.1 系统总体设计及功能简述系统总体设计中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独 的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。英文分词那么是 基于规那么的分词方法,按照英文中的空格进行英文单词的序列的切割;中英文分词系统实 现了一个中英文分词原型系统,能够对汉语和英语两种语言同时存在的文本进行分词,研 究中英文分词的现状和关键技术,分别实现基于最大匹配和基于规那么的中英文分词算法。 本系统采用机械类的最大匹配算法,用正向最大匹配算法、逆向最大匹配算法和双向最大 匹配算法实现了分词的功能。系统功能流程图如图3-1所示: 待处理文本机械类的分词方法分词结果图3-1系统功能流程图3. 1.2系统功能简述用户可以有两种方式输入待分词文本,一种是手动输入,一种是直接翻开文本文档; 当在界面输入待分词文本时,系统首先加载分词字典,然后调用分词方法遍历待处理中文 文本和分词词典,直到分词完毕。3. 2系统详细设计 3. 2. 1界面设计(1)界面功能描述该系统需要把用户所提供的待处理中文文本读入到系统中,同时也要支持用户自己输 入,然后由用用户选择分词的算法,最后系统把分词后结果输出到界面显示给用户,用户 可以把结果保存到计算机。因此系统应该有一个界面,里面包含一些按钮和文本框供用户 输入和选择。当点击翻开按钮时,弹出对话框,用户选择包含待处理文本的文件,系统读取文本 并显示在系统界面上。截图如下:查看:口 Documents回同 |蹴二正向 逆向 双向 分同分同结果:口口 口口eBooksTencent FilesUntitled.uml文件名:文件类型:斫有文件翻开 取消国翻开囹中英文分词系统(=)回文件系统说明翻开同典待分同文本:图3-2界面截图当点击正向最大匹配按钮时,系统使用正向最大匹配算法。10当点击逆向最大匹配按钮时,系统使用逆向最大匹配算法。当点击双向最大匹配按钮时,系统使用双向最大匹配算法。当点击分词算法时,系统读取文本框一里内容,使用用户选择的算法(默认是正向 最大匹配算法)进行分词,并把结果输出到分词结果文本框中。当点击保存按钮时,弹出对话框,用户选择保存路径和输入文件全名,系统读取分 词结果并保存。可以翻开词典对词典进行查看、添加、删除词的操作。截图如下:国 中英文分词系统I尸回一系统说明翻开同典待分同文本:_ I 1r .词典记事本 口 回"""至文件(F)编重(E)格式(O)亘看(V)帮助(H)正向 逆向 双向 分同分同结果:1 8 o 1 3Tr- 5 9 1X LO CO t-1 - X 1X CO 1X 1x 1x 1x 1x 里格松比瓦 户 贝贝克尔俄科 儿挨 正及里打余骂门着 阿霍埃埃埃埃埃埃哎7 1 8 41X 1X OJ 1X图3-3词典操作(2)实现界面设计的主要组件:界面采用SWING组件来实现,通过给每个组件添加事件监听器来实现其相对应的功能。 界面具有一个菜单栏,两个JTextArea (分别为areal和area2 );通过将一组按钮 JRadioButton (分别为btnl> btn2、btn3)添加到ButtonGroup中,使其成为单项选择按钮; 最后界面还有一个触发系统分词的普通按钮JButtono菜单栏包括翻开文件、保存文件、系统说明和翻开词典;IIareal和area2分别用来显示待分词文本和分词结果;btnl> btn2、btn3三个按钮分别代表正向、逆向和双向分词方法。3. 2. 2词典的加载(1)词典的加载方法基于字符串匹配的分词方法的正确率很大一局部依赖于词典,本系统的词典是以文本 文档的形式保存在JAVA工程根目录下,词典结构是无序排列,文本每行保存一个词语, 后面保存该词语的使用频度。词与词之间以换行符分割,局部词典内容如下:(数字为该 词的使用频度)挨打 3挨个儿1挨骂1挨门挨户1在词典中词的长度没有限制,词的长度即为词的字节数,用户可以自己添加汉语词汇 也可以自己删除词汇,使用HashMap保存词典。HashMap是Java中一种常用的容器,它按 照KEY-VALUE形式来保存数据的映射,使用起来非常简单,同时HashMap提供了许多方法 来操作它。例如使用put (key, value)方法可以方便的将数据保存在HashMap中,使用 get (key)方法可以快速的获取HashMap中与key相对应的值,如果没有相应的key那么返回 NULLo本系统使用HashMap来保存词典主要是因为其取元素的高效率,响应时间短。 加载词典的算法如下:import java.io.BufferedReader;import java.io.FileReader;import java.util.HashMap;public class LoadDic /key:字典中的词value:词的长度public static HashMap<String, Integer> Dictionary 二 new HashMap<String, Integer>();词典中所有词中最长的词的长度public static int MaxLength = 0;public static void loadDictionaryO throws Exception BufferedReader br = new BufferedReader(new FileReader(nSDIC.txtH);String strLine = "”;String word12 int length = 0;while (null != (strLine = br.readLine()(for(int i = 0; i < strLine.length(); i+)if(strLine.charAt(i) = * ')word = strLine.substring(O, i);截取空格前的单词)length = word.length();if(MaxLength < length) MaxLength = length;)Dictionary.put(word, length);)br.close();) )3算法的详述最大匹配算法主要包括正向最大匹配算法、逆向最大匹配算法、双向匹配算法。其 主要原理都是切分出词典中最长的字符串,然后与词典中的词进行匹配,如果匹配成功就 是一个词,并把该词记录下来,否那么通过减少一个字,继续匹配,直到整个文本文档只 剩下一个字那么终止。3.3. 1正向最大匹配算法算法思想:本论文系统用的分词词典最长词条为10个字,分词词典用的不一样最长 词条长度不同,在这里我们将分词词典中的最长词条是a个字,那么取被处理文本当前字符 串序列中的前a个字作为匹配字段,查找词典,假设词典中存在这样的一个i字词,那么匹配 成功,匹配字段被作为一个词切分出来;如果在词典中找不到这样一个i字词,那么匹配失 败,匹配字段去掉最后一个字,剩下的字段重新进行匹配,如此进行下去,直到匹配成功, 也就是完成一轮匹配,切分出一个词为止。依次循环,直到全局部词结束。算法详细设计流程如图3-4所示:13流程图的局部注解:int maxLength = LoadDic. MaxLength;/获得所有词中最长的长度int lastindex = 0;上一次分词最后得到的下标int nowindex = 0;/分词,现在的下标分词得到的临时字符串String tempWord = waitDicisionWord. substring(lastindex, nowindex);机械匹配算法简洁易于实现,其中的代表算法最大匹配算法表达了长词优先的原那么, 它的实际应用比拟广泛,机械匹配算法实现比拟简单,但其局限也是很明显的效率和准确 性受到词典容量的约束,机械匹配算法采用简单机械的分词策略,不涉及语法和语义知识, 这一点使机械类的算法实现起来比拟简单,所以对于歧义切分无法有效地克服,切分精度 不高,从整体效果上来看,单纯采用机械匹配式进行分词难以满足中文信息处理中对汉语 分词的要求,在机械匹配分词的基础上利用各种语言信息进行歧义校正是削弱机械式切分 局限性的一种重要手段。3. 3. 2逆向最大匹配算法其基本原理和MM法相同,不同的是分词切分方向;它从被处理材料的末端开始匹配, 每次取最末端的i个字作为匹配字段,匹配失败那么去掉最前面的一个字。考虑到逆向最大匹配和正向最大匹配算法类似,这里不再赘述。算法流程图3-5所示: 逆向最大匹配算法的局部注解:/获得所有词中最长的长度int maxLength = LoadDic. MaxLength;/上一次分词最后得到的下标int lastindex = waitDicisionWord. length();/分词,现在的下标int nowindex = waitDicisionWord. length();分词得到的临时字符串String tempWord = waitDicisionWord. substring(nowindex, lastindex);14图3-4正向最大匹配算法流程图15-待分词上不长度一一一 waitDicisionWord.length 是否大于ma x LengtH-是图3-5逆向最大匹配算法流程图3. 3. 3双向最大匹配算法可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。也同样遵循 最大匹配原那么。具体过程如下所述当系统获得待分词文本,系统自动调用词典,并进行使 用,获得词典最大长度MAXLENGTH,运用双向匹配算法,对待分词文本进行分词。该算法 实现的分词系统,准确度比正向和双向的要高,分词的速度也比拟快。双向匹配法属于最 大匹配算法的一种增强算法。这种算法有它的优点,即可以兼顾汉语句法规律的多样性, 但是需要一种评估机制来评估两种方向的优劣,正向匹配和逆向匹配都固有的缺点一不能 有效处理歧义字段。对于双向同样存在。因此,要提高双向分词的正确率,除了建立对 两个方向进行评估的有效机制外,更为根本的是要对正向匹配和逆向匹配本身进行改进, 以提高其准确性。双向分词简单流程图3-6所示。16ABSTRACTThe processing of natural language is an essential part of artificial intelligence. It aims to work out how to generate and comprehend natural language with the help of computer. Text word segmentation is a significant phase in the processing of natural language. It is a process which makes continuous sequence of words into a sequence of phrases according to a certain standard. However, the word segmentation is the foundational phase of information processing. Participle mainly attempts to separate between English and Chinese sentences. Based on specialized algorithm, it can identify single word. In addition, delimiter will be used to divide word.This thesis strives to introduce the current situation of word division, word segmentation, systematic function together with its procedure of implementation, which contributes to form a word prototype system between English and Chinese. It can do word segmentation in a text involving both Chinese and English. As for Chinese text, it adopts mechanical segmentation method forward maximum matching method. Found in the dictionary, it can be matched successfully. If there is more than one entry to be analyzed character string matching, it will choose the longest string. When it comes to English text, it can divide English text into sequence of words by analyzing the gap between words and other delimiter.Key words: word segmentation arithmetic maximum matching method dictionary待分词文本长度waitDicisionWord.len 否大于 maxLengthforwordLastlndex = 0forwordNowIndex = maxlengthreverseLastlndex = waitDicisionWord.lengthreverseNowIndex = waitDicisionWord.length-maxlengthforwordLastlndex = 0forwordNowIndex= waitDicisionWord.lengthreverseLastlndex = waitDicisionWord.lengthreverseNowIndex = waitDicisionWord.length加入正向结果集加入逆向结果集A是否A高蒲束(forwordLastlndex < 二二 '否逆向分词一次reverseLastlndex)是正向结果集和逆向结果集合并分词结束图3-6双向最大匹配算法流程图双向最大匹配算法的局部注解:int maxLength二LoadDic. MaxLength;/获得所有词中最长的长度17List<String> forwordResult = new ArrayListString> (); 正向分词局部结果List<String> reverseResult = new ArrayList<String> () ;/逆向分词局部结果int forwordLastIndex=0;/正向上一次分词最后得到的下标int forwordNowIndex = 0;/正向分词,现在的下标int reverseLastIndex = waitDicisionWord. length() ;/ 逆向上一次分词最后得到 的下标int reverseNowIndex = waitDicisionWord. length() ;/ 逆向分词, 现在的下标总结:以上三种方法都是基于字符串匹配的分词方法,这种方法又被称做机械分词方 法,它是按照一定的策略将待分析的汉字串与一个充分大的机器词典中的词条进行配, 假设在词典中找到某个字符串,那么识别出一个词,匹配成功;总之,这三种方法都遵循最大 匹配的原那么。第4章功能测试3.1 系统开发环境测试计算机配置:处理器:Pentium (R) Dual-Core cpu T4400 2. 20GHZ安装内存:2. 00GB系统类型:Windows 7操作系统32位硬盘空间:320G2界面功能测试及分词效果比拟4. 2.1界面功能测试(1)测试工程手动输入文本(可包含汉字、英语、数字、特殊符号等内容)翻开文本文档> 保存分词结果翻开词典进行查看、添加词汇和删除词汇操作。(2)相关截图,如图4T所示。(3)测试结果:能较好的完成预期的功能:通过对话框选择待处理文本,文本显示在指定文本区域成 功输出格式与原文本相同;输入文件名后选择保存地址,文件成功保存;点击分词后,系 统立即执行分词操作,并将结果显示;点击翻开词典操作,能很好的查看论文所用的词典,18并能对其中的词进行添加和删除操作。画 中英文系统文件文件系统说明翻开同典待分同文本:赵根昏沉沉的,也不知道过了多久,明明是醒着,却又挣不开 眼睛,只觉得很乏很乏.这里没有春夏秋冬,也不用吃喝拉撒。 赵根心中烦闷,只是醒了睡,睡了醒,可直觉告诉他旁边还有 一个人,而且这个老夫子经常看着他,也不说话。白衣儒者看着焦急的赵成笑言道:“信诚贤弟,清儿如此艰难 其非双子乎?你且驻步算要再显了,愚兄要晕倒了 ”赵成同言 亚然一笑回应道:“好你个蔡老夫子,前些日子嫂嫂临盆时你 的样子比我可强不到哪儿去。”二人哈哈大笑。The technique of Chinese word segmentation is a key link to Chinese language processing 34.3498760 tasks正向 O逆向。双向|分同分同结果: o£人 哈哈大笑OThe technique_ofChinese图4-1界面功能截图5. 2. 2分词效果比拟为了全面分析三种分词算法的分词效果,将对三种算法分词结果进行统计,现将三种 算法实现的分词效果进行截图比拟。19正向最大匹配算法 4谓乂默认 ANSI PC诉边有人且人常 告他旁还一个,而这个经看假设OL 0L诉边有个 且个常 告他旁还一人,而这人经看假设逆向最大匹配算法 »匕 U默认 ANSI PC4: 1«4: 1:几:几图4-2正向与逆向分词结果比拟截图(1)上图是正向最大匹配算法和逆向最大匹配算法的分词效果的比拟,使用Beyond Compare Portable软件即文本比拟软件对其进行比拟,使用的是同样的一小段小说“赵 枫昏沉沉的,也不知道过了多久,明明是醒着,却又挣不开眼睛,只觉得很乏很乏.这里 没有春夏秋冬,也不用吃喝拉撒。赵枫心中烦闷,只是醒了睡,睡了醒,可直觉告诉他旁 边还有一个人,而且这个人经常看着他,也不说话。”从分词的结果中可以看出正向和逆 向在分词的过程中,有些词还是存在不同分词结果,如图中所示的“一个人”,正向分的 结果为“一个/人”,而逆向的分的结果为“一/个人”。(2)同理下列图是逆向分词算法和双向分词算法的分词效果比拟,比拟结果如下列图所示:双向最大匹配算法默认) ANSI PC逆向最大匹配算法0默认) ANSI PCii知道多久22: 1啜不u隹不。纠道多久22: 1默认文本图4-3双向与逆向分词结果比拟截图结果分析:同样一段话,正向、逆向和双向的分词结果是不同的,在本论文中测试的结果是一个 是104个词(含标点符号)正向与逆向一共有4个词分的结果不同,逆向和双向一共有两 个分的结果不同,后来经过大量的分词测试,说明,双向的准确率最高其次是逆向最后才20 是正向。经过举出大量的文本文档的例子,发现双向最大匹配算法的精度最高,其次是逆向, 最后才是正向;在测试分词的过程中发现,正向双向分词的结果很多时候会出现一样的效 果,其主要原因与词典收录的词有很大关系。中文分词系统的目标是:准确、高效、通用 及适用。我们可以从这四个方面来判断一个汉语自动分词系统是否到达了适应实际信息处 理的要求。第5章结束语本毕业设计实现了一个中英文分词原型系统,能够对汉语和英语两种语言同时存在的 文本进行分词,通过研究中英文分词的现状和关键技术,分别实现基于最大匹配和基于规 那么的中英文分词算法,通过计算机自动完成对中文句子的切分,识别出独立的词,并在词 与词之间用分隔符分割开。本系统实现了读取未处理文档、分词并显示分词结果等功能,目前分词算法有很多, 本系统实现了正向最大匹配、逆向最大匹配和双向匹配三种算法。并做出比拟,进行精确 度测试,从测试结果分析,分词的准确率还是较高的。中文分词处理是一项复杂的工程。本系统还仅仅是简单的分词模型,还须进一步对汉 语的分词结构、句法结构、语义等语言知识,队语料库的建立、切分歧义处理、专有名称 识别、模式匹配等做深入研究。整个毕业设计中每一个阶段的工作,都建立在大量知识的积累之上。通过长达四个多 月之久的实际锻炼,加深对知识的理解和运用。获得了许多实际的制作系统的经验,相信 这会在今后的学习工作中起到很大的积极作用。21致谢值此毕业论文完成之时,谨向关心、指导和帮助过我的所有老师和同学致以最诚挚的 谢意!首先要对我的指导老师一一谢飞老师表示感谢。谢老师从论文题目确实定、论文资料 的收集、论文框架确实定及论文初稿对字句的斟酌倾注了大量心血,使我完成了毕业设计 论文。老师对我碰到的一系列疑问和难题都悉心指导,一步步引导我完成系统和论文。我 无法用语言来描述自己的感受,只好将它深深地埋在心底,化作一道虔诚的祝福:借此机 会,我在这里向谢老师表达我最深切的感谢和诚挚的敬意愿老师合家欢乐,一生平安!感谢在这四年中给予了我帮助和指导的所有老师表示由衷的谢意,感谢各位老师的认 真和负责,只有在他们的悉心帮助和支持下,我才能能够很好的掌握和运用专业知识,并 在论文制作中得以表达,顺利完成毕业论文。同时,在论文写作过程中,我还参考了有关 的书籍和论文,在这里一并向有关的作者表示谢意。22参考文献1 M.Sassano.An empirical study of active learing with SVM for Japanese word segmentation.In:Proc.of the Association of Computational Linguistics (ACL),2002.505-512.2张海军,史树敏,朱朝勇等.中文新词识别技术综述.计算机科学,2010,Vol.37(3):6-10.3吴栋,腾育平.中文信息检索引擎中的分词与检索技术.计算机应用,2004, 24(7): 128-131.4田占宵,中英文混合分词方法及应用研究D.河北农业大学,2009, 06.5王靖.基于机械切分和标注的中文分词的研究D.湖南:湖南大学,2009.6盛启东.基于web的新词语发现研究D.安徽:安徽大学,2010.7 Zhang Jia-yong,Hu Jian-hua.Intelligent information filtering systems based on Chinese word segmentation J J .Information Technology.2006:175-178.8李兆福.基于K最短路径的中文分词算法的研究与实现D.哈尔滨:哈尔滨工程大学,200939赵伟,戴新宇,尹存燕,陈家俊.一种规那么与统计相结合的汉语分词方法.计算机应用研究,2004, 21(3):23-25.10张锋,樊孝忠,许云.基于统计的中文姓名识别方法研究J.计算机工程与应用.2008,(10):53-77.fll秦浩伟,步丰林.一个中文新词识别特征的研究J. Computer Engineering.2004.30(B 1):369-370.12张海军,史树敏,丁溪源,黄河燕.基于分词提取重复串的未登录词遗漏量化模型J.中文信息学 报.2011(02).13李小明,闫宏飞,王继民,搜索引擎一一原理、技术与系统,北京:科学出版社.2006.58-6L14王彩荣.汉语自动分词专家系统的设计与实现J.微处理机,2004:56-58.15王茜.基于字符串匹配的中英文混合分词技术研究D.四川师范大学,2011.16常宝宝.自然语言的最大嫡模型.北京大学计算机语言学研究所,100871.17冯书晓,徐新,杨春梅.国内中文分词技术研究新进展.情报杂志,2002,21(11):29-30.23核心算法代码:package cn. hfedu;import java. util. ArrayList;import java. util. HashMap;import java. util. List;public class IncisionWord /*正向分词* ©return©throws Exception* /public static List<String> forwordIncisionWord() throws Exception LoadDic. loadDictionary() ;/ 加载字典int maxLength = LoadDic. MaxLength;/获得所有词中最长的长度List<String> result = new ArrayList<String>();String separate =n;/待分词文本String waitDicisionWord = Main, areal. getText();HashMap<String, Integer> dictionary = LoadDic. Dictionary;/ 获得词典int lastindex=0;/上一次分词最后得到的下标int nowindex = 0;/分词,现在的下标while (nowindex <= waitDicisionWord. length()/当取词的下标没有超过待分词文本的长 度,那么一直分词while (nowindex > lastindex)24/现在的下标比上一次的下标靠后,那么继续分词String tempWord = waitDicisionWord. substring(lastindex, nowindex);if (nowindex - 1) = lastindex)/ 如果只有一个字符 if (nowindex = waitDicisionWord. length() / 这个字符已经是待分词文本 的最后一个字符result, add(tempWord + separate); else if (IncisionUtil. isChinese (tempWord. charAt (0) / 这个字符如果 是一个汉字,那么输出这个字(result, add(tempWord + separate);)else if (Character. isWhitespace (tempWord. charAt (0)这个字符是空格或 其他空白符号result. add();)else if (IncisionUtil. isNumber (tempWord. charAt (0)这个字符是数字 if (!IncisionUtil. isNumber(waitDicisionWord. substring(nowindex, nowindex + 1). charAt (0)/ 数字后面不是数字result.add( tempWord + separate);else result.add( tempWord);)else if (IncisionUtil. isEnglishLetter (tempWord. charAt (0)/ 这个字符 是一个英语字母(if(IncisionUtil. isEng1ishLetter(waitDicisionWord. substring(nowindex, nowindex+. charAt (0)字母后是英语字母(连接成英语单词)25result. add( tempWord);else 字母后是数字或空白符号(result.add(