NLP-汉语分词

来源:互联网 发布:swift for windows 编辑:程序博客网 时间:2024/05/20 19:32

这一次的作业是对汉语句子进行分词。原理很简单,就是将字典中存在的词组存起来。再将句子中可能的切分方式依次进行比对,找出字典中存在的最大匹配项作为一次分词。因为不涉及到歧义消除,所以只需要将词组分出来即可。需要进行两种方法,正向最大匹配(FMM)和逆向最大匹配(RMM)。

我用的是最简单、复杂度应该是最高的方法。就是有两个下标,一个开始下标、一个结束下标。分别移动下标来找匹配的分词,找到一个匹配分词就记录下来,然后再继续移动结束下标。如果发现更大的匹配词就丢弃前一个,记录下这一个。如果一直到句子最后都没有更大的匹配词,则说明当前记录下的那一个就是最大的匹配词。然后将已经匹配的词存起来,接着处理之后的句子。需要特别注意的就是下标的移动,很容易就会出现越界的情况。

还有一些新的认识: 使用UTF-8编码输入中文之后,每一个下标对应一个汉字。 而不是C中的一个汉字占两个字节,所以需要两个下标。

调程序的时候遇到一个很奇怪的问题,就是用标准输入流接受字符串输入的时候,第一次没问题,第二次接收输入字符串,然后存进String对象里,再输出出来的时候,前面就会莫名其妙的多一些英文字母。后来想到了一个解决的办法,就是每次接收输入之后,都把输入流reset()一下,就再也没有出现过这种情况了。



0 0
原创粉丝点击