我想在Python中使用带有非英语语料库的SVM进行POS标记。 看起来Python还不支持使用SVM进行标记(http://www.nltk.org/_modules)。
scikit-learn有一个SVM模块。所以我安装了scikit-learn并在Python中使用它,但我找不到任何关于使用SVM进行POS标记的教程。
我真的不知道该怎么做,任何帮助都会受到赞赏。
答案 0 :(得分:4)
它必须是SVM吗? NTLK有内置工具来进行POS标记:Categorizing and Tagging Words
如果您想使用自定义分类器,请查看此处:http://www.nltk.org/api/nltk.classify.html,Ctrl + F" svm",NTLK为名为SklearnClassifier
的scikit-learn算法提供包装器。然后看看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分类器只采用数字特征,所以你需要以某种方式转换你的。