基于Python实现的词典分词方法或统计分词方法
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
实验内容:
- 实现基于词典的分词方法和统计分词方法:两类方法中各实现一种即可;
- 对分词结果进行词性标注,也可以在分词的同时进行词性标注;
- 对分词及词性标注结果进行评价,包括4个指标:正确率、召回率、F1值和效率。
实现平台
MacBook Air M1,全部使用Python进行实验
实验过程
1.基于词典的分词方法中,我们使用了四种分词方法,即完全切分式,正向最长匹配,逆向最长匹配,双向最长匹配。此处代码见附录1。
这里的词典我选择使用了北京大学统计好的词典作为词典参考来进行实验。
我们随意输入几个句子并输出结果,根据结果来看,各个方法分词的效果还算不错。接下来我们使用人民日报的分好的语料库进行一个全篇的预测。
首先我们使用前向切分的方法,可以看到P,R,F1三个值,以及用时26.92s。
接下来使用后向切分的分法,正确率微微提升,同时用时27.51s。
最后使用双向切分的方法,正确率几乎不变,用时52s,几乎翻倍的时间。
P | R | F1 | Time | |
---|---|---|---|---|
前向 | 0.8413 | 0.8864 | 0.8864 | 26.91 |
后向 | 0.8482 | 0.8934 | 0.8934 | 27.51 |
双向 | 0.8489 | 0.8939 | 0.8708 | 52.73 |
可见,基于词典的分词方式,不论哪种方法,正确率基本稳定在这个范围上。效果还算可以。
2.基于语料的统计分词,使用二元语法模型来构建词库,然后将句子生成词网,在使用viterbi算法来计算最优解,在这当中使用+1法来处理前后之间概率。代码放在附录2
首先我们处理原始文件,将人民日报语料库的带空格的文件处理成csv的表格形式方便我们进行分词的整理。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OOh3EBmL-1653569658646)(https://www.writebug.com/myres/static/uploads/2022/5/26/c38fb5abc4b27f328c58b4a7e39ec605.writebug)]
这里是二元语法模型的核心代码:
这里是生成句子词网的核心代码:
这里是+1平滑处理的核心代码:
这里是viterbi算法的核心代码:
测试集和训练集均为人民日报语料库,接下来是最终训练出来的效果。
展示了P,R,F1的值
可以看到还是达到了一个近乎99%的正确率,同时训练+预测共耗时307。
P = 0.9905
R = 0.9843
F1 = 0.9873
3.对分词的结果进行词性标注。使用了统计的方法。此处代码同附录2.
我们先对人民日报带词性标注的txt文件进行一个转换,转换成便于我操作的csv文件。
下面是我们词性标注的训练核心代码,统计所有词性和他们的个数,获得相应的词性转移矩阵,在统计每个词语的词性概率。
这里是推测词性的核心代码:
下面是对分词结果的正确性评估,这里我使用了书中使用的方法,仅计算一个Accuracy作为正确率评估标准,同时我只对之前分词正确的结果结果进行词性评估,这样可以避免其它的错误。
通过检测结果来看,词性标注的正确率大概在95%左右,同时共计耗时315s。还算一个相对不错的效果。
实验遇到的问题与麻烦
- 首先就遇到的难题是处理人民日报那个txt,一开始没有想到很方便的办法把它处理为list数据,最后通过转换为csv格式,在直接导入到list当中确实简化了不少步骤。
- 处理二元语法模型的时候,这个“#始始#”,“#末末#”的处理确实费了不少功夫,总是在这里缺少一些项目,debug了很长时间。
- Viterbi算法中存在的字典中缺少的值如何去补充,不存在的转化概率该如何去补充。
- 这个也是尚未处理的问题,我做预测的时候仍然采用原人民日报的换行格式,即一行就为一个句子,但这个很明显并不是我们日常意义上所理解的句子,我们通常理解的句子中,是以“。”,“!”,“?”作为句子结尾的。我重新刷洗了数据,并让句子按照这三个标点符号作为结尾来预测数据。
最终得出的训练结果中,正确率不变,说明我们能很好的将标点符号分开,但是时间却缩小了一些,说明缩短句子确实有助于减少大规模词网的运算量。
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
资源下载地址:https://download.csdn.net/download/sheziqiong/85787813
基于Python实现的词典分词方法或统计分词方法相关推荐
- python怎么安装pyecharts_基于Python安装pyecharts所遇的问题及解决方法
最近学习到数据可视化内容,老师推荐安装pyecharts,于是pip install 了一下,结果...掉坑了,下面是我的跳坑经验,如果你有类似问题,希望对你有所帮助. 第一个坑: 这个不难理解,缺少 ...
- python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法
最近学习到数据可视化内容,老师推荐安装pyecharts,于是pip install 了一下,结果...掉坑了,下面是我的跳坑经验,如果你有类似问题,希望对你有所帮助. 第一个坑: 这个不难理解,缺少 ...
- python登录系统账号检测_一种基于python的惠普打印机默认用户名密码检测方法与流程...
本发明涉及打印机检测技术领域,特别是一种基于python的惠普打印机默认用户名密码检测方法. 背景技术: 网络打印机是当前各大中小型企业正常办公比不可少的办公网络设备,但对于大中型企业而言,不同部门或 ...
- 基于Python与OpenCV的纸质票自动统计功能的实现(一)界面编程
基于Python与OpenCV的纸质票自动统计功能的实现(一)--界面编程 作为一个资深的自动化工程师,界面编程对我来说太熟悉不过了,但是当时用的都是工业界面编程软件,比如WINCC.组态王等等,在这 ...
- 基于Python实现中文文本关键词抽取的三种方法 课程报告+项目源码及数据
资源下载地址:https://download.csdn.net/download/sheziqiong/85737856 资源下载地址:https://download.csdn.net/downl ...
- python篮球-基于Python/Java的人工智能篮球训练系统的制作方法
本发明涉及信息技术领域,尤其涉及一种基于Python/Java的人工智能篮球训练系统. 背景技术: 人工智能的发展已经开始渗透到各行各业.经过发明人的研究和检索,发现作为篮球训练,已经有专利申请.其中 ...
- 基于python的分布式扫描器_一种基于python的大数据分布式任务处理装置的制作方法...
本发明涉及数据处理技术,具体是一种基于python的大数据分布式任务处理装置. 背景技术: 本发明提供一种分布式队列任务处理方案和装置,该方法可以提供分布式处理python任务,任务类型包括爬虫及其他 ...
- 基于python的树莓派同时使用多个VL53L0X传感器的方法
VL53l0x这个传感器的坑爹之处看到这个博文的童鞋应该很清楚,作为一个地址可编译的I2C传感器,VL53L0X的默认I2C地址是29.但是无论你把他的地址改成什么,断电重启之后就会直接恢复默认,所以 ...
- 《Flask Web开发——基于Python的Web应用开发实践》代码使用方法
git clone https://github.com/miguelgrinberg/flasky.git 然后书上遍地的git checkout 1a这样的命令,怎么回事呢? 先把上面的命令在一个 ...
最新文章
- Spring启动流程(原理)详解--结合web.xml加载配置分析 转
- 火狐浏览器下点击a标签时出现虚线的解决方案
- 如何知道网站的IP,然后利用IP登陆网站?
- acrobat xi pro 简体中文语言支持包_性能出众佳能PRO-561绘图仪西安优杰报价
- java 计算小费_java-以某些形状显示数字
- 【转】MySQL日期函数与日期转换格式化函数大全
- 连载 3:利用 matlab计算卷积
- windowswps怎么以文件形式发送_手机WPS怎么以文件形式发送
- JAVA里面pressed的反义词_pressed是什么意思_pressed怎么读_pressed翻译_用法_发音_词组_同反义词_紧缺的-新东方在线英语词典...
- 2017.10.7 最长上升子序列 思考记录
- C++添加一个头文件和extern以及全局变量和局部变量问题(清C++蓝书16.3.19上机的一小题)...
- 网页为什么只加载了基本html,关于HTML的那些事
- 服务器装系统报0x0000005d,虚拟机无法装win10系统提示Your PC needs to restart 错误代码0x0000005D怎么办...
- Hadoop+Spark 之旅—脚踏实地、仰望星空(教程目录)
- Detours库APIHook演示抓取微信界面绘制文字函数
- 深圳首辆数字人民币主题观光巴士亮相
- 《薛兆丰经济学讲义》的118个思考题
- ARMv8/ARMv9的Exclusive机制深度解读
- Google官方推荐 Flow 取代 LiveData
- 音视频开发成长之路与音视频知识总结
热门文章
- python卡方检验筛选特征原理_基于Python的遥感特征筛选—递归特征消除(RFE)与极限树(Extra-Trees)...
- java csv文件乱码_java读取csv文件出现乱码怎么处理
- 新闻:微软Office格式在国际标准战中扳回一局
- ATmega8,ATmega16,最小系统板,第一个好评来啦!
- 2021-06-10 工作笔记 ng-change不能触发的解决方法+wui-date日期选择器使用onchange调用函数报错
- 程序设计基础(CC++) 戴波、张东祥 第四章 数组与结构 编程作业
- Python Elasticsearch 报错 elasticsearch.UnsupportedProductError
- unityShader采样光照贴图
- 怎样写一个通用的JavaScript效果库!
- 基于KMP算法的字符匹配问题