我很累:
for dir in /home/matthias/Workbench/SUTD/nytimes_corpus/NYTimesCorpus/2007/02/*/
for f in *.xml ; do
echo $f | grep -q '_output\.xml$' && continue # skip output files
g="$(basename $f .xml)_output.xml"
java -mx600m -cp /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/stanford-ner-3.5.1.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz -textFile $f -outputFormat inlineXML > $g
done
done
这是基于此问题的答案,但没有用。
我有一个文件夹结构,这样在目录中NYTimesCorpus
有一个目录2007
,在该目录中01
还有02
,,03
依此类推...
然后内01
再有01
,02
,03
,...
在这些终端目录的每个目录中,有许多我要对其应用脚本的.xml文件:
for f in *.xml ; do
echo $f | grep -q '_output\.xml$' && continue # skip output files
g="$(basename $f .xml)_output.xml"
java -mx600m -cp /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/stanford-ner-3.5.1.jar edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz -textFile $f -outputFormat inlineXML > $g
done
但是目录太多了,在每个目录中运行它是一种罕见的折磨。除了2007
我还有2006
and之外2005
,因此理想情况下,我想做的是运行一次,让程序自行导航该结构。
到目前为止,我的尝试还没有成功,也许你们当中的一个会知道如何实现这一目标?
谢谢您的考虑。
textFile=./scrypt.sh
outputFormat=inlineXML
Loading classifier from /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz ... done [2.2 sec].
CRFClassifier tagged 71 words in 5 documents at 959.46 words per second.
CRFClassifier invoked on Sun Apr 12 19:33:34 HKT 2015 with arguments:
-loadClassifier /home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz -textFile ./scrypt.sh -outputFormat inlineXML
loadClassifier=/home/matthias/Workbench/SUTD/nytimes_corpus/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz
find
是一个很好的解决方案。听起来所有xml文件都位于同一目录深度,所以请尝试以下操作:
dir=/home/matthias/Workbench/SUTD/nytimes_corpus
for f in $dir/NYTimesCorpus/*/*/*/*.xml; do
[[ $f == *_output.xml ]] && continue # skip output files
g="${f%.xml}_output.xml"
java -mx600m \
-cp $dir/NER/stanford-ner-2015-01-30/stanford-ner-3.5.1.jar \
edu.stanford.nlp.ie.crf.CRFClassifier \
-loadClassifier $dir/NER/stanford-ner-2015-01-30/classifiers/english.all.3class.distsim.crf.ser.gz \
-textFile "$f" \
-outputFormat inlineXML > "$g"
done
全局模式$dir/NYTimesCorpus/*/*/*/*.xml
指定所需的xml文件位于NYTimesCorpus的正下方3个级别。那是错误的深度,然后更改*/
图案中的数量。
如果xml文件可以以不同的深度出现,请使用find
或以bash的形式使用:
shopt -s globstar nullglob
for f in $dir/NYTimesCorpus/**/*.xml; do
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句