漢語分詞軟體的使用 (python底下)

2022-08-18 18:33:13 字數 1866 閱讀 2375

目前我常常使用的分詞有結巴分詞、nlpir分詞等等

最近是在使用結巴分詞,稍微做一下推薦,還是蠻好用的。

一、結巴分詞簡介

利用結巴分詞進行中文分詞,基本實現原理有三:

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

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

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

二、安裝及使用(linux)

b.當時執行安裝命令時,出現錯誤:no permission!  (有些人可能會遇見這種問題,這是因為許可權不夠的。 執行:sudo !!   其中「!!」表示上一條命令,這裡指的就是上面的安裝命令),使用sudo後便可正常執行。

2.在使用結巴做分詞的時候,一定會用的函式是:jieba.cut(arg1,arg2);這是用於分詞的函式,我們只需要了解以下三點,便可使用

a.cut方法接受兩個輸入引數:第乙個引數(arg1)為需要進行分詞的字串,arg2引數用來控制分詞模式。

分詞模式分為兩類:預設模式,試圖將句子最精確地切開,適合文字分析;全模式,把句子中所有的可以成詞的詞語都掃瞄出來,適合搜尋引擎

b.待分詞的字串可以是gbk字串、utf-8字串或者unicode

使用python的人要注意編碼問題,python是基於ascii碼來處理字元的,當出現不屬於ascii的字元時(比如在**中使用漢字),會出現錯誤資訊:「ascii 

codec can't encode character」,解決方案是在檔案頂部加入語句: #! -*- coding:utf-8 -*-  來告訴python的編譯器:「我這個檔案是用utf-8進行編碼的,你

要進行解碼的時候,請用utf-8」。(這裡記住,這個命令一定要加在檔案的最頂部,如果不在最頂部,編碼問題就依然存在,得不到解決)關於編碼的轉換,可以參考

博文(ps:個人理解「import sys    reload(sys)   sys.setdefaultencoding('utf-8')」這幾句話與「#! -*- coding:utf-8 -*- 」等價)

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

3.以下舉例jieba中提供的乙個使用方法作為說明:

#

! -*- coding:utf-8 -*-

import

jieba

seg_list = jieba.cut("

我來到北京清華大學

", cut_all =true)

print

"full mode:

", '

'.join(seg_list)

seg_list = jieba.cut("

我來到北京清華大學")

print

"default mode:

", '

'.join(seg_list)

輸出結果為:

full mode: 我/ 來/ 來到/ 到/ 北/ 北京/ 京/ 清/ 清華/ 清華大學/ 華/ 華大/ 大/ 大學/學  

default mode: 我/ 來到/ 北京/ 清華大學

三、結巴中文分詞的其他功能

1、新增或管理自定義詞典

結巴的所有字典內容存放在dict.txt,你可以不斷的完善dict.txt中的內容。

結巴中文分詞使用學習(python)

精確模式 預設 試圖將句子最精確地切開,適合文字分析 全模式,把句子中所有的可以成詞的詞語都掃瞄出來,但是不能解決歧義 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,該方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細。注意 jieba.cut以及jieba.cut for sear...

Python 使用jieba進行分詞並計算詞權重

import jieba import xlrd import jieba.analyse defstopwordslist filepath stopwords line.strip for line in open filepath,r encoding utf 8 readlines retu...

「結巴」分詞 做最好的Python分詞元件

中文分詞是中文文字處理的乙個基礎性工作,然而長久以來,在python程式設計領域,一直缺少高準確率 高效率的分詞元件。結巴分詞正是為了滿足這一需求。特性 支援兩種分詞模式 用法 演算法 介面 示例 python encoding utf 8 import jieba seg list jieba.c...