我目前正在尝试使用Stanford CoreNLP管道来运行情绪分析。我需要它来遍历单个文本文件的文件夹(其中包含电影评论),以便建立每个评论的情绪。我试图创建一个批处理脚本,以迭代包含评论的3个不同文件夹。通过shell runner程序运行脚本时,我收到以下错误:
f此时出乎意料
脚本如下:
dir=C:\stanford-corenlp-full-2016-10-31
for f in "$dir\train\neg" &&
for f in "$dir\train\pos" &&
for f in "$dir\train\unsup" ; do
echo $f >> filelist.txt
java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath filelist.txt -devPath dev.txt -train -model model.ser.gz
done
这是我写过的第一个bash脚本,所以我假设我的语法在某处可能不正确?
我也在使用Windows 10.
任何建议都会很棒,
非常感谢 嘿,伙计们,你的建议非常有用。尝试让我的生活更轻松我试图将我的脚本转换为批处理脚本,以便它不会在Windows上运行任何问题。我的新脚本如下所示: @echo off
dir=C:\stanford-corenlp-full-2016-10-31
for %%f in "%dir\train\neg" & "%dir\train\pos" & "%dir\train\unsup" do
ECHO %%f >> filelist.txt
java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath filelist.txt -devPath dev.txt -train -model model.ser.gz
done
pause
导致以下错误: "%DIR \列车\ POS"此时出人意料
谁知道我做错了什么?我假设它是某种语法问题我无法看到它。答案 0 :(得分:0)
你不需要多个,你可以把所有项目放在第一个之后:
for f in "$dir\train\neg" "$dir\train\pos" "$dir\train\unsup" ; do
甚至:
for f in "$dir\train\"{neg,pos,unsup}
do
....
done
另外,我认为你需要更换所有单斜杠" \"有两个" \\"。但由于我没有Windows,所以无法肯定地说。
所以它可能是
dir=C:\\stanford-corenlp-full-2016-10-31
for f in "$dir\\train\\"{neg,pos,unsup}
do
...
done
目前还不清楚是否:
或者:
每次只在filelist.txt中使用一个目录调用Java 3次的示例:
for f in "$dir\\train\\"{neg,pos,unsup}
do
#note this ">" will over-write the file each time
echo "$f" > filelist.txt
java .... filelist.txt
done
创建一个包含3个目录的列表文件,然后调用Java一次:
# note this ">" will overwrite the file with nothing
# so it will then be empty
# so that it doesn't have what's left over from last time
# that you ran the script
> filelist.txt
for f in "$dir\\train\\"{neg,pos,unsup}
do
#note this ">>" will add a line to the file
echo "$f" >> filelist.txt
done
# call Java after you've finished creating the file
java ..... filelist.txt
你需要
但是,您甚至不需要循环(假设您在该环境中可以使用' ls'命令)
dir=C:\\stanford-corenlp-full-2016-10-31
ls -1 -d "$dir\\train\\"{neg,pos,unsup} > filelist.txt
java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath filelist.txt -devPath dev.txt -train -model model.ser.gz
请注意 {neg,pos,unsup} 语法将在bash中工作,但不能在Windows bat文件中工作