位置: 编程技术 - 正文

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

  • 纳税义务发生时间记忆口诀
  • 税务师考试各科老师推荐
  • 跨区域涉税事项报验
  • 怎么查历年
  • 增值税的视同销售行为有哪些?
  • 印花税申报成功后在哪缴税
  • 财务章备案和不备份区别
  • 抬头是别的公司怎么报销
  • 进项税额转出其他应收款
  • 单位给员工发工资要交税吗
  • 股息红利是否交个人所得税
  • 简化丢失专用发票的处理流程
  • 年终奖个税公式 2022
  • 资产总额小于所有者权益合计
  • 水产类账目怎么做
  • 装修的增值税
  • 苹果电脑使用u盘之前需要设置什么?
  • 事业单位利息收入计入什么科目
  • outlook永久保留邮件
  • linux GTK、KDE、Gnome、XWindows 图形界面区别介绍
  • cmos电池低是什么意思
  • 公司买的手机怎么入账科目
  • php中

  • mac怎么不能升级系统
  • 非居民所得税代扣代缴
  • RunClubSanDisk.exe是什么程序? 闪迪U盘广告推介程序
  • 软件工程毕设题目冷门
  • php数据表
  • php-fig
  • 税款滞纳金和罚款
  • 房屋无偿赠与合同协议书范本
  • 因为技术原因
  • thinkphp,onethink和thinkox中验证码不显示的解决方法分析
  • apache无法访问自己的页面
  • react redux reducer
  • 应收帐款出售给银行会计分录
  • 苗木免税只能开普票
  • 金蝶软件如何新增账套
  • 净利润和毛利润谁大
  • 恢复从回收站已经清除的文件
  • 房地产企业政府返还款
  • 应收账款逾期什么意思
  • 收到税务局退回税款会计分录
  • 小规模纳税人减按1%怎么计算
  • 营业成本利润率行业均值
  • 投资利润率多少算合理
  • 退了的社保能申请回来吗
  • 损益明细表计提企业所得税
  • 期初与年初有什么区别
  • 电子记账凭证需要划线吗
  • 冲回以前年度工会费
  • 工业企业低值易耗品二级科目
  • mysql coalesce函数用法
  • sql转换
  • mysql主从复制原理以及架构
  • ubuntu通讯软件
  • 关于要不要关闭Vista中的IPv6功能的问题
  • win7系统只有一个鼠标箭头然后重启
  • winxp注销快捷键
  • win7系统的一键还原怎么关闭
  • 在windows xp的应用程序中,经常有一些
  • qqlogin.exe是什么进程 qqlogin.exe应用程序错误解决办法
  • 重装win7系统后鼠标键盘不能用
  • 怎么看win8.1的版本
  • windows10的操作中心
  • cocos2d 动画
  • 可以自己做手写的软件
  • unity配置安卓sdk
  • 浅析学校德育的个体智能发展功能
  • python利用format方法保留三位小数
  • shell脚本实例精讲
  • unity导出ios项目到iphone
  • python代码检测在线
  • python里list
  • 土地买卖谈判开场陈述
  • 写给税务局的表扬信
  • 公司收购农民的农产品能贴我公司标签吗
  • 财税相关书籍
  • 幼儿掌握概念的名称容易真正掌握概念的内涵也很容易
  • 东莞国税稽查分局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设