大数据搜索引擎课程设计——中文分词算法设计与实现

原文链接:http://www.facesjoy.cn/article/2019/10/21/12.html

一、 实验目的

     了解中文分词意义

     掌握中文分词的基本方法

二、 实验环境

     Win10 64 位

     JDK8.0

三、 实验设计

(一)分词策略

       目前较为成熟的中文分词方法主要有:

         1.基于词表的分词算法

         2.基于统计模型的分析算法

         3.基于序列标注的分词算法

       我设计的是基于词表的分词算法,其中运用了正向最大匹配法和逆向最大 匹配法结合的方式。基本思路是:

   1. 正向最大匹配法(FMM):

       概念:对于输入的一个文本序列从左至右,以贪心的算法切分出当前位

       分词原理:单词的颗粒度越大,所能表示的含义越确切

       分词步骤:首先我们有一个词库 worddict2.txt 还一个待分词的字符串 s,首先我们计算得到词库中最长词语的长度假设为 m,从字符串第一个位置开 始,选择一个最大长度的词长片段,如果该字符串的长度不足最大词长,则选择 该全部字符串;判断选择出来的字符串片段是否在词库中,若在,则将此词分离出来,若不在, 则从右边开始,逐一减少一个字符,直到这个片段存在在词典中结束,或者以只 剩下最后一个字结束;字符串变为上一步截取分词后剩下的部分序列,直到序列完全被分割。

    2. 逆向最大匹配法(BMM):

       如果比较深入的理解了正向最大匹配算法中所说的正向最大匹配,那么只要 将正向从左至右筛选的顺序换成从右至左筛选就好了。

       其实大部分的情况下正向最大匹配法和逆向最大匹配法分词的结果都是一样 的,但是也存在不一样的哟,比如说'结婚的和尚未结婚的'通过 FMM 可能会被 分割成'结婚/的/和尚/未/结婚的/',但是通过 BMM 可能就会被分割成'结婚/的/ 和/尚未/结婚/的'。

    3. 双向最大匹配法:

       双向最大匹配法就是将正向和逆向最大匹配法进行比较得出最后分词结果, 在中文信息处理系统中被广泛运用。

       启发式规则:

        1. 如果正反向分析结果词数不同,则取分析数较少的那个

        2. 如果分词结果词数相同

         分词结果相同,就说明没有歧义,可返回任意一个

         分词结果不同,返回其中单字较少的那个

(二)程序设计

       查找算法: 哈希表

       汉字编码格式:UTF-8

      程序流程图:

                                                 大数据搜索引擎课程设计——中文分词算法设计与实现_第1张图片

                                 大数据搜索引擎课程设计——中文分词算法设计与实现_第2张图片

   源代码:https://download.csdn.net/download/qq_35268841/11890580

   免费下载地址

   结果和性能分析

      运行时间及分词结果:

                        大数据搜索引擎课程设计——中文分词算法设计与实现_第3张图片

四、 总结

总的来说,实验比较顺利。但是仍有无法解决的问题,例如因词 典不完善导致的部分词语分词错误或者因为格式不同导致的无法判 断等问题有待解决。

分词是中文自然语言处理的基础,在现实中已经得到广泛应用。 因此这个实验让我亲身体验了分词的实现过程,熟悉了分词程序的基 本结果,很有收获。

你可能感兴趣的:(Java)