正向最大匹配分词算法的分析与改进
- 格式:doc
- 大小:34.50 KB
- 文档页数:6
正向最大字数分词法【实用版】目录1.介绍正向最大字数分词法2.解释分词原理3.分析正向最大字数分词法的优缺点4.举例说明正向最大字数分词法的应用5.总结正向最大字数分词法正文一、介绍正向最大字数分词法正向最大字数分词法,是一种常用的中文分词方法。
其原理是,从左到右扫描句子,将连续的文本分割成独立的词汇。
在这个过程中,每个词汇都以最大字数为单位进行分割,以保证词汇的完整性和准确性。
二、解释分词原理正向最大字数分词法的分词原理是基于字典的。
在分词过程中,程序会根据已有的字典库,对文本进行逐一匹配。
当遇到匹配的字典中的词汇时,便将该词汇作为分词结果提取出来。
同时,为了保证词汇的完整性,该方法规定每个词汇的字数必须达到最大字数,否则就不断提取词汇。
三、分析正向最大字数分词法的优缺点正向最大字数分词法具有以下优点:1.准确性高:基于字典库的分词方法,可以保证词汇的准确性。
2.效率高:从左到右扫描句子,分词速度快。
然而,正向最大字数分词法也存在以下缺点:1.不能处理未登录词:对于字典中没有的词汇,该方法无法进行处理。
2.词库限制:分词效果受到词库的影响,词库的质量直接关系到分词结果的质量。
四、举例说明正向最大字数分词法的应用假设有一个句子:“小明去公园打篮球。
”,采用正向最大字数分词法进行分词,结果为:“小明【2】去【1】公园【2】打【1】篮球【2】。
”可以看到,该方法将句子准确地分割成了独立的词汇。
五、总结正向最大字数分词法总的来说,正向最大字数分词法是一种准确性高、效率高的分词方法。
正向最大匹配分词算法的分析与改进摘要:本文主要通过对影响正向最大匹配算法效率的因素的分析,提出对该算法的一点改进,以及设计了相应的词典结构,以期在匹配过程中尽可能的减少比较次数,提高分词效率。
关键词:中文分词;最大匹配算法;词典机制0引言在自然语言处理中,“词是最小的能够独立活动的有意义的语言成分”[1],而汉语和英语等其它西文比起来,有着自身的特点。
英语、法语等欧美语言在书写时就以词为基本构成单位,以空格作为分词的依据;而汉语在书写时是一大串汉字的字符串,从形式上根本没有词的概念。
中文分词指的就是将一个汉字序列切分成一个一个单独的具有实际意义的词,它是中文信息处理的基础。
中文自动分词的现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法[2]。
在基于字符串匹配的分词算法中,词典的设计往往对分词算法的效率有很大的影响。
本文通过对影响正向最大匹配算法效率因素的分析,设计一种带词长信息的分词词典,同时在该词典基础上,对正向最大匹配算法做出一些改进,以提高分词的效率。
1正向最大匹配分词算法介绍和分析1.1 正向最大匹配分词算法介绍最大匹配算法是最基本的字符串匹配算法之一,它能够保证将词典中存在的最长复合词切分出来。
传统的正向最大匹配分词算法(Maximum Matching,简称MM算法)的算法流程如图1所示。
图1 MM 算法流程图假设分词词典中的最长词的字数为M,令其作为最大匹配系数。
假设读取的汉字序列字数为L,判断L是否小于最大匹配系数M。
如果L大于最大匹配系数M,则截取前M个汉字作为待匹配字段进行匹配,否则取整个汉字序列作为待匹配字段直接在分词词典中进行匹配。
若字典中存在这样一个字数为M的词,则匹配成功,匹配字段被作为一个词切分出来;若词典中找不到这样的词,则匹配失败,将待匹配字段中的最后一个字去掉,将剩下的汉字序列作为待匹配字段重新在字典中进行匹配处理……如此进行下去,直到匹配成功,即切分出一个词,或者直到剩余字串的长度为1为止,即为一个单字。
最大正向匹配分词算法简介分词是自然语言处理中的重要任务之一,它将连续的文本切分成有意义的词语或词组。
在中文分词中,最大正向匹配分词算法是一种常见的分词方法。
该算法基于词典,通过从左到右依次匹配最长的词进行分词。
优点•算法简单、效率高,适用于大规模文本的分词任务。
•对于常见词汇的分词效果较好。
缺点•对于歧义词汇的分词效果较差。
由于该算法只依次匹配最长的词,因此可能会将歧义词汇按错误的方式进行分词。
•无法处理未登录词。
如果分词的文本中存在词典中未包含的词汇,该算法将无法正确地进行分词。
算法步骤最大正向匹配分词算法的步骤如下:1.定义一个词典,包含常见的词汇。
2.从待分词的文本的左侧开始,选择词典中最长的词作为候选词。
3.判断候选词是否存在于词典中。
4.如果候选词存在于词典中,将该词作为分词结果的一部分,然后从待分词文本的右侧继续进行分词。
5.如果候选词不存在于词典中,将候选词的最后一个字去除,然后将剩余的部分作为新的候选词。
6.重复步骤3和步骤4,直到待分词的文本为空。
算法示例假设我们有一个词典:[“最大”, “正向”, “匹配”, “分词”, “算法”]。
我们要对文本”最大正向匹配分词算法”进行分词。
1.从文本的左侧开始,选择最长的词”最大正向”作为候选词。
2.判断候选词”最大正向”存在于词典中。
3.将候选词”最大正向”作为分词结果的一部分。
4.从待分词的文本的右侧继续进行分词,此时待分词的文本为”匹配分词算法”。
5.从文本的左侧开始,选择最长的词”匹配”作为候选词。
6.判断候选词”匹配”存在于词典中。
7.将候选词”匹配”作为分词结果的一部分。
8.从待分词的文本的右侧继续进行分词,此时待分词的文本为”分词算法”。
9.从文本的左侧开始,选择最长的词”分词”作为候选词。
10.判断候选词”分词”存在于词典中。
11.将候选词”分词”作为分词结果的一部分。
12.从待分词的文本的右侧继续进行分词,此时待分词的文本为”算法”。
中⽂分词:正向匹配最⼤算法(FMM)中⽂分词:正向匹配最⼤算法正向最⼤匹配法,对于输⼊的⼀段⽂本从左⾄右、以贪⼼的⽅式切出当前位置上长度最⼤的词。
正向最⼤匹配法是基于词典的分词⽅,其分词原理是:单词的颗粒度越⼤,所能表⽰的含义越确切。
该算法主要分两个步骤:1、⼀般从⼀个字符串的开始位置,选择⼀个最⼤长度的词长的⽚段,如果序列不⾜最⼤词长,则选择全部序列。
2、⾸先看该⽚段是否在词典中,如果是,则算为⼀个分出来的,如果不是,则从右边开始,减少⼀个字符,然后看短⼀点的这个⽚段是否在词典中,依次循环,逐到只剩下⼀个字。
3、序列变为第2步骤截取分词后,剩下的部分序列代码实现#使⽤正向最⼤匹配算法实现中⽂分词words_dic = []def init():'''读取词典⽂件载⼊词典:return:'''with open(r"C:\Users\lenovo\PycharmProjects\fenci\venv\dic\dic.txt","r",encoding="utf-8") as dic_input:for word in dic_input:words_dic.append(word.strip())#列表#实现正向匹配算法中的切词⽅法def cut_words(raw_sentence,word_dict):#统计词典中最长的词max_length = max(len(word) for word in words_dic)sentence = raw_sentence.strip()#统计序列长度word_length = len(sentence)#存储切分好的词语cut_word_list = []while word_length > 0:max_cut_length = min(max_length,word_length)#判断最长词语与句⼦的长度subsentence = sentence[0:max_cut_length] #⼦句与就是最⼤的长度while max_cut_length > 0:if subsentence in word_dict:#如果句⼦是长的,那么从头便取最⼤词的长度,如果在,⾸词便框住cut_word_list.append(subsentence) #如果不在词典岂不是完蛋了breakelif max_cut_length == 1:cut_word_list.append(subsentence)breakelse:max_cut_length = max_cut_length-1 #⼤概率是不在的,因此切得长度减1subsentence = subsentence[0:max_cut_length]sentence = sentence[max_cut_length:]words_length = word_length - max_cut_lengthif words_length == 0:breakwords = "/".join(cut_word_list)return wordsdef main():'''与⽤户交互接⼝:return:'''init()while True:print("请输⼊要分词序列:")input_str = input()if not input_str:breakresult = cut_words(input_str,words_dic)print("分词结果")print(result)if __name__=="__main__":main()。
一种改进的中文分词正向最大匹配算法改进的中文分词正向最大匹配算法可以通过以下几个步骤来实现:
1.预处理文本:对待分词的文本进行预处理,包括去除换行符、标点
符号等。
2.构建词典:将用于分词的词汇整理成一个词典,可以使用常见的词
库或者根据具体需求自定义词典。
3.正向最大匹配算法:首先确定最大匹配的长度,可以根据预设的最
大词长或者根据词典中最长词的长度来确定。
从文本的首字开始,依次向
后匹配,每次匹配到一个词时就将它作为一个词组输出。
如果当前位置未
匹配到词,则将该字作为单字输出。
4.逆向扫描策略:在正向最大匹配算法的基础上,加入逆向扫描策略。
当正向匹配结束后,再对未匹配的部分进行逆向匹配。
逆向匹配时,从文
本的末尾开始,依次向前匹配,可以将匹配到的词组或单字插入到正向匹
配的结果中。
5.歧义消解:在进行正向和逆向匹配时,可能会出现多个匹配结果的
情况。
例如,对于词组"中央大街",在正向匹配时可以匹配到"中央"和"
大街",在逆向匹配时可以匹配到"中央大"和"街"。
可以通过一些启发式
规则来进行歧义消解,例如根据词频信息以及语法规则进行判断。
以上是一种改进的中文分词正向最大匹配算法的基本步骤。
具体实现
时可以根据需要进行优化,例如引入其他的匹配策略或者结合统计模型进
行分词,以提高分词效果。
最大正向匹配分词算法
最大正向匹配分词算法是一种中文分词方法,其基本思想是从文本的开头开始逐个取出最大长度的词语,然后进行匹配,如果匹配成功,则将该词语切分出来,否则取出次长的词语进行匹配,直至文本被分词完毕。
这种分词方法适用于中文文本中词语的长度相对较长的情况,例如新闻报道、论文等。
在实现上,需要先建立一个词典,然后将待分词的文本与词典中的词语进行匹配,并在匹配到合适的词语后进行切分。
最大正向匹配分词算法有其优点和缺点。
优点是速度较快,易于实现。
缺点是容易出现歧义,例如“双方发表了新闻公报”可能被分成“双方/发表/了/新闻/公报”或者“双方/发/表了/新闻/公报”,需要通过其他算法或手动处理来解决这种歧义。
在实际应用中,最大正向匹配分词算法通常与其他分词方法结合使用,以获得更准确的分词效果。
- 1 -。
实验一、中文分词一、实验内容用正向最大匹配法对文档进行中文分词,其中:(1)wordlist.txt 词表文件(2)pku_test.txt 未经过分词的文档文件(3)pku_test_gold.txt 经过分词的文档文件二、实验所采用的开发平台及语言工具Visual C++ 6.0三、实验的核心思想和算法描述本实验的核心思想为正向最大匹配法,其算法描述如下假设句子: , 某一词 ,m 为词典中最长词的字数。
(1) 令 i=0,当前指针 pi 指向输入字串的初始位置,执行下面的操作:(2) 计算当前指针 pi 到字串末端的字数(即未被切分字串的长度)n,如果n=1,转(4),结束算法。
否则,令 m=词典中最长单词的字数,如果n<m, 令 m=n;(3) 从当前 pi 起取m 个汉字作为词 wi,判断:(a) 如果 wi 确实是词典中的词,则在wi 后添加一个切分标志,转(c);(b) 如果 wi 不是词典中的词且 wi 的长度大于1,将wi 从右端去掉一个字,转(a)步;否则(wi 的长度等于1),则在wi 后添加一个切分标志,将wi 作为单字词添加到词典中,执行 (c)步;(c) 根据 wi 的长度修改指针 pi 的位置,如果 pi 指向字串末端,转(4),否则, i=i+1,返回 (2);(4) 输出切分结果,结束分词程序。
四、系统主要模块流程、源代码(1) 正向最大匹配算法12n S c c c 12i mw c c c(2) 原代码如下// Dictionary.h#include <iostream>#include <string>#include <fstream>using namespace std;class CDictionary{public:CDictionary(); //将词典文件读入并构造为一个哈希词典 ~CDictionary();int FindWord(string w); //在哈希词典中查找词private:string strtmp; //读取词典的每一行string word; //保存每个词string strword[55400];};//将词典文件读入并CDictionary::CDictionary(){ifstream infile("wordlist.txt"); // 打开词典if (!infile.is_open()) // 打开词典失败则退出程序{cerr << "Unable to open input file: " << "wordlist.txt"<< " -- bailing out!" << endl;exit(-1);}int i=0;while (getline(infile, strtmp)) // 读入词典的每一行并将其添加入哈 希中{strword[i++]=strtmp;}infile.close();}CDictionary::~CDictionary(){}//在哈希词典中查找词,若找到,则返回,否则返回int CDictionary::FindWord(string w){int i=0;while ((strword[i]!=w) && (i<55400))i++;if(i<55400)return 1;elsereturn 0;}// 主程序main.cpp#include "Dictionary.h"#define MaxWordLength 14 // 最大词长为个字节(即个汉字)# define Separator " " // 词界标记CDictionary WordDic; //初始化一个词典//对字符串用最大匹配法(正向)处理string SegmentSentence(string s1){string s2 = ""; //用s2存放分词结果string s3 = s1;int l = (int) s1.length(); // 取输入串长度int m=0;while(!s3.empty()){int len =(int) s3.length(); // 取输入串长度if (len > MaxWordLength) // 如果输入串长度大于最大词长 {len = MaxWordLength; // 只在最大词长范围内进行处理 }string w = s3.substr(0, len); //(正向用)将输入串左边等于最大词长长度串取出作为候选词int n = WordDic.FindWord(w); // 在词典中查找相应的词while(len > 1 && n == 0) // 如果不是词{int j=len-1;while(j>=0 && (unsigned char)w[j]<128){j--;}if(j<1){break;}len -= 1; // 从候选词右边减掉一个英文字符,将剩下的部分作为候选词 w = w.substr(0, len); //正向用n = WordDic.FindWord(w);}s2 += w + Separator; // (正向用)将匹配得到的词连同词界标记加到输出串末尾s3 = s1.substr(m=m+w.length(), s1.length()); //(正向用)从s1-w处开始}return s2;}int main(int argc, char *argv[]){string strtmp; //用于保存从语料库中读入的每一行string line; //用于输出每一行的结果ifstream infile("pku_test.txt"); // 打开输入文件if (!infile.is_open()) // 打开输入文件失败则退出程序{cerr << "Unable to open input file: " << "pku_test.txt"<< " -- bailing out!" << endl;exit(-1);}ofstream outfile1("SegmentResult.txt"); //确定输出文件if (!outfile1.is_open()){cerr << "Unable to open file:SegmentResult.txt"<< "--bailing out!" << endl;exit(-1);}while (getline(infile, strtmp)) //读入语料库中的每一行并用最大匹配法处理{line = strtmp;line = SegmentSentence(line); // 调用分词函数进行分词处理outfile1 << line << endl; // 将分词结果写入目标文件cout<<line<<endl;}infile.close();outfile1.close();return 0;}五、实验结果及分析(1)、实验运行结果(2) 实验结果分析在基于字符串匹配的分词算法中,词典的设计往往对分词算法的效率有很大的影响。
匹配改进方案1. 背景在实际开发中,匹配(matching)是一个非常常见的问题。
例如,我们需要将一篇文章中的所有博客链接提取出来,或者需要将一组商品与用户的购买记录进行匹配,以推荐相关的商品。
但是,匹配算法的效率往往不尽如人意,尤其是在处理大规模数据时,会显得非常缓慢和耗时。
因此,我们需要寻找一些匹配改进方案,以提高匹配算法的效率。
2. 常见匹配算法在介绍匹配改进方案之前,我们首先来了解一下常见的匹配算法。
2.1 字符串匹配算法字符串匹配算法是处理字符串匹配问题的常用方法,其主要思路是对文本串和模式串进行比较,以找到最长的匹配字符串。
常见的字符串匹配算法包括:•暴力匹配算法(Brute-Force)•KMP算法•BM算法这些算法的时间复杂度各有不同,但是都需要逐个比较文本串和模式串中的字符,因此在大规模数据中往往效率不高。
2.2 图匹配算法图匹配算法是在图像处理领域中应用比较广泛的一类匹配算法。
其主要思路是将待匹配图像和已知模板图像进行特征提取,并通过比较特征之间的相似度来进行匹配。
常见的图匹配算法包括:•SIFT算法•SURF算法•ORB算法这些算法在处理图像匹配时效果良好,但是对于其他类型的问题,往往需要进行较大的改进。
3. 匹配改进方案在实际开发中,我们可以采取一些有效的匹配改进方案,以提高匹配算法的效率。
3.1 数据预处理在进行匹配之前,我们可以对原始数据进行一些预处理,以减少匹配算法的时间复杂度。
例如,可以对数据进行去重、分词、建立索引等操作,从而提高匹配的效率。
3.2 并行计算对于大规模数据的匹配,我们可以采用并行计算的方式,以加速匹配算法的运行。
例如,可以在多个服务器或多个CPU上进行并行计算,从而将计算时间缩短到最短。
3.3 特征匹配对于某些特定的问题,比如图像匹配,我们可以采用特征匹配的方式,以提高匹配的效率。
例如,可以对待匹配图像和已知模板图像进行特征提取,并通过比较特征之间的相似度来进行匹配。
jieba分词原理解析一、简介在自然语言处理(NL P)领域,中文分词是一个重要的基础任务。
分词就是将连续的汉字序列切分为独立的词语,是文本处理的第一步。
ji eb a 分词是一款基于P yth o n的中文分词工具,被广泛应用于文本挖掘、搜索引擎和机器学习等领域。
本文将详细解析j ie ba分词的原理和算法。
二、正向最大匹配算法j i eb a分词采用了一种正向最大匹配(M ax im um Fo rw ar dM a tc hi ng,M FM)的算法。
该算法从左到右扫描待分词语句,在词典中查找最长的词,然后将之作为一个词语输出。
例如,对于句子“结巴分词是一款很好用的中文分词工具”,算法将会将“结巴分词”、“是”、“一款”、“很好用”的词语分离出来。
三、逆向最大匹配算法除了正向最大匹配算法,ji eb a分词还使用了逆向最大匹配(M ax im um Ba ck wa rd M at ch in g,MB M)的算法。
逆向最大匹配算法与正向最大匹配算法类似,只是方向相反。
该算法从右到左扫描待分词语句,在词典中查找最长的词,然后将之作为一个词语输出。
对于同样的句子“结巴分词是一款很好用的中文分词工具”,逆向最大匹配算法将会将“分词工具”、“很好用的”、“是一款”的词语分离出来。
四、双向最大匹配算法除了正向最大匹配和逆向最大匹配算法,j i eb a分词还引入了双向最大匹配(Ma xi mu mB id i re ct io na lM at chi n g,BM M)算法,结合了两者的优点。
双向最大匹配算法先利用正向最大匹配算法进行分词,然后利用逆向最大匹配算法进行分词,最后根据词语切分结果的准确度来确定最终的分词结果。
双向最大匹配算法能够更准确地切分复杂的句子,提高了分词的准确率。
五、H M M模型j i eb a分词还引入了隐马尔可夫模型(Hi d de nM ar ko vM od el,H MM)来解决新词和歧义问题。
一种改进的最大匹配分词算法研究通过对最大匹配分词算法做出改进,解决了最大匹配分词算法所不能解决的一些问题,并得出较准确的粗分结果。
标签:MMSEG;最大匹配;分词1 引言汉语的中文信息处理就是要用计算机对汉语的音,形,義进行处理。
同时词是最小的能够独立活动的有意义的语言成分。
然而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文自动分词是中文信息处理的基础与关键。
目前,中文自动分词方法主要分为三类:第一类主要是基于字典,词库的字符串匹配方法,这类方法简单实用,比较容易实现,然而精度不高;第二类主要是利用词的频度统计信息进行分词的方法,这类方法能够识别生词,但对常用词的识别精度不高;第三类主要是基于句法语法分析,并结合语义分析,根据上下文信息来分词,这类方法原理比较复杂,难于实现。
单靠某一类分词方法很难实现满意实用的分词系统,而中文词语分析一般都需要包括3个过程:预处理过程的词语粗切分,切分排歧与未登录词识别和词性标注。
目前中文词语分析采取的主要步骤是:先采取最大匹配,最短路径,概率统计或全切分等方法,得到一个相对好的粗分结果,然后进行排歧,未登录词识别,最后标注词性。
在实际的系统中,这三个过程可能相互交叉,反复融合,也可能不存在明显的先后次序。
衡量自动分词系统的两个主要指标是:切分精度和切分速度。
对于处理海量数据的中文分词系统来说,切分速度无疑是最重要的指标。
因此,在处理海量数据的中文分词系统中为了提高切分速度,通常使用基于基本分词词典(常用词词典)的串匹配分词方法作为粗分手段,并在后续的处理过程中利用词的频度统计信息或汉语规则提高切分精度。
预处理过程的粗分结果是后续过程的处理对象,因此在要求粗分效率的前提下必须尽量提高粗分结果的准确性,否则在后续过程中很难对错误的粗分结果进行补救,导致切分精度的下降。
本文提出一种旨在保证分词效率的同时兼顾分词准确率的词语粗分模型,基于最大匹配分词算法的中文词语粗分模型。
一种改进的中文分词正向最大匹配算法王瑞雷;栾静;潘晓花;卢修配【期刊名称】《计算机应用与软件》【年(卷),期】2011(028)003【摘要】正向最大匹配分词FMM(Forward Maximum Matching)算法存在设定的最大词长初始值固定不变的问题,带来长词丢失或匹配次数较多的弊端.针对此问题提出了根据中文分词词典中的词条长度动态确定截取待处理文本长度的思想,改进了FMM算法.与此相配合,设计了一种词典结构,使之能够有效地支持改进的算法.改进的算法与一般正向最大匹配算法相比大大减少了匹配次数,分析表明中文分词的速度和效率有了很大提高.%There is a problem in forward maximum matching (FMM) algorithm that the initial value of the maximum word-length is immovable, this might lead to the longer words cannot be segmented correctly and be matched repeatedly.Aiming at this problem, this paper puts forward an idea for improving FMM algorithm that is to assign the maximum text-length to be treated dynamically based on the wordlength in Chinese word segmentation word bank.To fit this, in the paper we design a word bank structure to enable the effective support on the improvement of pared with normal FMM, the improved FMM sharply reduces matching times.Analysis in this paper shows that the speed and efficiency of Chinese Word segmentation algorithm have been obviously improved.【总页数】3页(P195-197)【作者】王瑞雷;栾静;潘晓花;卢修配【作者单位】新疆师范大学计算机科学技术学院,新疆,乌鲁木齐,830054;新疆师范大学计算机科学技术学院,新疆,乌鲁木齐,830054;新疆师范大学计算机科学技术学院,新疆,乌鲁木齐,830054;新疆师范大学计算机科学技术学院,新疆,乌鲁木齐,830054【正文语种】中文【相关文献】1.一种改进的统计与后串最大匹配的中文分词算法研究 [J], 吴涛;张毛迪;陈传波2.一种改进的最大匹配中文分词算法 [J], 闻玉彪;贾时银;邓世昆;李远方3.一种结合正向最大匹配法和互信息的中文分词算法 [J], 桑书娟;王庆喜4.基于改进的正向最大匹配中文分词算法研究 [J], 王惠仙;龙华5.一种基于改进最大匹配快速中文分词算法 [J], 林浩;韩冰;杨乐华因版权原因,仅展示原文概要,查看原文内容请购买。
基于改进型正反向最大匹配中文分词算法的研究
李霞婷
【期刊名称】《信息技术与信息化》
【年(卷),期】2015(0)6
【摘要】校园师生通过校园网进行有效的校内外信息搜索,中文分词起到举足轻重的作用.本文通过对中文分词方法的介绍,重点分析了最大匹配算法的优缺点,提出重组正向与逆向相结合的最大匹配算法思路,在校试验中取得了较好的效果.
【总页数】2页(P204-205)
【作者】李霞婷
【作者单位】江西交通职业技术学院江西南昌 330013
【正文语种】中文
【相关文献】
1.基于最大匹配的中文分词改进算法研究 [J], 赵源
2.基于最大匹配的中文分词概率算法研究 [J], 何国斌;赵晶璐
3.中文分词算法之最大匹配算法的研究 [J], 张玉茹
4.基于改进的正向最大匹配中文分词算法研究 [J], 王惠仙;龙华
5.基于最大匹配算法的似然导向中文分词方法 [J], 杨贵军;徐雪;凤丽洲;徐玉慧因版权原因,仅展示原文概要,查看原文内容请购买。
第28卷第3期 计算机应用与软件Vo l 28No .32011年3月 Co m puter Applicati o ns and Soft w are M ar .2011一种改进的中文分词正向最大匹配算法王瑞雷 栾 静 潘晓花 卢修配(新疆师范大学计算机科学技术学院 新疆乌鲁木齐830054)收稿日期:2010-04-01。
新疆师范大学研究生科技创新活动基金(20091208)。
王瑞雷,硕士生,主研领域:信息技术,数据挖掘。
摘 要 正向最大匹配分词FMM (F orwardM ax i m u m M atchi ng)算法存在设定的最大词长初始值固定不变的问题,带来长词丢失或匹配次数较多的弊端。
针对此问题提出了根据中文分词词典中的词条长度动态确定截取待处理文本长度的思想,改进了FMM 算法。
与此相配合,设计了一种词典结构,使之能够有效地支持改进的算法。
改进的算法与一般正向最大匹配算法相比大大减少了匹配次数,分析表明中文分词的速度和效率有了很大提高。
关键词 中文分词 分词词典 正向最大匹配算法AN I M PROVED FOR WARD M AXI M UM M ATCH I NG ALGORI THM FORCH I NES E WORD S EGM ENTATI ONW ang Ru ile i Luan Ji n g Pan X iaohua Lu X i u pei(Colle g e of Compu ter S cience and Technology,X inji ang N or ma l Un i v e rsit y,Urumqi 830054,X inji ang,China )Abstrac t T here i s a proble m in for w ard m ax i m u m m atch i ng (FMM )a l gor it h m tha t the i n itia l va l ue o f the m ax i m u m w ord length i s i m movable ,this m i ght l ead to the l onger w ords cannot be segm ented correctl y and be ma tched repeatedly .A i m i ng at this prob l em ,this paperputs for w ard an i dea for i m prov i ng F MM a l go rith m t ha t is to ass i gn t he m ax i m u m text leng t h to be treated dyna m icall y based on the wo rd length i n Ch i nese w ord seg m en tati on word bank .T o fit this ,i n the pape r w e design a w ord bank struc t ure to enab l e the effecti ve support on the i m prove m ent o f F pared w ith no r m al F MM,the i m proved F MM sharp l y reduces m atch i ng ti m es .A na lysis in th i s paper show s tha t the speed and e fficiency of Ch i nese W ord segm en tati on algor it h m have been obv iously i m proved .K eywords Chi nese w ord segm enta ti on W o rd bank F or w ard m ax i m u m m a tch i ng algor i th m0 引 言中文自动分词是中文信息处理中最为基础、最为重要的问题,是汉语文本自动标注、搜索引擎、机器翻译等工作中的关键步骤。
改进的正向最大匹配分词算法
张彩琴;袁健
【期刊名称】《计算机工程与设计》
【年(卷),期】2010(031)011
【摘要】为了降低正向最大匹配分词算法的切分错误率,分析了产生这个错误率的原因,提出了一种改进的正向最大匹配分词算法,即增加一个交集型歧义字段处理模块.该方法对待切丈本进行预处理,在传统正向最大匹配的过程中,调用交集型歧义字段处理模块,该模块主要是在每一次正向匹配后进行回溯匹配,即通过检测当前处理词条的尾字和下一字的成词情况,分别计算该尾字和不含该字的当前处理词条的互信息与尾字和下一字的互信息,通过比较两者的互信息大小来决定切分,最后对分词碎片进行了处理.通过对随机抽取的语料进行测试,结果表明该方法是有效的.
【总页数】4页(P2595-2597,2633)
【作者】张彩琴;袁健
【作者单位】上海理工大学,光电信息与计算机工程学院,上海,200093;上海理工大学,光电信息与计算机工程学院,上海,200093
【正文语种】中文
【中图分类】TP391
【相关文献】
1.一种改进的中文分词正向最大匹配算法 [J], 王瑞雷;栾静;潘晓花;卢修配
2.一种结合正向最大匹配法和互信息的中文分词算法 [J], 桑书娟;王庆喜
3.基于改进的正向最大匹配中文分词算法研究 [J], 王惠仙;龙华
4.中文分词中的正向增字最大匹配算法研究 [J], 戴上静;石春;吴刚
5.正向最大匹配分词算法的分析与改进 [J], 吴旭东
因版权原因,仅展示原文概要,查看原文内容请购买。
基于改进Trie树结构的正向最大匹配算法熊志斌;朱剑锋【期刊名称】《计算机应用与软件》【年(卷),期】2014(000)005【摘要】In this paper we present an improved Trie tree structure,the tree node records the position information of the character in forming a word,the sub-node uses hash searching mechanism,and based on this basis we optimise the forward maximum matching algorithm (FFM)for Chinese word segmentation.In segmentation process we utilise automata mechanism to judge whether the longest word is formed, this solves the problem that the forward maximum matching algorithm requires to adjust the character string according to the length of the word.The time complexity of the algorithm is 1.33,the contrast experimental results show that there is the faster word segmentation speed. The forward maximum matching algorithm based on the improved Trie tree structure improves the speed of Chinese word segmentation,and is particularly suitable for the situations where the lexicon structure requires real-time update.%提出一种改进的Trie树结构,树节点记录了字符串与构词的位置信息,子节点采用哈希查找机制,在此基础上优化了中文分词的正向最大匹配算法。
正向最大匹配分词算法的分析与改进摘要:本文主要通过对影响正向最大匹配算法效率的因素的分析,提出对该算法的一点改进,以及设计了相应的词典结构,以期在匹配过程中尽可能的减少比较次数,提高分词效率。
关键词:中文分词;最大匹配算法;词典机制
中图分类号tp39 文献标识码a 文章编号 1674-6708(2011)53-0164-02
0引言
在自然语言处理中,“词是最小的能够独立活动的有意义的语言成分”[1],而汉语和英语等其它西文比起来,有着自身的特点。
英语、法语等欧美语言在书写时就以词为基本构成单位,以空格作为分词的依据;而汉语在书写时是一大串汉字的字符串,从形式上根本没有词的概念。
中文分词指的就是将一个汉字序列切分成一个一个单独的具有实际意义的词,它是中文信息处理的基础。
中文自动分词的现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法[2]。
在基于字符串匹配的分词算法中,词典的设计往往对分词算法的效率有很大的影响。
本文通过对影响正向最大匹配算法效率因素的分析,设计一种带词长信息的分词词典,同时在该词典基础上,对正向最大匹配算法做出一些改进,以提高分词的效率。
1正向最大匹配分词算法介绍和分析
1.1 正向最大匹配分词算法介绍
最大匹配算法是最基本的字符串匹配算法之一,它能够保证将词典中存在的最长复合词切分出来。
传统的正向最大匹配分词算法(maximum matching,简称mm算法)的算法流程如图1所示。
图1 mm 算法流程图
假设分词词典中的最长词的字数为m,令其作为最大匹配系数。
假设读取的汉字序列字数为l,判断l是否小于最大匹配系数m。
如果l大于最大匹配系数m,则截取前m个汉字作为待匹配字段进行匹配,否则取整个汉字序列作为待匹配字段直接在分词词典中进行匹配。
若字典中存在这样一个字数为m的词,则匹配成功,匹配字段被作为一个词切分出来;若词典中找不到这样的词,则匹配失败,将待匹配字段中的最后一个字去掉,将剩下的汉字序列作为待匹配字段重新在字典中进行匹配处理……如此进行下去,直到匹配成功,即切分出一个词,或者直到剩余字串的长度为1为止,即为一个单字。
这样就完成了一轮查找匹配,然后取剩下的汉字序列以同样的方法进行匹配处理,直到文档被扫描完为止。
1.2算法分析
正向最大分词算法有个弊端,就是在算法开始前必须先预设一个匹配词长的初始值,而一般这个值是词典中最长词的长度,这个长度限制是最大匹配算法在效率与词长之间的一种折中。
词长过长效率就比较低,词典中各个词的长度都不一致,有点较长,而有的
却只是二字词或三字词。
如果词长过长,在查找短字词时,将会出现许多无效的匹配,这在很大程度上影响了分词的效率。
而如果初始值选取的过小,那么长词就不能得到有效的切分,达不到最大分词的目的。
根据汉语中词条的分布情况统计,在汉语中双字词语最多,而4字以上的词则比较少,如下表所示。
可见,当初始值设置过长时,无效匹配的次数将在很大程度上消耗算法的效率。
表1 词条分布情况表
同时,在确定了词首字,在字典开始查找后,在以该词首字为前缀的词语中,词的长度一般都不是逐字减少的。
比方说该字可能包含一个10字长的词语,但是并不含有9字,8字长的词语,而这时如果还是采用逐字减一的方法去匹配,又将增加无效匹配的次数,影响算法的效率。
2 改进的正向最大匹配分词算法
针对如上对正向最大匹配分词算法的分析,得出该算法在效率上存在的缺陷主要有:一固定最大匹配系数,二逐字递减的匹配。
算法改进时将在这两方面做文章,使最大匹配系数能以词首字的改变而动态改变,同时在减字匹配过程中,不是每次都逐字减一再去字典匹配,而是利用词首字中包含的词长信息,来不定长的减字,以减少无效匹配的次数,从而在一定程度上提高算法的效率。
2.1分词词典的设计
词典的组织结构为首字索引结构,所有以同一个字为首的词条都组织在一起。
词典由两部分组成,一部分是首字索引,另一部分是词典的正文。
索引部分由字和以该字为前缀的词条的词长信息两部分组成。
正文部分为词条内容和词条长度两部分信息组成。
其中词条长度是用来给词条排序的,以词长从大到小来组织词典的正文,同时在匹配过程中,先用词长比较来代替直接比较字符串的方法,在词长相等的情况下再比较字符序列,来提高匹配的效率,而且词长信息能有效的记录已查询列表的索应信息,从而在改变词长继续查找时,能高效地减少匹配次数。
其机构如图所示。
图2 词典结构
2.2分词算法
step1:取出待处理的汉字序列的首字,在首字hash表中查找,如果存在该字,则转step3;
step2:不存在则是单字,分出该单字word,转step6;
step3:取出该字的信息,包含词长信息和词典信息,转step4;
step4:遍历词长列表,按序分别取出词长设为匹配词长,然后在词典中查找,词典包含了词长值,在查找时先比较词长,若相等则再比较字符序列,转step5;
step5:如果存在某一词长匹配成功,则分出该词word,转step7;
step6:如果全部词长匹配都不成功,则说明是单字,分出该单字word,转step7;
step7:从待分词序列中去掉已分出的词word,若汉字序列没有分词结束,转step1,否则结束。
例如:对语料“中华人民共和国是一个强大的国家”,使用本算法的处理过程如下:
1)取序列首字“中”在首字hash表中查询,存在该字则取出该首字信息,遍历词长信息列表得到,以该字为前缀的最长词长为14,则再取序列中余下的13个字“华人民共和国是一个强大的国”,在词典中匹配,发现匹配不成功;再取下一个词长得到词长为10,取序列为“华人民共和国是一个”,还是不成功……直到词长为7时,匹配“中华人民共和国”成功,取出该词。
在匹配过程中,充分利用词长信息,在字符比较之前,先通过比较词长来筛选,在词长相等的情况下,才比较字符序列;
2)然后再取首字“是”,查找首字hash表,不存在以该字为前缀的词,分出单字“是”;
3)接着处理首字“强”,按照上述方法依次处理余下的字串;
4)最后得到的分词结果为:中华人民共和国/是/一个/强大/的/国家。
由以上的一次分词过程可以看出,动态设置最长匹配词长的方法,有效的避免和减少了传统mm算法(静态设置匹配词长的方法)的比较次数,大大的提高了长词匹配的效率。
同时,利用比较先词长再比较字符的方法,也在一定程度上提高的算法的效率。
3 结论
本文主要通过对影响正向最大匹配算法效率的因素的分析,提出对该算法的一些改进,以及设计了相应的词典结构,以在匹配过程中尽可能的减少了比较的次数,在一定程度上提高了分词的效率。
本文没有提供对歧义和未登录词的处理,而这是影响基于词典分词算法准确率的重要因素,这将是今后需要解决和处理的方向。
参考文献
[1]朱德熙.语法讲义[m].商务印书馆,1982.
[2]张启宇,朱玲,张雅萍.中文分词算法研究综述情报探索,2008,l1.
[3]胡锡衡.正向最大匹配法在中文分词技术中的应用[j].鞍山师范学院学报,2008,10(2):42-45.
[4]孙茂松,左正平,黄昌宁.汉语自动分词词典机制的实验研究[j].中文信息学报,2000,14(1):1-7.。