版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于VC+的人工分词及词性标注辅助程序的设计和实现马创新,李斌(南京师范大学语言科技中心,南京,210097)提要:在语言研究中,经常要对语料进行分词和词性标注,我们使用VC+设计了一个人工分词及词性标注辅助程序,它能够根据预定的规则对标注后的语料进行检验,发现违反规则的情况就会给予提示,并且还设计了一个小键盘,减轻了标注者记忆词性标记的负担。我们使用这个辅助程序对大量的古代汉语和现代汉语的语料进行标注,结果证明,这个辅助程序既能够有效处理GB2312编码的简体汉字语料,也能够处理Unicode编码的繁体汉字语料,有效地提高了人工分词及词性标注的速度和正确率。关键词:分词;词性标注;辅助程序;
2、VC+;DesignandRealizationoftheAssistantProgramForManualWord-SegmentedandPartofSpeech-LabeledBasedonVC+MaChuangxin,LiBin(LanguageScienceandTechnologyCenter,NanjingNormalUniversity,Nanjing,China,210097)【Abstract】Theresearcherswhostudylanguageoftensegmentwordsandlabelpartofspeechinstudylanguage.Wedesign
3、edandrealizedanassistantprogramformanualword-segmentedandpartofspeech-labeledusingVC+.Itcancheckthesentencesaccordingonpreconcertedformulae.Ifitfindthethingsdontaccordwiththeformulae,itwillgiveadvices.Furthermore,wedesignasmallkeyboard,itcanrelievetheresearchersburdentoremembertags.Weusetheassistant
4、programtolabellotsofancientbooksandmodernbooks.TheresultproveditnotonlycandealwiththematerialwithsimplifiedChinesecharacter,butalsotreatwiththematerialwiththeoriginalcomplexChinesecharacter.Itcanimprovethespeedandprecisenesseffectively.【Keywords】word-segmented;partofspeech-labeled;assistantprogram;V
5、C+人工分词及词性标注辅助程序在语言研究中,经常要对语料进行分词和词性标注,分词和词性标注是进行句法分析、句义分析的基础但是在人工分词或词性标注时,经常会出现多加了分隔符(一般是空格)或是少加了分隔符等问题,有时当词性标记很多时,标注者在记忆这些词性标记时会有很大困难。我们设计的人工分词及词性标注辅助程序能够根据预定的规则对标注后的语料进行检验,发现违反规则的情况就会给予提示,并且还设计了一个小键盘,减轻了标注者记忆词性标记的负担。通过实验表明,使用这个辅助程序能够有效提高人工分词及词性标注的速度和正确率。人工分词及词性标注辅助程序的功能及特点人工分词及词性标注辅助程序的主界面如图1所示,标语
6、料,在“从第几句开始标注”前面的编辑框中输入开始标注的句数,再点击“开始标注”按纽就可以进行标注。在对话框中间的三个编辑框中会呈现“上一句”,“当前句”和“下一句”三句话,其中“上一句”和“下一句”编辑框中的句子是只读、无法改写的,供标注者在标注时联系上下文作参考用的,只有“当前句”编辑框中呈现的文本可以改写。点击右边的“上句”按纽可以翻看上一句,点击“下句”按纽可以翻看下一句。在这三个编辑框的下面有一个小键盘,这个小键盘中的每个键其实都是一个命令按纽,有些键上放的是词性标记,它的功能是如果“当前句”编辑框的句子已经被分词(即句子中的各个词之间已经用一个空格隔开),通过点击小键盘中这些带有词性
7、标记的命令按纽,程序就会自动的按照从前往后的顺序在每个词语后面添加命令按纽上的词性标记。还有几个键是用来实现一些特殊功能的,比如“删除”键的功能是按照从后往前的顺序删除“当前句”编辑框中词语的词性标记的,但它只是删除词性标记,并不会删除词与词之间的空隔。如果一句话中的每个词语都已做了词性标注,第一次点“删除”键,它会删除最后一个词语的词性标记,第二次点“删除”键,它会删除倒数第二个词语的词性标记,如果不停点击“删除”键,它就会按照从后往前的顺序删除完句子中所有的词性标记。“Undo”键的功能是撤销在“当前句”编辑框中所做的最后一次手动操作,但不会撤销使用小键盘上的命令按纽所做的操作。“添加换行
8、符”键的功能在句子的末尾添加一个换行符,防止人工误操作删除了末尾的换行符致使当前句和下一句连在一起。另外,我们根据相关知识设计了一系列的检验规则,点击“检验标注”键就可以对“当前句”编辑框中已经做好分词及词性标记的句子做检验,如果某些地方不符合这些规则的规定,在小键盘下面的提示窗口将会显示相应的提示信息,提醒标注者修改。当点击“提交标注”键时,如果做好分词及词性标记的句子完全与规则相符,将会被顺利保存,并且原先在“当前句”的内容会显示到“上一句”中,原先在“下一句”中的内容会显示到“当前句”中,编辑框“下一句”中会显示新的一句话;但是如果做好分词及词性标记的句子与规则不相符,只会在提示窗口显示
9、相应的提示信息,其他地方不变。考虑到可能会有一些例外情况,我们又设置了一个“强制提交”键,该键功能与“提交标注”键相似,不同的地方就是当做好分词及词性标记的句子与规则不相符,会在提示窗口显示相应的提示信息,同时也会把做好分词及词性标记的句子保存下来,并且原先在“当前句”的内容会显示到“上一句”中,原先在“下一句”中的内容会显示到“当前句”中编辑框“下一句”中会显示新的一句话。人工分词及词性标注辅助程序的实现过程建立一个基于对话框的应用程序,按照图1所示,在上面放置相应的控件,为这个对话框建立一个类,并且为各个编辑框控件设置相应的成员变量。我们在编写程序时为编辑框控件设置的成员变量有:显示语料库
10、名的编辑框是m_corpus,显示正在标注第几句的编辑框是m_ParaNumber,显示上一句的编辑框是m_before,显示下一句的编辑框是m_after,显示当前句的编辑框是m_current,显示提示信息的编辑框是m_appear。并且我们定义了三个全局变量vectorlines;inttotalLines,currentLines;“选择语料库”命令按纽的单击响应消息如下:CFileDialogOpenFileDlg(TRUE,OFN_OVERWRITEPROMPT);/打开语料文件if(OpenFileDlg.DoModal()!=IDOK)return;this-m_corpus=
11、OpenFileDlg.GetPathName();/将选择的文件名显示在编辑框里this-m_before=;this-m_current=;this-m_after=;/初始设置“上一句”,“当前句”和“下一句”三个编辑框内容都为空this-m_paraNumber=1;/默认从第一句开始标注。UpdateData(FALSE);UpdateWindow();FILE*in;in=fopen(m_corpus,rt);if(in=NULL)AfxMessageBox(Cannotopenthefile!);return;CStdioFileinFile(in);charline6000;l
12、ines.clear();totalLines=0;while(inFile.ReadString(line,6000)/从文件中循环读入每一段。lines.push_back(line);totalLines+;/将文件中的内容存储在向量lines中。inFile.Close();“开始标注”命令按纽的单击响应消息如下:UpdateData(TRUE);if(this-m_corpus=)AfxMessageBox(没有打开语料库,请先打开语料库!);return;currentLines=m_paraNumber-1;if(currentLines=totalLines)m_current
13、.Format(rrnrrntt!输入的段数错误rrnrrntt语料库的总段数为%d行,请重新输入!,totalLines);elsethis-m_current=linescurrentLines;if(currentLines0¤tLinesm_before=linescurrentLines-1;if(currentLinesm_after=linescurrentLines+1;elsethis-m_after=ttt语料库标注结束;UpdateData(FALSE);UpdateWindow();“上句”命令按纽的单击响应消息如下:UpdateData(TRUE);if(
14、this-m_corpus=)return;this-m_current=;this-m_before=;this-m_after=;if(currentLines=0|currentLines=totalLines)return;currentLines-;m_paraNumber=currentLines+1;this-m_current=linescurrentLines;if(currentLines0¤tLinesm_before=linescurrentLines-1;if(currentLinesm_after=linescurrentLines+1;elsethis
15、-m_after=ttt语料库标注结束;UpdateData(FALSE);UpdateWindow();“下句”命令按纽的单击响应消息如下:UpdateData(TRUE);if(this-m_corpus=)return;this-m_current=;this-m_before=;this-m_after=;if(currentLines=totalLines-1)return;currentLines+;m_paraNumber=currentLines+1;this-m_current=linescurrentLines;if(currentLines0¤tLinesm_
16、before=linescurrentLines-1;if(currentLinesm_after=linescurrentLines+1;elsethis-m_after=ttt语料库标注结束;UpdateData(FALSE);UpdateWindow();小键盘中“词性标记”命令按纽的单击响应消息如下:先编写一个子函数:CStringaddMark(CStringcurrentLine,CStringmark)unsignedpoint=currentLine.GetLength();for(unsignedit=1;itm_current=)return;/如果没有打开语料,就返回。m
17、_current=addMark(m_current,/w);/调用函数,参数表中的第二个参数是/wUpdateData(FALSE);UpdateWindow();其他“词性标记”命令按纽的单击响应消息与此类似,不同之处就是调用函数addMark时,参数表中的第二个参数不同。小键盘中“删除”命令按纽的单击响应消息如下:UpdateData(TRUE);if(this-m_current=)return;CStringcurrentLine=m_current;inttr=currentLine.ReverseFind(/);if(tr0)if(currentLine.Mid(tr+2,1)=
18、)m_current=currentLine.Mid(0,tr)+currentLine.Mid(tr+2);if(currentLine.Mid(tr+3,1)=)m_current=currentLine.Mid(0,tr)+currentLine.Mid(tr+3);UpdateData(FALSE);UpdateWindow();3.8小键盘中“Undo”命令按纽的单击响应消息很简单:CEdit*editCur=(CEdit*)GetDlgItem(IDC_current);editCur-Undo();3.9小键盘中“提交标注”命令按纽的单击响应消息如下:UpdateData(TRU
19、E);if(m_corpus=)return;CStringbuff=m_current,message;buff.TrimLeft();m_appear=;/初始设置提示信息编辑框的内容为空。CEdit*currentEdit=(CEdit*)GetDlgItem(IDC_current);CStringmsgbuf;unsignedparaN=0,curP=0;if(buff.GetLength()=2)/不处理只有一个回车的句子。for(unsignedit=0;itLineFromChar(it);/得到错误所在的行。curP=currentEdit-LineIndex(paraN);
20、/得到错误所在的行的第一个字符的下标。msgbuf=buff.Mid(curP,it-curP);/得到错误所在的行的第一个字符到错误字符之间的字符串message.Format(”警告(第小行):t%st之后有两个空格,是否需要删除一个!,paraN+1,msgbuf);m_appear=m_appear+rrn+message;message=;msgbuf=,curP=0;paraN=0/规则2:每一段的最后一个字符一定要是换行符。if(m_current.Mid(m_current.GetLength()-1)!=n)m_appear=m_appear+rrn+警告:t当前句末末尾缺少
21、一个换行符,请点击小键盘加入一个,否则当前句会和下一句连成一句。;(这里只用两条规则来举例,如果需要增加验证规则,还可以依据上面的方式添加代码即可)if(m_appear!=)/如果有警告信息,说明标注有错误,显示提示后就不再执行下面的代码。UpdateData(FALSE);UpdateWindow();return;if(currentLinesm_current;currentLines+;m_paraNumber=currentLines+1;this-m_current=linescurrentLines;if(currentLines0¤tLinesm_before=l
22、inescurrentLines-1;if(currentLinesm_after=linescurrentLines+1;elsethis-m_after=ttt语料库标注结束;else/如果当前段是最后一段,只保存,不往下处理了。linescurrentLines=this-m_current;this-m_before=linescurrentLines;this-m_current=rrntt语料库标注结束,不要再点“申请提交”“强制提交”,rrnt否则最后一句会被改写,请退出。;UpdateData(FALSE);UpdateWindow();FILE*agencys;agencys=fopen(m_corpus,wt);/读出向量中的内容保存到文件中。if(agencys=NULL)return;CStdioFileagenfs(agencys);for(inti=0;itotalLines;i+)agenfs.WriteString(linesi);agenfs.Close();3.10小键盘中“检验标注”和“强制提交”两个命令按纽的单击响应消息与“提交标注”相似,对“检验标注”命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度城乡实体地域划分与土地利用规划合同3篇
- 2025年度体育场馆周边临时停车位租赁管理协议3篇
- 2025年度文化创意产业出借咨询及合作开发合同4篇
- 2025年度汽车零部件OEM贴牌生产协议2篇
- 2025年度特色民宿租赁服务合同范本4篇
- 《电池技术教程》课件
- 2025年度租赁汽车保险理赔服务合同模板4篇
- 2025年物业管理员考试辅导教材基本知识问答合同3篇
- 2025年湖南怀化信合劳务有限公司招聘笔试参考题库含答案解析
- 2025年浙江湖州建欣商贸有限公司招聘笔试参考题库含答案解析
- 焊锡膏技术培训教材
- 函授本科《小学教育》毕业论文范文
- 高考高中英语单词词根词缀大全
- 江苏省泰州市姜堰区2023年七年级下学期数学期末复习试卷【含答案】
- 药用辅料聚乙二醇400特性、用法用量
- 《中小学机器人教育研究(论文)11000字》
- GB/T 22085.1-2008电子束及激光焊接接头缺欠质量分级指南第1部分:钢
- 全过程人民民主学习心得体会
- 2023年上海期货交易所招聘笔试题库及答案解析
- 附图1岑溪市行政区划图
- word企业管理封面-可编辑
评论
0/150
提交评论