通过命令行参数执行java程序

时间:2013-12-04 12:24:10

标签: java stanford-nlp

我正在使用stanford代码nlp包来获得情绪结果。

在执行中,我需要将文本文件名作为输入。

java -cp stanford-corenlp-3.3.0.jar;stanford-corenlp-3.3.0-models.jar;xom.jar;joda-time.jar -Xmx600m edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,parse -file input.txt

input.txt包含一些文字。

有人可以在这告诉我如何直接传递字符串文本而不是文件名input.txt

2 个答案:

答案 0 :(得分:0)

您需要以从参数读取的方式修改主程序。

例如:

public static void main(String args[]){
    // here args[] will contain you input strings
//check null for args
    //args[0] --> -annotators 
    //args[1] --> values of -annotators 
    //args[2] --> /file or -inputs 
    //args[3] to args[length] --> you input text
for(int i=3;i<args.length;i++){
    System.out.println(args[i]);
}

然后您的命令行显示为

  

java -cp   斯坦福大学corenlp-3.3.0.jar;斯坦福-corenlp-3.3.0-models.jar; xom.jar;乔达-time.jar   -Xmx600m edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,parse -inputs这是我的输入文本

注意:您需要提供验证

答案 1 :(得分:0)

警告:我没试过这个......

如果您运行的StanfordCoreNLP没有-file-filelist个参数,它将作为“shell”运行,从stdin读取输入,直到它看到q。所以你可以这样做:

$ ( echo "text to be parsed" ; echo q ) | \
  java -cp ... edu.stanford.nlp.pipeline.StanfordCoreNLP ...

但IMO如果您将文本发送到文件然后使用应用程序,它就更清晰了; e.g。

$ echo "text to be parsed" > /tmp/input
$ java -cp ... edu.stanford.nlp.pipeline.StanfordCoreNLP ... -file /tmp/input