我们都知道进行自然语言处理的第一步就是分词,下面使用jieba模块对最近比较热的电视剧《人民的名义》进行分词,并对它进行一些简单的文本分析。
一、jieba模块中常用的方法说明(github):
1.分词:
-
jieba.cut方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型 -
jieba.cut_for_search方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 - 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
-
jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 -
jieba.lcut以及jieba.lcut_for_search直接返回 list -
jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典。jieba.dt为默认分词器,所有全局分词相关函数都是该分词器的映射。
最近学习python爬虫,为了练习一下,在书本网上爬去《人民的名义》,代码如下:
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Sun Apr 16 16:24:32 2017 4 python爬去小说--人民的名义 5 @author: whb 6 """ 7 import urllib2 as p 8 import re 9 from bs4 import BeautifulSoup 10 #得到每个章节的url与标题 11 def find_html(url): 12 html=p.urlopen(url).read() 13 reg=re.compile(r'<li class="n"><a href="(.*?)">(.*?)</a></li>') 14 cont=re.findall(reg,html) 15 url=[x[0] for x in cont] 16 name=[x[1] for x in cont] 17 return [name,url] 18 # 提取小说正文 19 def search_content(url_list): 20 html=p.urlopen(url_list).read() 21 soup=BeautifulSoup(html) 22 content=soup.find_all('p') 23 return content 24 #将内容保存文件中。 25 def save_content(url): 26 name,url=find_html(url) 27 for i in xrange(len(url)): 28 try: 29 print u'正在下载:'+str(name[i]) 30 f=open(str(name[i])+'.txt','w') 31 url_list='http://www.bookben.com/'+str(url[i]) 32 content=search_content(url_list) 33 print dir(content) 34 for x in xrange(len(content)-1): 35 txt=content[x].string 36 f.write(txt.encode("gbk",'ignore'))# 37 f.close() 38 except IOError: 39 print 'open error'+str(name[i]) 40 if __name__=='__main__': 41 url='http://www.bookben.com/read/107_107305/' 42 save_content(url)