欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《自然语言处理技术》——实训6 中文命名实体识别.docx

    • 资源ID:1371524       资源大小:55.54KB        全文页数:21页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《自然语言处理技术》——实训6 中文命名实体识别.docx

    目录项目2初识文本基础处理1中文命名实体识别11 实训目标12 实训环境13 实训说明14 实训步骤24.1 COrPUSPrOCeSS类实现文本预处理21 .类定义及初始化22 .语料读写操作33 .标签提取及转换44 .语料初始化55 .语料预处理66 .窗口切分87 .特征提取98 .CorPUSPrOCeSS类重要函数说明104.2 CRF_NER类实现模型训练与模型预测175 实训小结19项目2初识文本基础处理在文命名实体识别1实训目标(1) 掌握使用Sklearn-Crfsuite库进行中文命名实体识别的方法。(2) 熟悉文本预处理流程,包括类定义及初始化、语料读写操作、标签提取及转换、语料初始化、语料预处理、窗口切分、特征提取。(3) 掌握模型训练与预测流程,包括初始化模型参数、定义模型、模型训练、使用模型进行预测。2实训环境环境版本说明Windows1064电脑操作系统Python3.8.5Python语言版本pandas1.3.0主要用于数据读取、清洗等操作NumPy1.21.6主要用于Python中的数值计算jieba0.42.1主要用于文本分词Gensim4.2.0主要用于检索文本、计算文本相似度、训练词向量、建模主题等Matplotlib3.3.0主要用于数据可视化PaddIePaddle2.4.2是一个深度学习框架,提供了高效的计算框架和优化算法PaddleSpeech1.2.0主要用于语音和音频中的各种关键任务的开发scikit-leam1.0.2广泛地用于统计分析和机器学习建模等数据科学领域Librosa0.8.1主要用于分析一般的音频信号,是一个非常强大的Python语音信号处理的第三方库NLTK3.5是一个常用的自然语言处理工具包,可用于文本处理、语义分析、词性标注等SciPy1.7.3是一个科学计算工具包,可用于数学、科学、工程学等领域pyttsx32.9.0主要用于将文本转换成语音3实训说明使用Skleam-CrfSUite库进行中文命名实体识别,其实现步骤包括文本预处理(类定义及初始化、语料读写操作、标签提取及转换、语料初始化、语料预处理、窗口切分、特征提取)、模型训练与预测(初始化模型参数、定义模型、模型训练、使用模型进行预测)。其中,将实现文本预处理步骤的代码定义为CorpusProcess类,将实现模型训练与预测步骤的代码定义为CRF_NER类,如图3-1所示。文本预处理步骤CorPUSProCeSS类类定义及初始化语料读写操作标签提取及转换模型训练与模型预测CRF_NER类初始化模型参数定义模型语料初始化模型训练语料预处理使用模型进行预测窗口切分特征提取图3-1中文命名实体识别步骤4实训步骤4.1CorpusProcess类实现文本预处理CorpusProcess类主要实现内容包括类定义及初始化、语料读写操作、标签提取及转换、语料初始化、语料预处理、窗口切分以及特征提取。1 .类定义及初始化CorPUSProCeSS类定义及初始化如代码21所示。目前,CorPUSPrOCeSS类还没有做任何实际处理,只是定义了类的结构和初始化属性。后续的方法将在这个类中实现,用于预处理语料、提取特征、切分窗口等操作。代码2-1CorpusProcess类定义及初始化fromskleam_crfsuiteimportmetricsimportjoblib#用于保存和加载模型的库importsklearn_crfsuite#CRF模型库importre#正则表达式库classCorpusProcess(Object):definit_(self):初始化self.train_corpus_path="./data/1980_01rmrb.txtn#训练集语料路径self.process_corpus_path=,.dataresult-rmrb.txt"#处理后的语料路径self._maps=u't,:uT,u,nr,:u'PER',u'ns,:u,ORG',u,nt,:u,LOC'#定义标记与实体类别的对应关系self.tag_seq=None2 .语料读写操作语料读写操作如代码2-2所示,包括从文件中读取语料和将处理后的语料写入文件这两部分内容。read_COrPUS_from_file函数负责读取文件并返回一个包含文件所有行的列表。write_corpus_to_file函数则将处理后的数据写入指定的文件。代码2-2语料读写操作defread_corpus_from_file(self,file_path):读取语料f=open(file_path,'r,encoding=,utf-8,)lines=f.readlines()f.close()returnlinesdefwrite_corpus_to_file(self,data,f!le_path):写语料f=open(file_path,'wb')f.write(data)f.close()# 实例化CorpusProcess类corpus_process=CorpusProcessO# 读取原始语料文件input_file_path=11.datainput.txt"inputjines=corpus_process.read_corpus_from_file(input_file_path)PrintC原始语料为:H,inputjines)# 将处理后的数据写入新文件output_file_path=".tmpOUtPUt.txt”corpus_process.write_corpus_to_file(data=nn',.join(inputJines).encode('utf-8,),file_path=output_file_path)运行数据读取操作代码,得到文件input.txt中的语料如下。原始语料为:ufeff我爱北京天安门W:天安门上太阳升W3.标签提取及转换标签提取及转换如代码2-3所示,不仅根据词性提取对应的实体标签,还将标签转换为BIO(BeginInsideOutside)模式。POS_to_tag函数根据输入的词性P在字典中查找并返回对应的实体标签,若找不到,则返回O(表示非实体)。tag_Perform函数将标签转换为BIo模式,即在实体词组的开头添加前缀,实体词组内部的其他词添加匚前缀,非实体词保持'0'o代码2-3标签提取及转换#由词性提取标签defpos_to_tag(self,p):#通过self._maps来获取对应的标签t=self._maps.get(p,None)returntiftelse'0'#标签使用Blo模式deftag_perform(self,tag,index):ifindex=0andtag!='0':# 第一个词的标签为B_TAGreturn'B_),.format(tag)eliftag!='0':# 非第一个词的标签为LTAGreturn*I_,.format(tag)else:# 没有实体的标签为Oreturntag#示例句子及其词性标注sentence=”李华/nr“,“在/p“,"北京/ns“,“工作/v”#将词性标注转换为实体标签entity_tags=corpus_process.pos_to_tag(word.split(7')1)forwordinsentencePrint("实体标签为:",entity_tags)#将实体标签转换为BIo模式bio_tags=corpus_process.tag_perfbrm(tag,index)forindex,taginenumerate(entity_tags)Print("BIO模式标签为:',bio_tags)运行标签提取与转换代码,得到实体标签以及转换后的Blo模式标签如下。实体标签为:'PER','0','ORG','0'BIO模式标签为:|'BPER','O,'L0RG'0'输出的实体标签'PER,OJORG;'Orl表示为:第一个词是人名(PER),第二个词不是实体(0),第三个词是组织名(ORG),第四个词也不是实体(O)。而BIO模式标签B_PER,y,'LORGJO'则表示为:第一个词是一个人名实体的开始(B_PER),第二个词不是实体(0),第三个词是一个组织名实体的内部部分(LoRG),第四个词也不是实体(0)。4.语料初始化语料初始化如代码2-4所示,首先从文件中读取语料,然后将每行语料切分成单词列表。接着,将语料按词性标注序列和单词序列分开。将词性标注转换成BIO标记,并进行拼接操作。拼接好的标记序列会被扁平化,统一放到一个列表中。最后,将单词序列加上BOS(开始标记)和Ec)S(结束标记),并进行拼接操作。代码2-4语料初始化#语料初始化definitialize(self):# 从文件中读取语料lines=self.read_corpus_from_file(self.process_corpus_path)# 将每行语料切分成单词列表WOrdsist=line.strip().split(,')forlineinlinesifline.strip()# 释放内存dellines# 初始化字、词性、标签序列self.init_sequence(words_list)definit_sequence(self,words_list):# 将语料按词性标注序列和单词序列分开words_seq=word.split(,)0forwordinwordsforwordsinwords_listpos_seq=word.split(7')lforwordinwordsforwordsinwordsjist# 将词性标注转换成BIO标记,并进行拼接操作tag_seq=self.pos_to_tag(p)forpinposforposinpos_seqself.tag_seq=self.tag_perform(tag_seqindexi,w)forwinrange(len(words_seqindexi)foriinrange(len(tag_seqindex)forindexinrange(len(tag_seq)# 将拼接好的标记序列扁平化,统一放到个IiSt中self.tag_seq=tfortagintag_seqfortintagfortag_seqinself.tag_seq# 将单词序列加上BOS和EOS,并进行拼接操作self.word_seq=,<BOS>'+wforwordinword_seqforWinword+,<EOS>,forword_seqinwords_seq#窗口统一切分# 返回单词序列和标记

    注意事项

    本文(《自然语言处理技术》——实训6 中文命名实体识别.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开