2021-05-12 14:32:11
Linux下CRF++的使用
2020-06-16 18:07:40
在之前使用CRF++的過程中一直是再Windows下執行的,由於訓練文字不大,所以很順利,但為提高結果準確率而增加訓練語料內容,隨之也出現問題,因為用自己的機子做會使cpu佔用率在訓練疊代時瞬間達到100%而導致crf_learn.exe停止工作,如下圖所以就轉到伺服器端訓練了,然而也出現了一個問題,可能由於Windows下檔案在Linux中是略有不同,所以執行時報錯,如下:?
encoder.cpp(340) [feature_index.open(templfile, trainfile)]feature_index.cpp(174) [max_size == size] inconsistent column size:3 1 train404pos11.txt
也嘗試將Windows檔案中的換行符“rn”全部替換為“r”但仍報錯,嘗試了幾種其他的方法後,仍無結果。突然想起來在CRF++包中有自帶一個example資料夾,就把裡面的範例train.data拷到Windows下與我自己的檔案對比一下到底哪裡出了問題,用Notepad++開啟這兩個檔案,“檢視”-“顯示符號”-“顯示行尾符”,果然問題顯現,如下圖:?
我的訓練語料
CRF++範例檔案
如何能將我文件中的”CRLF“替換為只有”LF“呢?在網上找到了答案:”編輯“-”檔案格式轉換“-”轉為unix格式“,總算跟範例檔案格式一致了,又到伺服器上測試一下效果如何,果然問題解決了,訓練成功。
小貼士:如果選mac格式就是只有CR,如果是Windows就是都有。新建的文件預設應該是Windows格式?。
相關文章