自然语言处理实验报告材料Word下载.docx

上传人:b****6 文档编号:19044255 上传时间:2023-01-03 格式:DOCX 页数:29 大小:29.90KB
下载 相关 举报
自然语言处理实验报告材料Word下载.docx_第1页
第1页 / 共29页
自然语言处理实验报告材料Word下载.docx_第2页
第2页 / 共29页
自然语言处理实验报告材料Word下载.docx_第3页
第3页 / 共29页
自然语言处理实验报告材料Word下载.docx_第4页
第4页 / 共29页
自然语言处理实验报告材料Word下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

自然语言处理实验报告材料Word下载.docx

《自然语言处理实验报告材料Word下载.docx》由会员分享,可在线阅读,更多相关《自然语言处理实验报告材料Word下载.docx(29页珍藏版)》请在冰豆网上搜索。

自然语言处理实验报告材料Word下载.docx

3066〕

表二三种词干提取器提取结果

Porterstemmer

LancasterStemmer

SnowballStemmer

responsibility

respons

education

educ

working

work

4.2写程序处理布朗语料库,找到以下答案:

4.2.1哪些名词常以他们复数形式而不是它们的单数形式出现?

〔只考虑常规的复数形式,-s后缀形式的〕.

①先查看布朗语料库里面包含的类别〔如图一〕

图一布朗语料库包含类别

②选取其中一个类别的语料库adventure,提取里面的所有NNS标注的复数词放入word_double;

提取NN标注而非NNS标注的单数词放入word_single;

然后对这两个词表提取词干,比拟两个词干表里面一样的词干,同时去除里面重复出现的词干,然后再在复数词表里面找出这些词.

可得常以复数不以单数出现的词有:

handseyesclothesfoolskidsnightshorsesmountainshillsfenceswingsbuildingsriflesfriendswarsEyesridershopesspringssnakeshousestimeslightsRiderstroubleskeysrocksLooksbootslookscigarettesstreetscountiesauthoritiesmeansdeputiesmurdersHousesSpringssaloonsbarsattackersholesZerospowerselbowsLightsofficersfeelingswatersthroatslifeboatsislandsunclesmothershairsvalleysHillsmanderskillsofficescentersfarmershornsproductstalksmarinesmurderersstorespersons

4.2.2选择布朗语料库的不同局部〔其他目录〕,计数包含wh的词:

此处我查找新闻〔news〕类别里面包含wh的词,结果如图二

图二布朗语料库新闻类别中包含wh的词

wheat:

1wherever:

1whip:

2whipped:

2wholesale:

1whichever:

1

whisking:

1why:

14wheeled:

2wholly-owned:

1whims:

1where:

59

whiplash:

1which:

245whereby:

3white:

57wheels:

1who:

268wheel:

4

whites:

2when:

169whatever:

2whose:

22white-clad:

1while:

55wholly:

whether:

18what:

95whopping:

1whole:

11whom:

8whirling:

1whiz:

2

4.3、输出brown文本集名词后面接的词性,结果如图三

图三brown文本集名词后面接的词性

由统计可知:

名词后面出现频率最高的是ADP〔介词和后置词〕第二是标点第三是动词依次是名词、连接词、副词、限定词、PRT、形容词、数量词、代名词、以与其他.

使用nltk的句法分析器parser〔自底向上〕

nltk.app.srparser<

后打开以下窗口,运行step会逐步演示对mydogsawamanintheparkwithastatue这句话进展文法分析.结果见图四、图五

图四parser句法分析器

nltk.app.rdparser<

使用递归下降解析器〔自顶向下〕,进展文法分析文法=词法+句法

图五rdparser递归下降解析器

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="

课程有"

〔9〕查词表,W不在词表中,将W最左边一个字去掉,得到W="

程有"

〔10〕查词表,W不在词表中,将W最左边一个字去掉,得到W="

有"

这W是单字,将W参加到S2中,S2="

/有/意思〞,并将W从S1中去掉,此时S1="

计算语言学课程"

〔11〕S1不为空,于是从S1左边取出候选子串W="

语言学课程"

〔12〕查词表,W不在词表中,将W最左边一个字去掉,得到W="

言学课程"

〔13〕查词表,W不在词表中,将W最左边一个字去掉,得到W="

学课程"

〔14〕查词表,W不在词表中,将W最左边一个字去掉,得到W="

