您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 1浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python使用Jieba工具中文分词及文本聚类概念

嗨学编程 发布时间:2019-08-09 20:23:35 ,浏览量:1

####一. Selenium爬取百度百科摘要 简单给出Selenium爬取百度百科5A级景区的代码:

# coding=utf-8  
import time          
import re          
import os  
import sys
import codecs
import shutil
from selenium import webdriver      
from selenium.webdriver.common.keys import Keys      
import selenium.webdriver.support.ui as ui      
from selenium.webdriver.common.action_chains import ActionChains  
'''
遇到不懂的问题?Python学习交流群:1136201545
满足你的需求,资料都已经上传群文件,可以自行下载!
'''
#Open PhantomJS  
driver = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")  
#driver = webdriver.Firefox()  
wait = ui.WebDriverWait(driver,10)

#Get the Content of 5A tourist spots  
def getInfobox(entityName, fileName):  
    try:  
        #create paths and txt files
        print u'文件名称: ', fileName
        info = codecs.open(fileName, 'w', 'utf-8')  

        #locate input  notice: 1.visit url by unicode 2.write files
        #Error: Message: Element not found in the cache -
        #       Perhaps the page has changed since it was looked up
        #解决方法: 使用Selenium和Phantomjs
        print u'实体名称: ', entityName.rstrip('\n') 
        driver.get("http://baike.baidu.com/")  
        elem_inp = driver.find_element_by_xpath("//form[@id='searchForm']/input")  
        elem_inp.send_keys(entityName)  
        elem_inp.send_keys(Keys.RETURN)  
        info.write(entityName.rstrip('\n')+'\r\n')  #codecs不支持'\n'换行  
  
        #load content 摘要
        elem_value = driver.find_elements_by_xpath("//div[@class='lemma-summary']/div")
        for value in elem_value:
            print value.text
            info.writelines(value.text + '\r\n')

        #爬取文本信息
        #爬取所有段落
的内容 class='para-title'为标题 [省略] time.sleep(2) except Exception,e: #'utf8' codec can't decode byte print "Error: ",e finally: print '\n' info.close() #Main function def main(): #By function get information path = "BaiduSpider\\" if os.path.isdir(path): shutil.rmtree(path, True) os.makedirs(path) source = open("Tourist_spots_5A_BD.txt", 'r') num = 1 for entityName in source: entityName = unicode(entityName, "utf-8") if u'故宫' in entityName: #else add a '?' entityName = u'北京故宫' name = "%04d" % num fileName = path + str(name) + ".txt" getInfobox(entityName, fileName) num = num + 1 print 'End Read Files!' source.close() driver.close() if __name__ == '__main__': main()

内容如下图所示,共204个国家5A级景点的摘要信息。这里就不再叙述: image.png ####二. Jieba中文分词

#encoding=utf-8
import jieba

#全模式
text = "我来到北京清华大学"
seg_list = jieba.cut(text, cut_all=True)
print u"[全模式]: ", "/ ".join(seg_list) 

#精确模式
seg_list = jieba.cut(text, cut_all=False)
print u"[精确模式]: ", "/ ".join(seg_list)

#默认是精确模式
seg_list = jieba.cut(text)
print u"[默认模式]: ", "/ ".join(seg_list) 

#新词识别 “杭研”并没有在词典中,但是也被Viterbi算法识别出来了
seg_list = jieba.cut("他来到了网易杭研大厦") 
print u"[新词识别]: ", "/ ".join(seg_list)

#搜索引擎模式
seg_list = jieba.cut_for_search(text) 
print u"[搜索引擎模式]: ", "/ ".join(seg_list)

输出如下图所示: image.png 2.添加自定义词典

#encoding=utf-8
import jieba

#导入自定义词典
jieba.load_userdict("dict.txt")

#全模式
text = "故宫的著名景点包括乾清宫、太和殿和黄琉璃瓦等"
seg_list = jieba.cut(text, cut_all=True)
print u"[全模式]: ", "/ ".join(seg_list) 

#精确模式
seg_list = jieba.cut(text, cut_all=False)
print u"[精确模式]: ", "/ ".join(seg_list)

#搜索引擎模式
seg_list = jieba.cut_for_search(text) 
print u"[搜索引擎模式]: ", "/ ".join(seg_list)

输出结果如下所示 image.png 3.关键词提取

#encoding=utf-8
import jieba
import jieba.analyse

#导入自定义词典
jieba.load_userdict("dict.txt")

#精确模式
text = "故宫的著名景点包括乾清宫、太和殿和午门等。其中乾清宫非常精美,午门是紫禁城的正门,午门居中向阳。"
seg_list = jieba.cut(text, cut_all=False)
print u"分词结果:"
print "/".join(seg_list)

#获取关键词
tags = jieba.analyse.extract_tags(text, topK=3)
print u"关键词:"
print " ".join(tags)

输出结果如下,其中"午门"出现3次、"乾清宫"出现2次、"著名景点"出现1次,按照顺序输出提取的关键词。如果topK=5,则输出:“午门 乾清宫 著名景点 太和殿 向阳”。

>>> 
分词结果:
故宫/的/著名景点/包括/乾清宫/、/太和殿/和/午门/等/。/其中/乾清宫/非常/精美/,/午门/是/紫禁城/的/正门/,/午门/居中/向阳/。
关键词:
午门 乾清宫 著名景点
>>>

4.对百度百科获取摘要分词 从BaiduSpider文件中读取0001.txt~0204.txt文件,分别进行分词处理再保存。

#encoding=utf-8
import sys
import re
import codecs
import os
import shutil
import jieba
import jieba.analyse
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''

#导入自定义词典
jieba.load_userdict("dict_baidu.txt")

#Read file and cut
def read_file_cut():
    #create path
    path = "BaiduSpider\\"
    respath = "BaiduSpider_Result\\"
    if os.path.isdir(respath):
        shutil.rmtree(respath, True)
    os.makedirs(respath)

    num = 1
    while num            
关注
打赏
1663681728
查看更多评论
0.1348s