Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NLTK最大熵分类器原始分数_Python_Machine Learning_Nltk_Classification - Fatal编程技术网

Python NLTK最大熵分类器原始分数

Python NLTK最大熵分类器原始分数,python,machine-learning,nltk,classification,Python,Machine Learning,Nltk,Classification,这是我关于stackoverflow的第一个问题,请耐心听我说 我正在做一些语料库建设,特别是试图组成一个高棉语/英语平行句语料库。我正在使用一些手动配对的句子来训练一个最大熵分类器,它将从我的平行文档语料库中选择更多的平行句子对 我的问题是,用于训练分类器的人工标注训练数据很少。因此,它不是一个很好的分类器。所以,我的老师建议我看一下MaxEnt分类器的原始分数,看看是否有一些分数阈值,超过这个阈值,人类的判断会发现被归类为翻译的句子对实际上是彼此的翻译 然而,我使用的是NLTK的MaxEnt

这是我关于stackoverflow的第一个问题,请耐心听我说

我正在做一些语料库建设,特别是试图组成一个高棉语/英语平行句语料库。我正在使用一些手动配对的句子来训练一个最大熵分类器,它将从我的平行文档语料库中选择更多的平行句子对

我的问题是,用于训练分类器的人工标注训练数据很少。因此,它不是一个很好的分类器。所以,我的老师建议我看一下MaxEnt分类器的原始分数,看看是否有一些分数阈值,超过这个阈值,人类的判断会发现被归类为翻译的句子对实际上是彼此的翻译

然而,我使用的是NLTK的MaxEnt分类器,我找不到一个函数,该函数将为我提供分类器用于确定是或否的原始分数

NLTK的MaxEnt分类器是否具有此功能,或者是否无法找到分类器的原始分数?是否有一个更好的MaxEnt分类器包,可以为您提供我应该使用的原始分数

提前感谢您的帮助和建议

给出概率分数

如果您正在寻找替代的MaxEnt分类器,那么scikit learn有两个实现,这两个实现都可以封装在NLTK中。scikit learn称之为MaxEnt logistic回归,这是NLP社区之外更常见的术语

我可能有偏见,因为我是一名scikit学习贡献者,我编写了SklearnClassifier,但是SciPy人现在也推荐scikit学习,而不是他们自己不推荐的SciPy.maxentropy包,MaxentClassifier就是基于这个包的。

给出了概率分数

如果您正在寻找替代的MaxEnt分类器,那么scikit learn有两个实现,这两个实现都可以封装在NLTK中。scikit learn称之为MaxEnt logistic回归,这是NLP社区之外更常见的术语


我可能有偏见,因为我是scikit learn的撰稿人,我写了SklearnClassifier,但SciPy的人现在也推荐scikit learn,而不是他们自己不推荐的SciPy.maxentropy包,MaxentClassifier就是基于这个包的。

你可能有兴趣阅读我最近的博客:

这是关于理解nltk.ne_chunk函数是如何工作的。但以下是我编写的一些代码,您可以快速复制和粘贴这些代码,您可能会发现这些代码很有用:

import nltk

# Loads the serialized NEChunkParser object
chunker = nltk.data.load('chunkers/maxent_ne_chunker/english_ace_multiclass.pickle')

# The MaxEnt classifier
maxEnt = chunker._tagger.classifier()

def ne_report(sentence, report_all=False):

    # Convert the sentence into a tokens with their POS tags
    tokens = nltk.word_tokenize(sentence)
    tokens = nltk.pos_tag(tokens)

    tags = []
    for i in range(0, len(tokens)):
        featureset = chunker._tagger.feature_detector(tokens, i, tags)
        tag = chunker._tagger.choose_tag(tokens, i, tags)
        if tag != 'O' or report_all:
            print '\nExplanation on the why the word \'' + tokens[i][0] + '\' was tagged:'
            featureset = chunker._tagger.feature_detector(tokens, i, tags)
            maxEnt.explain(featureset)
        tags.append(tag) 
report_all标志将允许您查看如何拾取每个单词,但您可能只对如何拾取命名实体感兴趣。默认情况下,它设置为False

只要说出你喜欢的任何一句话,比如“我爱苹果产品”。它还将报告MaxEnt分类器为何选择该命名实体的解释。它还将报告可能被选中的其他标签的一些概率


NLTK的开发人员提供了一个.explain方法,这正是该函数所使用的。

您可能有兴趣阅读我最近的一篇博客:

这是关于理解nltk.ne_chunk函数是如何工作的。但以下是我编写的一些代码,您可以快速复制和粘贴这些代码,您可能会发现这些代码很有用:

import nltk

# Loads the serialized NEChunkParser object
chunker = nltk.data.load('chunkers/maxent_ne_chunker/english_ace_multiclass.pickle')

# The MaxEnt classifier
maxEnt = chunker._tagger.classifier()

def ne_report(sentence, report_all=False):

    # Convert the sentence into a tokens with their POS tags
    tokens = nltk.word_tokenize(sentence)
    tokens = nltk.pos_tag(tokens)

    tags = []
    for i in range(0, len(tokens)):
        featureset = chunker._tagger.feature_detector(tokens, i, tags)
        tag = chunker._tagger.choose_tag(tokens, i, tags)
        if tag != 'O' or report_all:
            print '\nExplanation on the why the word \'' + tokens[i][0] + '\' was tagged:'
            featureset = chunker._tagger.feature_detector(tokens, i, tags)
            maxEnt.explain(featureset)
        tags.append(tag) 
report_all标志将允许您查看如何拾取每个单词,但您可能只对如何拾取命名实体感兴趣。默认情况下,它设置为False

只要说出你喜欢的任何一句话,比如“我爱苹果产品”。它还将报告MaxEnt分类器为何选择该命名实体的解释。它还将报告可能被选中的其他标签的一些概率

NLTK的开发人员提供了一个.explain方法,这正是该函数所使用的