1. 程式人生 > >jieba分詞快速入門 自然語言處理

jieba分詞快速入門 自然語言處理

jieba

"結巴"中文分詞:做最好的Python中文分片語件 "Jieba" 

Feature

  • 支援三種分詞模式:

    • 精確模式,試圖將句子最精確地切開,適合文字分析;

    • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;

    • 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。

  • 支援繁體分詞

  • 支援自定義詞典

線上演示

(Powered by Appfog)

Python 2.x 下的安裝

  • 全自動安裝:easy_install jieba 或者 pip install jieba

  • 手動安裝:將jieba目錄放置於當前目錄或者site-packages目錄

  • 通過import jieba 來引用 (第一次import時需要構建Trie樹,需要幾秒時間)

Python 3.x 下的安裝

  • 目前master分支是隻支援Python2.x 的

  • git clone https://github.com/fxsjy/jieba.git
    git checkout jieba3k
    python setup.py install

Algorithm

  • 基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)

  • 採用了動態規劃查詢最大概率路徑, 找出基於詞頻的最大切分組合

  • 對於未登入詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法

功能 1):分詞

  • jieba.cut方法接受兩個輸入引數: 1) 第一個引數為需要分詞的字串 2)cut_all引數用來控制是否採用全模式

  • jieba.cut_for_search方法接受一個引數:需要分詞的字串,該方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細

  • 注意:待分詞的字串可以是gbk字串、utf-8字串或者unicode

  • jieba.cut以及jieba.cut_for_search返回的結構都是一個可迭代的generator,可以使用for迴圈來獲得分詞後得到的每一個詞語(unicode),也可以用list(jieba.cut(...))轉化為list

程式碼示例( 分詞 )

#encoding=utf-8
import jieba

seg_list = jieba.cut("我來到北京清華大學",cut_all=True)
print "Full Mode:""/ ".join(seg_list) #全模式

seg_list = jieba.cut("我來到北京清華大學",cut_all=False)
print "Default Mode:""/ ".join(seg_list) #精確模式

seg_list = jieba.cut("他來到了網易杭研大廈"#預設是精確模式
print ", ".join(seg_list)

seg_list = jieba.cut_for_search("小明碩士畢業於中國科學院計算所,後在日本京都大學深造"#搜尋引擎模式
print ", ".join(seg_list)

Output:

【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學

【精確模式】: 我/ 來到/ 北京/ 清華大學

【新詞識別】:他, 來到, 了, 網易, 杭研, 大廈    (此處,“杭研”並沒有在詞典中,但是也被Viterbi演算法識別出來了)

【搜尋引擎模式】: 小明, 碩士, 畢業, 於, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 後, 在, 日本, 京都, 大學, 日本京都大學, 深造

功能 2) :新增自定義詞典

  • 開發者可以指定自己自定義的詞典,以便包含jieba詞庫裡沒有的詞。雖然jieba有新詞識別能力,但是自行新增新詞可以保證更高的正確率

  • 用法: jieba.load_userdict(file_name) # file_name為自定義詞典的路徑

  • 詞典格式和dict.txt一樣,一個詞佔一行;每一行分三部分,一部分為詞語,另一部分為詞頻,最後為詞性(可省略),用空格隔開

功能 3) :關鍵詞提取

  • jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse

  • setence為待提取的文字

  • topK為返回幾個TF/IDF權重最大的關鍵詞,預設值為20

程式碼示例 (關鍵詞提取)

https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py

功能 4) : 詞性標註

  • 標註句子分詞後每個詞的詞性,採用和ictclas相容的標記法

  • 用法示例

    >>> import jieba.posseg as pseg
    >>> words =pseg.cut("我愛北京天安門")
    >>> for w in words:
    ...    print w.word,w.flag
    ...
    我 r
    愛 v
    北京 ns
    天安門 ns

功能 5) : 並行分詞

  • 原理:將目標文字按行分隔後,把各行文字分配到多個python程序並行分詞,然後歸併結果,從而獲得分詞速度的可觀提升

  • 基於python自帶的multiprocessing模組,目前暫不支援windows

  • 用法:

    • jieba.enable_parallel(4) # 開啟並行分詞模式,引數為並行程序數

    • jieba.disable_parallel() # 關閉並行分詞模式

  • 實驗結果:在4核3.4GHz Linux機器上,對金庸全集進行精確分詞,獲得了1MB/s的速度,是單程序版的3.3倍。

