根据原理自己实现的,可能实现方式不好,也没有考虑资源浪费问题,只是简单地实现了该算法
1.[代码][Java]代码
//Java实现反向最大匹配中文分词算法
publicclasssplitchinesecharacter {
publicstaticvoidmain (字符串[ ] args ) {
String input='太好了,今天是星期六啊'; //匹配字符串
newsplit(input ).start );
}
}
class Split {
private String[] dictionary={ '今天','是','星期几','星期六' }; //词典
private string input=空;
公共分离(字符串输入)。
this.input=input;
}
公共语音开始(
string temp=空;
for(intI=0; I
TEMP=this.input.substring(I; //从字符串的开头开始一个字符一个字符地切下来,并存于temp中
//system.out.print ln (* * * * * ' temp ' * * * * * * * * * * ' this.input );
//如果该词在词典中,则删除该词,在原字符串中切出该词
if(this.isindictionary(temp ) )
system.out.println(temp );
this.input=this.input.replace (temp,' ';
i=-1; //i=-1是为了再次检索,先执行循环内I的缘故
}
}
//当前循环完成后,在单词末尾切一个单词,继续循环直到单词变空
if (空!=this.input! ' '.equals(this.input ) ) }
this.input=this.input.substring (0,this.input.length )-1 );
this.start (;
}
}
//判断当前单词是否在词典中
公共关联目录(string temp )
for(intI=0; I
if (temp.equals (this.dictionary [ I ] ) )
返回真;
}
}
返回假;
}
}
//*
流程分析:
第一个单词循环:
好啊。 今天是星期六啊
是的,今天是星期六吧
今天已经是星期六了
今天是星期六啊
今天是星期六啊
今天是星期六吧
是星期六吧
是星期六吧
期六啊
是六吧
啊啊
如果找不到第一个循环,请从“太好了,今天是星期六”中切出最后一个循环,开始第二个循环
第二个循环:
好啊。 今天是星期六
是的,今天是星期六
是的,今天是星期六
今天是星期六
今天是星期六
天空是星期六
是星期六
星期六---------输出:星期六,然后用原来的字符串划“星期六”---“太好了,今天”
太好了,今天
是的,今天
是的,今天
今天
今天下雨
天啊
好的----------输出:好的,然后用原来的字符串接"好的"---"太好了,今天"
水平。
水平。
水平。
直到原始字符串为空。
*/