自然語言處理 crf++命名實體識別
阿新 • • 發佈:2018-12-21
自然語言處理的方法有很多種,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
因為訓練的語句只是一部分,所以測試的資料要是裡面的一部分。上面只是簡單的例子說明,適用於這方面的初學者,我也是邊學邊記錄自己的學習過程。
接下來就要訓練更多的資料語料了,用的多的就是人民日報的語料,比較實用。我還沒有找到怎麼上傳語料的方法,如果有需要的可以直接留言聯絡我,看到就回復了。新手,勿噴,謝謝。