功能 6) : Tokenize:返回詞語在原文的起始位置

  • 注意,輸入引數只接受unicode

  • 預設模式

result = jieba.tokenize(u'永和服裝飾品有限公司')
for tk in result:
    print "word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])
word 永和                start: 0                end:2
word 服裝                start: 2                end:4
word 飾品                start: 4                end:6
word 有限公司            start: 6                end:10
  • 搜尋模式

result = jieba.tokenize(u'永和服裝飾品有限公司',mode='search')
for tk in result:
    print "word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])
word 永和                start: 0                end:2
word 服裝                start: 2                end:4
word 飾品                start: 4                end:6
word 有限                start: 6                end:8
word 公司                start: 8                end:10
word 有限公司            start: 6                end:10

功能 7) : ChineseAnalyzer for Whoosh搜尋引擎

其他詞典

下載你所需要的詞典,然後覆蓋jieba/dict.txt 即可或者用jieba.set_dictionary('data/dict.txt.big')

模組初始化機制的改變:lazy load (從0.28版本開始)

jieba採用延遲載入,"import jieba"不會立即觸發詞典的載入,一旦有必要才開始載入詞典構建trie。如果你想手工初始jieba,也可以手動初始化。

import jieba
jieba.initialize() #手動初始化(可選)

在0.28之前的版本是不能指定主詞典的路徑的,有了延遲載入機制後,你可以改變主詞典的路徑:

jieba.set_dictionary('data/dict.txt.big')

分詞速度

  • 1.5 MB / Second in Full Mode

  • 400 KB / Second in Default Mode

  • Test Env: Intel(R) Core(TM) i7-2600 CPU @ 3.4GHz;《圍城》.txt

常見問題

Change Log

相關推薦

jieba快速入門 自然語言處理

jieba "結巴"中文分詞:做最好的Python中文分片語件 "Jieba"  Feature 支援三種分詞模式: 精確模式,試圖將句子最精確地切開,適合文字分析; 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義; 搜尋引擎模

清華大學自然語言處理實驗室劉知遠老師-31頁ppt告訴你如何快速入門自然語言處理

                                                                 微信掃描二維碼,回覆“ss”獲取完整PPT檔案  與過去的學術報告不同,這個報告不介紹具體的研究動態,而是向同學們介紹一下,在自然語言

不是你無法入門自然語言處理(NLP),而是你沒找到正確的開啟方式

AI研習社按:本文作者 Mr.Scofield,原文載於作者個人部落格,雷鋒網已獲授權。 〇、序 之前一段時間,在結合深度學習做 NLP 的時候一直有思考一些問題,其中有一個問題算是最核心一個:究竟深度網路是怎麼做到讓各種 NLP 任務解決地如何完美呢?到底我的資料在

最好的入門自然語言處理(NLP)的資源清單

Melanie Tosik目前就職於旅遊搜尋公司WayBlazer,她的工作內容是通過自然語言請求來生產個性化旅遊推薦路線。回顧她的學習歷程,她為期望入門自然語言處理的初學者列出了一份學習資源清單。 目錄: ·  線上課程 ·  圖書館和開放資源 ·  活躍的

13.深度學習(嵌入)與自然語言處理--HanLP實現

筆記轉載於GitHub專案:https://github.com/NLP-LOVE/Introduction-NLP 13. 深度學習與自然語言處理 13.1 傳統方法的侷限 前面已經講過了隱馬爾可夫模型、感知機、條件隨機場、樸素貝葉斯模型、支援向量機等傳統機器學習模型,同時,為了將這些機器學習模型應用於 N

【NLP】老司機帶你入門自然語言處理

自然語言處理是一門用於理解人類語言、情感和思想的技術,被稱為是人工智慧皇冠上的明珠。   隨著深度學習發展,自然語言處理技術近年來發展迅速,在技術上表現為BERT、GPT等表現極佳的模型;在應用中表現為chatbot、知識圖譜、輿情監控等基於NLP技術的產品在市場上的大規模出現。   基於

自然語言處理入門】01:利用jieba對資料集進行,並統計詞頻

一、基本要求 使用jieba對垃圾簡訊資料集進行分詞,然後統計其中的單詞出現的個數,找到出現頻次最高的top100個詞。 二、完整程式碼 # -*- coding: UTF-8 -*- fr

自然語言(NLP)處理流程—IF-IDF統計—jieba—Word2Vec模型訓練使用

