一次關於sklearn-crfsuite的安裝之旅

爲了在windows上跑CRF,我需要安裝sklearn-crfsuite,最開始想到的是使用pycharm進行環境配置,裝上了sklearn-crfsuite。跑起來,額,出錯了:

正在訓練評估CRF模型...
Traceback (most recent call last):
  File "C:/Users/cc/Documents/xxx/yyy/window_version/main.py", line 73, in <module>
    main()
  File "C:/Users/cc/Documents/xxx/yyy/window_version/main.py", line 31, in main
    (test_word_lists, test_tag_lists)
  File "C:\Users\cc\Documents\xxx\yyy\window_version\evaluate.py", line 43, in crf_train_eval
    crf_model.train(train_word_lists, train_tag_lists)
  File "C:\Users\cc\Documents\xxx\yyy\window_version\models\crf.py", line 23, in train
    self.model.fit(features, tag_lists)
  File "C:\Users\cc\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn_crfsuite\estimator.py", line 331, in fit
    trainer.train(self.modelfile.name, holdout=-1 if X_dev is None else 1)
  File "pycrfsuite\_pycrfsuite.pyx", line 359, in pycrfsuite._pycrfsuite.BaseTrainer.train
  File "stringsource", line 15, in string.from_py.__pyx_convert_string_from_py_std__in_string
UnicodeEncodeError: 'ascii' codec can't encode characters in position 9-10: ordinal not in range(128)

Process finished with exit code 1

好的,不就是排錯嗎!我不怕,上網找經驗,找源碼,找到pycrfsuite_pycrfsuite.pyx的BaseTrainer.train函數,但是找不到stringsource,懷疑是C/C++實現,有點灰心~

通過找經驗可以考慮的解決方案:

  1. 使用cmd,pip安裝sklearn-crfsuite
  2. 換一個電腦,自己的電腦環境被搞得有點亂
  3. 將中文編碼成index,重新訓練模型

同事用pip成功了,搜索他的電腦上根本沒有_pycrfsuite.pyx,但是有_pycrfsuite.pyd文件,不知道兩者有什麼區別。

換個電腦用pip裝一下sklearn-crfsuite,搞定了。

備註:其實在linux上用pip裝沒問題,就可以想想用pip裝了~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章