都写在注释中了。主要是本章讲的比较基础,处理HTML和字符串、文件的读写、正则等,都略过了。
'''''''''
name:pikachu
title: python自然语言处理:(三)加工原料文本
version:1.0
date:20181229
'''
from__future__importdivision
importnltk,re,pprint
fromurllib.requestimporturlopen
'''3.1从网络和硬盘访问文本'''
'''3.1.1电子书'''
url="http://www.gutenberg.org/files/2554/2554.txt"
raw=urlopen(url).read()
print(raw)
'''3.1.2处理HTML'''
'''beautifulsoup会更好,参考本公众号第一篇python爬取当当网数据'''
url="http://essays.quotidiana.org/bacon/studies/"
html=urlopen(url).read()
raw=nltk.clean_html(html)
tokens=nltk.word_tokenize(raw)
print(tokens)
'''3.1.3处理搜索引擎的结果(nothing important)'''
'''3.1.4处理RSS订阅(install failed)'''
'''在一个叫做Universal Feed Parser的第三方Python库(可从http://feedparser.org/免费下载)的帮助下,我们可以访问一个博客的内容'''
'''3.1.5读取本地文件'''
path=nltk.data.find('corpora/gutenberg/melville-moby_dick.txt')
raw=open(path,'rU').read()
print(raw)
'''3.1.6从PDF MS word及其他二进制格式中提取文本'''
'''第三方函数库如pypdf和pywin32提供了对这些格式的访问'''
'''3.1.7捕获用户输入'''
'''3.1.8 NLP的流程'''
'''3.2字符串:最底层的文本处理(too basic)'''
'''3.3使用Unicode进行文字处理'''
'''如何使用Unicode处理使用非ASCII字符集的文本。'''
'''3.4使用正则表达式检测词组搭配'''
wordlist=[wforwinnltk.corpus.words.words('en')ifw.islower()]
word_ed=[wforwinwordlistifre.search('ed$', w)]
print(word_ed)
'''3.5正则表达式的应用'''
'''3.6规范化文本'''
'''词干提取器'''
porter=nltk.PorterStemmer()
lancaster=nltk.LancasterStemmer()
'''WordNet词形归并器'''
wnl=nltk.WordNetLemmatizer()
'''3.7使用正则表达式为文本分词'''
'''NLTK的正则表达式分词器'''
'''函数nltk.regexp_tokenize()与re.findall()类似(我们一直在使用它进行分词)。然而,nltk.regexp_tokenize()分词效率更高,且不需要特殊处理括号。'''
'''3.8分割'''
'''3.9格式化:从链表到字符串'''
silly=['We','called','him','Tortoise','because','he','taught','us','.']
silly2=' '.join(silly)
'''将结果写入文件'''
output_file=open('output.txt','w')
words=set(nltk.corpus.genesis.words('english-kjv.txt'))
forwordinsorted(words):
output_file.write(word+"\n")
NLP流程:
字符串操作:
领取专属 10元无门槛券
私享最新 技术干货