2017-02-23 3 views
1

스탠포드 NLP 3.7.0을 우리 시스템에 통합하기 위해 노력하고 있으며 Linux 시스템에서는 아무런 문제가 없습니다. 그러나 Windows 개발 컴퓨터는 문제. classpath에 Stanford-parser와 Javadoc을 추가했으며 모델은 maven의 일부입니다.자바, 스탠포드 NLP : Windows에서만 countries_of_residence.rules에 대한 유효성을 검사 할 수 없습니다.

오류 로그 :

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> 

답변

1

일부 KBP 관계 추출기 자원에 대한 파일 이름이 윈도우에서 작동하지 않는 알려진 문제가 있습니다. 그들은 ":"으로 만들어졌으며 Windows에서는 좋지 않습니다. 우리는 어느 시점에서 좀 더 Windows 친화적 인 것으로 변경할 것입니다. Windows에서 KBP 어노 테이터를 사용하지 않으면이 문제가 사라질 것이라고 생각합니다. 또한 stanford-corenlp-3.7.0-models-kbp.jar을 제외해야 할 수도 있습니다.

+0

이 덕분에 많은 도움이되었습니다. :-) –

+0

안녕하세요, NLP를 사용할 때 GC 오버 헤드가 발생합니다. 동일한 질문을 게시했습니다. 확인할 수 있습니까 : http://stackoverflow.com/questions/42690737/standford-nlp-gc-overhead-limit-excedded-when-using-parser-on-tomcat. 고맙습니다. –

+0

@StanfordNLPHelp 언급 한 솔루션이 나에게 효과적이지 않았습니다. 모델이라는 단일 항아리를 다운로드하고이 kbp 패키지가 그 안에 있습니다. 어떤 제안? – OutOfMind