位置: 编程技术 - 正文

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

  • 会计利润和应纳税所得额的区别和联系
  • 递延所得税资产账务处理
  • 存货跌价准备影响当期损益吗
  • 一般纳税人劳务票一般开几个点
  • 水利建设专项基金的税率
  • 现金预算属于营业预算吗
  • 入账价值 入账成本 入账金额
  • 小规模零申报增值税
  • 个人财产租赁所得税计算
  • 社保次月什么时候到账
  • 预缴增值税是否适用一般计税方法
  • 公司破产后资产怎么处理
  • 代垫款收到的发票在哪里
  • 车间固定资产折旧属于什么科目
  • 已认证的发票没领怎么办
  • 连号发票税务风险
  • 更换金税盘后数据能恢复么
  • 小微企业需要开公户吗
  • 电子税务局社保申报截止日期每月
  • 审计调整分录如何处理
  • 开票超过离线时长怎么解决
  • 坏账损失的账务处理办法
  • 住房公积金业务挂起
  • 代理进口业务受托方账务处理流程
  • 个税手续费返还政策文件
  • linux文本编辑器命令
  • 高新技术企业的税收优惠政策
  • PHP 中dirname(_file_)讲解
  • 应付债券借贷
  • 怎么检查当年的核酸结果
  • 发票开错的常见情况和处理办法?
  • php substr()
  • uni-app打包h5
  • php yield 异步
  • php获取mysql数据
  • php的框架有哪些
  • echarts怎么样
  • php静态函数
  • 富文本编辑器使用
  • 发票 加工费
  • js创建对象的三种方式
  • 公司购买空调属于电子设备吗
  • 织梦系统网站搭建教程
  • 第四季度报表和年报对不上
  • 合同不交印花税怎么处理
  • 预付费卡开票
  • 并发环境下,共享资源的正确使用方式是
  • 电影卡购买
  • 增值税申报表是含税还是不含税
  • 生产成本与管理企业经营实战感想
  • 手机开个人劳务票怎么开
  • 维修材料分类
  • 确认借款无法收款怎么办
  • 代销商品怎么开票
  • 增值税发票折扣发票
  • 物业管理费发票税率
  • 医药企业研发费用构成
  • sql时间类型转换
  • mysql order by desc
  • windows禁用usb口
  • win8玩英雄联盟fps低怎么办
  • win10声音突然变得很沉闷
  • xpwy cd server已停止工作
  • 图片缩略图是什么意思
  • win8 侧边栏
  • win10快速隐藏窗口
  • win8怎么添加wifi
  • 运维是什么的
  • OpenGL_砖块着色案例
  • Node.js connect ECONNREFUSED错误解决办法
  • python2.7安装numpy
  • django orm sqlalchemy
  • javascript的sort
  • bootstrap和thymeleaf
  • js设置图片边框
  • python django运行
  • 个人的房产出租征收什么税
  • 广东地税服务电话
  • 地税企业所得税是多少
  • 消费税,资源税,城市建设维护税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设