最大熵模型實現中文分詞
一、實驗環境
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 代表每個特...