用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调用java的Webservice示例
Mar 10 Python
python使用reportlab实现图片转换成pdf的方法
May 22 Python
老生常谈Python startswith()函数与endswith函数
Sep 08 Python
你真的了解Python的random模块吗?
Dec 12 Python
书单|人生苦短,你还不用python!
Dec 29 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
Python解析多帧dicom数据详解
Jan 13 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
python调试工具Birdseye的使用教程
May 25 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模板类代码
2008/09/07 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
python实现发送邮件功能代码
2017/12/14 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
python区块及区块链的开发详解
2019/07/03 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
外贸学院会计专业应届生求职信
2013/11/14 职场文书
实习护士自荐信
2014/06/21 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
员工自我评价范文
2015/03/11 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书