入门1+1版正向最大匹配法简单实现
来源:互联网 发布:linux配置dhcp服务器 编辑:程序博客网 时间:2024/04/29 06:08
几年前写在iteye上的唯一一篇博客,直接上代码,算法太简单就不解释了,希望可以帮助初学者有个快速的初步认识。
public class MywordSeg {
/**
*
* @param intputStr
* @param map
* @return
*/
public String wordSeg(String intputStr,Map map) {
int strLen = intputStr.length();
int startPoint = 0;// 起始位置。
int endPoint = 0;// 结束位置。
int MaxLength = 12;// 匹配所去字符串的最大值
boolean isFind = false;// 判断是否是词库中的词的。
String word=null;
java.lang.StringBuffer retValSb=new StringBuffer();
while (startPoint < strLen) {
int N = startPoint + MaxLength < strLen ? startPoint + MaxLength : strLen;//所要取出的字符串或者是词组的大小
isFind = false;
// 正向最大匹配
for (endPoint = N; endPoint > startPoint+1; endPoint--) {
word = intputStr.substring(startPoint, endPoint);
if(map.get(word)!=null){
isFind=true;
startPoint=endPoint;
retValSb.append(word).append(",");
break;//跳出for循环
}
}
if(isFind==false){
word= intputStr.substring(startPoint, startPoint+1);
++startPoint;
}
}
return retValSb.toString();
}
public static void main(String[] arg){
MywordSeg seq=new MywordSeg();
//构建最简单的Map字典
Map map=new HashMap();
map.put("中文", 1);
map.put("aa", 1);
System.out.println(seq.wordSeg("11111",map));
}
}
public class MywordSeg {
/**
*
* @param intputStr
* @param map
* @return
*/
public String wordSeg(String intputStr,Map map) {
int strLen = intputStr.length();
int startPoint = 0;// 起始位置。
int endPoint = 0;// 结束位置。
int MaxLength = 12;// 匹配所去字符串的最大值
boolean isFind = false;// 判断是否是词库中的词的。
String word=null;
java.lang.StringBuffer retValSb=new StringBuffer();
while (startPoint < strLen) {
int N = startPoint + MaxLength < strLen ? startPoint + MaxLength : strLen;//所要取出的字符串或者是词组的大小
isFind = false;
// 正向最大匹配
for (endPoint = N; endPoint > startPoint+1; endPoint--) {
word = intputStr.substring(startPoint, endPoint);
if(map.get(word)!=null){
isFind=true;
startPoint=endPoint;
retValSb.append(word).append(",");
break;//跳出for循环
}
}
if(isFind==false){
word= intputStr.substring(startPoint, startPoint+1);
++startPoint;
}
}
return retValSb.toString();
}
public static void main(String[] arg){
MywordSeg seq=new MywordSeg();
//构建最简单的Map字典
Map map=new HashMap();
map.put("中文", 1);
map.put("aa", 1);
System.out.println(seq.wordSeg("11111",map));
}
}
- 入门1+1版正向最大匹配法简单实现
- python 实现机械分词(1)-正向最大匹配算法
- 分词学习(1)--正向最大匹配分词
- 分词算法的python实现(正向最大匹配法)
- 最大正向匹配算法 PHP实现
- java实现正向最大匹配分词
- Java实现正向最大匹配法和逆向最大匹配法
- 使用正向最大匹配算法实现中文分词简单模型-用trie树实现
- 使用正向最大匹配算法实现中文分词简单模型-用trie树实现
- 一个简单最大正向匹配(Maximum Matching)MM中文分词算法的实现
- NLP中文信息处理---正向最大匹配法分词
- 中文分词-- 正向最大匹配法分词
- 最大正向匹配算法
- 最大正向匹配
- 正向最大匹配
- 最大正向匹配
- 简单的asp分词算法(正向最大匹配)
- Python实现基于最大长度的正向最大值匹配算法
- iframe父页面修改子页面的数据
- Spring 简单定时器
- Struts2 Action 配置方式
- java快速排序实现
- java直接插入排序(扑克排序)
- 入门1+1版正向最大匹配法简单实现
- struts validation框架xml验证
- s2sh sessionfactory配置
- struts2 annotation配置
- 解决jquery的$对象冲突
- MyBatis 简单实例
- MyBatis3整合spring MVC注解
- windows上代码里中文注释拷贝到liunx下出现乱码的解决方法
- OAuth问题总结