2013-01-10 73 views
13

Stanford Natural Language Processing Toolkit的核心組件在stanford-corenlp-1.3.4.jar文件中有Java代碼,並且在單獨的stanford-corenlp-1.3.4-models.jar文件中包含(很大)模型文件。 Maven不會自動下載模型文件,但前提是您將<classifier>models</classifier>行添加到.pom。這是一個.pom代碼片段,它提取代碼和模型。Maven依賴關係:get不下載Stanford NLP模型文件

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

我想弄清楚如何從命令行做同樣的事情。看起來像Maven dependency:get插件任務是這樣做的方式。下面的命令行似乎是正確的

mvn dependency:get \ 
    -DgroupId=edu.stanford.nlp \ 
    -DartifactId=stanford-corenlp \ 
    -Dversion=LATEST \ 
    -Dclassifier=models \ 
    -DrepoUrl=repo1.maven.org 

但是,它只下載代碼Jar文件,但不是模型Jar文件。

任何想法爲什麼這種情況?我不確定這是否只是斯坦福大學自然語言處理包的一個問題,或者的classifier選項的更一般問題。

+0

嗨比爾,我們不是maven專家,可能做錯了什麼,但是,對我而言,這並不明顯,而其他人則需要告訴我們什麼。 –

+2

任何使用斯卡拉與SBT的人都可以使用:val stanfordNlp =「edu.stanford.nlp」%「stanford-corenlp」%「1.3.4」artifacts(artifact(「stanford-corenlp」,「models」),Artifact 「stanford-corenlp」))' – tysonjh

回答

4

首先感謝您的問題。它回答了我有關如何包含數據和lib的問題。我將分享什麼我使用Maven做什麼,但我不知道這滿足你的問題:

<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>1.3.4</version> 
    <classifier>models</classifier> 
</dependency> 
<dependency> 
     <groupId>edu.stanford.nlp</groupId> 
     <artifactId>stanford-corenlp</artifactId> 
     <version>1.3.4</version> 
    </dependency> 
    <dependency> 
     <groupId>edu.stanford.nlp</groupId> 
     <artifactId>stanford-parser</artifactId> 
     <version>2.0.4</version> 
    </dependency> 

此外,確保我的罐子包括庫使用:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>org.example.nlpservice.NLP</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
     <executions> 
     <execution> 
      <id>make-assembly</id> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- bind to the packaging phase --> 
      <goals> 
      <goal>single</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
    </build> 

最後,你有沒有試過mvn deploymvn install呢?你可以從你本地的mvn cache/repo複製到一個/ lib目錄中。

+0

是否有「來源」包? 我試過來源,但沒有運氣。 –