重新训练stanford ner - 新实体和多字实体

时间:2014-11-26 06:03:49

标签: java stanford-nlp

我正在重新训练斯坦福NER系统,从Text中提取技术名称和组织名称。

如果我想重新训练stanford ner模型,我们应该提供以下格式的训练数据:

She     O
works    O
on O
C#     TECHNOLOGY
at O
New   ORGANIZATION
York  ORGANIZATION
TImes   ORGANIZATION
and O
Microsoft ORGANIZATION
in    O
New     LOCATION
York     LOCATION

以这种方式指定命名实体是否足够?在重新训练模型时,我们是否需要以某种格式指定词性信息?另外,如果我们有多个单词的实体,那么这是注释它们的正确方法吗?

这是我遵循的方法:方法是否合适?

  1. 生成培训数据
  2. 在属性文件中添加新的模型名称和位置
  3. 在stanford ner的常见问题解答中使用此命令:

    java -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop austen.prop
    

1 个答案:

答案 0 :(得分:1)

是的,只需注释实体即可。斯坦福NER还支持在分类时使用POS信息的训练分类器,但是当使用分布相似性词群等其他技术时,它的准确性增加很少。在我们分发的模型中,为简单起见,我们不使用POS信息(因此NER可以在没有POS标签的情况下单独运行)。

对于注释多个单词实体,有几种策略。上述编码有时称为" IO" (在室外)。它具有易于解释和快速的优点,但缺点是不允许区分同一类的两个相邻实体 - 您必须假设同一类别的一组单词包含一个大实体。我们默认使用它,因为它简单而快速,尽管有这个缺点。 (相同类别的相邻实体很少出现在个人/组织/位置,但在其他一些领域可能更常见。)

但您也可以使用其他编码方案(如IOB)注释数据并训练模型,IOB具有相反的属性(更复杂,标记器运行速度较慢,可以表示相同类别的相邻实体)。有关详细信息,请参阅this SO question