2

我正在尝试检测德语文本中的时间信息。我尝试使用斯坦福 CoreNLP 管道,因为在后期(在时间标记之后)使用依赖解析信息会非常有帮助,但据我了解,没有办法将 CoreNLP 的集成时间标记器设置为德语。我对此是否正确,或者实际上是否有一种方法可以做到这一点。

现在我正在尝试使用 HeidelTime 分别检索 tamporal 标签。我想使用 Stanford POS 标记器。在 Heideltime config.props 文件中,我正在设置斯坦福 POS 标记器的路径,如下所示(使用 Windows):

model_path = C:\\Users\\milu\\Documents\\stanford-postagger-full-2017-06-09\\stanford-postagger-full-2017-06-09\\models
# leave this unset if you do not need one (e.g., /home/jannik/stanford-postagger-full-2014-01-04/tagger.config)
config_path =   

这是我在 NetBeans 上运行的代码,然后是我得到的错误。我指定 POS 标记器路径的方式有问题吗?

public class RunHeideltimeInJava {


public static void main(String[] args) throws
        DocumentCreationTimeMissingException, ParseException {

    OutputType outtype = OutputType.XMI;
    POSTagger postagger = POSTagger.STANFORDPOSTAGGER;
    String conffile = "C:\\Users\\milu\\Documents\\NetBeansProjects\\TimeTagging\\src\\config.props";

    HeidelTimeStandalone hsNarratives = new HeidelTimeStandalone(Language.GERMAN,
            DocumentType.NARRATIVES, outtype, conffile, postagger);

    String narrativeText = "Ich habe letztes Wochenende neue Schuhe gekauft.";

    String xmiNarrativeOutput = hsNarratives.process(narrativeText);
    System.err.println("NARRATIVE*****" + xmiNarrativeOutput);
    String dctString = "2016-04-29";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date dct = df.parse(dctString);
 }
}

输出:

run:
Aug 25, 2017 9:54:31 AM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone initialize
INFORMATION: HeidelTimeStandalone initialized with language german
Aug 25, 2017 9:54:31 AM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone readConfigFile
INFORMATION: trying to read in file C:\Users\milue\Documents\NetBeansProjects\TimeTagging\src\config.props
Aug 25, 2017 9:54:33 AM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone initialize
INFO: HeidelTime initialized
Aug 25, 2017 9:54:33 AM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone initialize
INFO: JCas factory initialized
Aug 25, 2017 9:54:33 AM de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone process
INFO: Processing started
Exception in thread "main" java.lang.NoClassDefFoundError: edu/stanford/nlp/tagger/maxent/TaggerConfig
    at de.unihd.dbs.heideltime.standalone.components.impl.StanfordPOSTaggerWrapper.<init>(StanfordPOSTaggerWrapper.java:12)
    at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.establishPartOfSpeechInformation(HeidelTimeStandalone.java:391)
    at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.establishHeidelTimePreconditions(HeidelTimeStandalone.java:332)
    at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.process(HeidelTimeStandalone.java:516)
    at de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.process(HeidelTimeStandalone.java:449)
    at RunHeideltimeInJava.main(RunHeideltimeInJava.java:29)
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.tagger.maxent.TaggerConfig
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more
C:\Users\milu\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 2 seconds)
4

1 回答 1

1

根据 Heideltime 手册,您只需将语言选项设置为 German : java -jar de.unihd.dbs.heideltime.standalone.jar -l GERMAN。Heideltime 会将此选项设置为所选的词性标注器(TreeTagger 或 StanfordPosTagger)。

关于 TaggerConfig 错误,我在使用 StanfordPosTagger 在命令行上调用 Heidletime 时收到相同的消息,即使是英文文本:java -jar de.unihd.dbs.heideltime.standalone.jar reference.txt -pos STANFORDPOSTAGGER.

我按照说明编辑了 heideltime 配置文件并将 Stanford POS Tagger .jar 文件添加到 CLASSPATH: https ://github.com/HeidelTime/heideltime/wiki/StanfordPOSTaggerWrapper

当我使用 TreeTagger 进行词性标记时,一切正常。

于 2018-10-18T10:53:07.407 回答