位置: 编程技术 - 正文

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

  • 一般纳税人哪些可以开3%的发票吗
  • 什么是非居民纳税人类别
  • 利润分配未分配利润是什么科目
  • 赠送的产品价格为0怎么入库
  • 未达起征点可以开专票吗
  • 支付的检测费计入什么科目
  • 企业合并相关舞弊风险有哪些
  • 个人外汇收入如何纳税
  • 企业购买饮水机滤芯会计分录
  • 没有合作会怎么样
  • 最新土地增值税筹划
  • 个人领取住房公积金需要什么材料
  • 小规模纳税人交企业所得税吗
  • 预收账款预提费用
  • 作废报表会影响企业信用吗
  • 软件公司客户经理一般月薪多少
  • 如何阻止windows10升级到11
  • 有奖发票奖金支付
  • 笔记本电脑预装
  • php多线程怎么实现
  • 最强笔记本2021
  • 用人单位如何缴纳医疗保险
  • linuxvim批量替换
  • 黄喉蜂虎鸟是保护动物吗
  • php读取数据输出html
  • 【小沐学C++】C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
  • 会计科目分类有几种方法
  • egi脑电数据处理
  • Node.js——http模块和导出共享
  • effective c++ github
  • move命令移动文件夹下所有文件
  • php curl_init
  • 纳税人在工作
  • 慈善组织接受股票捐赠流程
  • 库存商品是什么会计要素
  • 简易征收税率表
  • 一件代发退货如何处理
  • MySQL中使用_____语句更新表中的数据
  • 网银可以给个人转账
  • 金税四期对建筑企业的影响
  • 免税销售额和本期免税额
  • 留抵进项税太多怎么办
  • 资产负债表里的固定资产是原值还是净值
  • 会计凭证中的数字怎么填
  • 开办费计入什么科盿
  • 工业企业外购存货的入账价值一般包括()
  • 应收票据周转率公式
  • 个体工商户生产经营所得税优惠政策
  • 理财到期的会计怎么做账
  • 支付金额小于发票怎么办
  • 结转未交增值税为什么是零
  • 房地产公司工程部岗位职责
  • 项目估算主要包括
  • 固定资产实务训练题目及答案
  • 会计凭证传递的组织工作主要包括
  • 什么计提折旧什么不计提折旧
  • 实际利率法仅仅适用于具有本金和利息
  • winxp cmd
  • mysql改表名语句
  • mysql停不掉
  • 迅速修复系统漏洞的方法
  • Windows Server 2008制作密码重设盘
  • Win10桌面图标怎么隐藏
  • ubuntu flash player
  • centos屏蔽ip
  • centos7ftp
  • win7系统的word文档中的工具在哪里
  • 新款apple macbook air
  • win7休眠模式在哪
  • win8任务管理器打不开怎么办
  • linux系统解压tar.gz文件
  • 跑酷游戏cs
  • linux文件目录管理命令
  • java回收机制原理
  • android开发是什么意思
  • javascript工作
  • 辽宁省国家税务局网上申报
  • 开税票锁机怎么办
  • 未办理税务登记取得专票抵扣
  • 梨树烧烤一条街打人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设