1. 程式人生 > >文字分析--jieba中文分詞

文字分析--jieba中文分詞

分詞技術可以分為英文分詞和中文分詞:
      對於英文分詞而言,由於英文單詞之間以空格來分隔,所以在進行英文分詞的過程中,只需要針對空格進行劃分就可以了。
      對於中文分詞而言,中文單詞之間沒有英文單詞天然的空格來劃分,所以就需要對中文進行處理;主要有三種方式:一個是基於字典匹配的分詞方法,一個是基於語義分析的分詞演算法,還有一個是基於概率統計模型的分詞方法。

首先是jieba分詞語法:

# -*--coding:utf-8*-

import jieba
import jieba.analyse
stopwords = {}.fromkeys([line.rstrip() for
line in open('stopkey_zh.txt')]) """ jieba 中文分詞: 支援三種分詞模式: 精確模式:將句子最精確的分開,適合文字分析 全模式:把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義 搜尋引擎模式:在精確搜尋的基礎上,對長詞進行再次切分,提高召回率,適合用於搜尋引擎分詞 支援繁體分詞: 支援自定義詞典: MIT授權協議 演算法: 基於字首詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG) 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 對於未登入詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法 主要功能: 1、分詞 jieba.cut():三個引數,分詞的字串;cut_all用來控制是否採用全模式;HMM控制是否使用HMM模型 jieba.cut_for_search():兩個引數,分詞的字串;是否使用HMM模型; 上述兩個分詞方法都可以使用for迴圈來獲取分詞後的每個詞語。 jieba.lcut():直接返回list jieba.lcut_for_search():直接返回list jieba.Tokenizer(dictionary=DEFAULT_DICT):新建自定義分詞器 2、新增自定義詞典 jieba.load_userdict(file_name):file_name若為開啟的檔案,檔案必須為UTF8格式的 詞典格式與dict.txt一樣,一個詞佔一行,每一行分三部分:詞語、詞頻、詞性,用空格隔開 jieba.add_word():動態增加詞典 jieba.del_word():動態刪除詞典 jieba.suggeat_freq(segment, tune=True) 調節單個詞語的詞頻,True使其能夠分出來, False使其不能分出來 注意jieba預設的dict中的詞語,要結合預設dict進行中文分詞 3、關鍵詞提取 jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=()): sentence:待提取的文字 topK:返回幾個TF-IDF權重最大的關鍵詞,預設值為20 withWeight:是否一併返回關鍵詞權重值,預設值為False allowPOS:僅包括指定詞性的詞,預設值為空 jieba.analyse.TFIDF(idf_path=None): jieba.analyse.set_idf_path(file_name): jieba.analyse.set_stop_words(file_name): jieba.analyse.textrank(sentence, topK=20,withWeight=False,allowPOS=()): jieba.analyse.TextRank(): 4、詞性標註 jieba.posseg.POSTokenizer(tokenizer=None): 5、並行分詞 jieba.enable_parallel(4):開啟並行模式 jieba.disable_parallel():關閉並行模式 注意:並行分詞不能在windows下執行 6、Tokenize:返回詞語在原文的起止位置 jieba.tokenize(): 7、ChineseAnalyzer for Whoosh 搜尋引擎 8、命令列分詞 """
# 0、讀取文字 f = open('sentences.txt') s = f.read() print s print type(s) print '----------------------------------------------' final = '' for st in s: # st = st.encode('utf8') if st not in stopwords: final += st final += ' ' print final print type(final) print '----------------------------------------------'
# 1、分詞 seg_list = jieba.cut(s, cut_all=True) # 全模式 print '[01 Full Model]:' + '/'.join(seg_list) print '--------------' seg_list = jieba.cut(s, cut_all=False) # 精確模式 print '[02 Accuracy Model:]:' + '/'.join(seg_list) print '--------------' seg_list = jieba.cut(s, cut_all=False, HMM=True) # 精確模式,HMM模型 print '[03 Accuracy Model:]:' + '/'.join(seg_list) print '--------------' seg_list = jieba.cut(s) # 預設為精確模式 print '[04 Accuracy Model in Default:]:' + '/'.join(seg_list) print '--------------' seg_list = jieba.cut_for_search(s) # 搜尋引擎模式 print '[05 Search Engine Model:]:' + '/'.join(seg_list) print '-----------------------------------------------' # 2、新增自定義詞典 jieba.load_userdict('userdict.txt') jieba.add_word('兩國元首') # 新增詞典 jieba.del_word('兩國元首') # 刪除詞典 jieba.suggest_freq(('日', '電'), True) jieba.suggest_freq('日電', False) words = jieba.cut(s) # 預設方式 print '/'.join(words) print '-----------------------------------------------' # 3、關鍵詞提取 # 基於TF-IDF演算法的關鍵詞提取 import jieba import jieba.analyse # # 關鍵詞提取 tags = jieba.analyse.extract_tags(s, topK=10) # 提取關鍵詞最高的10個詞 print ','.join(tags) print '--------------' # # 自定義逆向檔案頻率(IDF)語料庫 jieba.analyse.set_idf_path('../extra_dict/idf.txt.big') tags = jieba.analyse.extract_tags(s, topK=10) print ','.join(tags) print '--------------' # # 自定義停用詞(Stop words)文字語料庫 jieba.analyse.set_idf_path("../extra_dict/idf.txt.big") tags = jieba.analyse.extract_tags(s, topK=10) print ",".join(tags) print '--------------' # # 返回關鍵詞權重值 tags = jieba.analyse.extract_tags(s, topK=15, withWeight=True) for tag in tags: print 'tag:%s\t\t weight:%f' % (tag[0], tag[1]) # 輸出關鍵詞及其權重 print '--------------' # 基於TextRank演算法的關鍵詞抽取 # 基本思想: # 將待抽取關鍵詞的文字進行分詞 # 以固定視窗大小(預設為5,通過span屬性調整),詞之間的共現關係,構建圖 # 計算圖中節點的PageRank,注意是無向帶權圖 tags = jieba.analyse.textrank(s, topK=10) print ','.join(tags) print '-----------------------------------------------' # 4、詞性標註 import jieba.posseg as pseg words = pseg.cut('我愛北京天安門') for word, flag in words: print '%s %s' % (word, flag) print '-----------------------------------------------' print '-----------------------------------------------' # 5、並行分詞 # file = open('QinCountry.txt') # 大秦帝國六部全集 # ss = file.read() # print ss # import time # jieba.enable_parallel() # windows下不能並行處理 # t1 = time.time() # seg_list = jieba.cut(ss) # words = '/'.join(seg_list) # t2 = time.time() # cost = t2-t1 # print 'Cost Time:%s' % cost # Cost Time:61.7459998131 print '----------------------------------------------' # 6、Tokenize 返回詞語在原文的起止位置,輸入引數只接受unicode result = jieba.tokenize(s.decode('utf8')) for t in result: print 'word:%s\t\tstart:%s\t\tend:%s' % (t[0], t[1], t[2]) print '----------------------------------------------' # 7、ChineseAnalyzer for Whoosh 搜尋引擎 # import jieba # from jieba.analyse import ChineseAnalyzer # # analyser = ChineseAnalyzer() # for t in analyzer("我的好朋友是李明;我愛北京天安門;IBM和Microsoft; I have a dream. this is intetesting and interested me a lot"): # print t.text

