没有合适的资源?快使用搜索试试~ 我知道了~
实验报告4
需积分: 0 0 下载量 131 浏览量
2022-08-03
16:10:32
上传
评论
收藏 256KB PDF 举报
温馨提示
试读
3页
本次实验为中文分词任务,基本思想是基于规则的分词,与第二节课上所讲的匹配、消歧算法相对应。实验给出train.txt dev.txt两个已经进行好切分的语料库作
资源详情
资源评论
资源推荐
NLP HW1 — 基于规则的分词
丁豪 南京大学 人工智能学院
181220010@smail.nju.edu.cn
一、实验描述
本次实验为中文分词任务,基本思想是基于规则的分词,与第二节课上所讲的匹配、消歧算法相对
应。实验给出train.txt dev.txt两个已经进行好切分的语料库作为训练数据,然后根据训练得到的结果对
test.txt进行分词,使用同样的空格分割方式重新生成文件并提交。实验评价指标为f1,且限定只能使用
规则分词算法。评分标准为,达到SOTA指标(89%)可以获得实验满分,前10名附加30%分数但需要进
行汇报。
额外:经过与助教在群内沟通,允许使用自己动手实现的非规则算法(如统计学),以及使用第三方
额外语料库,不过需要在使用的同时发在群中与同学共享以保证公平。
二、实现过程
1.总体思路
我们在课堂上了解到中文是一种分析型语言,即词形变化较少且没有表示词的语法功能的附加成分,
因而弄清楚词的边界以及他们之间的关系,需要借助词序和虚词来加以判断。本次分词提供了较大的训
练集,为构建分词词典提供了便利,此外根据对测试集、训练集中存在特殊情况的观察,我们又可以总
结出一系列用于归类处理特定情境的分词规则。以上两者将是我们此次分词的主要依据。
在算法方面,我的选择是实现“规则切分+双向最大匹配取词+重切分”。但在消歧规则部分使用一个带
有启发式的"评价函数",此函数综合考量分词粒度以及语料库的统计学数据,给出不同切分方案的综合
打分,最终选择正向最大匹配与逆向最大匹配中得分较高的一个作为最终匹配结果。在根据规则或匹配
获得词组之后,将其的切分形式(e.g. 帝王 帝 王)在原始训练集(train.txt dev.txt)中重新搜索,如
果切分形式出现次数大于非切分形式,则重新切分此词语为两个单字,以此消除额外语料库导致的不匹
配问题。
2.代码实现
2.1 文件结构介绍
main.py :主文件,进行完整读取、分词、生成操作。
data_process.py :对语料库进行整合,用于将本次实验中收集和使用的语料库进行预处理以及生成
最终用于学习的完整训练集(其中部分功能在使用后已经删除)。
jieba_baseline.py :使用结巴直接对语料库进行分词,用于对比测试。
diff_test.py :用于对两个文件进行差异性检查,可以对比不同版本算法得出结果的差别。
2.2 主算法(main.py)
init_files , update_dict , generate_dict , generate_pure_seg , generate_pure_con :读取文
件和构建语料库字典。每当出现新词则加入字典,如果出现旧词则相应键的值加1,以此达到统计语料库
完整词频的目的。
match_rule :使用正则表达式进行规则匹配。规则存储在一个全局列表 patterns 当中,其中每一条
规则的第一项为对应的正则表达式(省略了开头的^与结尾的$,在下面使用的时候统一添加),第二项
为对应的分割方案(如果为None则全字段为一个词组,如果是一个列表形式,则列表中每一个整数对应
了此串对应下表的一个切分点)。这一部分的规则来自于对训练集中已经划分的词组模式的观察归纳,
胡说先森
- 粉丝: 54
- 资源: 280
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0