自然语言处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“自然语言处理”实验报告
专业:智能科学与技术
班级:1501
学号:**********
姓名:***
日期:2018/4/16
目录
实验1 (3)
1、实验目的: (3)
2、实验原理和内容: (3)
3、实验环境和编程语言: (3)
4、主要功能及实现: (3)
5、实验结论 (8)
实验2 中文分词 (8)
1、实验目的和内容 (8)
2、实验原理 (9)
3、实验平台及语言 (10)
4、主要功能及实现 (11)
4.1 算法流程图 (11)
4.2实验结果 (11)
5、实验结论 (13)
实验三中文文本分类 (13)
1、小组成员以及分工 (13)
2、实验目的和内容 (13)
3、实验原理以及数据处理 (14)
4、实验平台和语言 (16)
5、实验结果 (16)
6、实验结论 (16)
四、实验1-3 代码 (17)
实验1
1、实验目的:
本实验学习如何在利用NLTK进行分词\词性分析与句法分析,。通过次实验项目的练习,增强学生对课堂理论知识的理解,帮助学生以知识获取与自主实践相结合,学习对英文自然语言信息的处理的实践。
2、实验原理和内容:
NLTK自然语言处理工具包,里面包含了许多处理自然语言的库可以直接调用,本实验利用NLTK对obama。txt语料库进行对应的分词和词频统计,再对布朗语料库进行词性和句法分析。
3、实验环境和编程语言:
windows下anaconda3 spyder(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出现的频率。结果见表一。
②提取词干的时候,NLTK中提供了三种最常用的词干提取器接口,即 Porter stemmer, Lancaster Stemmer 和Snowball Stemmer。统计词干频率时,先对全文提取词干(whole_stems),然后在提取的词干中统计三者词干出现的频率,结果见表二。
表一原词以及对应词干频率统计
(全文总词数:3066 全文总词干数:3066)
表二三种词干提取器提取结果
4.2 写程序处理布朗语料库,找到以下答案:
4.2.1 哪些名词常以他们复数形式而不是它们的单数形式出现?(只考虑常规的复数形式,-s后缀形式的)。
①先查看布朗语料库里面包含的类别(如图一)
图一布朗语料库包含类别
②选取其中一个类别的语料库adventure,提取里面的所有
NNS标注的复数词放入word_double;提取NN标注而非NNS标注的单数词放入word_single;然后
对这两个词表提取词干,比较两个词干表里面相同的词干,同时去除里面重复出现的词干,然后再在复数词表里面找出这些词。
可得常以复数不以单数出现的词有:
4.2.2选择布朗语料库的不同部分(其他目录),计数包含wh的词:
此处我查找新闻(news)类别里面包含wh的词,结果如图二
图二布朗语料库新闻类别中包含wh的词
4.3、输出brown文本集名词后面接的词性,结果如图三
图三brown文本集名词后面接的词性
由统计可知:
名词后面出现频率最高的是ADP(介词和后置词)第二是标点第三是动词依次是名词、连接词、副词、限定词、PRT 、形容词、数量词、代名词、以及其他。
4.4 句法分析演示
使用nltk的句法分析器parser (自底向上)
nltk.app.srparser() 后打开以下窗口,运行step 会逐步演示对my dog saw a man in the park with a statue这句话进行文法分析。结果见图四、图五
图四parser句法分析器
nltk.app.rdparser() 使用递归下降解析器(自顶向下),进行文法分析文法=词法+句法
图五rdparser递归下降解析器
4.5 对话框系统
nltk里面一共有5个对话框系统,我选择1,情绪分析。结果如图六、图七
图六
图七
5、实验结论
掌握了对语料库的基本操作,分词分句、统计词频以及对词性分析。句法
分析的自顶向上以及自底向下思路简单但是实现起来比较麻烦,回溯会
出现多次。实验中掌握了两种不同的句法分析的流程。nltk的对话框经测
试后觉得有点基础,分析以及人机对话的可用性不是很强。
实验2 中文分词
1、实验目的和内容
a.用最大匹配算法设计分词程序实现对文档分词,并计算该程序分词召回率。
b.可以输入任意句子,显示分词结果。
实验数据:
(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最左边一个字去掉,得到W="程有意思";
(3)查词表,W不在词表中,将W最左边一个字去掉,得到W="有意思";
(4)查词表,W不在词表中,将W最左边一个字去掉,得到W="意思"
(5)查词表,“意思”在词表中,将W加入到S2中,S2=" 意思/",并将W从S1中去掉,此时S1="计算语言学课程有";
(6)S1不为空,于是从S1左边取出候选子串W="言学课程有";
(7)查词表,W不在词表中,将W最左边一个字去掉,得到W="学课程有";
(8)查词表,W不在词表中,将W最左边一个字去掉,得到W="课程有";