1. 程式人生 > >自然語言處理 crf++命名實體識別

自然語言處理 crf++命名實體識別

自然語言處理的方法有很多種,crf++是也是使用比較多的一種方法,關於crf++ 的詳細解釋可以參考網上的資料,這裡不再做介紹,這裡直接說的就是用crf++進行命名實體識別。

crf++ 進行自然語言處理的時候需要下載一個crf工具包,然後使用工具包進行處理,我使用的是CRF++ 0.58版本的,這個在網上都可以搜到下載,壓縮後這個是裡面的內容

將crf_learn和crf_test複製到這個路徑

然後需要新建一個訓練命名實體的模板template,這裡是常用的一個命名實體的特徵模板template,我自己學習的時候用的就是這個

# 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

新建特徵模板template檔案,如圖

這個template使用的過程中一定要使用相對應的train.data,訓練的格式為

調	O
查	O
範	O
圍	O
涉	O
及	O
故	B-LOC
宮	I-LOC
、	O
歷	B-LOC
博	I-LOC
、	O
尤	O
以	O
收	O
錄	O
周	B-PER
恩	I-PER
來	I-PER
總	O
理	O
、	O
馬	B-PER
駿	I-PER
烈	O
士	O
的	O
《	O
南	B-ORG
開	I-ORG
中	I-ORG
學	I-ORG
同	O
學	O
錄	O

上面的這個是train.data 的訓練格式,

在這個chunking裡面開啟cmd 敲入以下程式碼,這便是開始訓練模型

crf_learn -a MIRA template train.data model

template就是我們上面定義的特徵模板 訓練好之後會產生一個model檔案(產生的一個新檔案)

model訓練出來後進行測試,需要用到test.data 檔案,訓練的格式如下:

調	O
查	O
範	O
圍	O
涉	O
及	O
故	O
宮	O
、	O
馬	O
駿	O
烈	O
士	O
的	O
《	O
南	O
開	O
中	O
學	O
同	O
學	O
錄	O

在chunking裡面開啟cmd 敲入以下程式碼,這便是開始模型預測

crf_test -m model test.data >> output.txt

這個時候會對test.data裡的語句進行處理,並且將處理結果輸出到output.txt資料夾下,處理結果如下

調	O	O
查	O	O
範	O	O
圍	O	O
涉	O	O
及	O	O
故	O	B-LOC
宮	O	I-LOC
、	O	O
馬	O	B-PER
駿	O	I-PER
烈	O	O
士	O	O
的	O	O
《	O	O
南	O	B-ORG
開	O	I-ORG
中	O	I-ORG
學	O	I-ORG
同	O	O
學	O	O
錄	O	O

因為訓練的語句只是一部分,所以測試的資料要是裡面的一部分。上面只是簡單的例子說明,適用於這方面的初學者,我也是邊學邊記錄自己的學習過程。

接下來就要訓練更多的資料語料了,用的多的就是人民日報的語料,比較實用。我還沒有找到怎麼上傳語料的方法,如果有需要的可以直接留言聯絡我,看到就回復了。新手,勿噴,謝謝。