自然语言处理--中文分词之机械分词

说到自然语言处理,对于中文首当其冲的就是分词。

    和西方语言不同,中文句子中不像英语,每个单词间有空格隔开,而是全部连在一起,词间没有明显的界限。这就为我们的翻译、检索等等更高级的信息处理带来了不小的麻烦,怎样将一句话中的关键词提取出来,便成为了中文信息处理首先要解决的问题,这就是我们所谓的分词。

    现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

 

    我们就先说说基于字符串匹配的分词方法(也成为机械分词,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功)吧,目前机械分词有这样几种方法: 

      1)正向最大匹配法(由左到右的方向)

    2)逆向最大匹配法(由右到左的方向)

    3)最少切分(使每一句中切出的词数最小)

      4)还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。

   

    下面就是我要说的第一种机械分词的方法:正向最大匹配。

 

    那么我们先来看个例子:

        “我现在非常开心”

    对于这句话,正向最大匹配的原则是什么呢?“正向”就指我们从左至右搜索,“最大”就是我们每次都取最大词长进行匹配(由于中文有单字成词的特点)。

    首先,假如词典中的最长词长度为4,我们从第一个字开始向右取4个字:“我现在非”,然后去与词典中的词一一进行匹配,显然词典中没有这么个词,我们就将最后一个字去掉变成:“我现在”,然后再到词典中进行匹配。一直到“我”匹配成功,我们就将我与整个句子切分开来:“我/现在非”;

    然后呢?“我”已经作为一个词切分出来了,我们便从下一个字继续取4个字(“现在非常”)作为一个词去匹配,继而切出“现在/非常”。之后依次类推。。。。

    最后就切成了:我/现在/非常/开心

 

    简单吧?这样大家也容易明白逆向最大匹配了吧?我们从句尾也就是由右至左进行搜索。步骤和上述的正向最大匹配是一样的,只是我们从右边往左去取词:(假如我们依旧选择4为最大词长)

    第一次选择的就是“非常开心”,词典中没有这个词,便删去第一个字变为:“常开心”,直到分成:“非常/开心”。

    然后呢?继续向左取:“现在非常”。。。

    之后的与上述一样,最终便分为:我/现在/非常/开心

 

    然后呢?两种方法一样啊?分出来的结果也一样啊?其实不然,机械分词法德局限也就在此,而这个问题也是基于词典方法的分词最难攻克的难题:歧义和未登录词。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 

        例如:其实在哪里都一样

        正向的结果:其实/在/哪里/都/一样

        逆向的结果:其/实在/哪里/都/一样

  哦,不一样了吧,其实和实在,这就是歧义(当然了,这里指的歧义并不是句子理解的歧义,而是分词的歧义)我们当然会说第一个好了,那是因为你能够理解这句话,或者说电脑并不具备这样的理解能力或常识。到底是分成什么呢?对于这句话正向的结果更贴近我们的理解,但是正向一定好吗?

 

        再例如:化妆和服装

        正向的结果:化妆/和服/装

        逆向的结果:化妆/和服/装

  这可怎么办?好像对于这句话看来,逆向的又更准确些。

    歧义分为交集型歧义和组合型歧义,还有人名啊、地名啊、机构名啊神马的,哎,分词就像一锅菠菜粥,太多了,不说了。。。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

    一般来说,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

    然而,我们在自然语言处理中会遇到的歧义有很多种,刚说到的这些只是冰山一角。不过我打算着,下一篇的内容还是有个连续性吧,准备一下基于理解的分词方法吧。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值