位置: 编程技术 - 正文

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如何使用)

  • 个人所得税退税是什么意思?
  • 企业招用残疾人比例
  • 收到商业承兑汇票到期付款通知单,据此登记相关账簿
  • 长期股权投资中应采用成本法核算的是
  • 现在开票还能用三方协议吗
  • 费用报销怎么做账务处理
  • 实验用品包括实验仪器吗
  • 变更了公司名称以前的发票还可以抵扣吗
  • 代收款是什么套路
  • t3用友软件怎么设置三级科目
  • 经营活动现金流增加的原因
  • 车辆购置税免税申报如何操作
  • 固定资产贷款利率
  • 设备维修费怎么入账
  • 赞助费属于赠与关系吗
  • 普票开票开给个人怎么开
  • 机打发票多久可以作废
  • 企业所得税上个季度赔钱下个季度挣钱
  • 注册资本 变更
  • 企业会计制度怎么备案
  • 企业取得被投资单位的长期股权可以享有
  • 外资企业注销需要商务局备案吗
  • 委托采购是什么意思
  • 去银行补充企业信息流程
  • 营改增后挂靠工程会计分录具体怎么做?
  • 删除文件需要管理员权限无法添加怎么办
  • mac更新系统版本
  • win7为什么不能安装软件
  • 苹果手机下载手机克隆哪个版本
  • 赠送客户的商品计入什么科目
  • 如何将iphone照片导入电脑里
  • 公司撤股需走什么程序
  • 销售产品取得收入4500万元
  • win10开机强制进入修复模式
  • win7系统笔记本无线网络找不到
  • 应扣未扣应收未收税款是什么意思
  • vue-router
  • 防伪税控服务费怎么交
  • thinkphp隐藏index.php
  • php引用文件的方法
  • 本期收入及免税收入
  • 出租设备折旧费用计入什么科目
  • 增值税的滞纳金税率
  • 企业坏账准备贷方核算内容
  • phpcms目录结构
  • 织梦相关文章调用
  • 工程施工科目借方尾差怎么调整
  • 进口货物的会计分录
  • 长期借款已经还了怎么办
  • 工资中的扣款怎么做账
  • 固定资产暂停使用申请怎么写
  • 地租钱不付如何为
  • 施工单位的罚款标准
  • 土地增值税计算题
  • 非正常损失进项税额转出计算
  • win8无法修复你的电脑
  • u盘 macbook
  • Win7系统打开蓝牙
  • 电脑一直显示windowsxp怎么办
  • 本地hosts文件存在问题
  • 如何设置电脑开机密码
  • win7 桌面空白
  • 微软官方升级win10
  • 硬盘xp系统
  • Win10打开浏览器就未响应
  • awk实例
  • opengl绘制坐标轴
  • nodejs中的shell命令是什么意思
  • web中class和id的区别
  • linux bash中too many arguments问题的解决方法
  • 利用python绘图
  • 设计模式含义
  • python搭建网页
  • python中get()函数
  • 个人所得税子女教育到多大结束
  • 山东国税网
  • 厦门怎么查询自己名下电动自行车
  • 增值税进项税额抵扣凭证
  • 会计报表错误
  • 重庆国税网上怎么申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设