在StanfordCoreNLPServer输出中同时使用NER和RegexNER标签?

ste*_*sia 5 stanford-nlp stanford-nlp-server

我正在使用StanfordCoreNLPServer从文本中提取一些信息(例如表面,街道名称)

街道由经过专门训练的NER模型提供,表面由简单的正则表达式通过RegexNER提供.

它们中的每一个都可以单独工作,但是当它们一起使用时,只有NER结果出现在ner标签下的输出中.为什么没有regexner标签?有没有办法获得RegexNER结果?

有关信息:

  • StanfordCoreNLP v3.6.0

  • 使用的URL:

    'http://127.0.0.1:9000/'
    '?properties={"annotators":"tokenize,ssplit,pos,ner,regexner", '
    '"pos.model":"edu/stanford/nlp/models/pos-tagger/french/french.tagger",'
    '"tokenize.language":"fr",'
    '"ner.model":"ner-model.ser.gz", ' # custom NER model with STREET labels
    '"regexner.mapping":"rules.tsv", ' # SURFACE label
    '"outputFormat": "json"}'
    
    Run Code Online (Sandbox Code Playgroud)

    如建议在这里regexner注释是之后ner,但仍...

  • 当前输出(提取):

    {u'index': 4, u'word': u'dans', u'lemma': u'dans', u'pos': u'P', u'characterOffsetEnd': 12, u'characterOffsetBegin': 8, u'originalText': u'dans', u'ner': u'O'}
    {u'index': 5, u'word': u'la', u'lemma': u'la', u'pos': u'DET', u'characterOffsetEnd': 15, u'characterOffsetBegin': 13, u'originalText': u'la', u'ner': u'O'}
    {u'index': 6, u'word': u'rue', u'lemma': u'rue', u'pos': u'NC', u'characterOffsetEnd': 19, u'characterOffsetBegin': 16, u'originalText': u'rue', u'ner': u'STREET'}
    {u'index': 7, u'word': u'du', u'lemma': u'du', u'pos': u'P', u'characterOffsetEnd': 22, u'characterOffsetBegin': 20, u'originalText': u'du', u'ner': u'STREET'}
    [...]
    {u'index': 43, u'word': u'165', u'lemma': u'165', u'normalizedNER': u'165.0', u'pos': u'DET', u'characterOffsetEnd': 196, u'characterOffsetBegin': 193, u'originalText': u'165', u'ner': u'NUMBER'}
    {u'index': 44, u'word': u'm', u'lemma': u'm', u'pos': u'NC', u'characterOffsetEnd': 198, u'characterOffsetBegin': 197, u'originalText': u'm', u'ner': u'O'}
    {u'index': 45, u'word': u'2', u'lemma': u'2', u'normalizedNER': u'2.0', u'pos': u'ADJ', u'characterOffsetEnd': 199, u'characterOffsetBegin': 198, u'originalText': u'2', u'ner': u'NUMBER'}
    
    Run Code Online (Sandbox Code Playgroud)
  • 预期输出:我希望最后3个项目被标记SURFACE,即RegexNER结果.

如果需要更多细节,请告诉我.

ste*_*sia 3

好吧,如果我把第一个放在第一位,事情似乎就会按我想要的方式进行regexner

"annotators":"regexner,tokenize,ssplit,pos,ner",
Run Code Online (Sandbox Code Playgroud)

似乎在流程的某个阶段存在排序问题?