首页 > 解决方案 > 使用斯坦福阿拉伯语分割器的麻烦

问题描述

我在 Windows 10 中运行斯坦福阿拉伯语分段器时遇到问题,因为每当我尝试处理自述文件中提到的命令时,它都无法加载分段器数据/arabic-segmenter-atb+bn+arztrain.ser.gz

我对 Java 不是很熟悉,所以我什至不知道我是否正确理解了类路径问题。猜猜,我没有。此外,我发现自述文件说明有些混乱。

Loaded ArabicTokenizer with options: null
loadClassifier=data/arabic-segmenter-atb+bn+arztrain.ser.gz
textFile=C:\Users\vmumm\OneDrive\Ulmo\Nizar\OLD\complete_NQ_new_April2019.txt
featureFactory=edu.stanford.nlp.international.arabic.process.StartAndEndArabicSegmenterFeatureFactory
Exception in thread "main" edu.stanford.nlp.io.RuntimeIOException: Failed to load segmenter data/arabic-segmenter-atb+bn+arztrain.ser.gz
        at edu.stanford.nlp.international.arabic.process.ArabicSegmenter.loadSegmenter(ArabicSegmenter.java:466)
        at edu.stanford.nlp.international.arabic.process.ArabicSegmenter.getSegmenter(ArabicSegmenter.java:629)
        at edu.stanford.nlp.international.arabic.process.ArabicSegmenter.main(ArabicSegmenter.java:532)
Caused by: java.io.IOException: Unable to open "data/arabic-segmenter-atb+bn+arztrain.ser.gz" as class path, filename or URL
        at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:480)
        at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1503)
        at edu.stanford.nlp.ie.crf.CRFClassifier.getClassifier(CRFClassifier.java:2939)
        at edu.stanford.nlp.international.arabic.process.ArabicSegmenter.loadSegmenter(ArabicSegmenter.java:464)

我想,我只需要一个如何运行分段器的简单指南——假设我通常不使用 Java。

标签: stanford-nlparabic

解决方案


我建议下载完整的斯坦福 CoreNLP 包。

  1. 从这里下载斯坦福 CoreNLP:https ://stanfordnlp.github.io/CoreNLP/download.html

  2. 这应该最终在一个目录中,如:

    C:\Users\myusername\stanford-corenlp-full-2018-10-05
    
  3. 从同一链接下载阿拉伯语模型 jar,并将其移动到 Stanford CoreNLP 目录C:\Users\myusername\stanford-corenlp-full-2018-10-05

  4. 设置 CLASSPATH 以包括包含您需要的所有 *.jar 文件的目录。

    set CLASSPATH=C:\Users\myusername\stanford-corenlp-full-2018-10-05\*;
    
  5. 在示例文本上运行管道(确保在运行此命令时位于示例文件所在的目录中)

    java -Xmx5g edu.stanford.nlp.pipeline.StanfordCoreNLP -props StanfordCoreNLP-arabic.properties -file example.txt -outputFormat text
    

example.txt.out当此命令完成时,您应该得到分段输出。

我无法访问 Windows 机器,所以如果我的答案不起作用,请告诉我,我会修复它。我将尝试在我们的网站上放置一些有关使用 Windows 的文档。


推荐阅读