前向分词最大匹配算法

举报
技术火炬手 发表于 2019/09/20 15:43:26 2019/09/20
【摘要】 分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格,可以将中文分词方法简单归纳为:基于词表的分词方法基于统计的分词方法基于序列标记的分词方法其中,基于词表的分词方法最为简单,根据起始匹配位置不同可以分为:前向最大匹配算法后向最大匹配算法双向最大匹配算法三种方法思想都很简单,今天我们用python实现前向最大匹配算法。前向最大匹配算法,顾名思义,就是从待分词句子的左边向右边...

分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格,可以将中文分词方法简单归纳为:

  1. 基于词表的分词方法

  2. 基于统计的分词方法

  3. 基于序列标记的分词方法

其中,基于词表的分词方法最为简单,根据起始匹配位置不同可以分为:

  1. 前向最大匹配算法

  2. 后向最大匹配算法

  3. 双向最大匹配算法

三种方法思想都很简单,今天我们用python实现前向最大匹配算法。

前向最大匹配算法,顾名思义,就是从待分词句子的左边向右边搜索,寻找词的最大匹配。我们需要规定一个词的最大长度,每次扫描的时候寻找当前开始的这个长度的词来和字典中的词匹配,如果没有找到,就缩短长度继续寻找,直到找到字典中的词或者成为单字。

下面是我的代码。

word_dict = [             ]
test_str = (text):
        text:
                (text) == :
        text

        text word_dict:
        text
    :
        small = (text) -         text = text[:small]
        getSeg(text)


():
    test_strword_dict
    test_str = test_str.strip()
        max_len = ((word) word word_dict)
    result_str = []      result_len =     (test_str)
    test_str:
        tmp_str = test_str[:max_len]
        seg_str = getSeg(tmp_str)
        seg_len = (seg_str)
        result_len = result_len + seg_len

        seg_str.strip():
            result_str.append(seg_str)
        test_str = test_str[seg_len:]

    (result_str)


__name__ == :
    main()

看一下分词的结果吧!

image.png

本文来自:机器在学习

原文链接:http://www.siyuanblog.com/?p=114964

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。