我已经阅读了Lingpipe用于自然语言处理的资料,发现它能够识别出文本中提到的人名、地点和组织名称。我的问题是,如果我有一组训练文档,其中包含了软件项目的提及,我能否使用这组训练文档来训练一个命名实体识别器?一旦训练完成,我应该能够将一组测试文本文档输入到训练好的模型中,并能够识别出其中的软件项目提及。
这种通用命名实体识别是否可能使用NER实现?如果可以,我应该使用哪些特征来输入?
谢谢@隐藏人名
回答:
只要你有足够的带有标记的软件项目的训练数据,这是可能的。
如果使用Lingpipe,我会首先选择字符n-gram模型来完成你的任务。它们简单且通常能完成工作。如果结果不够好,一些标准的NER特征包括:
- 词元
- 词性(POS)
- 大写字母
- 标点符号
- 字符签名:这些是一些想法:(LUCENE -> AAAAAA -> A),(Lucene -> Aaaaaa -> Aa),(Lucene-core –> Aaaaa-aaaa –> Aa-a)
- 如果可以从维基百科、SourceForge或任何其他内部资源中获取软件项目列表,编制一个地名词典(gazetteer)也可能是有用的。
最后,对于每个词元,你可以添加上下文特征,即当前词元之前的词元(t-1, t-2…),当前词元之后的词元(t+1, t+2…),以及它们的大双连词组合(t-2^t-1),(t+1^t+2)。