命名实体识别:如何标记训练集并选择算法?

时间:2014-01-07 11:59:09

标签: python nlp nltk named-entity-recognition pos-tagger

对于包含公司名称的文本,我想培训一个自动标记承包商(执行任务的公司)和委托人(公司雇用承包商)的模型。

一个例句是:

  

Blossom Inc.聘请Big Think的顾问来制定外包策略。

Blossom Inc 作为委托人,将 Big Think 作为承包商。

我的第一个问题:仅仅标记我的训练集中的校长和承包商是否足够或者是否更好地另外使用POS标记?

换句话说,要么

  

Blossom / PRINCIPAL Inc./PRINCIPAL雇用/ NN / NN顾问/ NN / NN Big / CONTRACTOR Think / CONTRACTOR / NN开发/ NN an / NN外包/ NN战略/ NN ./.

  

Blossom / PRINCIPAL Inc./PRINCIPAL雇用/ VBZ / DT顾问/ NNS / IN大/承包商思考/承包商/开发/ VB / DT外包/ NN策略/ NN ./.

第二个问题:一旦我完成训练集,nltk-package的哪种算法最有希望? N-Gram Tagger,Brill Tagger,TnT Tagger,Maxent Classifier,朴素贝叶斯,......?或者我完全走错了轨道?

我是NLP的新手,在投入大量时间标记我的训练集之前,我只想征求意见。我的文字是用德语写的,这可能会增加一些困难...感谢您的任何建议!

3 个答案:

答案 0 :(得分:2)

我建议你不要合并命名实体和POS信息。大多数工作表明,POS(或其他一些形态和/或大写特征)对于检测命名实体很有价值。由于您可以非常安全地使用自动POS标记器(除非您处理嘈杂的文本),您可能会得到类似的结果:

Blossom/NNP/PRINCIPAL Inc./NNP/PRINCIPAL hires/VBZ/O the/DT/O consultants/NNS/O of/IN/O Big/NNP/CONTRACTOR Think/NNP/CONTRACTOR to/TO/O develop/VB/O an/DT/O outsourcing/NN/O strategy/NN/O ./.

当您可以手动注释PRINCIPAL和CONTRACTOR时,将自动标记POS级别。另请注意,大多数人使用BIO format标记命名实体。

请记住,识别组织通常很难 - 至少比人和地点更难。除非您有预定义的组织列表,否则需要大量词典。直觉上,我想你可以将你的任务划分为:

  1. 识别和过滤组织(ORG),例如使用NER标记器
  2. 注入其他处理(模式/语法/语义)
  3. 实施第二个模型,用于转换PRINCIPAL或CONTRACTOR中的相关ORG

答案 1 :(得分:1)

  1. 您无需手动进行POS标记。 POS标签将为您完成。
  2. 有关POS标记德语的信息,请参阅this question

答案 2 :(得分:0)

命名实体识别(斯坦福)足以解决您的问题。

使用POS标记对您的问题没有帮助。

用于生成NER模型的足够数量的训练数据将为您提供良好的结果。

如果你使用斯坦福NER,那么它使用CRF分类器和算法。