Ubuntu下最大熵實現中文分詞

2021-08-20 08:25:29 字數 2196 閱讀 9000

最大熵模型實現中文分詞

一、實驗環境

1.1ubuntu 16.4 lts(linux)

1.2python2

本實驗完全在linux環境(ubuntu 64位)下使用python指令碼和命令列實現

實驗結果輸入文字。

二、實驗材料

2.1語料庫

本實驗採用sighan提供的backoff2005語料進行訓練和測試。

三、第三方工具包

張樂博士最大熵工具包

四、實驗演算法及過程

本實驗採用最大熵演算法實現中文分詞

準備工作:

4.2linux 環境下進入maxent-master子目錄按照

$ ./configure

$ make

$ install

即可完成c++庫的安裝

4.3進入python子目錄執行python setup.py install完成python庫的安裝

實驗流程:

4.4將backoff2005裡的訓練資料轉化為這個pos tagger所需的訓練資料格式,還是以微軟亞洲研究院提供的中文分詞語料為例,這次我們採用4-tag(b(begin,詞首), e(end,詞尾), m(middle,詞中), s(single,單字詞))標記集,只處理utf-8編碼文字。原始訓練集./icwb2-data/training/msr_training.utf8的形式是人工分好詞的中文句子形式。

4.5使用乙個4-tag的標註指令碼 character_tagging.py 對這個訓練語料進行標註:

4.6python character_tagging.py icwb2-data/training/msr_training.utf8msr_training.tagging.utf8」 即可得到最大熵詞性標註訓練器所需要的輸入檔案msr_training.tagging.utf8

4.7用張樂博士最大熵模型工具包中自帶的postagger來訓練乙個字標註器,指定迭代次數100:

./maxent-master/example/postagger/postrainer.pymsr_tagger.model -f msr_training.tagging.utf8 --iters 100

4.8需要將其單字離散化並新增空格,python指令碼 character_split.py 對測試語料進行處理。

執行「python character_split.py icwb2-data/testing/msr_test.utf8msr_test.split.utf8」即可得到可用於標註測試的測試語料msr_test.split.utf8

4.10執行最大熵標註指令碼即可得到字標註結果:

./maxent-master/example/postagger/maxent_tagger.py-m msr_tagger.model msr_test.split.utf8 > msr_test.split.tag.utf8

4.11使用指令碼character_2_word.py,按標註的詞位資訊講這份結果再轉化為分詞結果。

六、主要函式

character_tagging.py      對訓練語料進行標註:

character_split.py        對測試語料進行處理。

character_2_word.py       按標註的詞位資訊講這份結果再轉化為分詞結果。

六、實驗結果評測:

總體評測6.1測試資料

利用backoff2005的測試指令碼測試分詞的效果,使用微軟語料庫進行測評。

./icwb2data/scripts/score./icwb2data/gold/msr_training_words.utf8./icwb2-data/gold/msr_test_gold.utf8 msr_test.split.tag2word.utf8 > msr_maxent_segment.score

6.2結果說明

結果大概是:

準確率:83.6%

召回率:84.4%

6.3結果分析

這個分詞結果比較一般,主要原因應該是這裡使用的這份詞性標註**在抽取特徵的時候主要考慮的是英文詞性標註,所以我們可以基於一些已有的最大熵字標誌文章來設計特徵模板,進行特徵提取和優化,從而進行改進。

統計中文分詞(最大熵)

在機器學習中,序列標註 sequence labeling 是一種常見的模式識別任務,它用來給一組可觀察物件打上狀態 類別 標籤。它可以解決nlp中的分詞 word segement 詞性標註 part of speech tagging 命名實體識別 named entity recognitio...

python實現最大熵模型

encoding utf 8 created on 2017 8 7 根據李航 統計學習方法 實現 from collections import defaultdict import math class maxent object def init self self.feats default...

最大熵模型python實現

本文參考nltk maxentclassifier實現了乙個簡單的最大熵模型,主要用於理解最大熵模型中一些數學公式的實際含義。最大熵模型 pw y x zw x 1 zw x exp i 1nwi fi x y ye xp i 1n wifi x,y 這裡fi x,y 代表特徵函式,wi 代表每個特...