我正在努力在系统上集成斯坦福NLP 3.7.0,我们在Linux系统上没有问题,但是Windows Development Machine正面临问题。我在Class Path中添加了Stanford-Parser及其Javadoc,模型是Maven的一部分。这是我们启动项目时遇到的错误:
错误日志:
java.lang.IllegalArgumentException: Unable to validate JAR entry with name edu/stanford/nlp/models/kbp/tokensregex/per:countries_of_residence.rules
at org.apache.catalina.loader.WebappClassLoaderBase.findResourceInternal(WebappClassLoaderBase.java:3359)
at org.apache.catalina.loader.WebappClassLoaderBase.findResource(WebappClassLoaderBase.java:1424)
at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1652)
at edu.stanford.nlp.io.IOUtils.findStreamInClasspathOrFileSystem(IOUtils.java:407)
at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:461)
at edu.stanford.nlp.io.IOUtils.readStreamFromString(IOUtils.java:390)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromSerializedFile(LexicalizedParser.java:601)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromFile(LexicalizedParser.java:405)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(LexicalizedParser.java:187)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(LexicalizedParser.java:166)
at com.tooltank.spring.service.GroupCanvasServiceImpl.<init>(GroupCanvasServiceImpl.java:56)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
Caused by: java.io.IOException: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:428)
at java.io.File.getCanonicalPath(File.java:618)
at org.apache.catalina.loader.WebappClassLoaderBase.findResourceInternal(WebappClassLoaderBase.java:3352)
pom.xml:
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-parser</artifactId>
<version>3.7.0</version>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.7.0</version>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.7.0</version>
<classifier>models</classifier>
</dependency>
有什么想法吗?谢谢。
解决方案
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp</artifactId>
<version>3.7.0</version>
<classifier>models</classifier>
<exclusions>
<exclusion>
<groupId>edu.stanford.nlp</groupId>
<artifactId>stanford-corenlp-3.7.0-models-kbp</artifactId>
</exclusion>
</exclusions>
</dependency>
有一个已知的问题,某些KBP关系提取器资源的文件名在Windows上不起作用。它们是用":"在窗户上不良的"制成的。我们将在某个时候将它们更改为更友好的窗户。如果您不使用Windows上的KBP注释,我认为此问题会消失,您可能还需要排除Stanford-Corenlp-3.7.0-Models-kbp.jar。