文字:

sentences.txt
習近平同芬蘭總統尼尼斯托舉行會談
兩國元首共同宣佈建立中芬面向未來的新型合作伙伴關係
新華社赫爾辛基4月5日電(記者黃泳 陳贄 李建敏)國家主席習近平5日在赫爾辛基同芬蘭總統尼尼斯托舉行會談。兩國元首積極評價中芬建交67年來雙邊關係取得的長足進展,共同宣佈建立中芬面向未來的新型合作伙伴關係,表示雙方要加強政治互信,深化務實合作,造福兩國和兩國人民。
習近平強調,中國和芬蘭是相互尊重、平等相待、合作共贏的好朋友、好夥伴。兩國人民始終對彼此懷有友好感情。芬蘭人民正在開啟新的百年發展征程,中國人民也正在為實現“兩個一百年”奮鬥目標和中華民族偉大復興的中國夢而奮鬥。中芬兩國發展需求契合度很高。雙方要從戰略高度和長遠角度出發,牢牢把握住中芬關係正確發展方向,加強高層交往,增進戰略互信,鞏固好雙邊關係政治基礎,挖掘合作潛力,實現優勢互補,在各自發展道路上相互支援。

分詞結果:
這裡寫圖片描述

注意:
      jieba分詞器在處理中文分詞中是非常好的,但是,jieba分詞器預設的分詞語料庫dict.txt確存在問題:
      dict.txt中存在許多單字,例如:”大”,”午”,”我”,而且給予單字的詞頻特別高,都具有以上的詞頻數,我們都知道詞頻與權重是成正比的,那麼在分詞的過程中就會優先處理這些單詞,而與其相關的詞語就會被忽略,這就導致分詞結果不準確的問題。
      為了更好的使用jieba分詞,建議將dict.txt中的單字全部去掉,或者將其詞頻設定非常小。

相關推薦

文字分析--jieba中文

分詞技術可以分為英文分詞和中文分詞:       對於英文分詞而言,由於英文單詞之間以空格來分隔,所以在進行英文分詞的過程中,只需要針對空格進行劃分就可以了。       對於中文分詞而言,中文單詞之間沒有英文單詞天然的空格來劃分,所以就需要對中文進行處理;

文字分析中文

在處理文字分析時,我們經常需要面臨的一個問題就是分詞,特別是在中國當前的IT環境下,大部分文字資料都是中文,中文和英文有一些不一樣,中文字與字之間沒有明顯的分隔符,而英文單詞與單詞之間有自然的空格符來分隔。中文分詞屬於自然語言處理的範疇,中文分詞廣泛應用於搜尋引

Python 文字挖掘:jieba中文和詞性標註

