文字預處理 (3)分詞

2021-10-10 18:15:46 字數 2402 閱讀 2460

由於新詞的不斷出現,不存在乙個詞表能夠收錄所有的詞彙。所以此時就無法將這個詞給識別出來。

比如「羽毛球拍賣完了」就存在兩種分詞的方式:一種是,羽毛球/拍賣/完了;另一種是,羽毛球拍/賣/完了

比如「自然語言處理」可以看做乙個詞語,也可以看三個詞語「自然」,「語言」,「處理」

基於詞典資源的一種分詞方法,對文字中的字串進行匹配,若能在詞典中找到,則識別出該詞。一般分為,正向最大匹配法,逆向最大匹配法以及最小切分雙向最大匹配法。很明顯,這種方法簡單快速,但是對於未登入詞以及切分歧義的情況無法處理。

這種方法的中心思想就是,假設每個詞的出現只和它之前的n-1個詞相關,通過大量的語料統計便可以得知句子中每個詞的出現概率,繼而計算出整個句子的出現概率。但這種方法的計算開銷大,而且也無法處理未登入詞的問題。

這種就是一種序列標註的方法,基於bme的思想,詳情可以看一下序列標註的任務

也是基於序列標註的任務,不同於hmm的假設,在hmm中,當前隱藏狀態只受上一時刻隱狀態的影響,觀測變數只與當前隱狀態相關。而crf考慮的影響範圍更大,估計更多數量的特徵函式以及相應權重。因此,精度也更高,當然計算代價也偏高。

深度學習中的迴圈神經網路也適用於序列標註問題,因此也可以解決分詞的任務。比如,首先將文字轉化為詞嵌入層(即轉化為詞向量),再將詞嵌入層輸入lstm結構,通過有監督學習便可以學習出序列標註。

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由大快搜尋主導開發,包含了一系列自然語言處理操作。

from pyhanlp import *

# 分詞

s = '自然語言處理很有趣'

word_seg = hanlp.segment(s)

# 輸出分詞結果

print(word_seg)

# ['自然', '語言', '處理', '很', '有趣']

thuac(thu lexical analyzer for chinese)是由清華大學研發的具有中文詞彙分析功能的自然語言處理工具。

import thulac

# 載入分詞工具

thulac_model = thulac.thulac()

# 分詞

s = '自然語言處理很有趣'

word_seg = thulac_model.cut(s)

# 輸出分詞結果

print(word_seg)

# [['自然', 'n'], ['語言', 'n'], ['處理', 'v'], ['很', 'd' ], ['有趣', 'a']]

snownlp是用於中文自然語言處理的工具,主要用於分詞、情感分析等。

from snownlp import snownlp

# 分詞

s = '自然語言處理很有趣'

word_seg = snownlp(s).words

# 輸出分詞結果

print(word_seg)

# ['自然', '語言', '處理', '很', '有趣']

jieba是乙個專門針對中文分詞的應用工具,分詞效果不錯,並且提供了多種分詞模式。

import jieba

s = '自然語言處理很有趣'

# 全模式分詞

wordseg_all = jieba.lcut(s, cut_all=true)

# 輸出分詞結果

print(wordseg_all)

# ['自然', '自然語言', '語言', '處理', '很', '有趣']

# 精確模式分詞

wordseg = jieba.lcut(s, cut_all=false)

# 輸出分詞結果

print(wordseg)

# ['自然語言', '處理', '很', '有趣']

# 搜尋引擎模式分詞

wordseg_search = jieba.lcut_for_search(s)

print(wordseg_search)

# ['自然', '語言', '自然語言', '處理', '很', '有趣']

哈工大研發的,官網是有教程的(後期補充)

後記:其實分詞也可以看做是序列標註的一種。

自然語言處理1 分詞

分詞是自然語言處理的基礎,分詞準確度直接決定了後面的詞性標註 句法分析 詞向量以及文字分析的質量。英文語句使用空格將單詞進行分隔,除了某些特定詞,如how many,new york等外,大部分情況下不需要考慮分詞問題。但中文不同,天然缺少分隔符,需要讀者自行分詞和斷句。故在做中文自然語言處理時,我...

Python 結巴分詞(1)分詞

利用結巴分詞來進行詞頻的統計,並輸出到檔案中。結巴分詞的特點 支援繁體分詞 支援自定義詞典 mit 授權協議 演算法 分詞引數 使用者詞典 載入詞典 使用者詞典 userdict.dict 雲計算 5 李小福 2 nr 創新辦 3 i easy install 3 eng 好用 300 韓玉賞鑑 3...

中文文字分析(1) 分詞

import jieba import re 資料格式 晚上想吃五花肉土豆蓋澆飯 今晚吃雞嘿咻嘿 綠皮環保小火車進站 一首 夢醒時分 送給大家 具體流程如下 目的 清洗文字中的特殊符號 sentence 晚上想吃五花肉土豆蓋澆飯 今晚吃雞嘿咻嘿 綠皮環保小火車進站 一首 夢醒時分 送給大家 def ...