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 【導讀】自然語言處理已經成為人工智能領域一個重要的分支,它