#! /usr/bin/env python2.7 #coding=utf-8 import jieba import jieba.posseg #需要另外載入一個詞性標註模組 string = '其實大家買手機就是看個心情,沒必要比來比去的。' seg = jieba.posseg.cut(string

python安裝Jieba中文組件並測試

圖片 class pypi setup.py bubuko for 中文 users mage python安裝Jieba中文分詞組件 1、下載http://pypi.python.org/pypi/jieba/ 2、解壓到解壓到python目錄下: 3、

Jieba中文說明

結巴分詞介紹 現在開源的中文分詞工具,有IK、MMseg4j、THULAC、Ansj、Jieba、HanLP等,其中最近還在更新並維護的,也是目前分詞效果比較優秀的要屬於Ansj、Jieba、HanLP了。 之前我寫過Ansj分詞器的介紹說明部落格,現在細談

在PyCharm(Python整合開發環境)中安裝jieba中文工具包

PyCharm IDE中,可以直接引入各種工具包。jieba中文分詞工具包安裝非常方便。 1、開啟Pycharm,點選左上角  >>File  >>Settings。 2、在settings介面中點選Project :***(專案名稱)  >

jieba.NET是jieba中文的.NET版本(C#實現)。

jieba.NET是jieba中文分詞的.NET版本(C#實現)。 當前版本為0.38.2,基於jieba 0.38,提供與jieba一致的功能與介面,以後可能會在jieba基礎上提供其它擴充套件功能。關於jieba的實現思路,可以看看這篇wiki裡提到的資料。 如果

[python] 使用Jieba工具中文文字聚類概念

一. Selenium爬取百度百科摘要         簡單給出Selenium爬取百度百科5A級景區的程式碼: # coding=utf-8 """ Created on 2015-12-10 @author: Eastmount """ impo

python 讀寫txt文件並用jieba庫進行中文

mage 亂碼 技術分享 流行 ictclas 函數 結果 class 配置 python用來批量處理一些數據的第一步吧。 對於我這樣的的萌新。這是第一步。 #encoding=utf-8 file=‘test.txt‘ fn=open(file,"r") print f

.NET Core中文組件jieba.NET Core

搜索引擎特點支持三種分詞模式:精確模式,試圖將句子最精確地切開,適合文本分析;全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義。具體來說,分詞過程不會借助於詞頻查找最大概率路徑,亦不會使用HMM;搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。

python基礎===jieba模塊,Python 中文組件

word cut 用法 地址 api mas 精確 == com api參考地址:https://github.com/fxsjy/jieba/blob/master/README.md 安裝自行百度 基本用法: import jieba #全模式 word = jie

Python中文 jieba

問題 turn Coding windows 停用 分享圖片 詞典 ces text1 三種分詞模式與一個參數 以下代碼主要來自於jieba的github,你可以在github下載該源碼 import jieba seg_list = jieba.cut("我來到北京清

優秀的中文jieba

不存在 分詞 png 搜索引擎 函數 inf alt TP eba jieba庫的簡介 jieba是優秀的中文分詞庫,中文文本需要通過分詞來獲的單個詞語。jieba庫提供了三種分詞模式:精確模式,全模式,搜索引擎模式。精確模式是將文本精確割分,不存在冗余。全模式是將文本中所

Python第三方庫jieba(結巴-中文)入門與進階(官方文檔)

修改 demo 特點 pypi nlp CA 動態修改 tag 官方文檔 jieba “結巴”中文分詞:做最好的 Python 中文分詞組件。下載地址:https://github.com/fxsjy/jieba 特點 支持三種分詞模式: 精確模式,試圖將句子最精確地

機器學習-文字特徵值抽取,中文

在文字特徵值抽取過程中,將用到jieba分詞 特點 支援三種分詞模式: 精確模式,試圖將句子最精確地切開,適合文字分析; 全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義。 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高

【NLP】【一】中文jieba

宣告:本文參考jieba官方文件而成,官方連結:https://github.com/fxsjy/jieba 【一】jieba安裝 pip install jieba 【二】jieba簡介 簡介可見jieba官方說明:https://pypi.org/project/jieba/

python中文器(jieba類庫)

 先上效果圖: 資料來源: 分詞後的txt檔案: 分詞後的excel檔案: 原始碼: #!/usr/bin/python # -*- coding: UTF-8 -*- # *************************************

中文 jieba和HanLP

安裝python包: pip install nltk pip install jieba pip install pyhanlp pip install gensim 使用jieba進行分詞 import jieba content = "現如今,機器學習和深度學習帶動人工智

基於python的中文庫:jieba

簡介 分詞共分三種模式: 精確模式: 試圖將句子最精確的切開 全模式:掃描出句子中所有可能的詞語,速度快 搜尋引擎模式:在精確模式的基礎上,對長詞再次切分適合用於搜尋引擎分詞 例子: import jieba string = '結巴這個分詞工具真的特別的

hanlp中文、提取摘要關鍵字、語句分析、智慧推薦

hanlp資源: hanlp介紹:http://hanlp.linrunsoft.com/ hanlp下載:https://github.com/hankcs/HanLP hanlp(分詞)使用:https://blog.csdn.net/nima1994/article/details