Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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
Java 在Android中使用OpenNLP的POSTaggerMe时出现NullPointerException_Java_Android_Opennlp - Fatal编程技术网

Java 在Android中使用OpenNLP的POSTaggerMe时出现NullPointerException

Java 在Android中使用OpenNLP的POSTaggerMe时出现NullPointerException,java,android,opennlp,Java,Android,Opennlp,我试图在Android应用程序中使用ApacheOpenNLP。我遇到了一个NullPointerException。我正在做的步骤如下 训练一个定制的模型 private POSModel getCustomPosModel() { POSModel model = null; InputStream dataIn = null; ObjectStream<String> lineStream; ObjectStr

我试图在Android应用程序中使用ApacheOpenNLP。我遇到了一个
NullPointerException
。我正在做的步骤如下

  • 训练一个定制的模型

     private POSModel getCustomPosModel() {
    
            POSModel model = null;
            InputStream dataIn = null;
            ObjectStream<String> lineStream;
            ObjectStream<POSSample> sampleStream = null;
    
            try {
                dataIn =aManager.open("customPOS.train");
                lineStream = new PlainTextByLineStream(dataIn, "UTF-8");
                sampleStream = new WordTagSampleStream(lineStream);
                model = POSTaggerME.train("en", sampleStream, opennlp.tools.util.model.ModelType.MAXENT, null, null, 5, 5);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
              return model;
        }
    
    完整的堆栈跟踪如下所示

        public String[] tagTokensForInfo(String[] tokens){
    
        POSModel model =null;
        String[] posTags = null;
        model = getCustomPosModel();
        POSTaggerME posTagger = null;
    
        posTagger = new POSTaggerME(model);
        posTags = posTagger.tag(tokens);
        System.out.println("The tags and tokens are shown below");
        for(int i=0;i<posTags.length;i++){
            System.out.println("Token : "+tokens[i]+" ,Tags : "+posTags[i]);
        }
        return posTags;
    }
    
    04-01 06:13:24.015: E/AndroidRuntime(906): FATAL EXCEPTION: main
    04-01 06:13:24.015: E/AndroidRuntime(906): Process: net.viralpatel.android.speechtotextdemo, PID: 906
    04-01 06:13:24.015: E/AndroidRuntime(906): java.lang.NullPointerException
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.util.BeamSearch.bestSequences(BeamSearch.java:118)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.util.BeamSearch.bestSequence(BeamSearch.java:198)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.postag.POSTaggerME.tag(POSTaggerME.java:227)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.postag.POSTaggerME.tag(POSTaggerME.java:223)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.intuit.opennlp.CustomerTagger.tagTokensForInvoiceInfo(CustomerTagger.java:32)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.intuit.opennlp.ExtractInvoiceInfo.extract(ExtractInvoiceInfo.java:28)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at net.viralpatel.android.speechtotextdemo.MainActivity$1.onClick(MainActivity.java:46)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.view.View.performClick(View.java:4424)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.view.View$PerformClick.run(View.java:18383)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.os.Handler.handleCallback(Handler.java:733)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.os.Handler.dispatchMessage(Handler.java:95)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.os.Looper.loop(Looper.java:137)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.app.ActivityThread.main(ActivityThread.java:4998)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at java.lang.reflect.Method.invokeNative(Native Method)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at java.lang.reflect.Method.invoke(Method.java:515)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at dalvik.system.NativeStart.main(Native Method)
    
    有人遇到过这个错误吗,或者你能帮我解决这个问题吗


    提前感谢

    检查MainActivity.java class.hi sid的第46行,它是程序的入口点,它调用extract()方法,而extract()方法又调用我前面提到的tagTokensForInfo()方法,请您详细说明一下您的建议。Thanks@yash从堆栈跟踪中,我看到
    extract()
    方法调用了
    tagTokensForInvoiceInfo()
    ,而不是您定义的ad
    tagTokensForInfo()
    。据我所知,没有提到你在堆栈跟踪中发布的方法,你确定程序流吗?@5agado,是真的,两种方法都是一样的,在这里键入时,我犯了一个错误,实际上是tagTokensForInvoiceInfo()方法本身。没有歧义。@yash好吧,那么根据官方文档,您应该执行类似于
    model=POSTaggerME.train(“en”,sampleStream,TrainingParameters.defaultParams(),null,null)
    。在您的例子中,问题恰恰与模型有关(它仍然为空)。此外,我认为您正在使用该方法的不推荐版本。
    04-01 06:13:24.015: E/AndroidRuntime(906): FATAL EXCEPTION: main
    04-01 06:13:24.015: E/AndroidRuntime(906): Process: net.viralpatel.android.speechtotextdemo, PID: 906
    04-01 06:13:24.015: E/AndroidRuntime(906): java.lang.NullPointerException
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.util.BeamSearch.bestSequences(BeamSearch.java:118)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.util.BeamSearch.bestSequence(BeamSearch.java:198)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.postag.POSTaggerME.tag(POSTaggerME.java:227)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at opennlp.tools.postag.POSTaggerME.tag(POSTaggerME.java:223)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.intuit.opennlp.CustomerTagger.tagTokensForInvoiceInfo(CustomerTagger.java:32)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.intuit.opennlp.ExtractInvoiceInfo.extract(ExtractInvoiceInfo.java:28)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at net.viralpatel.android.speechtotextdemo.MainActivity$1.onClick(MainActivity.java:46)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.view.View.performClick(View.java:4424)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.view.View$PerformClick.run(View.java:18383)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.os.Handler.handleCallback(Handler.java:733)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.os.Handler.dispatchMessage(Handler.java:95)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.os.Looper.loop(Looper.java:137)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at android.app.ActivityThread.main(ActivityThread.java:4998)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at java.lang.reflect.Method.invokeNative(Native Method)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at java.lang.reflect.Method.invoke(Method.java:515)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
    04-01 06:13:24.015: E/AndroidRuntime(906):  at dalvik.system.NativeStart.main(Native Method)