5

我想自动识别文档流中的日期,从这个意义上说,我想使用开源项目 Heideltime 提供的代码,可在此处获得 ( https://code.google.com/p/heideltime/ )。我已经安装了 Heideltime 工具包(不是独立版本),现在我想知道如何引用它并在我的 Java 项目中调用它。我已经在 pom.xml 中向 Heideltime 添加了一个依赖项:

    <dependency>
        <groupId>de.unihd.dbs</groupId>
        <artifactId>heideltime</artifactId>
        <version>1.7</version>
    </dependency>

但是我不确定如何将此源项目中的类调用到我自己的项目中。我对两者都使用 Maven。任何曾经使用过它的人都可以给我一个建议或建议吗?非常感谢!

4

3 回答 3

2

heideltime-kit 本身就是一个 Maven 项目。因此,您可以将 heideltime-kit 项目添加为依赖项。(在Netbeans中,右键单击Dependencies,--> Add Dependency --> Open Projects(确保项目先打开)--> HeidelTime)

然后将 config.props 文件移动到项目的 src/main/resources 文件夹中。在 config.props 中设置 treetagger 的路径。

就使用这些类而言,您需要使用 POSTagger.TREETAGGER 作为 posTagger 参数和您的 src/ 的硬编码路径来创建 HeidelTimeStandalone 的实例(参见 de.unihd.dbs.heideltime.standalone.HeidelTimeStandalone.java) main/resources/config.props 文件作为 configPath 参数。例如,

heidelTime = new HeidelTimeStandalone(Language.ENGLISH,
                                      DocumentType.COLLOQUIAL,
                                      OutputType.TIMEML,
                                      "path/to/config.props",
                                      POSTagger.TREETAGGER, true);

那么要使用 HeidelTime 处理文本,只需调用 process 函数即可:

String result = heidelTime.process(text, date);
于 2015-09-14T17:18:32.427 回答
1

除了 jgloves 的回复之外,您可能有兴趣将 Heideltime 结果字符串解析为 Java 对象表示。以下代码将 Uima-XML 表示转换为Timex3对象。

    HeidelTimeStandalone time = new HeidelTimeStandalone(Language.GERMAN, DocumentType.SCIENTIFIC, OutputType.XMI, "config.props", POSTagger.STANFORDPOSTAGGER);
    String xmiRepresentation = time.process(document, documentCreationTime); //Apply Heideltime and get the XML-UIMA representation     
    JCas cas = jcasFactory.createJCas();

    for(FSIterator<Annotation> it= cas.getAnnotationIndex(Timex3.type).iterator(); it.hasNext(); ){
            System.out.printkn(it.next);
    }
于 2016-05-13T13:01:25.550 回答
0

这个库还没有在 Maven 中央存储库中。(你可以在这个search.maven.org网站上查看。)

在您的项目中使用该库。您应该下载 JAR 文件并将其安装在本地。参考这个问题的答案:How to add local jar files in maven project? .

然后,您可以只使用导入包并使用项目中的功能。

于 2014-12-16T09:57:39.460 回答