【问题标题】:How to do POS tagging using SVM in Python?如何在 Python 中使用 SVM 进行 POS 标记?
【发布时间】:2015-12-01 10:02:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: python scikit-learn nltk svm pos-tagger


    【解决方案1】:

    它必须是 SVM 吗? NTLK 内置了 POS 标记工具:Categorizing and Tagging Words

    如果你想使用自定义分类器,请看这里:http://www.nltk.org/api/nltk.classify.html,Ctrl+F "svm",NTLK 为 scikit-learn 算法提供了一个包装器,称为 SklearnClassifier。然后看看这里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 分类器只接受数字特征,所以你需要以某种方式转换你的。

    【讨论】:

    • 谢谢,hellpanderrr。我尝试了其他标记器(CRF、TBL、HMM、...)并想使用 SVM。我使用了这个包装器,但仍然不能做任何 POS 标记。
    • 与Python中的其他标注器,只需要训练数据进行训练,就可以使用tag方法和evaluate方法。但是当我使用 scikit-learn 或 SklearnClassifier 的 SVM 时,我找不到任何训练或标记的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多