首页 > 解决方案 > 为什么分类器给我输入而没有任何改变

问题描述

我正在尝试构建一个分割阿拉伯语句子的分类器(在 Buckwalter 中音译)。我有从文件中读取的属性,并且我正在应用 +/- 10 个上下文窗口(即,对于每个单词,我检查之前的 10 个单词和之后的 10 个单词)。分类类别是:

BS 表示句子的第一个单词,ES 表示句子的最后一个单词,IS 表示中间的单词,S 表示只包含一个单词的句子。

FastVector fClasse = new FastVector();
fClasse.addElement( "I-S" );
fClasse.addElement( "B-S" );
fClasse.addElement( "E-S" );
fClasse.addElement( "S" );

if (str.length == 1) {
    element.setValue( attClasse , "S" );
} else {
    if (i == 0) {
        element.setValue( attClasse , "B-S" );
    } else {
        if (i == str.length - 1) {
            element.setValue( attClasse , "E-S" );
        } else {
            element.setValue( attClasse , "I-S" );
        }
    }
}

首先,我使用了 10 个属性来检查每个单词的先前类。所以结果几乎是 100%,尤其是对于 BS 和 S 类。但即使我使用非分段文件测试模型。模型结果也是一样的。从字面上看,模型给了我输入段落,没有任何变化。当我删除那些属性(检查前 10 个类)时,评估结果大幅下降(BS 33%)。

下面是我的代码:

https://drive.google.com/open?id=1-NiA_C-2YRkG19J-mZYg4BEdNnnVWbyG

它给了我一个 arff 文件,我使用 weka GUI 来生成模型。我正在使用 PART 分类器。

任何想法我做错了什么?非常感谢任何帮助。

标签: javanlpwekapredictionarff

解决方案


推荐阅读