“自然语言处理”实验报告2/53专业:智能科学与技术班级:1501学号:0918150102姓名:宋晓婷日期:2018/4/163/53目录实验1........................................................................................................................51、实验目的:.......................................................................................................52、实验原理和内容:............................................................................................53、实验环境和编程语言:.....................................................................................54、主要功能及实现:............................................................................................55、实验结论.........................................................................................................11实验2中文分词......................................................................................................111、实验目的和内容..............................................................................................112、实验原理.........................................................................................................123、实验平台及语言..............................................................................................134、主要功能及实现..............................................................................................144.1算法流程图................................................................................................144.2实验结果.....................................................................................................145、实验结论.........................................................................................................16实验三中文文本分类..............................................................................................171、小组成员以及分工..........................................................................................172、实验目的和内容..............................................................................................173、实验原理以及数据处理...................................................................................174/534、实验平台和语言..............................................................................................205、实验结果.........................................................................................................206、实验结论.........................................................................................................21四、实验1-3代码...................................................................................................215/53实验11、实验目的:本实验学习如何在利用NLTK进行分词\词性分析与句法分析,。通过次实验项目的练习,增强学生对课堂理论知识的理解,帮助学生以知识获取与自主实践相结合,学习对英文自然语言信息的处理的实践。2、实验原理和内容:NLTK自然语言处理工具包,里面包含了许多处理自然语言的库可以直接调用,本实验利用NLTK对obama。txt语料库进行对应的分词和词频统计,再对布朗语料库进行词性和句法分析。3、实验环境和编程语言:windows下anaconda3spyder(python3.6)4、主要功能及实现:4.1怎样载入自己的英文语料库(obama.txt),在自己的语料库中找出responsibility,education和working出现的频率及其他们词干出现的频率。(使用nltk的英文分词函数tokenize和stem)。①使用open以及read函数读取obama.txt文档,调用nltk里面的word_tokenize()函数,先把文档进行分词,再调用nltk中的FreDist()函数进行词频统计。统计responsibility,education和working出现的频率。结果见表一。6/53②提取词干的时候,NLTK中提供了三种最常用的词干提取器接口,即Porterstemmer,LancasterStemmer和SnowballStemmer。统计词干频率时,先对全文提取词干(whole_stems),然后在提取的词干中统计三者词干出现的频率,结果见表二。表一原词以及对应词干频率统计(全文总词数:3066全文总词干数:3066)表二三种词干提取器提取结果PorterstemmerLancasterStemmerSnowballStemmerresponsibilityresponsresponsresponseducationeduceduceducworkingworkworkwork4.2写程序处理布朗语料库,找到以下答案:4.2.1哪些名词常以他们复数形式而不是它们的单数形式出现?(只考虑常规的复数形式,-s后缀形式的)。①先查看布朗语料库里面包含的类别(如图一)responsibility(respons)education(educ)working(work)原词出现频率8112词干出现频率911127/53图一布朗语料库包含类别②选取其中一个类别的语料库adventure,提取里面的所有NNS标注的复数词放入word_double;提取NN标注而非NNS标注的单数词放入word_single;然后对这两个词表提取词干,比较两个词干表里面相同的词干,同时去除里面重复出现的词干,然后再在复数词表里面找出这些词。可得常以复数不以单数出现的词有:4.2.2选择布朗语料库的不同部分(其他目录),计数包含wh的词:此处我查找新闻(news)类别里面包含wh的词,结果如图二handseyesclothesfoolskidsnightshorsesmountainshillsfenceswingsbuildingsriflesfriendswarsEyesridershopesspringssnakeshousestimeslightsRiderstroubleskeysrocksLooksbootslookscigarettesstreetscountiesauthoritiesmeansdeputiesmurdersHousesSpringssaloonsbarsattackersholesZeros8/53图二布朗语料库新闻类别中包含wh的词4.3、输出brown文本集名词后面接的词性,结果如图三wheat:1wherever:1whip:2whipped:2wholesale:1whichever:1whisking:1why:14wheeled:2wholly-owned:1whims:1where:59whiplash:1which:245whereby:3white:57wheels:1who:268wheel:49/53图三brown文本集名词后面接的词性由统计可知:名词后面出现频率最高的是ADP(介词和后置词)第二是标点第三是动词依次是名词、连接词、副词、限定词、PRT、形容词、数量词、代名词、以及其他。4.4句法分析演示使用nltk的句法分析器parser(自底向上)nltk.app.srparser()后打开以下窗口,运行step会逐步演示对mydogsawamanintheparkwithastatue这句话进行文法分析。结果见图四、图五图四parser句法分析器nltk.app.rdparser()使用递归下降解析器(自顶向下),进行文法分析文法=词10/53法+句法图五rdparser递归下降解析器4.5对话框系统nltk里面一共有5个对话框系统,我选择1,情绪分析。结果如图六、图七图六11/53图七5、实验结论掌握了对语料库的基本操作,分词分句、统计词频以及对词性分析。句法分析的自顶向上以及自底向下思路简单但是实现起来比较麻烦,回溯会出现多次。实验中掌握了两种不同的句法分析的流程。nltk的对话框经测试后觉得有点基础,分析以及人机对话的可用性不是很强。实验2中文分词1、实验目的和内容a.用最大匹配算法设计分词程序实现对文档分词,并计算该程序分词召回率。12/53b.可以输入任意句子,显示分词结果。实验数据:(1)word_freq_list.txt分词词典(2)pku_test.txt未经过分词的文档文件(3)pku_test_gold.txt经过分词的文档文件2、实验原理核心思想:最大匹配算法算法描述:正向最大匹配法算法如下所示:逆向匹配法思想与正向一样,只是从右向左切分,这里举一个例子:输入例句:S1=计算语言学课程有意思;定义:最大词长MaxLen=5;S2=;分隔符=“/”;假设存在词表:…,计算语言学,课程,意思,…;最大逆向匹配分词算法过程如下:(1)S2=;S1不为空,从S1右边取出候选子串W=课程有意思;(2)查词表,W不在词表中,将W最左边一个