双数组原理在分词字典中的应用
2015-01-08 22:28
218 查看
首先是将分词字典构造成检索树。通常情况下,分词字典是完全的文本文件,其中每一行代表一个词
例如表3-1所示的字典可以构造成如图3-8所示字典检索树的形式。
由此一来,当利用该字典进行分词时,可以将待匹配字符串作为状态转移的字符输入,在字典检索树中进行遍历,从而判断该字符串是否为字典中存在的词。其算法如下:
1 Begin
2 c = FirstCharacter(s); //s为待匹配字符串
3 while(c不为空)
4 Begin
5 if(NoBrunchInDictionary(c)) //无转移路径
6 return false;
7 endif
8 c = NextCharacter(s);
9 End
10 if(此时状态为结束状态)
11 return true;
12 else
13 return false;
14 endif
15End
字典检索树在计算机中可以利用双数组进行存储。当分词系统频繁的调用分词字典进行分词时,由于系统对分词字典进行了索引并采取了双数组原理进行性能优化,从而使分词速度得到极大提高。
例如表3-1所示的字典可以构造成如图3-8所示字典检索树的形式。
由此一来,当利用该字典进行分词时,可以将待匹配字符串作为状态转移的字符输入,在字典检索树中进行遍历,从而判断该字符串是否为字典中存在的词。其算法如下:
1 Begin
2 c = FirstCharacter(s); //s为待匹配字符串
3 while(c不为空)
4 Begin
5 if(NoBrunchInDictionary(c)) //无转移路径
6 return false;
7 endif
8 c = NextCharacter(s);
9 End
10 if(此时状态为结束状态)
11 return true;
12 else
13 return false;
14 endif
15End
字典检索树在计算机中可以利用双数组进行存储。当分词系统频繁的调用分词字典进行分词时,由于系统对分词字典进行了索引并采取了双数组原理进行性能优化,从而使分词速度得到极大提高。
相关文章推荐
- 数组和字典的组合应用
- Linux 字典数组应用
- 数状数组的原理与应用
- Swift数组字典基本定义控制流基本应用
- Uva 10815 安迪的第一个字典 set数组应用实例
- iOS 字典和数组写入plist文件存到应用沙盒当中(含读取)
- 数组和字典的应用数据
- IOS自定义NSLOG和断言的使用/description方法的使用原理(对象,数组,字典)
- Swift中的调用函数及字典数组的应用
- 后缀数组原理及应用详解
- 数组与字典的应用
- 字典+数组的应用——省市区
- 浅谈差分数组的原理及简单应用
- 从面向结构到面向对象-----josephus问题(方法一:数组的应用)
- COM多线程原理与应用
- 菜鸟QiFang学数据结构系列(一):一维数组的高级应用--一个可容纳超多位数的求N!的程序!
- 看了"com原理及应用"之后
- TCP三次握手应用及原理