Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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
Classification 训练和测试数据结构:Mallet分类器_Classification_Java_Mallet - Fatal编程技术网

Classification 训练和测试数据结构:Mallet分类器

Classification 训练和测试数据结构:Mallet分类器,classification,java,mallet,Classification,Java,Mallet,我正在尝试使用Mallet-naivebayes分类器API。我对训练集和测试集建模如下 培训:[ID][标签][数据] 测试:[ID][]数据] 以下是我使用的代码: public static void main(String[] args) throws FileNotFoundException { classify(); System.out.println("Finished"); } public static vo

我正在尝试使用Mallet-naivebayes分类器API。我对训练集和测试集建模如下

  • 培训:[ID][标签][数据]
  • 测试:[ID][]数据]
以下是我使用的代码:

    public static void main(String[] args) throws FileNotFoundException {
        classify();
        System.out.println("Finished");
    }



    public static void classify() throws FileNotFoundException{

        //prepare instance transformation pipeline
        ArrayList<Pipe> pipes = new ArrayList<Pipe>();
        pipes.add(new Target2Label());
        pipes.add(new CharSequence2TokenSequence());
        pipes.add(new TokenSequence2FeatureSequence());
        pipes.add(new FeatureSequence2FeatureVector());
        SerialPipes pipe = new SerialPipes(pipes);

        //prepare training instances
        InstanceList trainingInstanceList = new InstanceList(pipe);
        trainingInstanceList.addThruPipe(new CsvIterator(new FileReader("resources/training.csv"),  "(\\w+)\\s+(\\w+)\\s+(.*)",  3, 2, 1));  // (data, label, name) field indices ));

        //prepare test instances
        InstanceList testingInstanceList = new InstanceList(pipe);        
        testingInstanceList.addThruPipe(new CsvIterator(new FileReader("resources/testing.csv"), "(\\w+)\\s+(\\w+)\\s+(.*)",  3, 2, 1));

        ClassifierTrainer trainer = new NaiveBayesTrainer();
        Classifier classifier = trainer.train(trainingInstanceList);


        for(Instance testInstance :testingInstanceList){
        Labeling labeling = (Labeling) classifier.classify(testInstance);
        Label l = labeling.getBestLabel();
        System.out.println(testInstance + " =  " +  l);
        }

        System.out.println("Accuracy: " + classifier.getAccuracy(testingInstanceList));

   }
}
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
分类();
系统输出打印项次(“完成”);
}
public static void classify()引发FileNotFoundException{
//准备实例转换管道
ArrayList管道=新的ArrayList();
添加(新的Target2Label());
添加(新的CharSequence2TokenSequence());
添加(新的TokenSequence2FeatureSequence());
添加(新FeatureSequence2FeatureVector());
SerialPipes管道=新的SerialPipes(管道);
//准备培训实例
InstanceList trainingInstanceList=新InstanceList(管道);
trainingInstanceList.addThruPipe(新的CsvIterator(新的文件读取器(“resources/training.csv”),“(\\w+\\s+(\\w+\\s+)(*”,3,2,1));/(数据、标签、名称)字段索引);
//准备测试实例
InstanceList testingInstanceList=新InstanceList(管道);
testingInstanceList.addThruPipe(新的CsvIterator(新的文件读取器(“resources/testing.csv”),“(\\w+\\s+(\\w+\\s+)(*”,3,2,1));
ClassifierTrainer trainer=新的trainer();
分类器=培训师.train(TrainingStanceList);
例如(例如testInstance:testingInstanceList){
标签=(标签)分类器。分类(测试);
Label l=labeling.getBestLabel();
系统输出打印LN(测试状态+“=”+l);
}
System.out.println(“精度:+classifier.getaccurity(testingInstanceList));
}
}

不知怎的,它给了我一个错误,因为行“x”与正则表达式不匹配。我理解导入数据时会出现问题。但是,当使用mallet时,表示训练和测试集的实际格式是什么

区分“测试”和“生产”很重要。测试意味着您实际上知道标签,您只想看看分类器是否能够正确地猜测它。如果没有标签并且希望预测标签,可以直接从文本数据进行分类。以下是Mallet网站上的文档:

要将保存的分类器应用于新的未标记数据,请使用Csv2Classify(对于每行数据一个实例)或Text2Classify(对于每文件数据一个实例)

使用上述命令,分类将写入标准输出。请注意,这些命令的输入是原始文本文件,而不是导入的Mallet文件。此命令设计用于标签不可用的“生产”模式

bin/mallet classify-file --input data --output - --classifier classifier
bin/mallet classify-dir --input datadir --output - --classifier classifier