Stanford nlp 使用regexner标识表单\d\d-\d\d-\d\d的日期

Stanford nlp 使用regexner标识表单\d\d-\d\d-\d\d的日期,stanford-nlp,Stanford Nlp,我正在使用Stanford regexNer以及管道中的ner。我想将格式为[0-9][0-9]-[0-9][0-9]-[0-9][0-9](例如27-02-16)的字符串标识为日期,ner将其标识为数字。因此,我在一个映射文件中定义了一个正则表达式,并将其交给了regexner。但regexNer无法将此类字符串识别为日期。这些代币的ner仍然是数字。 以下是映射文件: [0-9]{2}-[0-9]{2}-[0-9]{2} date NUMBER 我确保这些列是用制表符分隔的。我尝试

我正在使用Stanford regexNer以及管道中的ner。我想将格式为[0-9][0-9]-[0-9][0-9]-[0-9][0-9](例如27-02-16)的字符串标识为日期,ner将其标识为数字。因此,我在一个映射文件中定义了一个正则表达式,并将其交给了regexner。但regexNer无法将此类字符串识别为日期。这些代币的ner仍然是数字。 以下是映射文件:

[0-9]{2}-[0-9]{2}-[0-9]{2}  date    NUMBER
我确保这些列是用制表符分隔的。我尝试了此正则表达式的几个版本,如\d\d-\d\d-\d\d和[0-9][0-9][0-9][0-9]-[0-9][0-9],但都不起作用。有没有关于我可能错在哪里的指示?我使用的是斯坦福Corenlp3.7。这里是我正在运行的java代码

Properties PROPS = new Properties();

PROPS.put("annotators", "tokenize, ssplit, pos, lemma, ner, regexner");
        StanfordCoreNLP PIPELINE = new StanfordCoreNLP(PROPS);
        PIPELINE.addAnnotator(
                new RegexNERAnnotator("/home/jyoti/workspace-jee/QA_Rest/src/main/resources/Gazetter.txt"));

我进一步研究发现,只有当正则表达式完全由整数组成时,它才与任何字符串不匹配。我试着在它前面加上字母表,结果成功了(例如,a\d\d-\d\d-\d\d匹配a14-07-12)。

你是如何运行它的,因为你原来的规则对我来说很好

我发出了这个命令:

java -Xmx8g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,regexner -regexner.mapping date-rules.txt -file date-example.txt -outputFormat text

@stanfordnlphelp,任何指针都可以。我正在通过JavaAPI运行它。我在编辑中添加了代码。在构建管道之前,需要删除“addAnnotator”行并添加一行PROPS.setProperty(“regexner.mapping”、“/path/to/rules file.txt”)。regexner是使用规则的注释器,regexner.mapping是设置要使用的规则文件的属性