位置: 编程技术 - 正文

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

  • 房屋用途 居住用房 住宅 区别
  • 增值税销项税额账务处理
  • 小微企业利润表模板
  • 印花税票吧
  • 代开的增值税专用发票应怎样填写?
  • 销售商品发生的运费计入什么科目
  • 计入固定资产的土地
  • 企业法人个人帐户是什么
  • 个人去税务局开票流程
  • 质保金的税务处理
  • 纳税人首次办税补充信息表怎么填
  • 兼营非应税劳务行为举例
  • 去新建的外贸公司好不好
  • 旅游业差额开票税率
  • 订购维修设备零件怎么做账?
  • 进项税额转出的
  • 工业厂房的辅助用房
  • 保险车辆折旧的计算方法有哪些
  • win10怎么启动双系统
  • win10护眼模式在哪
  • 压缩包损坏修复软件
  • 项目盈利后收到短信
  • macbook显示隐藏文件
  • php数组函数有哪些
  • PHP中set error handler函数用法小结
  • 小程序嵌入h5页面可以不写安全地址吗为什么
  • 关闭win10系统更新有什么后果
  • 标书装订费用分录
  • 企业收到分红款是免税收入吗
  • 民办非企业的税金及附加放在哪个科目
  • 费用超额怎么写申请
  • protect.exe进程
  • 合规检查中检查不了的设备
  • 小程序自定义tabbar创意动画
  • 可供出售金融资产在资产负债表日反映的是
  • 机器学习评估指标 - f1, precision, recall, acc, MCC
  • php function函数的用法
  • 股权划转有税费吗
  • 公司一季度报表
  • 出差补贴要扣税吗
  • 纳税信用等级区别在哪
  • 现金科目的指定科目是什么
  • 出售固定资产的损失计入什么科目
  • 买车挂公司名下的坏处
  • 物业公司水费差额征税如何申报
  • 研发费用入账
  • 用友软件中冲销凭证在哪
  • 企业支付的产品和物资的原始价格是采购成本中的
  • 自然人独资公司税收政策
  • 免税收入包括哪些项目
  • 收入成本率多少合理
  • sql语句行转列
  • 利用phpmyadmin写shell的方法
  • mysql 去除重复查询结果
  • Mysql中几种插入效率的实例对比
  • win10桌面上图标
  • win7系统怎么取消自动关机
  • win8的系统
  • mysqld-nt.exe - mysqld-nt是什么进程 有什么用
  • lowleverfatal error怎么解决
  • linux命令行怎么用
  • win10系统下怎么安装caxa2016电子图板 caxa2016电子图板安装详细图文教程
  • 更新win10后扬声器无声音
  • JavaScript 和 Java 的区别浅析
  • python os模块
  • 安卓用什么抓包
  • 你应该知道的2000个地理常识
  • js验证正整数
  • js拖拽排序实现思路
  • 四川税务网络领发票流程
  • 新公司税务登记完后还需要什么流程
  • 税控盘时间不对有影响吗
  • 小规模纳税人可以开13%的发票吗
  • 福建网上税务局app
  • 重庆税务局查询缴费记录
  • 如何申报印花税的流程
  • 100万元的人民币
  • 供热基础设施配套费
  • 广东房产契税电话查询
  • 工程审计费计入什么科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设