文本的最重要来源无疑是网络。探索现成的文本集合是很方便的,然而每个人都有自己的文本来源,需要学习如何去访问他们。
首先,我们要学习从网络和硬盘访问文本。
1.电子书
NLTk语料库集合中存有古腾堡项目的一小部分样例文本,如果你对古腾堡项目其他的文本感兴趣,可以在http://www.gutenberg.org/catalog/上浏览其他书籍
下面以编号2554的文本《罪与罚》为例,简单介绍怎么通过Python访问
-*- encoding:utf-8 -*- from urllib.request import urlopen import nltk url=r‘http://www.gutenberg.org/files/2554/2554.txt‘ raw=str(urlopen(url).read(),encoding=‘utf-8‘) print(type(raw))
此时输出为<class ‘str‘>
>>>print(raw[:75]) The Project Gutenberg EBook of Crime and Punishment, by Fyodor Dostoevsky
>>>print(len(raw))
1176831
变量raw包含了1176831个字符,这是这本书的原始内容,但是其中有很多我们不关系的细节,例如空格,换行符等等。对于语言处理,要将字符串分解为词和标点符号,这一过程我们成为分词,用于产生词汇和标点符号的列表。
>>>token=nltk.word_tokenize(raw) >>>print(type(token)) <class ‘list‘> >>>print(len(token)) 254352 >>>print(token[:10]) [‘The‘, ‘Project‘, ‘Gutenberg‘, ‘EBook‘, ‘of‘, ‘Crime‘, ‘and‘, ‘Punishment‘, ‘,‘, ‘by‘]
请注意,NLTK需要分词,但之前打开的URL读入字符串任务都没有进行分词。如果进一步在链表中创建NLTK文本,便可以进行一些常规的链表操作,例如切片
>>>text=nltk.Text(token) >>>print(text[1020:1060]) [‘AND‘, ‘PUNISHMENT‘, ‘PART‘, ‘I‘, ‘CHAPTER‘, ‘I‘, ‘On‘, ‘an‘, ‘exceptionally‘, ‘hot‘, ‘evening‘,
‘early‘, ‘in‘, ‘July‘, ‘a‘, ‘young‘, ‘man‘, ‘came‘, ‘out‘, ‘of‘, ‘the‘, ‘garret‘, ‘in‘, ‘which‘, ‘he‘, ‘lodged‘,
‘in‘, ‘S.‘, ‘Place‘, ‘and‘, ‘walked‘, ‘slowly‘, ‘,‘, ‘as‘, ‘though‘, ‘in‘, ‘hesitation‘, ‘,‘, ‘towards‘, ‘K.‘] >>>print(text.collocations()) Katerina Ivanovna; Pyotr Petrovitch; Pulcheria Alexandrovna; Avdotya Romanovna; Rodion Romanovitch; Marfa Petrovna; Sofya Semyonovna; old woman; Project Gutenberg-tm; Porfiry Petrovitch; Amalia Ivanovna; great deal; Nikodim Fomitch; young man; Ilya Petrovitch; n‘t know; Project Gutenberg; Dmitri Prokofitch; Andrey Semyonovitch; Hay Market
下面我们介绍find和rfind函数
例如,古腾堡项目下载的文本都包含一个首部,里面有文本的名称、作者等等。因此在原始文本中挑选内容之前,需要手工检查文件来发现标记内容开始和结尾的特定字符串。
>>>start=raw.find(‘PART I‘) >>>end=raw.rfind("End of Project Gutenberg‘s Crime" ) >>>raw=raw[start:end] >>>print(raw.find(‘PART I‘)) 0
函数find()和rfind()(反向的find)用于获取字符串切片所在的索引值。
原文:http://www.cnblogs.com/itdyb/p/5947530.html