我正在使用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
?
答案 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