是否可以训练Stanford NER系统以识别更多命名实体类型?
named-entity-recognition
nlp
stanford-nlp
5
0

我现在正在使用一些NLP库(stanford和nltk)Stanford,我看到了演示部分,但只是想问问是否有可能使用它来标识更多的实体类型。

因此,当前斯坦福NER系统(如演示所示)可以将实体识别为人(名称),组织或位置。但是公认的组织仅限于大学或一些大型组织。我想知道是否可以使用其API编写用于更多实体类型的程序,例如,如果我输入的是“ Apple”或“ Square”,它可以将其识别为公司。

我是否需要建立自己的训练数据集?

此外,如果我想提取实体及其之间的关系,我觉得我应该使用stanford依赖解析器。我的意思是,首先提取命名实体和其他标记为“名词”的部分,然后找到它们之间的关系。

我对么。

谢谢。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

似乎您想训练您的自定义NER模型。

这是带有完整代码的详细教程:

https://dataturks.com/blog/stanford-core-nlp-ner-training-java-example.php?s=so

训练数据格式

训练数据作为文本文件传递,其中每一行都是一对单词标签。该行中的每个单词都应以“ word \ tLABEL”之类的格式标记,该单词和标签名称由制表符'\ t'分隔。对于文本句子,我们应该将其分解为单词,然后在训练文件中为每个单词添加一行。为了标记下一行的开始,我们在训练文件中添加一个空行。

这是输入训练文件的示例:

hp  Brand
spectre ModelName
x360    ModelName

home    Category
theater Category
system  0

horizon ModelName
zero    ModelName
dawn    ModelName
ps4 0

根据您的域,您可以自动或手动构建此类数据集。手动建立这样的数据集可能非常痛苦,像NER注释工具之类的工具可以使过程变得更加容易。

火车模型

public void trainAndWrite(String modelOutPath, String prop, String trainingFilepath) {
   Properties props = StringUtils.propFileToProperties(prop);
   props.setProperty("serializeTo", modelOutPath);

   //if input use that, else use from properties file.
   if (trainingFilepath != null) {
       props.setProperty("trainFile", trainingFilepath);
   }

   SeqClassifierFlags flags = new SeqClassifierFlags(props);
   CRFClassifier<CoreLabel> crf = new CRFClassifier<>(flags);
   crf.train();

   crf.serializeClassifier(modelOutPath);
}

使用模型生成标签:

public void doTagging(CRFClassifier model, String input) {
    input = input.trim();
    System.out.println(input + "=>"  +  model.classifyToString(input));
}  

希望这可以帮助。

收藏
评论

是的,您需要自己的训练集。预先训练的Stanford模型仅将“ Stanford”一词识别为已命名实体,因为它们已经针对具有该词的数据进行了训练(或者根据使用的功能集非常相似的词,我不知道那是什么)标记为命名实体。

一旦有了更多数据,就需要按照本问题和斯坦福大学教程中所述的正确格式进行输入。

收藏
评论

您可以轻松地训练自己的数据语料库。

在斯坦福大学NER常见问题解答中,第一个问题是如何为NER训练我们自己的模型

链接是http://nlp.stanford.edu/software/crf-faq.shtml

因此,例如,您可以提供训练数据,例如

产品OBJ
的O
微软ORG

同样,您可以建立自己的训练数据并建立模型,然后使用它来获得所需的输出

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号