您的位置:首页 > 编程语言 > Java开发

用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;

}

}

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息