前言
在视频字幕、图像字幕任务中,必然用到的一个依赖包是coco-caption。该依赖主要作用是用来评价模型所生成的描述的准确性,其中spice.py文件中,执行以下命令时会报错:
代码语言:javascript复制java -jar -Xmx8G spice-1.0.jar coco-caption/pycocoevalcap/spice/tmp/tmp1wdsxtug -out coco-caption/pycocoevalcap/spice/tmp/tmpkj4h9o4j -subset -silent
异常
Java异常
代码语言:javascript复制Exception in thread "main" java.lang.NoClassDefFoundError: edu/stanford/nlp/semgraph/semgrex/SemgrexPattern
at edu.anu.spice.SpiceParser.<clinit>(SpiceParser.java:64)
at edu.anu.spice.SpiceScorer.scoreBatch(SpiceScorer.java:70)
at edu.anu.spice.SpiceScorer.main(SpiceScorer.java:60)
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.semgraph.semgrex.SemgrexPattern
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
spice 错误
代码语言:javascript复制raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/ubuntu/jdk1.8.0_333/bin/java', '-jar', '-Xmx8G', 'spice-1.0.jar', '/home/chenzw/code/SMAN/coco-caption/pycocoevalcap/spice/tmp/tmp98_yx34s', '-cache', '/home/chenzw/code/SMAN/coco-caption/pycocoevalcap/spice/cache/1658759575.7687752', '-out', '/home/chenzw/code/SMAN/coco-caption/pycocoevalcap/spice/tmp/tmpicxj0dmv', '-subset', '-silent']' returned non-zero exit status 1.
Terminating BlobFetcher
解决方法
执行coco-caption项目目录下的get_stanford_models.sh
文件即可。
bash get_stanford_models.sh
该文件的具体过程其实就是 下载我们所缺的那个包。其内容为:
代码语言:javascript复制#!/usr/bin/env sh
# This script downloads the Stanford CoreNLP models.
CORENLP=stanford-corenlp-full-2015-12-09
SPICELIB=pycocoevalcap/spice/lib
JAR=stanford-corenlp-3.6.0
DIR="$( cd "$(dirname "$0")" ; pwd -P )"
cd $DIR
if [ -f $SPICELIB/$JAR.jar ]; then
echo "Found Stanford CoreNLP."
else
echo "Downloading..."
wget http://nlp.stanford.edu/software/$CORENLP.zip
echo "Unzipping..."
unzip $CORENLP.zip -d $SPICELIB/
mv $SPICELIB/$CORENLP/$JAR.jar $SPICELIB/
mv $SPICELIB/$CORENLP/$JAR-models.jar $SPICELIB/
rm -f $CORENLP.zip
rm -rf $SPICELIB/$CORENLP/
echo "Done."
fi
完美解决。 完结 撒花!