课程"

〔15〕查词表,"

课程/有/意思/〞,并将W从S1中去掉,此时S1="

计算语言学"

〔16〕S1不为空,于是从S1左边取出候选子串W="

〔17〕查词表,"

计算语言学〞在词表中,将W参加到S2中,S2="

计算语言学/课程/有/意思/〞,并将W从S1中去掉,此时S1="

〔18〕S1为空,输出S2作为分词结果,分词过程完毕.

3、实验平台与语言

windowsanconda3spyder<

4、主要功能与实现

图八正向最大匹配算法实验流程图

a、基于上述算法,写代码实现.实现前对词典中的词的最大长度进展计算,可得词典里面词最大词长为4.于是初始化三个空列表来存放词长为2、3、4的词.把原词典里面的词分成三份,这样匹配时可以加快匹配速度.匹配完之后计算召回率〔R〕、准确率〔P〕、F测度,

准确率:

P=系统输出正确词的个数/系统输出词的个数〔词典词的个数〕*100%

召回率:

R=系统输出正确词的个数/金标词典中词的个数〔词典词的个数〕*100%

F-测度:

F=2*P*R/<

P+R>

以下是实现结果,如图九.

图九最大匹配算法性能值

整理成表之后可得表三

表三正向最大匹配算法评价

正向最大匹配算法

准确率〔P〕

82.7830%

召回率〔R〕

88.7967%

F-测度

85.6844%

b、将文本文件改成外部输入,对输入的词自动分词,以下是测试结果:

图十实验2-b测试

正向最大匹配算法是汉语分词的一个重要算法,思路简单,实验中我将词顺序存储,但是把词长不同的词分开,比拟的时候在对应词长的列表里面进展比拟,这样大大提高了算法的运行效率.对于逆向匹配算法,虽然思路和正向差不多,但是对我而言实践起来比正向要困难.同时我最后分词的准确率不高,对分词歧义并没有进展消除,这可能是导致歧义的原因之一.

实验三中文文本分类

1、小组成员以与分工

宋晓婷、陈曦

分工:

陈曦数据预处理

宋晓婷数据预处理〔去html标签以与分词〕、特征提取以与分类

2、实验目的和内容

对语料库进展数据预处理,利用朴素贝叶斯算法或SVM完成对测试集的文本进展分类.

语料库主要包括健康、财经、教育三个类别,每个类别里面各有6篇文档以与一篇test.txt待测试的文档.

3、实验原理以与数据处理

自然语言处理文本分类的主要步骤如图十一

图十一实验5流程图

预处理局部:

去除文档中的html标签,删除文档中多余的空格和换行.这里没有去除停用词,因为在后续调用sklearn中的算法的时候可以直接利用其中的算法进展停用词去除.

分词:

这里调用的是结某某文分词系统〔importjieba〕.

结构和表示-构建词向量空间:

对于分好词的文档,利用sklearn里面的bunch数据结构,由于给的test.txt测试集没有标签,在后续对算法测评的时候无法测评,于是把每篇文档中的第五篇5.txt分出来作为测试集.用这三篇文档作为测试集来进展算法测评.Bunch化后训练集以与测试集数据如表四、表五所示.

TF-IDF算权重、提取特征:

去除测试集和训练集中的停用词,计算数据集里面的词频,把词频大于50%的去掉,因为这些高频词对分类的特异性没有多大作用,而后根据词频,计算每个词的权重,得到权重矩阵〔tdm〕,,并把这些词统一到同一个词向量空间里面提取特征.分类:

此处是多分类,调用sklearn中的朴素贝叶斯函数中的伯努利模型和多项式模型,以与svm中的SVC算法,用训练集数据进展训练,利用训练好的算法预测类别.

评价:

计算准确率〔P〕,召回率〔R〕,F-测评值

表四Bunch化后训练集数据

target_name

filenames

label

contents

 

财经

重要财务指标财务指标每股收益...

致命的停滞:

谁在监测京石高速?

杜家...

朱宏任:

上半年工业经济运行总体保持平稳...

利率市场化或推升高风险贷款...

*ST炎黄保壳仍无具体措施...

健康

中国每天新增加糖尿病患者约...

重酒石酸间羟胺注射液鲜花...

