位置: 编程技术 - 正文

python中文分词教程之前向最大正向匹配算法详解(python中文分词库)

编辑:rootadmin

推荐整理分享python中文分词教程之前向最大正向匹配算法详解(python中文分词库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python 英文分词工具,python中文分词工具,python中文分词统计词频,python中文分词方向第三方库,python中文分词统计词频,python中文分词库,python中文分词库,python 英文分词工具,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

大家都知道,英文的分词由于单词间是以空格进行分隔的,所以分词要相对的容易些,而中文就不同了,中文中一个句子的分隔就是以字为单位的了,而所谓的正向最大匹配和逆向最大匹配便是一种分词匹配的方法,这里以词典匹配说明。

最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的。

正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配。

首先我们可以规定一个词的最大长度,每次扫描的时候寻找当前开始的这个长度的词来和字典中的词匹配,如果没有找到,就缩短长度继续寻找,直到找到或者成为单字。

下面话不多说了,来一起看看详细的介绍吧。

实例:

S1="计算语言学课程是三个课时" ,设定最大词长MaxLen = 5 ,S2= " "

字典中含有三个词:[计算语言学]、[课程]、[课时]

(1)S2="";S1不为空,从S1左边取出候选子串W="计算语言学";

(2)查词表,“计算语言学”在词表中,将W加入到S2中,S2=“计算语言学/ ”, 并将W从S1中去掉,此时S1="课程是三个课时";

(3)S1不为空,于是从S1左边取出候选子串W="课程是三个";

(4)查词表,W不在词表中,将W最右边一个字去掉,得到W="课程是三";

(5)查词表,W不在词表中,将W最右边一个字去掉,得到W="课程是";

(6)查词表,W不在词表中,将W最右边一个字去掉,得到W="课程"

(7)查词表,W在词表中,将W加入到S2中,S2=“计算语言学/ 课程/ ”,并 将W从S1中去掉,此时S1="是三个课时";

(8)S1不为空,于是从S1左边取出候选子串W="是三个课时";

python中文分词教程之前向最大正向匹配算法详解(python中文分词库)

(9)查词表,W不在词表中,将W最右边一个字去掉,得到W="是三个课";

()查词表,W不在词表中,将W最右边一个字去掉,得到W="是三个";

()查词表,W不在词表中,将W最右边一个字去掉,得到W="是三"

()查词表,W不在词表中,将W最右边一个字去掉,得到W=“是”,这时 W是单字,将W加入到S2中,S2=“计算语言学/ 课程/ 是/ ”,并将 W从S1中去掉,此时S1="三个课时";

()S1不为空,从S1左边取出候选子串W="三个课时";

()查词表,W不在词表中,将W最右边一个字去掉,得到W="三个课";

()查词表,W不在词表中,将W最右边一个字去掉,得到W="三个";

()查词表,W不在词表中,将W最右边一个字去掉,得到W=“三”,这时 W是单字,将W加入到S2中,S2=“计算语言学/ 课程/ 是/ 三/ ”,并 将W从S1中去掉,此时S1="个课时";

()S1不为空,从S1左边取出候选子串W="个课时";

()查词表,W不在词表中,将W最右边一个字去掉,得到W="个课";

()查词表,W不在词表中,将W最右边一个字去掉,得到W=“个”, 这时W是单字,将W加入到S2中,S2=“计算语言学/ 课程/ 是/ 三/ 个/ ",并将W从S1中去掉,此时S1="课时";

()S1不为空,从S1左边取出候选子串W="课时";

()查词表,W在词表中,将W加入到S2中,S2=“计算语言学/ 课程/ 是/ 三/ 个/ 课时/ ",并将W从S1中去掉,此时S1=""。

()S1为空,输出S2作为分词结果,分词过程结束。

而至于为什么选择python这个语言呢?大概是因为我周围人用得少吧,我就想尝试突破,不过我也不讳言,我的C/C++,java等等高级语言用的也不多,虽说编程语言这个东西,基本上只要熟悉一个,其他的都好学,不过我在python上尝到了甜头,索性就用这个语言了。

中文分词算法的Python实现:

脚本接受两个参数,一个是输入文件的路径,另一个是词典的路径。

它的运行方法如下:

当然,这只是最基础的,还可以有很多高级的优化,比如说改成Trie树版本的,控制最大词长度的等等。

总结

标签: python中文分词库

本文链接地址:https://www.jiuchutong.com/biancheng/372153.html 转载请保留说明!

上一篇:详解Python里使用正则表达式的ASCII模式(python基本用法)

下一篇:python使用PyCharm进行远程开发和调试(pycharm如何使用)

  • 房地产按揭是什么意思
  • 存货成本核算方法有哪些
  • 股东将投资款转入个人账户
  • 核算科目拨出专票怎么弄
  • 转账支票的用途怎么写
  • 个人独资企业对公账户的钱可以转到私人账户吗
  • 冲销暂估入库如何做会计核算?
  • 企业存款利息收入税率
  • 机器保养计入什么
  • 固定资产并账
  • 售后回租是否确认收入
  • 医疗器械销售初次拜访话术
  • 收到技术服务费计入什么科目
  • 企业个人补偿款需要缴税吗?
  • 小规模纳税人月超15万季度不超45万
  • 劳务费税收分类是什么
  • 关于增值税专用发票
  • 失控包括
  • 税率16降到13什么时候实施
  • 摊销生产车间负担的保险费
  • 进项税在即征即退吗
  • 研发费用发票怎么入账
  • 在建工程转入长期待摊费用吗
  • 离职有补偿金的可不可以领取失业金
  • 孕妇可以喝蜂蜜水吗?
  • 腾讯电脑管家中如何安装 文件夹上锁专家
  • 怎样提取word中的图片
  • 无法收回的保证金计入营业外支出汇算清缴调增填其他吗
  • php日历如何实现
  • mysql如果不存在就创建表
  • 扩展组件可以删除吗
  • 应付债券的会计处理例题
  • 取得企业债券利息为什么要交个人所得税
  • 上传图片照片
  • 母公司收取子公司管理费的税率
  • yii2框架的优缺点
  • 微信小程序使用时间记录查询
  • php截取指定字符串
  • 土地增值税扣除项目税金包括哪些
  • uniapp跨域解决方案
  • uniapp中使用amap-vue,设置安全密钥
  • react生命周期详解
  • 使用jquery的好处
  • 残保金工资总额是计提还是实发
  • hashmap 面试
  • 分公司二季度安全生产分析会内容
  • 金融企业往来支出属于费用吗
  • 员工出差过程中意外死亡算工伤吗
  • 征地费用包括
  • java数组合并变字符串
  • 物业用房需要交维修基金吗
  • 将房产以股权形式出售
  • 租赁收入的成本包括哪些
  • 房地产开发间接费用和开发费用的区别
  • 4s店开的维修发票怎么开
  • 减征增值税的会计科目
  • 企业的项目有哪些
  • 非居民企业的所得一律适用20%的企业所得税税率
  • 房地产开发产品科目设置
  • 不动产分割要哪些步骤
  • 工会经费可以在以后年度扣除吗
  • 机关事业单位以高于市场价租赁房屋
  • 设置行政机构的主要依据是
  • mysql mod
  • 如何在windows中添加字体
  • centos uuid
  • win8系统设置错误
  • linux卸载repo
  • win7怎么录屏为什么不是视频
  • 画布canvas的基本步骤
  • javascript数据类型有哪些
  • html焦点图
  • android design库
  • node socket hang up
  • 安卓模拟器错误怎么办
  • js数组添加元素的方法
  • 扣税13个点实际支付金额该怎么算
  • 深圳个税官网
  • 国家税务局大厅上班时间
  • 销售旧货如何开票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设