java中文分词算法_Java实现逆向最大匹配中文分词算法
寫道
//Java實現逆向最大匹配中文分詞算法
public class SplitChineseCharacter {
public static void main(String[] args) {
String input = "太好了,今天是星期六啊"; // 要匹配的字符串
new Split(input).start();
}
}
class Split {
private String[] dictionary = {"今天","是","星期","星期六"}; //詞典
private String input = null;
public Split(String input) {
this.input = input;
}
public void start() {
String temp = null;
for(int i=0;i
temp = this.input.substring(i); // 每次從字符串的首部截取一個字,并存到temp中
// System.out.println("*****" + temp + "*********" + this.input);
// 如果該詞在字典中, 則刪除該詞并在原始字符串中截取該詞
if(this.isInDictionary(temp)) {
System.out.println(temp);
this.input = this.input.replace(temp, "");
i = -1; // i=-1是因為要重新查找, 而要先執行循環中的i++
}
}
// 當前循環完畢,詞的末尾截去一個字,繼續循環, 直到詞變為空
if(null != this.input && !"".equals(this.input)) {
this.input = this.input.substring(0,this.input.length()-1);
this.start();
}
}
//判斷當前詞是否在字典中
public boolean isInDictionary(String temp) {
for(int i=0;i
if(temp.equals(this.dictionary[i])) {
return true;
}
}
return false;
}
}
/**
過程分析:
第一詞循環:
太好了,今天是星期六啊
好了,今天是星期六啊
了,今天是星期六啊
,今天是星期六啊
今天是星期六啊
天是星期六啊
是星期六啊
星期六啊
期六啊
六啊
啊
第一次循環沒有找到,則從“太好了,今天是星期六啊”中把最后一個截取,開始第二次循環
第二次循環:
太好了,今天是星期六
好了,今天是星期六
了,今天是星期六
,今天是星期六
今天是星期六
天是星期六
是星期六
星期六 --------->輸出:星期六,并在原字符串中截去“星期六”-->變為“太好了,今天是”
太好了,今天是
好了,今天是
了,今天是
,今天是
今天是
天是
是 ----------> 輸出:是, 并在原字符串中截去“是”-->變為“太好了,今天”
直到原字符串變為空。
*/
總結
以上是生活随笔為你收集整理的java中文分词算法_Java实现逆向最大匹配中文分词算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自主可控的安全关键领域国产工业软件Sky
- 下一篇: java中对象类型转换_Java中的对象