专栏首页NLP算法工程师之路中文分词算法总结

中文分词算法总结

最大匹配算法

基于词典的双向匹配算法的中文分词算法的实现。 例子:[我们经常有意见分歧] 词典:[我们,经常,有,有意见,意见,分歧]

前向最大匹配

先设定扫描的窗口大小maxLen(最好是字典最长的单词长度),从左向右取待切分汉语句的maxLen个字符作为匹配字段。查找词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来,并将窗口向右移动这个单词的长度。若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。

后向最大匹配

该算法是正向的逆向算法,区别是窗口是从后向左扫描,若匹配不成功,则去掉第一个字符,重复上述的匹配步骤。

双向最大匹配

双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。定义的匹配规则如下:

  1. 如果正反向匹配算法得到的结果相同,我们则认为分词正确,返回任意一个结果即可。
  2. 如果正反向匹配算法得到的结果不同,则考虑单字词、非字典词、总词数数量的数量,三者的数量越少,认为分词的效果越好。我们设定一个惩罚分数(score_fmm / score_bmm = 0),例如:正向匹配中单字词数量多于反向匹配,则正向匹配的分值score_fmm += 1。其他两个条件相同。可以根据实际的分词效果调整惩罚分数的大小,但由于没有正确分词的数据,因此惩罚分数都设为1。最后比较惩罚分数,返回较小的匹配结果。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 海量数据相似度——局部敏感哈希(LSH)

    海量高维数据查找与某个数据最相似的一个或者多个数据。与其它基于Tree的数据结构,诸如KD-Tree、SR-Tree相比,它较好地克服了Curse of Dim...

    故事尾音
  • Hadoop集群基本配置

    安装完成后,可以使用下面命令进行测试: ssh localhost 输入root账户的密码,如果可以正常登录,则说明SSH安装没有问题。测试正常后使用exit命...

    故事尾音
  • 轻量终端打印工具:wasabi

    故事尾音
  • 优秀攻城师必知的正则表达式语法

    最近公司的一个项目,大量用到了正则来处理文本,以前对正则使用仅限于小打小闹,用的也是一知半解,经过本次的深入使用,发现正则表达式真的是每一位开发者都需要具备的一...

    我是攻城师
  • grep中使用"\d"匹配数字不成功的原因

    首先正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs,perl RegExs)

    程序手艺人
  • AI综述专栏 | 非精确图匹配方法综述

    在科学研究中,从方法论上来讲,都应先见森林,再见树木。当前,人工智能科技迅猛发展,万木争荣,更应系统梳理脉络。为此,我们特别精选国内外优秀的综述论文,开辟“综述...

    马上科普尚尚
  • 正则表达式

    \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\...

    racaljk
  • 正则表达式简介

    正则表达式(Regular Expression),又称规则表达式,在代码中常简写作regex、regexp或RE。正则表达式通常用来检索、替换那些符合某个模式...

    Dabelv
  • awk-grep-sed简单使用总结(正则表达式的应用)

    正则表达式: 匹配一组字符: #[ns]a.\.xls  //[]用于限定字符;“.”用于匹配任意字符; \.用于转义"." 匹配到s/na*.xls  [n...

    BGBiao
  • 正则表达式之入门篇

    本文主要通过对正则表达式的语法进行一些简单的介绍,从而让没有接触过或者想学习正则表达式的同学有一个基础的了解,从而能够看懂和编写使用一般的正则表达式。

    黄Java

扫码关注云+社区

领取腾讯云代金券