推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

Python程序设计教学的NLTK模块应用案例设计

更新时间:2019-12-22 10:58:25 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:pythonnltk模块自然语言处理 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

提出在Python程序设计教学中,依托Python强大的第三方库设计应用案例,以Python的自然语言处理模块NLTK作为主要分析工具,以就职演说语料库以及十九大报告作为分析素材,介绍文本内容抽取的方法,并对高频词实现可视化.


部分文件列表

文件名 大小
Python程序设计教学的NLTK模块应用案例设计.pdf 2M

部分页面预览

(完整内容请下载后查看)
3 期  
计 算 机 教 育  
Computer Education  
92  
2019 3 10 日  
G642  
中图分类号:  
文章编号:1672-5913(2019)03-0092-06  
Python 程序设计教学的 NLTK 模块应用案例设计  
刘卫国,李ꢀ 晨  
(中南大学 信息科学与工程学院,湖南 长沙 410083)  
摘 要:提出在 Python 程序设计教学中,依托 Python 强大的第三方库设计应用案例,以 Python 的自然语  
言处理模块 NLTK 作为主要分析工具,以就职演说语料库以及十九大报告作为分析素材,介绍文本内容抽  
取的方法,并对高频词实现可视化。  
关键词Python 教学;自然语言处理;教学案例  
行教学,能培养学生的学习兴趣,引导学生将  
0ꢀ 引ꢀ 言  
Python 应用到专业领域中。  
Python 言不仅语法优,  
而且具有大量的第三方函数模块库,很适合作  
1ꢀ 就职演说语料库文本内容提取与统计  
案例分析  
为程序设计入门语言,对学科交叉应用也很有  
-
2]  
帮助 [1  
NLTK 块是 Python 用的自然语言处理  
Natural Language ProcessNLP能方便  
快捷地处理自然语言文本。NLTK 模块中有用于  
处理自然语言任务的函数,与 Python 其他第三方  
模块库进行协同操作,能对处理结果进行二次处  
理。此外,NLTK 包含丰富的语料库,这些语料  
资源在教育学、文学、史学等领域均有应用 [3]。  
在管理、英语、法学等文科类专业程序设  
计教学中,利用 NLTK 模块并结合其他第三方  
模块,可以设计适合教学需要的应用案例 [4]。在  
Python 程序设计教学中,结合专业应用案例进  
笔者以就职演说语料库(Inaugural Address  
Corpus为英文研究对象进行分析,从中挖掘  
词句结果及高频词,以此论证挖掘出来的结果  
与语料库主题的相关性。就职演说语料库包含  
17892009 年美国历任总统就职演讲,共 55 个  
文本,总词汇数为 145 735 个。语料库以演说年  
代作为标准区分,演说年代对应独立的子文本。  
本案例使用到的 NLTK 知识点包括语料库的调  
用、分词分块处理、停用词的信息过滤、频率统  
计类函数的应用 [5] 以及 NLTK Matplotlib 模块  
的协同作用。案例流程见图 1。  
离散图  
可视化  
图表  
同语境词提取  
同语境词  
折线图  
预处理  
概率统计  
人工选择  
就职演说语  
料库  
去停用词集  
高频词集  
目标词汇  
双连词提取  
双连词  
简单统计  
词汇量  
词汇丰富度  
词性标注  
所在句子  
标注结果  
图 1 就职演说语料库案例流程图  
基金项南大工科究与实践项新工科景下计算机基础系列课程的改革与实践”  
(2017XGK026。  
第一作者简介:刘卫国,男,教授,研究方向为网络与信息安全、智能信息处理,。  
ies 结尾  
return word[:-3] + 'y' # 则去掉 ies y  
elif word.endswith('es'): # 若以 es 结尾  
1.1 语料库获取与预处理  
本案例使用的语料库来源于 NLTK 的语料  
库,导入 NLTK 模块即可调用。使用 NLTK 计算  
文本长度的内置函数 len() 计算词汇丰富度 T 值。  
词汇丰富度是用于分析文本中词汇出现的多寡,  
反映文本词汇的总体使用情况。就职演说语料库  
的词汇丰富度为 6.692%T 值越大说明文本词汇  
丰富度越大,对文本词汇的使用情况得到数字上  
直观的展示。  
return word[:-2] # 则直接提取去掉 es 的词汇  
elif word.endswith('en'): # 若以 en 结尾  
return word[:-2] + 'an' # en 转变为 an  
else:  
return word[:-1] # 如果都不符合上述情况 默认  
词汇以 s 结尾则直接去掉 s  
1.2 分析与统计  
分析阶段是抽取过程的核心,涉及文本的一  
文本预处理是对文本进行简单处理的过程,  
本案例的预处理过程包括清洗过滤与词形还原。  
首先过滤文本中无实际含义的停用词、符号,英  
文词汇有单复数、时态等不同形态,如果不进行  
词形还原,统计结果会存在很大的偏差。  
清洗过滤通过调用停用词语料库完成,首  
先将文本中词汇使用 lower() 方法统一归并为小  
写,导入 NLTK 的英文停用词语料库,提取就职  
演说语料库包含且停用词语料库不包含的词汇。  
词形还原通过编写函数实现将复数单词转化为单  
数,根据预先定义好单词的单复数转换规则,对  
输入单词的末尾字母作选择判断,将输入的单词  
末尾字母转换为单数形式的后缀。使用到的知  
识点有判断结构 if-else 语句、词汇运算符 word.  
endswith()。具体代码如下:  
系列处理操作。使用的方法有同语境词提取、双  
连词提取、上下文提取、词性标注以及统计分  
析,其中统计分析是最常使用的工具。  
NLTK 中使用函数 similar() 查找与目标词汇  
出现在相似上下文位置的词,即在文本中可用  
作替换的词汇。在美国作家梅尔维尔所写的《白  
鲸记寻找名词的同语境词,小说讲述的是  
主人公亚哈船长与一头白鲸的故事,使用 text.  
similar("captain") 到以下同语境whale ship  
sea boat deck world other devil wind body mate  
crew air head,可以发现得到的词汇与目标词汇  
词性均为名词。  
双连词搭配提取是在文本中检索得到频繁出  
现的双连词以及文本中的固定搭配。例如在古腾  
堡语料库中调用《哈姆雷特取双连词搭配 ,  
具体代码如下:  
import nltk # 导入 NLTK 模块  
from nltk.book import * # 导入 nltk.book 包  
from nltk.corpus import stopwords # 从语料库包中导  
入停用词  
n l t k . Te x t ( n l t k . c o r p u s . g u t e n b e r g .  
words('shakespeare-hamlet.txt')).collocations()  
NLTK 两个方法可以实现目标词汇的上  
下 文 输 出, 使 用 concordance() 对 目 标 词 汇 所  
在的句子进行检索输common_text 找词  
汇 集 合 的 相 同 临 近 词 汇, 例 如 text2.common_  
contexts(["monstrous","very"]) 得到结果“a_pretty  
am_glad a_lucky is_pretty be_glad其中 a_lucky  
表示 a monstrous lucky a very lucky。  
text = nltk.Text(nltk.corpus.inaugural.words()) # 语  
料库中调取就职演说语料库内容  
T=len(set(text))/len(text) # 计算文本丰富度  
def uwords(text): # 编写函数过滤文本中的停用词  
text_vocab = [w.lower() for w in text if w.isalpha()] #  
当词汇为字母时将文本中的词汇化为小写  
stopwords = set(nltk.corpus.stopwords.  
words('english')) # 导入 NLTK 中的英文停用词语料库  
uwords = [w for w in text_vocab if w not in  
stopwords] # 提取就职演说语料库中不在停用词语料库的  
词汇  
词性标注(Part-of-Speech Tagging, POS tagging)  
将分词处理后的词汇按词性(POS类并标注的  
过程。在词性分析阶段使用 NLTK 内置的词性标  
注器(POS tagger处理一个词序列,为每个词  
附加一个词性标记。词性标注可以帮助分析句子  
成分,划分句子结构。  
return uwords  
# 编写函数将文本中的复数词汇转化为单数  
def singular(word):  
if word.endswith('ies'): # 判断词汇的结尾字母若  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载