《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第03章 加工原料文本

第03章 加工原料文本

  • 3.1 从网络和硬盘访问文本
    • 电子书
    • 处理的HTML
    • 处理搜索引擎的结果
    • 处理RSS 订阅
    • 读取本地文件
    • 从PDF、MS Word 及其他二进制格式中提取文本
    • 捕获用户输入
    • NLP 的流程
  • 3.2 字符串最底层的文本处理
    • 字符串的基本操作
    • 输出字符串
    • 访问单个字符
    • 访问子字符串
    • 更多的字符串操作
    • 链表与字符串的差异
  • 3.3 使用Unicode 进行文字处理
    • 什么是Unicode?
    • 从文件中提取已编码文本
    • 在Python中使用本地编码
  • 3.4 使用正则表达式检测词组搭配
    • 使用基本的元字符
    • 范围与闭包
  • 3.5 正则表达式的有益应用
    • 提取字符块
    • 在字符块上做更多事情
    • 查找词干
    • 搜索已分词文本
  • 3.6 规范化文本
    • 词干提取器
    • 词形归并
  • 3.7 用正则表达式为文本分词
    • 分词的简单方法
    • NLTK 的正则表达式分词器
    • 分词的进一步问题
  • 3.8 分割
    • 断句
    • 分词
  • 3.9 格式化:从链表到字符串
    • 从链表到字符串
    • 字符串与格式
    • 排列
    • 将结果写入文件
    • 文本换行
  • 3.10 小结

import nltk
from nltk import word_tokenize

3.1 从网络和硬盘访问文本

电子书

http://www.gutenberg.org/catalog 上浏览25,000 本免费在线书籍的目录,获得ASCII 码文本文件的URL。包括中文。

from urllib import request
url ="http://www.gutenberg.org/files/25196/25196-0.txt" #编号2554 的文本是《百家姓》
response = request.urlopen(url)
raw = response.read().decode('utf8')
type(raw)
str
len(raw)
20497
raw[600:800]
'百家姓\r\n\r\n趙錢孫李 周吳鄭王 馮陳褚衛 蔣沈韓楊\r\n朱秦尤許 何呂施張 孔曹嚴華 金魏陶薑\r\n戚謝鄒喻 柏水竇章 雲蘇潘葛 奚範彭郎\r\n魯韋昌馬 苗鳳花方 俞任袁柳 酆鮑史唐\r\n費廉岑薛 雷賀倪湯 滕殷羅畢 郝鄔安常\r\n\r\n樂於時傅 皮卞齊康 伍餘元蔔 顧孟平黃\r\n和穆蕭尹 姚邵堪汪 祁毛禹狄 米貝明臧\r\n計伏成戴 談宋茅龐 熊紀舒屈 項祝董梁\r\n杜阮藍閔 席季麻強 賈路婁危 江童顏郭\r\n梅盛'

对于语言处理,我们要将字符串分解为词和标点符号,这一步被称为分词,它产生我们所熟悉的结构,一个词汇和标点符号的链表。

tokens = nltk.word_tokenize(raw)
type(tokens)
list
len(tokens)
3542
tokens[:5]
['\ufeffThe', 'Project', 'Gutenberg', 'EBook', 'of']
text = nltk.Text(tokens) #创建一个NLTK 文本
type(text)
nltk.text.Text
text[:5]
['\ufeffThe', 'Project', 'Gutenberg', 'EBook', 'of']
text.collocations()
Project Gutenberg-tm; Project Gutenberg; Literary Archive; Archive
Foundation; United States; Gutenberg Literary; electronic works;
Gutenberg-tm electronic; set forth; public domain; electronic work;
Gutenberg-tm License; Bai Jia; Jia Xing; copyright holder; PROJECT
GUTENBERG; BAI JIA; EBOOK BAI; JIA XING; Plain Vanilla

方法find()和rfind()(反向的find)帮助我们得到字符串切片需要用到的正确的索引值

raw.find("朱")
628
raw.rfind("周")
612
raw[612:629]
'周吳鄭王 馮陳褚衛 蔣沈韓楊\r\n朱'

处理的HTML

url = "https://www.baidu.com"
html = request.urlopen(url).read().decode('utf8')
html[:60]
'\r\n\r\n\t
                    
                    

你可能感兴趣的:(2015年度)