您当前的位置: 首页 >  算法

zmc@

暂无认证

  • 1浏览

    0关注

    142博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

mmseg分词算法思路分析(中文新闻分词实测结论总结)

zmc@ 发布时间:2018-08-08 20:11:57 ,浏览量:1

首先先介绍一下mmseg分词算法,再详细分析新闻分词所用分词方式及其逻辑。

(一)mmseg分词算法

mmseg是一个非常好用的分词器,开箱即用。那么为什么还要了解其算法呢?

1.没有任何一样技术可以直接适用于任何场景,了解其算法才能知道什么场景适合用这个算法。

2.了解算法才能知道最终产品的性能受到该分词环节的影响有多大,以便优化。

简介:

mmseg算法是基于词典匹配的算法;

拓展:另一分支是基于统计模型的分词方式,可Google查阅,暂不记录。

拓展:还有一种基于树的词库构建方式,非常便于分词和精确全文检索(当然查全率和查准率不可同时最优)。

算法流程:

文本通过分词系统,首先通过匹配算法和词典进行匹配,再根据消歧规则将最终的分词结果输出;

分词过程用到了三个词典:chars.dic,units.dic,words.dic

词典:chars.dic(汉字字典)

           units.dic(中文单位词语)

           words.dic(自定义词典)----该词典可用于自己添加新的词汇,如刚出现的一些新名词;

MMSEG分为“匹配算法(Matching algorithm)”和“消除歧义的规则(Ambiguity resolution rules)”这两部分。

“匹配算法”是说如何根据词典里保存的词语,对要切分的语句进行匹配(正向?逆向?粒度?);

“消除歧义的规则”是说当一句话可以这样分,也可以那样分的时候,用什么规则来判定使用哪种分法;

MMSEG的“匹配方法”有两种: 1.Simple方法,即简单的正向匹配,根据开头的字,列出所有可能的结果。比如“研究生命起源”,可以得到 研究 研究生 研究生命 研究生命起源 这四个匹配结果(假设这四个词都包含在词典里)。 2.Complex方法,匹配出所有的“三个词的词组”,即从某一既定的字为起始位置,得到所有可能的“以三个词为一组”的所有组合。(若一句话切分不出三个词,比如只能切成两部分,也可以存在)比如“研究生命起源”,可以得到

研_究_生
研_究_生命
研究生_命_起源
研究_生命_起源
/**
     * 得到所有候选词
     * @param text 文本
     */
    private void getCandidateWord(String text){
        candidateWord=new ArrayList();
        int rest_len;
        int n=text.length();
        String word;
        for(int offset=0;offset            
关注
打赏
1643271353
查看更多评论
0.0373s