自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。自然语言工具箱(NLTK,NaturalLanguageToolkit)是一个基于Python语言的类库,它也是当前最为流行的自然语言编程与开发工具。在进行自然语言处理研究和应用时,恰当利用NLTK中提供的函数可以大幅度地提高效率。本文就将通过一些实例来向读者介绍NLTK的使用。
NLTK
NaturalLanguageToolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。
NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发 。
NLTK由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。
NLTK包括图形演示和示例数据。其提供的教程解释了工具包支持的语言处理任务背后的基本概念。
开发环境:我所使用的Python版本是最新的3.5.1,NLTK版本是3.2。Python的安装不在本文的讨论范围内,我们略去不表。你可以从NLTK的官网上http://www.nltk.org/获得最新版本的NLTK。Anyway,使用pip指令来完成NLTK包的下载和安装无疑是最简便的方法。
当然,当你完成这一步时,其实还不够。因为NLTK是由许多许多的包来构成的,此时运行Python,并输入下面的指令(当然,第一条指令还是要导入NLTK包)
> import nltk > nltk.download()
然后,Python Launcher会弹出下面这个界面,建议你选择安装所有的Packages,以免去日后一而再、再而三的进行安装,也为你的后续开发提供一个稳定的环境。某些包的Status显示“out of date”,你可以不必理会,它基本不影响你的使用与开发。
既然你已经安装成功,我们来小试牛刀一下。当然本文涉及的主要任务都是自然语言处理中最常用,最基础的pre-processing过程,结合机器学习的高级应用我们会在后续文章中再进行介绍。
1、SentencesSegment(分句)
也就是说我们手头有一段文本,我们希望把它分成一个一个的句子。此时可以使用NLTK中的punktsentencesegmenter。来看示例代码
> sent_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle') > paragraph = "The first time I heard that song was in Hawaii on radio. ... I was just a kid, and loved it very much! What a fantastic song!" > sentences = sent_tokenizer.tokenize(paragraph) > sentences ['The first time I heard that song was in Hawaii on radio.', 'I was just a kid, and loved it very much!', 'What a fantastic song!']
由此,我们便把一段话成功分句了。
2、SentencesSegment(分词)
接下来我们要把每个句话再切割成逐个单词。最简单的方法是使用NLTK包中的WordPuncttokenizer。来看示例代码
> from nltk.tokenize import WordPunctTokenizer > sentence = "Are you old enough to remember Michael Jackson attending ... the Grammys with Brooke Shields and Webster sat on his lap during the show" > words = WordPunctTokenizer().tokenize(sentence) > words ['Are', 'you', 'old', 'enough', 'to', 'remember', 'Michael', 'Jackson', 'attending', 'the', 'Grammys', 'with', 'Brooke', 'Shields', 'and', 'Webster', 'sat', 'on', 'his', 'lap', 'during', 'the', 'show', '"htmlcode">> text = 'That U.S.A. poster-print costs $12.40...'目前市面上可以参考的在Python下进行自然语言处理的书籍是由Steven Bird、Ewan Klein、Edward Loper编写的《Python 自然语言处理》。但是该书的编写时间距今已有近十年的时间,由于软件包更新等语言,在新环境下进行开发时,书中的某些代码并不能很正常的运行。最后,我们举一个书中代码out of date的例子(对上面这就话进行分词),并给出相应的解决办法。首先来看书中的一段节录
> text = 'That U.S.A. poster-print costs $12.40...' > pattern = r'''''("'"htmlcode">['That', 'U.S.A.', 'poster-print', 'costs', '$12.40', '...']但是我们实际得到的输出却是这样的(注意我们所使用的NLTK版本)
[('', '', ''), ('A.', '', ''), ('', '-print', ''), ('', '', ''), ('', '', '.40'), ('', '', '')]会出现这样的问题是由于nltk.internals.compile_regexp_to_noncapturing()在V3.1版本的NLTK中已经被抛弃(尽管在更早的版本中它仍然可以运行),为此我们把之前定义的pattern稍作修改
pattern = r"""("'"""再次执行前面的语句,便会得到
> nltk.regexp_tokenize(text, pattern) ['That', 'U.S.A.', 'poster-print', 'costs', '12.40', '...']以上便是我们对NLTK这个自然语言处理工具包的初步探索,日后主页君将结合机器学习中的方法再来探讨一些更为深入的应用。最后,我想说《Python 自然语言处理》仍然是当前非常值得推荐的一本讲述利用NLTK和Python进行自然语言处理技术的非常值得推荐的书籍。
总结
以上就是本文关于Python编程使用NLTK进行自然语言处理详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
python中requests库session对象的妙用详解
13个最常用的Python深度学习库介绍
python爬虫系列Selenium定向爬取虎扑篮球图片详解
如有不足之处,欢迎留言指出。
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]