python-jieba 安裝+分詞+定位


安裝

https://github.com/fxsjy/jieba

下載安裝包 解壓后 進入文件夾 cmd運行:Python setup.py install

使用:

分詞:(test.py)

import jieba

result = jieba.cut("我叫張海鷗")

print("/".join(result))

>>>我/叫/張/海鷗

 

分詞+標簽:(test_bug,py)

import jieba
import jieba.posseg as pseg
words=pseg.cut("又跛又啞")
for w in words:
    print(w.word,w.flag)

輸出:

官方說明:主要功能

  1. 分詞

  • jieba.cut 方法接受三個輸入參數: 需要分詞的字符串;cut_all 參數用來控制是否采用全模式;HMM 參數用來控制是否使用 HMM 模型
  • jieba.cut_for_search 方法接受兩個參數:需要分詞的字符串;是否使用 HMM 模型。該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細
  • 待分詞的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建議直接輸入 GBK 字符串,可能無法預料地錯誤解碼成 UTF-8
  • jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的 generator,可以使用 for 循環來獲得分詞后得到的每一個詞語(unicode),或者用
  • jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
  • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器,可用於同時使用不同詞典。jieba.dt 為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。

代碼示例

# 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))

輸出:

【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學/ 華大/ 大學
【精確模式】: 我/ 來到/ 北京/ 清華大學
【新詞識別】:他, 來到, 了, 網易, 杭研, 大廈    (此處,“杭研”並沒有在詞典中,但是也被Viterbi算法識別出來了)
【搜索引擎模式】: 小明, 碩士, 畢業, 於, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, 后, 在, 日本, 京都, 大學, 日本京都大學, 深造

傳入文件名參數進行分割並計時:(test_file.py)
import time
import sys
sys.path.append("../")
import jieba
jieba.initialize()

url = sys.argv[1]
content = open(url,"rb").read()
t1 = time.time()
words = "/ ".join(jieba.cut(content))

t2 = time.time()
tm_cost = t2-t1

log_f = open("1.log","wb")
log_f.write(words.encode('utf-8'))
log_f.close()

print('cost ' + str(tm_cost))
print('speed %s bytes/second' % (len(content)/tm_cost))

 

定位詞在文本中的位置:

  • 注意,輸入參數只接受 unicode
import jieba

g_mode="default"

global g_mode
result = jieba.tokenize(u'在1號店能買到小S和大S八卦的書。')  # result = jieba.tokenize(test_sent,mode=g_mode,HMM=False)
for tk in result:
  print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])) 

另外還可以調整詞典 具體看 https://github.com/hosiet/jieba



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM