基于正向最大匹配算法的分词算法
来源:互联网 发布:电脑部分软件乱码 编辑:程序博客网 时间:2024/06/06 10:02
基于正向最大匹配算法的分词算法
1.算法描述:
最大匹配算法主要包括正向最大匹配算法、逆向最大匹配算法、双向匹配算法等。 其主要原理都是切分出单字串,然后和词库进行比对,如果是一个词就记录下来,否则通过增加或者减少一个单字,继续比较,一直还剩下一个单字则终止,如果该单字串无法切分,则作为未登录处理。
而本组采用的是正向最大匹配算法,假设分词词典中的最长词的字数为 M,令其作为最大匹配系数。假设读取的汉字序列字数为 L,判断 L 是否小于最大匹配系数M。如果 L 大于最大匹配系数 M,则截取前 M 个汉字作为待匹配字段进行匹配 ,否则取整个汉字序列作为待匹配字段直接在分词词典中进行匹配。若字典中存在这样一个字数为 M 的词 ,则匹配成功 ,匹配字段被作为一个词切分出来 ;若词典中找不到这样的词 ,则匹配失败 ,将待匹配字段中的最后一个字去掉,将剩下的汉字序列作为待匹配字段重新在字典中进行匹配处理……如此进行下去 ,直到匹配成功 ,即切分出一个词 ,或者直到剩余字串的长度为 1 为止 ,即为一个单字。这样就完成了一轮查找匹配 ,然后取剩下的汉字序列以同样的方法进行匹配处理 , 直到文档被扫描完为止。
2.代码:
public class MM { String Maxlen; ArrayList<String> dict; String filename; String s; String subs; String result = ""; public MM(String filename) { dict = new ArrayList<String>(); this.filename = filename; } //最大正向匹配算法 public String MMwork(int len, String sen) { while (sen.length() != 1) { while (true) { if (len < sen.length()) { s = sen.substring(0, len); } else { len = sen.length(); s = sen.substring(0, len); } if (dict.contains(s) || len == 1) { result = result + s + "/"; break; } else { len = len - 1; } } sen = sen.substring(len); len = 3; } result = result + sen + "/"; return result; } //载入字典,这里我是用的字典格式为 字,词性 例如:冮,nr 揳入,v public void readdict() throws IOException { try { File fileName = new File(filename); BufferedReader br = new BufferedReader(new FileReader(fileName)); String line; while ((line = br.readLine()) != null) { String[] element; element = line.trim().split(","); dict.add(element[0]); } } catch (FileNotFoundException fileNotFoundException) { System.out.println("找不到文件!"); } }}
注意:
字典格式的格式改为UTF-8不会乱码。
阅读全文
1 0
- 基于正向最大匹配算法的分词算法
- 【分词】正向最大匹配中文分词算法
- 分词】正向最大匹配中文分词算法
- 【分词】正向最大匹配中文分词算法
- 【分词】正向最大匹配中文分词算法
- 分词算法:正向最大匹配算法
- 正向最大匹配中文分词算法
- 正向最大匹配中文分词算法
- 正向最大匹配中文分词算法
- 正向最大匹配中文分词算法
- 正向最大匹配中文分词算法
- 简单的asp分词算法(正向最大匹配)
- 分词算法的python实现(正向最大匹配法)
- Python实现基于最大长度的正向最大值匹配算法
- 最大正向匹配算法
- NLP: 中文分词算法--正向最大匹配 Forward Maximum Matching
- 用正向和逆向最大匹配算法进行中文分词
- python 实现机械分词(1)-正向最大匹配算法
- 让你的程序有管理员权限
- 【JSON】简介
- 属性动画实现
- java junit (单元测试)测试工具如何使用?
- 常见的Http响应码
- 基于正向最大匹配算法的分词算法
- server
- 单身是最好的增值时期
- 各种解析度的水平及垂直参数的参考设置
- SQL Server 中关于EXCEPT和INTERSECT的用法
- Error: L6406E: No space in execution regions with .ANY selector matching
- 第七周项目1---建立顺序环形队列算法库
- Android实现微信弹出框效果
- c++对c语言上的增强