2011-12-03 79 views
5

我試圖使用CRFSuite但我無法弄清楚如何使用示例/ ner.py和pos.py運行CRFSuite例子

準確地說,我怎麼讓表單的輸入:

# Ner.py 
fields = 'y w pos chk' 

# Pos.py 
fields = 'w num cap sym p1 p2 p3 p4 s1 s2 s3 s4 y' 

的「YW POS」我可以從連接1模型得到的,例如,但「CHK」的一部分,所有這些領域中pos.py我真的不明白。

此外,有沒有辦法處理原始文本(沒有所有這些標籤)與CRFSuite鑑於我有一個訓練有素的模型?

+0

我也有興趣解決這個問題;特別是,從引用的CoNLL數據(2000年爲NER組塊,2003年爲NER,但是PoS使用什麼?)開始,我如何生成PoS數據。如所引用的,輸入必須是''w num num sym p1 p2 p3 p4 s1 s2 s3 s4 y'',這意味着這個詞本身是第一個,而PoS標記是最後一個。但是介於兩者之間的所有內容以及如何獲得並生成它們呢? – fnl

+0

也許關於PoS部分更精確的問題應該是:如何使用這些腳本從常規的帶有PoS標籤的OWPL文件('「文字標籤\ n」...')生成PoS標籤輸入格式? – fnl

回答

1

您不能將ner.pypos.py與本教程的作者提供的數據一起使用。你需要一個合適的CoNLL-2000數據集。 :)

只是作爲一個例子,你可以找到它here

我希望我已經正確地回答了你的問題。

+0

是的,有點,但如何生成PoS標記的CRFsuite輸入數據?也就是說,原始數據集在哪裏用於使用PoS模板生成培訓/測試文件,並在問題中顯示字段? (ner.py文件顯示每個字段的實際含義(num,cap,sym,p1-4和s1-4)。) – fnl

+0

獲取CoNLL-2000數據集(英文):'import nltk; train_sents = list nltk.corpus.conll2000.iob_sents( 'train.txt')); test_sents = list(nltk.corpus.conll2000.iob_sents('test.txt'))' –

0

事實證明,稍微修改pos.py文件以完成它應該做的事情會更簡單。現在pos.py的輸入格式是'w y',而'num cap sym p1 p2 p3 p4 s1 s2 s3 s4'的功能全部都是由腳本本身生成的。這應該解決pos.py問題。以下是要點:

https://gist.github.com/fnl/21116fa57527946c5dbe

對於ner.py腳本,通過@Legend已經作爲回答,相關的輸入數據格式,可以發現,例如,在這裏:

http://www.cnts.ua.ac.be/conll2003/ner/