用java如何解析(任意)一句话中的词
2017-05-08 14:15
239 查看
要解析一句话中的词,首先必须也就越要有自己的词库,其次才是要有我们自己的解析规则。
解析一句话里面的词,我们最容易想到的是从左向右(或者从右往左)先匹配字数最多的情况,然后逐渐减小字数匹配。下面以"我是中华人民共和国中央人民政府的合法公民"为例解析出词。由于没有词库我写一个字符数组chiku={"中华人民共和国中央人民政府",
"中华人民共和国",
"中华人民共和",
"中华人民",
"人民共和",
"中华",
"人民",
"共和",
"中央",
"中央人民政府",
"人民政府",
"政府",
"公民",
"华人",
"合法公民"
};用java实现为
public class MyTest {
private static String[] chiku={"中华人民共和国中央人民政府",
"中华人民共和国",
"中华人民共和",
"中华人民",
"人民共和",
"中华",
"人民",
"共和",
"中央",
"中央人民政府",
"人民政府",
"政府",
"公民",
"华人",
"合法公民"
};
public static void main(String[] args) {
//Scanner scan= new Scanner(System.in);
//System.out.println("请输入一段话:");
//
//String str=scan.nextLine();
String str="我是中华人民共和国中央人民政府的合法公民";
String sc=jiexi(str);
System.out.println("解析后为:"+sc);
}
private static String jiexi(String str) {
// TODO Auto-generated method stub
int len=str.length();
if (pipei(str) ||len== 1) {
return str;
} else {
String lift = null,right = null;
for(int i=len-1;i>0;i--){
lift=str.substring(0,i);
right=str.substring(len-i,len);
if(pipei(lift)){
lift=str.substring(0,i);
right=str.substring(i,len);
break;
}else if(pipei(right)){
lift=str.substring(0,len-i);
right=str.substring(len-i,len);
break;
}
}
return jiexi(lift) + "/"+jiexi(right);
}
}
private static boolean pipei(String str) {
// TODO Auto-generated method stub
for(int i=0;i<chiku.length;i++){
if(str.equals(chiku[i])||str.length()==1){
return true;
}
}
return false;
}
}
解析一句话里面的词,我们最容易想到的是从左向右(或者从右往左)先匹配字数最多的情况,然后逐渐减小字数匹配。下面以"我是中华人民共和国中央人民政府的合法公民"为例解析出词。由于没有词库我写一个字符数组chiku={"中华人民共和国中央人民政府",
"中华人民共和国",
"中华人民共和",
"中华人民",
"人民共和",
"中华",
"人民",
"共和",
"中央",
"中央人民政府",
"人民政府",
"政府",
"公民",
"华人",
"合法公民"
};用java实现为
public class MyTest {
private static String[] chiku={"中华人民共和国中央人民政府",
"中华人民共和国",
"中华人民共和",
"中华人民",
"人民共和",
"中华",
"人民",
"共和",
"中央",
"中央人民政府",
"人民政府",
"政府",
"公民",
"华人",
"合法公民"
};
public static void main(String[] args) {
//Scanner scan= new Scanner(System.in);
//System.out.println("请输入一段话:");
//
//String str=scan.nextLine();
String str="我是中华人民共和国中央人民政府的合法公民";
String sc=jiexi(str);
System.out.println("解析后为:"+sc);
}
private static String jiexi(String str) {
// TODO Auto-generated method stub
int len=str.length();
if (pipei(str) ||len== 1) {
return str;
} else {
String lift = null,right = null;
for(int i=len-1;i>0;i--){
lift=str.substring(0,i);
right=str.substring(len-i,len);
if(pipei(lift)){
lift=str.substring(0,i);
right=str.substring(i,len);
break;
}else if(pipei(right)){
lift=str.substring(0,len-i);
right=str.substring(len-i,len);
break;
}
}
return jiexi(lift) + "/"+jiexi(right);
}
}
private static boolean pipei(String str) {
// TODO Auto-generated method stub
for(int i=0;i<chiku.length;i++){
if(str.equals(chiku[i])||str.length()==1){
return true;
}
}
return false;
}
}
相关文章推荐
- Java中如何解析XML文件
- 如何用Java 实现 Excel 表达式的解析(摘自:http://topic.csdn.net/t/20030408/17/1634982.html#)
- java如何利用google map api V3进行地址解析、反向地址解析
- java利用dom4j对任意xml的解析
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- java如何解析xml
- [转]Java反射之如何判断类或变量、方法的修饰符(Modifier解析)
- Java中如何解析XML文件
- 得瑟一下jdk源代码解析,如何在运行时修改java final变量
- Java反射之如何判断类或变量、方法的修饰符(Modifier解析)
- 【总结】java命令解析以及编译器,虚拟机如何定位类
- 【总结】java命令解析以及编译器,虚拟机如何定位类
- java对xml进行的DOM 解析以及如何对网站数据进行加密
- java如何解析json字符串(List<Map<String,Object>成功的类型)
- Java反射之如何判断类或变量、方法的修饰符(Modifier解析)
- JAVA如何在任意方法中打印当前线程栈信息(StackTrace)
- 解析Json文本——如何将Json文本转化为Java对象
- Java 如何解析XML
- java如何利用google map api V3进行地址解析、反向地址解析
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式