NLTK-004:加工原料文本
从网络和硬盘访问文本
编号 2554 的文本是《罪与罚》的英文翻译,我们可以用如下方式访问它。
from urllib import request
url = "http://www.gutenberg.org/files/2554/2554.txt"
response = request.urlopen(url)
raw = response.read().decode('utf8')
(如果是404之类的,得找个代理外网IP,下面访问的都一样… )
所以假设获取到了内容。变量raw是这本书原始的内容,包括很多我们不感兴趣的细节,如空格、换行符和空 行。请注意,文件中行尾的 和 ,是 Python 用来显示特殊的回车和换行字符的方式
我们要对其进行分词操作,产生一个词汇和标点符号的链表。
tokens = nltk.word_tokenize(raw)
我们现在采取进一步的步骤从这个链表创建一个 NLTK 文本
text = nltk.Text(tokens)
我们可以进行我们在之前看到的所有的其他语言的处理,也包括常规的链表操作,例如切片:
text[1024:1062]
处理HTML 网络上的文本大部分是 HTML 文件的形式。 HTML 的全部内容包括: meta 元标签、图像标签、map 标 签、JavaScript、表单和表格。
我们可以使用BeautifulSoup或者其他库来从HTML中提取文本,然后我们可以对原始文本进行分词:
from bs4 import BeautifulSoup
raw = BeautifulSoup(html).get_text()
tokens = nltk.word_tokenize(raw)
你可以选择你感兴趣的标识符,按照前面讲的那样初始化一个文本。
tokens = tokens[110:390]
text = nltk.Text(tokens)
text.concordance('gene')
访问单个字符 我们可以计数单个字符。通过将所有字符小写来忽略大小写的区分,并过滤掉非字母字符。
from nltk.corpus import gutenberg
raw = gutenberg.raw('melville-moby_dick.txt')
fdist = nltk.FreqDist(ch.lower() for ch in raw if ch.isalpha())
fdist.most_common(5)
fdist.plot()
使用 Unicode 进行文字处理 Unicode支持超过一百万种字符。每个字符分配一个编号,称为 编码点。在 Python 中 ,编码点写作uXXXX 的形式,其中 XXXX是四位十六进制形式数。 解码:将文本翻译成Unicode; 编码:将Unicode 转化为其它编码的过程;
从文件中提取已编码文本 : 假设我们有一个小的文本文件,我们知道它是如何编码的。例如:polish-lat2.txt 顾名思义是波兰语的文本片段(来源波兰语 Wikipedia;可以在 http://pl.wikipedia.org/wiki/Biblioteka_Pruska中看到)。此文件是 Latin-2 编码的,也称为 ISO-8859-2。nltk.data.find()函数为我们定位文件。
path = nltk.data.find('corpora/unicode_samples/polish-lat2.txt')
codecs模块:提供了将编码数据读入为Unicode 字符串和将Unicode 字符串以编码形式写出的函数。 codecs.open()函数:encoding 参数来指定被读取或写入的文件的编码。
f = open(path, encoding='latin2')
for line in f:
line = line.strip()
print(line)
相关文章
- 天马股份:为企业赋能,让商业更简单
- 软件资产管理 企业身旁的定时炸弹
- IDC预测今年全球软件行业收入同比增5.7%
- C++11线程、锁和条件变量
- 如何选择Spark机器学习API
- Visual Studio 2012/2010/2008 远程调试
- 亮出“安全智能”牌 瀚思B轮融资再受关注
- 利用java-RMI进行大文件传输
- 在人工智能和大数据产品的开发中,有哪些需要特别注意的点?
- 企业“数据压力锅”即将爆炸,CIO该如何防止爆锅?
- 解析常见的数据分析模型——行为事件分析
- 10款超好用的开源大数据分析工具
- 游戏服务器架构演进(完整版)
- Teradata天睿公司收购StackIQ 增强Teradata Everywhere和IntelliCloud部署能力
- 大数据对IT系统安全来说是一把双刃剑
- 大数据如何解决大问题
- 超级好用Eclipse插件收藏
- 设计模式之总结与回顾
- 大数据治理需要具备哪些能力和关键技术?
- 智能数据变革来临:我为什么看好Chinapex创略模式