我正在使用斯坦福大学的regexNer和ner一起在一个管道中。我想将0-9-0-0-0-9(例如27-02-16)表格的字符串识别为日期,ner将其标识为数字。因此,我在映射文件中定义了regex,并将其交给regexner。但是regexNer无法将这样的字符串识别为日期。这些标记的ner仍然是数字。以下是映射文件:
[0-9]{2}-[0-9]{2}-[0-9]{2} date NUMBER我确保列是制表符分隔开的。我尝试了几个版本的这个regex,比如\d\d-\d\d\d和0-9-0-0-0-9,但是没有一种有效。关于我可能错在哪里有什么建议吗?我正在使用斯坦福大学的CoreNLP 3.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匹配a14-07-12)。
发布于 2017-04-16 03:54:17
你是如何运行这个的,因为你原来的规则对我来说很好。
我发布了以下命令:
java -Xmx8g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,regexner -regexner.mapping date-rules.txt -file date-example.txt -outputFormat texthttps://stackoverflow.com/questions/43410522
复制相似问题