脂肪乳注射液〔C14-24〕[主要...

马来酸麦角新碱注射液...

盐酸可乐定片[须知事项]...

教育

《杜拉拉升职记》开播的时候...

中学拟用平板电脑代替纸质教材...

2013考研数学备考指导...

高考后学生纷纷去看心理医生...

2012政法干警行测数学运算指南...

表五bunch化后测试集数据

中俄专家谈东盟:

三方...

水杨酸软膏[主要成分]水杨酸....

学生课程生活日记显示:

本市...

4、实验平台和语言

windowsanaconda3spyder<

python3.6>

5、实验结果

测评

总结

F-测评

效果最好的是朴素贝叶斯中的多项式模型,该模式适合多分类问题.

朴素贝叶斯

多项式〔alpha=0.001〕

94.4%

93.3%

伯努利〔alpha=0.001〕

50.0%

66.7%

68.3%

线性核〔C=0.1〕

85.2%

73.3%

多项式核〔C=0.1〕

93.9%

92.8%

92.9%

6、实验结论

对于中文文本分类,初次动手尝试,拿到数据集之后也是不知道该如何下手.参考网上一篇博客.里面博主对于中文文本分类说的很清楚,让我受益颇多.

对于分本分类采用bunch结构也是一个非常巧妙地结构化表示方法.

四、实验1-3代码

实验一

#-*-coding:

utf-8-*-

CreatedonThuApr509:

39:

092018

author:

sxt

#NatrualLanguage

#experiment_1

fromnltkimport*

importnltk

file=open<

'

obama.txt'

raw_file=file.read<

#读取文件

sens=nltk.sent_tokenize<

raw_file>

#将文本拆分成句子列表

words=nltk.word_tokenize<

#geteverywordofthetxt,分词

#print<

obama中的总词数:

#总词数

len<

words>

fdist=nltk.FreqDist<

sdist=nltk.FreqDist<

sens>

print<

responsibility出现次数:

fdist['

responsibility'

]>

education出现次数:

education'

working出现次数:

working'

#提取三个词的词干

fromnltk.stem.lancasterimportLancasterStemmer

lancaster_stemmer=LancasterStemmer<

responsibility的词干:

lancaster_stemmer.stem<

sdist['

respons'

education的词干:

working的词干:

fromnltk.stem.porterimportPorterStemmer

porter_stemmer=PorterStemmer<

porter_stemmer.stem<

fromnltk.stemimportSnowballStemmer

snowball_stemmer=SnowballStemmer<

english'

snowball_stemmer.stem<

#统计词干出现的频率,先对全文提取词干

whole_stems=[lancaster_stemmer.stem<

t>

fortinwords]#提取全文的词干

全文词干总数:

wdist=nltk.FreqDist<

responsibility的词干出现频率:

wdist['

education的词干出现频率:

educ'

working的词干出现频率:

work'

fromnltk.corpusimportbrown

importre

#包含wh的词计数

c=brown.categories<

#布朗语料库包含的目录类别

news_text=brown.words<

categories='

news'

#新闻

#romance_text=brown.words<

romance'

#浪漫

ndist=nltk.FreqDist<

[w.lower<

forwinnews_text]>

modals=set<

[wforwinnews_textifre.search<

^wh'

w>

forminmodals:

print<

m+'

:

ndist[m]>

#名词后面词性统计

#brown_Irnd_tagged=brown.tagged_words<

learned'

tagset='

universal'

#tags=[b[1]for<

a,b>

innltk.bigrams<

brown_Irnd_tagged>

ifa[1]=='

NOUN'

]

ifa[0]=='

often'

#nd=nltk.FreqDist<

tags>

#统计频率

#nd.tabulate<

#统计常以复数形式出现的词

#wsj=nltk.corpus.treebank.tagged_words<

simplify_tags=True>

#word_tag_fd=nltk.FreqDist<

wsj>

#fromnltk.corpusimportbrown

brown.categories<

#打出布朗语料库里面的类别

brown_news_tagged=brown.tagged_words<

adventure'

brown_news_tagged>

word_double=nltk.FreqDist<

wordfor<

word,tag>

inbrown_news_taggediftag.startswith<

NNS'

#提取词性标注为复数的词

word_single=nltk.FreqDist<

N'

andnottag.startswith<

#word_single=nltk.FreqDist<

#word_double=nltk.FreqDist<

#提取词性标注为单数的词

double_keys=list<

word_double.keys<

single_keys=list<

word_sin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1