【问题标题】:Stanford NLP RuntimeIOException斯坦福 NLP RuntimeIOException
【发布时间】:2016-11-26 15:48:45
【问题描述】:

我正在尝试使用 Java 中的斯坦福 NLP 进行一些情绪分析。我正在使用 Maven,但出现以下错误:

java.lang.Exception: edu.stanford.nlp.io.RuntimeIOException: java.io.IOException: Unable to resolve "/home/amos/CPP/2016/Hadoop/englishPCFG.ser.gz" as either class path, filename or URL
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
Caused by: edu.stanford.nlp.io.RuntimeIOException: java.io.IOException: Unable to resolve "/home/amos/CPP/2016/Hadoop/englishPCFG.ser.gz" as either class path, filename or URL
    at edu.stanford.nlp.parser.common.ParserGrammar.loadModel(ParserGrammar.java:182)
    at edu.stanford.nlp.pipeline.ParserAnnotator.loadModel(ParserAnnotator.java:187)
    at edu.stanford.nlp.pipeline.ParserAnnotator.<init>(ParserAnnotator.java:107)
    at edu.stanford.nlp.pipeline.AnnotatorImplementations.parse(AnnotatorImplementations.java:132)
    at edu.stanford.nlp.pipeline.AnnotatorFactories$10.create(AnnotatorFactories.java:420)
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:85)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:289)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:126)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:122)
    at nl.uva.cpp.WordCountMapper.create_pipeline(WordCountMapper.java:68)
    at nl.uva.cpp.WordCountMapper.map(WordCountMapper.java:73)
    at nl.uva.cpp.WordCountMapper.map(WordCountMapper.java:22)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Unable to resolve "/home/amos/CPP/2016/Hadoop/englishPCFG.ser.gz" as either class path, filename or URL
    at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:448)
    at edu.stanford.nlp.io.IOUtils.readObjectFromURLOrClasspathOrFileSystem(IOUtils.java:310)
    at edu.stanford.nlp.parser.common.ParserGrammar.loadModel(ParserGrammar.java:179)
    ... 20 more

我不知道该怎么做。我已经从here 下载了 Stanford CoreNLP,但我不确定应该在哪里提取它。

我也加了

<dependency> 
    <groupId>edu.stanford.nlp</groupId>
    <artifactId>stanford-corenlp</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
    <groupId>edu.stanford.nlp</groupId>
    <artifactId>stanford-corenlp</artifactId>
    <version>3.5.0</version>
    <classifier>models</classifier>
</dependency>

到我的pom.xml 文件,它在运行mvn package 时开始下载,但这似乎没有帮助。

【问题讨论】:

  • 将 jar 解压到您的项目文件夹中。类似 projectPath/lib

标签: java maven nlp stanford-nlp


【解决方案1】:

当您使用hadoop时,您可以通过Maven Shade Plugin来使用您项目的java fat jar

在构建项目(mvn 包)后,它将创建一个包含所有依赖项的单个 jar。您需要将您的 hadoop 驱动程序类作为 mainClass 像这里一样

 <transformer> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>your-driver-class</mainClass>
</transformer>

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 2015-04-30
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多