2015-09-05 42 views
4

我想用Python中的非英語語料庫使用SVM進行POS標記。 看起來Python不支持使用SVM標記(http://www.nltk.org/_modules)。如何在Python中使用SVM進行POS標記?

scikit-learn有一個SVM模塊。所以我安裝了scikit-learn並在Python中使用它,但是我找不到有關使用SVM進行POS標記的任何教程。

我真的不知道該怎麼做,任何幫助將不勝感激。

回答

4

是否必須是SVM? NTLK有內置的工具做詞性標註:Categorizing and Tagging Words

如果你想使用自定義分類,看看這裏:http://www.nltk.org/api/nltk.classify.html,按Ctrl + F「SVM」,NTLK提供所謂SklearnClassifier scikit學習算法的包裝。然後看看這裏http://www.nltk.org/api/nltk.tag.html,Ctrl + F「分類器」,有一個類nltk.tag.sequential.ClassifierBasedPOSTagger這顯然可以使用從sklearn包裝分類。

我沒有試過這個,但它可能工作。

編輯: 它應該是這樣的:

from nltk.classify import SklearnClassifier 
from sklearn.svm import SVC 
clf = SklearnClassifier(SVC(),sparse=False) 
cpos = nltk.tag.sequential.ClassifierBasedPOSTagger(train=train_sents,classifier_builder 
= lambda train_feats: clf.train(train_feats)) 

唯一的問題是,sklearn分類只取數字功能,所以你需要你以某種方式轉換。

+0

謝謝,hellpanderrr。我嘗試了其他標記器(CRF,TBL,HMM,...)並且想要使用SVM。我用這個包裝,但仍然不能做任何POS標記。 –

+0

是什麼問題? – hellpanderrr

+0

使用Python中的其他標記器,您只需要訓練數據來訓練,然後就可以使用標記方法和評估方法。但是當我使用scikit-learn或SklearnClassifier的SVM時,我找不到任何方法來訓練或標記。 –