我最近开始看看Stanford NLP(使用C#端口)。 我已经计划使用NER来识别商店位置名称和产品名称 - 为此我需要训练标签,我正在做的过程中。
但是,某些位置,例如“Kings Cross”,只有当两个令牌在一起时才应被视为一个位置。即我不希望“国王”在一个句子中单独使用时被标记为一个位置。
所以我的问题是:是否有一种定义的方式建议我处理其中有空格的位置/名称(在我的训练文件和代码中)?
感谢您的帮助。
答案 0 :(得分:1)
您的两个选项是训练统计标记算法并希望它做正确的事情,或者使用regexner
注释器并为其提供已知命名实体的列表。例如,在您已知的命名实体列表中,您可以包含Kings Cross
的条目,只有在看到完整的短语Kings Cross
时才会有效。
此处提供了regexner
的更多文档:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
答案 1 :(得分:1)
在NER中处理此问题的标准方法是使用IOB标记or some variation。使用IOB的标签可能如下所示:
I O
went O
to O
Kings B-PLACE
Cross I-PLACE
O
表示“无标签”,B-XXX
表示“XXX的开头”,I-XXX
表示“在XXX中”。
标记系统将以B
开始学习多字标记,有时会继续使用I
标记;这只是另一个标签转换。要从标记器输出中收集多字标记,您只需浏览,为任何B
创建条目,然后将I
附加到其中。