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