基于Python的汉语分词系统

article/2025/10/15 21:57:53

资源下载地址:https://download.csdn.net/download/sheziqiong/86776599
资源下载地址:https://download.csdn.net/download/sheziqiong/86776599
汉语分词系统
目录
汉语分词系统 1
摘要 1
1 绪论 1
2 相关信息 1
2.1 实验目标 1
2.2 编程语言与环境 2
2.3 项目目录说明 2
3 训练测试 3
4 词典构建 3
5 正反向最大匹配分词实现 3
5.1 正向最大匹配分词-最少代码量 3
5.2 反向最大匹配分词-最少代码量 4
6 正反向最大匹配分词效果分析 5
7 基于机械分词系统的速度优化 6
2.2编程语言与环境
Python 3.7.9 ,Windows11,VScode
2.3项目目录说明
目录中存在Code和io_files两个文件夹,Code文件夹中存放第一部分到第四部分实验代码,io_files文件夹中存放第一部分到第四部分实验产生文件和依赖文件。
io_files文件夹:
199801_sent.txt 为标准文本,是1998 年 1 月《人民日报》未分词语料,用于产生训练集和测试集
199801_seg&pos.txt 为标准文本,是1998 年 1 月《人民日报》的分词语料库,用于产生测试集对应的分词标准答案
dic.txt为自己形成的分词词典,存放根据训练集产生的词典
train.txt 为训练集,取分词语料库中 的数据作为训练集用于生成词典
std.txt 为标准答案, 取分词语料库中另外 的数据作为标准答案,与分词结果进行比对计算准确率、召回率和F 值
test.txt 为测试集,在未分词语料中取与标准答案相对应的 的数据作为测试集产生分词结果
seg_FMM.txt 为全文的分词结果,使用正向最大匹配分词,使用train.txt文件作为训练集,将199801_sent.txt文件进行分词
seg_BMM.txt为全文的分词结果,使用反向最大匹配分词,使用train.txt文件作为训练集,将199801_sent.txt文件进行分词
score.txt为第三部分生成的评测分词效果的文本,其中包括准确率(precision)、召回率(recall)和F 值
seg_FMM_1_10.txt 为测试集分词结果,使用正向最大匹配分词,使用train.txt文件作为训练集,将test.txt文件进行分词
seg_BMM_1_10.txt 为测试集分词结果,使用反向最大匹配分词,使用train.txt文件作为训练集,将test.txt文件进行分词
better_seg_FMM.txt 为测试集分词结果,使用优化后的正向最大匹配分词,使用train.txt文件作为训练集,将test.txt文件进行分词,计算分词时间与seg_FMM_1_10.txt分词时间进行比较
better_seg_BMM.txt 为测试集分词结果,使用优化后的反向最大匹配分词,使用train.txt文件作为训练集,将test.txt文件进行分词,计算分词时间与seg_BMM_1_10.txt分词时间进行比较
TimeCost.txt 为分词所用时间,存放优化前和优化后的分词时间
Code文件夹:
part_1.py 为实验第一步词典的构建代码,其中包括生成分词词典函数以及生成训练集、测试集和标准答案的函数
part_2.py 为实验第二步正反向最大匹配分词实现代码,其中包括读取词典内容函数、正向最大匹配分词函数和反向最大匹配分词函数
part_3.py 为实验第三步正反向最大匹配分词效果分析代码,其中包括计算评测得分函数,计算总词数和正确词数函数,计算准确率、召回率和f值函数以及获取词对应下标的函数
part_4.py 为实验第四步基于机械匹配的分词系统的速度优化代码,其中包括Trie树的实现以及其中添加字符串函数,查找字符串函数,在子节点中查找字符对应位置函数和返回哈希值函数,还有获得正向最大匹配的词典树函数,获得反向最大匹配的词典树函数,优化后正向最大匹配分词函数,优化后反向最大匹配分词函数,全文分割函数以及计算时间函数
训练测试
训练集、测试集和标准答案来源于199801_sent.txt 和199801_seg&pos.txt文本文件,训练集为199801_seg&pos.txt文件的 ,标准答案为剩下的 ,对199801_seg&pos.txt文件各行取模,若行数模10余0,则加入测试集,本文转载自http://www.biyezuopin.vip/onews.asp?id=16703剩余的加入标准答案。
在199801_sent.txt中取与标准答案对应行加入测试集。
词典构建
构建词典时,不将量词加入词典,可以减少词数,带来空间和时间上的优化,且词典中不存在重复词。
读取训练集内容,进行逐行提取,以词前的空格和词后的 ’ / ’ 字符提取词,若词前存在 ’ [ ’ 字符则去除该字符。
将提取出来的词加入列表,在训练集所有内容提取完毕后对列表进行排序。
将列表输出至词典文件生成词典,一行存储一个词便于后续读取。

DIC_FILE = '../io_files/dic.txt'
TRAIN_FILE = '../io_files/train.txt'
STD_FILE = '../io_files/std.txt'
TEST_FILE = '../io_files/test.txt'
K = 10 # 将标准分词文件的9/10作为训练集'''3.1 词典的构建输入文件:199801_seg&pos.txt(1998 年 1 月《人民日报》的分词语料库) 、199801_sent.txt(1998 年 1 月《人民日报》语料,未分词)输出:dic.txt(自己形成的分词词典)、train.txt(训练集)、std.txt(标准答案)、test.txt(测试集)
'''def gene_dic(train_path =TRAIN_FILE, dic_path = DIC_FILE):'''生成分词词典input: train.txt(训练集)output: dic.txt(分词词典)'''word_set = set()  # 词列表, 有序且不重复max_len = 0   # 最大词长with open(train_path, 'r') as train_file:  # 读取训练文本lines = train_file.readlines()with open(dic_path, 'w') as dic_file:  for line in lines:for word in line.split():if '/m' in word:  # 除去量词continueword = word[1 if word[0] == '[' else 0 : word.index('/')]    #去除 '[' 符号, 取 '/'前的词if (len(word) > max_len): # 更新最大词长max_len = len(word)word_set.add(word)  # 加入词典word_list = list(word_set)word_list.sort()  # 排序dic_file.write('\n'.join(word_list))  # 用 '\n' 连接成新字符串return word_list, max_lendef gene_train_std(seg_path ='../io_files/199801_seg&pos.txt', train_path = TRAIN_FILE, std_path = STD_FILE, k = K):'''按9:1生成训练集和测试集input: 199801_seg&pos.txt(分词语料库)output: train.txt(训练集), std.txt(标准答案), test.txt(测试集)'''with open(seg_path, 'r') as seg_file:seg_lines = seg_file.readlines()std_lines = [] # 标准分词答案with open(train_path, 'w') as train_file:for i, line in enumerate(seg_lines):if i % k != 0:train_file.write(line) # 模 k 不为 0 的行数加入训练集else:std_lines.append(line) # 模 k 为 0 的行数加入标准答案with open(std_path, 'w') as std_file:std_file.write(''.join(std_lines)) # 写入标准分词答案gene_test() # 生成测试集def gene_test(sent_path = '../io_files/199801_sent.txt', test_path = TEST_FILE, k = K):'''生成测试集input: 199801_sent.txt(未分词语料)output: test.txt(测试集)'''with open(sent_path, 'r') as sent_file:sent_lines = sent_file.readlines()with open(test_path, 'w') as test_file:for i, line in enumerate(sent_lines):if i % k == 0:  test_file.write(line)  # 模 k 为 0 的行数加入测试集if __name__ == '__main__':gene_train_std()gene_dic()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源下载地址:https://download.csdn.net/download/sheziqiong/86776599
资源下载地址:https://download.csdn.net/download/sheziqiong/86776599


http://chatgpt.dhexx.cn/article/VMONTecH.shtml

相关文章

ICTCLAS分词系统研究(一)

ICTClAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,难能可贵的是该版的Free版开放了源代码,为我们很多初学者提供了宝贵的学习材料。 但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C++不熟的人来说.本…

自然语言处理——分词系统(正向最大匹配法)

算法分析 正向最大匹配法,对于输入的一段文本从左至右、以贪心的方式切分出当前位置上长度最大的词。正向最大匹配法是基于词典的分词方法,其分词原理是:单词的颗粒度越大,所能表示的含义越确切。该算法主要分两个步骤: 该算法主要分为两个步…

LTE学习-信道均衡(ZF)

前面学习了信道估计和插值,现在说说信道均衡,信道均衡的作用就是根据信道估计和插值的结果尽可能恢复发射数据。信道均衡技术主要有两种,迫零(ZF)均衡和最小均方误差(MMSE)均衡,实际上还有一个最大似然(ML)均衡,但计算…

解调去载波后均衡信道与实际信道的关系

关注公号【逆向通信猿】更精彩!!! 通常,信号经过调制后发送,会经过信道作用,示意图可以表示为 其中 x ( t ) x(t) x(t)为基带信号, e

WLAN信道利用率

WLAN空口/信道利用率监控大致如下 参数 说明 Ctl channel 主信道号 Channel Band 信道带宽 Ext Channel-11N产品支持 辅信道类型(Bellow/Above) Bellow:辅信道向下绑定 Above:辅信道向上绑定 CtlBusy(%) 主信道利用率 TxBusy(%) 发送帧利用率 RxBusy(%) 接收帧利用…

第7章:OFDM 信道估计与均衡(1)

第7章(1)内容如下: 一、OFDM相关书籍二、OFDM基本原理三、OFDM经过高斯白噪声信道的误码率分析三、总结 本人最近搞懂了OFDM的一些知识,便给本章取名为第7章——OFDM信道估计、均衡。本文所有代码下载地址是:123kevin4…

信道利用率

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_42682806/article/details/84592569 这又是计算机网络中的一个计算题所在,真题…

无线通信——基于MATLAB实现OFDM系统(信道估计与均衡)

基于MATLAB实现OFDM系统基带信号在频率选择性衰落信道条件下的发送与接收 题目及要求: 仿真系统构成:信号输入(为随机比特流)、OFDM调制、仿真信道传输、OFDM解调、信号输出(可能存在误码的比特率)&#…

信道模型

下面是4种信道模型: 什么是信道模型?信道模型是用数学表达式来描述信道特性的,H_rx_tx,例如h21表示1发2收,下图的n表示噪声加在每个接收天线上,在实际中,很多噪声进入一个接收天线中,例如n1是所…

第7章:OFDM 信道估计与均衡(4)

第7章(4)内容如下: 一、导频结构与图案二、基于导频的信道估计算法和插值方法 本文所有可运行代码下载地址是:123kevin456/OFDM- 一、导频结构与图案 前三讲介绍了OFDM经过AWGN信道和衰落信道的误码率情况,其中在第&…

信道均衡之线性均衡——迫零滤波器

在通讯系统中,信道是影响信号传输质量的最重要因素,而信道均衡目的是则为了消除信道的影响。 一个基带传输的通信系统的简单示意图如图1,数字信号m(n)经过单位冲激响应为ht(t)的发送滤波器后,变成模拟信号 s(t), 然后通过的单位冲…

4.4.5 信道均衡(二)

4.4.5 信道均衡(二) 基本上 《XILINX FPGA的OFDM通信系统基带设计》一书已经带有各部分的代码,我做的工作就是将代码整合到一起,并按照仿真修改,让其能正常工作。本文将对实现中的重点部分做解释,并指出…

基带信号传输之信道均衡

信道中的频域均衡器中,它是用可调滤波器的频域特性去补偿基带系统的频域特性,使系统总的传输函数满足无失真传输条件; 时域均衡器,使用均衡器产生的波形去补偿已经变形的波形,使总的输出波形满足无码间串扰的条件。 …

无线衰落信道、多径与OFDM、均衡技…

参见 张贤达 通信信号处理。OFDM移动通信技术原理与应用,移动通信原理 吴伟陵 目录 无线信道的传播特征 无线信道的大尺度衰落 阴影衰落 无线信道的多径衰落 多径时延与与叠加后的衰落 频率选择性衰落和非频率选择性衰落 符号间干扰ISI的避免 多径信号的时延扩展引…

【通信技术专题:信道均衡器】

| 通信技术 通信技术发展至今,每个人都离不开它的存在。通信系统的核心主要在于物理层,物理层的关键在基带。在通信系统中,逻辑开发工程师主要工作就在基带和射频部分,甚至射频都不在从事的任务内。今天给大家简单讲讲基带接收机…

[培训-无线通信基础-7]:信道均衡器(信道估计、信道均衡)

作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/118832368 目录 引言: 第1章 均衡器概述 1.1 什么是均衡器 1.2 如何进行信道估计 第2章 线性均衡器…

4.4.5 信道均衡(一)

4.4.5 信道均衡(一) 一、为什么要信道均衡? 数字信号在实际信道上传输时,由于信道传输特性不理想以及信道噪声的影响,接收端接收到的信号不可避免地发生错误。为了恢复发送的数据信息,接收端需要估计出信道…

信道均衡理论

一、基本概念 什么是均衡? 在得到的 Y [ n ] Y[n] Y[n]当中,存在符号间干扰和噪声。在通信当中,把符号间干扰去掉的技术叫作均衡( equalization)。 横向抽头滤波器 图中 x ( t ) x(t) x(t)为存在符号间干扰的模拟基带信号, y ( t ) y(t) y(…

信道均衡的原理

信道均衡的概念 信道均衡(Channel equalization)是指为了提高衰落信道中的通信系统的传输性能而采取的一种抗衰落措施。它主要是为了消除或者是减弱宽带通信时的多径时延带来的码间串扰(ISI)问题。 其机理是对信道或整个传输系…

千锋python培训多久

千锋Python学员拿下华为月薪25000元14薪offer,还收获了自己的美满爱情。 更赞的是和他一起学的女朋友,也拿下了字节跳动23000元15薪offer。 小千激动的久久不能回神,小两口年薪妥妥的近70万!实力开奖 男生之前的第一个offer是深…