1. 程式人生 > >自然語言處理基礎技術之分詞實戰

自然語言處理基礎技術之分詞實戰

宣告:轉載請註明出處,謝謝:https://blog.csdn.net/m0_37306360/article/details/84453008
更多學習筆記關注:
公眾號:StudyForAI
知乎專欄:https://www.zhihu.com/people/yuquanle/columns

昨天總結了一下分詞概念以及一些現有的python開源工具,今天就來一波實戰,順便說一下jupyter真是好用~~

-----------------------------------------分割線--------------------------------------------

jieba分詞

安裝:pip install jieba

國內源安裝更快:pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple

匯入jieba包

import jieba

全模式分詞

wordseg_all = jieba.cut("我愛自然語言處理技術!", cut_all=True)
print("全模式: " + " ".join(wordseg_all))
Building prefix dict from the default dictionary ...
Dumping model to file cache C:\Users\yuquanle\AppData\Local\Temp\jieba.cache
Loading model cost 0.968 seconds.
Prefix dict has been built succesfully.


全模式: 我 愛 自然 自然語言 語言 處理 技術  

精確模式分詞

wordseg = jieba.cut("我愛自然語言處理技術!", cut_all=False)
print("精確模式: " + " ".join(wordseg))
精確模式: 我 愛 自然語言 處理 技術 !

搜尋引擎模式

wordseg_search = jieba.cut_for_search("我愛自然語言處理技術!")  
print("搜尋引擎模式:" + " ".join(wordseg_search))
搜尋引擎模式:我 愛 自然 語言 自然語言 處理 技術 !

 
 

SnowNLP分詞

安裝:pip install snownlp

國內源安裝:pip install snownlp -i https://pypi.tuna.tsinghua.edu.cn/simple

匯入snownlp包

from snownlp import SnowNLP
model = SnowNLP(u'我愛自然語言處理技術!')
print(model.words)
['我', '愛', '自然', '語言', '處理', '技術', '!']

 
 

THULAC分詞

安裝:pip install thulac

國內源安裝:pip install thulac -i https://pypi.tuna.tsinghua.edu.cn/simple

匯入thulac包

import thulac

預設模式:分詞的同時進行詞性標註

thulac_model = thulac.thulac()
wordseg = thulac_model.cut("我愛自然語言處理技術!")
print(wordseg)
Model loaded succeed
[['我', 'r'], ['愛', 'v'], ['自然', 'n'], ['語言', 'n'], ['處理', 'v'], ['技術', 'n'], ['!', 'w']]

只進行分詞

seg_only_model = thulac.thulac(seg_only=True)
wordseg_only = seg_only_model.cut("我愛自然語言處理技術!")
print(wordseg_only)
Model loaded succeed
[['我', ''], ['愛', ''], ['自然', ''], ['語言', ''], ['處理', ''], ['技術', ''], ['!', '']]

 
 

NLPIR分詞

安裝:pip install pynlpir

國內源安裝:pip install pynlpir -i https://pypi.tuna.tsinghua.edu.cn/simple

匯入pynlpir包

如果發現載入報錯,則需要更換license:https://github.com/NLPIR-team/NLPIR/tree/master/License/

真是開源的不徹底~~~

import pynlpir

開啟分詞器

pynlpir.open()

分詞:這個工具會同時進行詞性標註

s = "我愛自然語言處理技術!"
word_seg = pynlpir.segment(s)
print(word_seg)
[('我', 'pronoun'), ('愛', 'verb'), ('自然', 'adjective'), ('語言', 'noun'), ('處理', 'verb'), ('技術', 'noun'), ('!', 'punctuation mark')]

 
 

Stanford CoreNLP分詞

安裝:pip install stanfordcorenlp

國內源安裝:pip install stanfordcorenlp -i https://pypi.tuna.tsinghua.edu.cn/simple

匯入stanfordcorenlp包

from stanfordcorenlp import StanfordCoreNLP

先下載模型,然後匯入

下載地址:

nlp_model = StanfordCoreNLP(r'stanford-corenlp-full-2018-02-27', lang='zh')

分詞

s = '我愛自然語言處理技術!'
word_seg = nlp_model.word_tokenize(s)
print(word_seg)
['我愛', '自然', '語言', '處理', '技術', '!']

 
 

Hanlp分詞

安裝:pip install pyhanlp

國內源安裝:pip install pyhanlp -i https://pypi.tuna.tsinghua.edu.cn/simple

匯入pyhanlp包

from pyhanlp import *
s = '我愛自然語言處理技術!'
word_seg = HanLP.segment(s)
for term in word_seg:
    print(term.word)
我
愛
自然語言處理
技術
!

另外,程式碼我已經上傳github:https://github.com/yuquanle/StudyForNLP/blob/master/NLPbasic/WordSegmentation.ipynb