如何在 Python 中使用 SVM 进行词性标注?

Sam*_*ack 5 python svm nltk pos-tagger scikit-learn

我想在 Python 中使用带有非英语语料库的 SVM 进行 POS 标记。看起来 Python 还不支持使用 SVM 进行标记(http://www.nltk.org/_modules)。

scikit-learn 有一个 SVM 模块。所以我安装了 scikit-learn 并在 Python 中使用它,但我找不到任何关于使用 SVM 进行 POS 标记的教程。

我真的不知道该怎么做,任何帮助将不胜感激。

hel*_*err 5

它必须是 SVM 吗?NTLK 有内置工具来进行词性标记:分类和标记单词

如果你想使用自定义分类器,请看这里: http: //www.nltk.org/api/nltk.classify.html,Ctrl+F “svm”,NTLK提供了一个名为scikit-learn算法的包装器SklearnClassifier。然后看看这里http://www.nltk.org/api/nltk.tag.html “分类器”,有一个类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))
Run Code Online (Sandbox Code Playgroud)

唯一的问题是 sklearn 分类器仅采用数字特征,因此您需要以某种方式转换您的分类器。