開發環境 jupyter notebook 一、資料感知—訓練與測試資料 import numpy as np import pandas as pd # 建立輸出目錄 output_dir =

自然語言處理】python中的jieba使用手冊

這篇文章是轉載的,但是我沒找到出處啊,宣告一下~ jieba “結巴”中文分詞:做最好的 Python 中文分片語件 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to b

自然語言處理入門----中文原理

1.中文分詞原理介紹 1.1 中文分詞概述 中文分詞(Chinese Word Segmentation) 指的是將一個漢字序列切分成一個一個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。 1.2 中文分詞方法介紹 現有的分詞方法可分為三大類:基於字串匹配的分

Python 自然語言處理(基於jieba和NLTK)

----------歡迎加入學習交流QQ群:657341423 自然語言處理是人工智慧的類別之一。自然語言處理主要有那些功能?我們以百度AI為例 從上述的例子可以看到,自然語言處理最基本的功能是詞法分析,詞法分析的功能主要有: 分詞分句 詞語標註 詞法時態

自然語言處理之中文器-jieba器詳解及python實戰

中文分詞是中文文字處理的一個基礎步驟,也是中文人機自然語言互動的基礎模組,在進行中文自然語言處理時,通常需要先進行分詞。本文詳細介紹現在非常流行的且開源的分詞器結巴jieba分詞器,並使用python實

自然語言處理2 -- jieba用法及原理

系列文章,請多關注 Tensorflow原始碼解析1 – 核心架構和原始碼結構 帶你深入AI(1) - 深度學習模型訓練痛點及解決方法 自然語言處理1 – 分詞 自然語言處理2 – jieba分詞用法及原理 自然語言處理3 – 詞性標註 自然語言處理4 – 句法分析 自然語言處理5 –

自然語言處理入門(4)——中文原理及工具介紹

本文首先介紹下中文分詞的基本原理,然後介紹下國內比較流行的中文分詞工具,如jieba、SnowNLP、THULAC、NLPIR,上述分詞工具都已經在github上開源,後續也會附上github連結,以供參考。 1.中文分詞原理介紹 1.1 中文分詞概述 中

自然語言處理學習3:中文分句re.split(),jieba和詞頻統計FreqDist

1. 使用re.split() 分句,re.split(delimiter, text) import jieba import re # 輸入一個段落,分成句子,可使用split函式來實現 paragraph = "生活對我們任何人來說都不容易!我們必須努力,最重要的是

HanLP《自然語言處理入門》筆記--2.詞典

筆記轉載於GitHub專案:https://github.com/NLP-LOVE/Introduction-NLP 2. 詞典分詞 中文分詞:指的是將一段文字拆分為一系列單詞的過程,這些單詞順序拼接後等於原文字。 中文分詞演算法大致分為基於詞典規則與基於機器學習這兩大派。 2.1 什麼是詞 在基於詞典

HanLP《自然語言處理入門》筆記--3.二元語法與中文

筆記轉載於GitHub專案:https://github.com/NLP-LOVE/Introduction-NLP 3. 二元語法與中文分詞 上一章中我們實現了塊兒不準的詞典分詞,詞典分詞無法消歧。給定兩種分詞結果“商品 和服 務”以及“商品 和 服務”,詞典分詞不知道哪種更加合理。 我們人類確知道第二種更

自然語言處理jieba

  在所有人類語言中,一句話、一段文字、一篇文章都是有一個個的片語成的。詞是包含獨立意義的最小文字單元,將長文字拆分成單個獨立的詞彙的過程叫做分詞。分詞之後,文字原本的語義將被拆分到在更加精細化的各個獨立詞彙中,詞彙的結構比長文字簡單,對於計算機而言,更容易理解和分析,所以,分詞往往是自然

【NLP漢語自然語言處理與實踐】_筆記

統計 The 計算 分詞 其余 雙向 name -c max 一、兩種分詞標準: 1. 粗粒度。 將詞作為最小基本單位。比如:浙江大學。 主要用於自然語言處理的各種應用。 2. 細粒度。 不僅對詞匯繼續切分,也對詞匯內部的語素進行切分。比如:浙江/大學。 主要用於搜索

自然語言處理NLP快速入門

真的 mat unit rod visit ctrl may let 深入 自然語言處理NLP快速入門 https://mp.weixin.qq.com/s/J-vndnycZgwVrSlDCefHZA 【導讀】自然語言處理已經成為人工智能領域一個重要的分支,它