用python实现前向分词最大匹配算法的示例代码


Posted in Python onAugust 06, 2020

理论介绍

分词是自然语言处理的一个基本工作,中文分词和英文不同,字词之间没有空格。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。

可以将中文分词方法简单归纳为:

1.基于词表的分词方法
2.基于统计的分词方法
3.基于序列标记的分词方法

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

1.前向最大匹配算法
2.后向最大匹配算法
3.双向最大匹配算法

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

word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词性标注、同义标注、反义标注、拼音标注等功能。同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。

前向最大匹配算法

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

具体代码实现

获取分词函数:getSeg(text)

def getSeg(text):
  # 句子为空
  if not text:
    return ''

  # 句子成为一个词
  if len(text) == 1:
    return text

  # 此处写了一个递归方法
  if text in word_dict:
    return text
  else:
    small = len(text) - 1
    text = text[0:small]
    return getSeg(text)

主函数:main()

def main():
  global test_str, word_dict
  test_str = test_str.strip()
  # 正向最大匹配分词测试 最大长度5
  max_len = max(len(word) for word in word_dict)
  result_str = [] # 保存分词结果
  result_len = 0
  print('input :', test_str)
  while test_str:
    tmp_str = test_str[0:max_len]
    seg_str = getSeg(tmp_str)
    seg_len = len(seg_str)
    result_len = result_len + seg_len

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

  print('output :', result_str)

字典:

word_dict = ['混沌', 'Logistic', '算法', '图片', '加密', '利用', '还原', 'Lena', '验证', 'Baboon', '效果']

测试句子:

test_str = '''一种基于混沌Logistic加密算法的图片加密与还原的方法,并利用Lena图和Baboon图来验证这种加密算法的加密效果。'''

分词结果

用python实现前向分词最大匹配算法的示例代码

到此这篇关于用python实现前向分词最大匹配算法的示例代码的文章就介绍到这了,更多相关python 前向分词最大匹配算法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python 3.x 连接数据库示例(pymysql 方式)
Jan 19 Python
python3利用Dlib19.7实现人脸68个特征点标定
Feb 26 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
django的auth认证,authenticate和装饰器功能详解
Jul 25 Python
python实现字典嵌套列表取值
Dec 16 Python
基于Python的OCR实现示例
Apr 03 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
python计算auc的方法
Sep 09 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
python实现简单的学生管理系统
Feb 22 Python
Python爬虫防封ip的一些技巧
Aug 06 #Python
Python无损压缩图片的示例代码
Aug 06 #Python
通过实例简单了解python yield使用方法
Aug 06 #Python
Python切片列表字符串如何实现切换
Aug 06 #Python
Python爬虫爬取微信朋友圈
Aug 06 #Python
Python变量及数据类型用法原理汇总
Aug 06 #Python
基于logstash实现日志文件同步elasticsearch
Aug 06 #Python
You might like
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
js切换div css注意的细节
2012/12/10 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
react的hooks的用法详解
2020/10/12 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python中的引用和拷贝浅析
2014/11/22 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
python检索特定内容的文本文件实例
2018/06/05 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
岗位竞聘报告范文
2014/11/06 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书