天天看點

crf++ 之中文實體識别初步實作檔案下載下傳:資料處理配置檔案模型訓練測試

本文選用crf++工具包在windows上實作中文實體識别。任務是提取時間、人物、地點及組織機構名。

檔案下載下傳:

工具包下載下傳:

官網:http://chasen.org/~taku/software/CRF++/#features

百度網盤:https://pan.baidu.com/s/1apZx8wd3xXGgMs_WUQeuSg

提取碼:o7fh

語料檔案下載下傳

百度網盤:https://pan.baidu.com/s/1w-f_FJt3cZUWGenQzUPE3g

提取碼:7dru

語料檔案是人民日報1998中文标注語料庫,工具包是crf+±0.58。

資料處理

  1. 資料編碼格式

    原始資料檔案編碼格式是gbk,需要将編碼格式改為utf-8

  2. tags對應關系

    /t 表示時間

    /nr表示人名

    /ns表示地名

    /nt表示組織機構名

  3. 名字中的姓和名進行合并,如 江/nr 某某/nr 合并為 江某某/nr。
  4. 需要将語料轉換為對應的标注,并将形如[華北/ns 電管局/n]nt進行合并,合并為華北電管局/nt
  5. 對時間進行合并,如12月/t 31日/t 合并為 12月31日/t
  6. 對特殊字元進行轉換,對文中的全角字元轉為半角字元。
  7. 特殊位置處理 ,對帶有/的詞處理,對未标注的詞進行處理
  8. 用的是BMEWO做标注體系

以上處理流程在代碼中均有顯示。

代碼位址:

百度網盤:https://pan.baidu.com/s/1c6rYRZK7Q1C2iNUyoK7FHQ

提取碼:2195

配置檔案

配置temple檔案,内容如下:

# Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-2,0]/%x[-1,0]/%x[0,0]
U06:%x[-1,0]/%x[0,0]/%x[1,0]
U07:%x[0,0]/%x[1,0]/%x[2,0]
U08:%x[-1,0]/%x[0,0]
U09:%x[0,0]/%x[1,0]

# Bigram
B
           

模型訓練

在解壓的工具下,建立檔案夾test,将crf_test.exe、crf_learn.exe、libcrfpp.dll同時拷貝到test下,将temple檔案、train.data檔案拷貝到test檔案下,打開cmd檔案,進入test檔案夾,執行下列指令:

crf_learn  -p 8 template train.data model
           
  • -f, –freq=INT使用屬性的出現次數不少于INT(預設為1)
  • -p, –thread=INT線程數(預設1),利用多個CPU減少訓練時間

訓練過程如下:

crf++ 之中文實體識别初步實作檔案下載下傳:資料處理配置檔案模型訓練測試
  • ter:疊代次數 terr:标記錯誤率
  • serr:句字錯誤率
  • obj:目前對象的值。當這個值收斂到一個确定值的時候,訓練完成
  • diff:與上一個對象值之間的相對差

訓練完成如圖:

crf++ 之中文實體識别初步實作檔案下載下傳:資料處理配置檔案模型訓練測試

測試

執行下列指令:

crf_test -m model test.data > test.txt
           

檢視test.txt檔案即可,為最終的生成辨別。這篇文章主要帶大家簡單粗暴實作流程,真正的優化過程見後續内容。

繼續閱讀