位置: 编程技术 - 正文

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

  • 驾驶培训 增值税
  • 一般纳税人建筑材料税率是多少
  • 去年的电费可以在今年入账分录
  • 单利率和复利率excel计算公式
  • 建筑物进项税额可以抵扣吗
  • 进项多少就开多少的票吗
  • 小规模房产税减免
  • 企业所得税可以税前扣除的税有哪些
  • 销售承兑现金会退回来吗
  • 企业可以不弥补以前年度亏损吗
  • 接受土地使用权作为投资属于什么凭证
  • 2019招标费用收取标准
  • 企业的季度所得税怎么算
  • 银行取现怎么取
  • 如何知道企业是查账征收还是核定征收
  • 未认证的增值税发票如何开具红字发票
  • 去税务局增加税目需要带什么资料
  • 保险合同有啥用
  • 发票二维码压线可以用吗
  • 借款给其他公司的会计分录怎么写
  • 资产负债表如何调平
  • 饮料厂税率
  • 股权转让相关手续
  • 新版edge浏览器兼容性视图怎么设置
  • mac安装双系统教程
  • 公司租用员工的车租车协议
  • php tars
  • 过路费进项税抵扣填在纳税申报的哪行
  • 酒店购进布草可直接确认为成本吗
  • 收到银行退回的会计分录
  • 出口退税率的调整方法
  • 龙舌兰 (© Moab Republic/Shutterstock)
  • 初雪与最后的秋天的区别
  • 国产版忠犬八公观后感
  • 企业年金如何缴纳计算方法
  • php检测网站是否正常打开
  • PHP中empty,isset,is_null用法和区别
  • codegenerator用法
  • Python图像识别实战(四):搭建卷积神经网络进行图像二分类(附源码和实现效果)
  • java web中的转发和重定向
  • gpt最大
  • php的运算符主要包括哪些?
  • 货运代理约柜费怎么算
  • 增值税进项税如何申报
  • 延迟开票如何规避风险
  • 应收账款扣款会计处理
  • 结转本期损益怎么看亏损
  • 公司扣除保险费会计分录
  • sqlserver获取数据库名
  • 补缴的土地价款怎么算费用
  • 企业所得税和个人所得税都要交吗
  • 营改增利息收入增值税
  • 个人独资企业一般纳税人享受六税两费
  • 分配利润时会计分录
  • 收到工程款时会计分录
  • 固定资产盘亏是什么意思
  • 出口退税的会计科目
  • 固定资产明细账怎么填
  • use crt secure
  • unetbootin教程
  • centos7.6和7.7
  • linux怎么下载安装腾讯Tim?
  • win10 功能
  • 如何让win8系统变快
  • Windows10系统下iis没有注册.netFrameWork4.0的原因
  • cocos2d-js-min.js
  • js中onunload
  • python图像移动
  • node.js教程详细
  • nodejs示例
  • html购物网站
  • javascript中的document
  • jqueryif判断
  • 怎么用python做爬虫
  • java教程 视
  • javascript命名规范
  • 工会活动经费的请示
  • 惠州市房产交易税费征收标准
  • 纳税人不办税务许可证
  • 工业厂房房产税什么时候开始征收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设