python自然语言处理第三章:处理原始文本
1.访问《罪与罚》的英文翻译:
from urllib import urlopen
url="http://www.gu tenberg.org/files/2554/2554.txt"
raw=urlopen(url).read()
type(raw)
进程read()将需要几秒来下载这本书。如果Internet代理Python无法正确检测出来,需要用下面的方式手动指定代理。
proxies={'http:'http://www.xomeproxy.com:3128'}
raw=urlopen(url,prxies=proxies).read()
2.分词。产生词汇和标点符号的链表。
tokens=nltk.word_tokensize(raw)
type(tokens) #list
3.find()方法和rfind()方法(反向索引)
raw.find("PART I")
raw.rfind("PART I")
4.从HTML中提取文本。
url="http://news.bbc.co.uk/2/hi/health/2284783.stm"
html=urlopen(url).read()
html[:60]
NLTK中的辅助函数nltk.clean_htm()将HTML字符串作为参数,返回原始文本。然后对原始文本进行分词。
raw=nltk.clean_html(html) #得到HTML原始文本
tokens=nltk.word_tokensize(raw) #分词,得到词汇链表
text=nltk.Text(tokens) #词汇链表->文本
5.在Universal Feed Parser第三方python库的帮助下,访问博客内容。
>>>import feedparser
>>>llog=feedparser.parser("http://languagelog.ldc.upeenn.edu/nll/?feed=atom")
>>>llog=['feed']['title']
u 'Language Log'
>>>len(llog.entries)
15
>>>post=llog.entries[2]
>>>post.title
u"He's My BF"
>>>content=post.content[0].value
>>>nltk.word_tokensize(nltk.clean_html(content))
>>>nltk.word_tokensize(nltk.clean(html(llog.entires[2].content[0].value))
6.读取本地文件,读取文件时要检查目录是否为当前目录,不是则需要切换到目标目录。
f=open('document.txt') #open()函数的第二个参数表示打开方式,默认为‘rU’ r表示只读,U表示通用
raw=f.read() #创建包含整个文本的字符串
方法二:
for line in f:
print line.strip() #删除结尾的换行符
7.在python中检查当前目录。
import os os.listddir('.')
8.使用nltk.data.find()来获取语料库中项目的文件名,然后打开读取它。
path=nltk.data.find('corpora/gutenberg/melville-moby_dict.txt')
raw=open(path,'rU').read()
9.for循环遍历字符串中的字符(for循环遍历字符串时只能得到单个字符,遍历链表可以得到词汇)。
>>>sent='colorless green ideas sleep furiously'
>>>for char in sent:r
>>> print char,
c o l o r l e s s g r e e n i d e a s s l e e p f u r i o u s l y
#计数单个字符
>>>from nltk.corpus import gutenberg
>>>raw=gutenberg.raw('melville-moby_dict.txt')
>>>fdist=nltk.FreqDist(ch.lower() for ch in raw if ch.isalpha())
>>>fdist.keys()
['e','t','a',o','n'..........]
10.正则表达式P109
#查找以ed结尾的词 r表示原始字符串>>>import re>>>[w for w in wordlist if re.search('ed$',w)]#通配符. ^匹配字符串的开始,$匹配字符串的结尾>>>[w for w in wordlist if re.search('^..j..t..$',w)]#?是可选字符>>>e-?mile #匹配email 和e-mail ?0个或1个>>>sum(l for w in text if re.search('^e-mail$''w)) #计数文本中这个词出现的总次数#+表示一个或多个实例,*表示零个或多个实例 + and * 有时称为ieKleene闭包或者闭包>>>[w for w in wordlist if re.search('^m+i+e+$',w)]#^出现在方括号中第一个时表示非>>>[^aeiouAEOIU] # 匹配非元音字母#\ 转义 {} {3,5}重复3-5次,为前面的项目重复指定的次数 |或逻辑 ()表示操作符的范围
11.正则表达式应用
#re.findall()找出所有匹配的指定正则表达式>>>word='sdgoinkwenfoif;dvd'>>>re.findall(r'[aeiou'],word)#找出两个或两个以上元音序列,并确定他们的相对频率wdj=sorted(set(nltk.corpus.treebank.words()))fd=nltk.FreqDist(vs for word in wsj for vs in re.findall(r'[aeiou'],word))fd.items()
#只匹配词首的元音,词尾的元音和词的辅音.然后把匹配的词连接起来
regexp=r'^[AEIOUaeiou]+|[AEIOUaeiou]+$[^AEIOUaeiou]'
def compress(word):
pieces=re.findall(regexp,word)
return ''.join(pieces)
english_udhr=nltk.corpus.udhr.words('Englis-Latin1')
print nltk.tokenwrap(compress(w) for w in english_udhr[:75])
#从罗托卡特语词汇中提取所有的辅音-元音序列。
rotokas_words=nltk.corpus.toolbox.words('rotokas.dic')
cvs=[cv for w in rotokas_words for cv in re.findall(r'[ptksvr][aeiou]',w)]
cfd=nltk.ConditionalFreqDist(cvs)
cfd.tabulate()
12.词干提取器
def stem(word):
regexp=r'^(.*?)(ing|ly|ed|ious|ies|ive|es|s|ment)?$'
stem,suffix=re.findall(regexp,word)[0]
return stem
tokens=nltk.word_tokenize(raw)
porter=nltk.PorterStemmer() #提取器1
lancaster=nltk.LancasterStemmer() #提取器2 just so so
[porter.stem(t) for t in tokens]
[lancaster.stem(t) for t in tokens
13.将结果写进文件。
output_file=open('output.txt','w')
words=set(nltk.corpus.genesis.words('english-kjv.txt')
for word in sorted(words):
output_file.write(word+"\n")
14.文本换行。
from textwrap import fill
format='%s(%d)'
pieces=[format % (word,len(word) ) for word in saying]
output=' . join(pieces)
wrapped=fill(output)
print wrapped
python自然语言处理第三章:处理原始文本相关推荐
- Python精确指南——第三章 Selenium和爬虫
3 Selenium 3.1 介绍 网络爬虫在互联网领域有着广泛的应用. Selenium是一个页面自动化控制框架.能够模拟实际操作,自动化获取网站提供的页面资源信息. Selen ...
- Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称
Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称 这一节主要是使用xpath解析爬取全国城市名称 这里使用的网址是:空气质量历史数据查询 这一个案例体现的点主要是xpat ...
- 零基础学Python课后实战第三章
零基础学Python课后实战第三章 实战一:模拟支付宝蚂蚁森林的能量产生过程 实战二:猜数字游戏 实战三:模拟跳一跳小游戏的加分块 实战四:模拟10086查询功能 实战一:模拟支付宝蚂蚁森林的能量产生 ...
- Python计算机视觉编程 第三章 图像到图像的映射
第三章 图像到图像的映射 3.1 单应性变换 3.1.1直接线性变换算法 3.1.2仿射变换 3.2图像扭曲 3.2.1图像中的图像 3.2.2图像配准 3.3创建全景图 3.3.1RANSAC 3. ...
- Python入门 - 笔记 - 第三章 Python中的变量和数据类型
第三章 Python中的变量和数据类型 -------------------------------------------------------------------------------- ...
- Python基础教程 | 第三章 字符串
1. 基本字符串操作 标准序列操作:索引.分片.乘法. 成员资格.长度.最大最小值 >>> website = 'www.baidu.com' >>> websit ...
- python赵璐第三章课后答案_第三章 课后习题及参考答案
第三章 课后习题及参考答案 一.选择题 1. 计算机的软件系统一般分为 ( ) 两大部分. A .系统软件和应用软件 B .操作系统和计算机语言 C .程序和数据 D . DOS 和 Windows ...
- Python基础练习题--第三章 控制结构
第三章 控制结构 目录 1025:[例3.1]购买笔记本 1026:[例3.2]判断奇偶 1027:[例3.3]区间测速 1028:[例3.4]飞船速度 1029:练3.1最大优惠价 1030:练3. ...
- python计算机视觉学习第三章——图像到图像的映射
目录 引言 一. 单应性变换 1.1 直接线性变换算法 1.2 仿射变换 二. 图像扭曲 2.1 图像中的图像 2.2 分段仿射扭曲 2.2 图像配准 三.创建全景图 3.1 RANSAC(随机一致性 ...
- [学习笔记] python深度学习---第三章 神经网络入门
一.神经网络剖析 1. 训练神经网络主要围绕以下四个方面: (1) 层,多个层组合成网络(或模型). (2)输入数据和相应的目标. (3)损失函数,即用于学习的反馈信号. (4)优化器,决定学习过程如 ...
最新文章
- 关于学习tf.random.normal()和tf.random.uniform()的一点小总结
- uniapp中easycom组件的封装
- React Native之AppRegistry模块
- ITK:重新采样分割图像
- Android之IPC通信中的UID和PID识别
- android 从本地服务器下载文件,Retrofit2-如何从服务器下载文件
- Primavera P6 安装配置指南
- python图形绘制含注释
- 「知识点」JavaScript 中11个有趣的事实
- java人事考勤打卡小程序源码
- java cms 源码_PublicCMS开源Java系统 v4.0.190312
- roadrunner中文文档(四)app服务器
- c语言中定义一个十六进制的数,C语言如何定义一个16进制数
- DHU Matlab Experiment【2】作业记录_第三章、第四章
- 区块链智能资产的“硬链接”思考
- 为什么我加了过滤器然后就登不进去了_化隆空气过滤器滤芯哪里有
- 第一天-网络设备安全操作知识
- XSS漏洞的原理与测试解决方案笔记
- PCB板框的绘制——AD19
- 算法描述怎么写伪代码java_伪代码描述算法