如何基于stanford-nlp条件随机场模型训练法语NER?

Vin*_*mel 6 stanford-nlp

我发现了stanford-NLP的工具,发现它非常有趣.我是法国数据管理员/数据科学家,喜欢文本分析,并且很乐意使用你的工具,但是法语中没有的NER对我来说非常令人费解.

我很想制作我自己的法国NER,如果它被认为是值得的话,甚至可以提供它作为包的贡献,那么......你能否向我简要介绍基于stanford coreNLP训练法国NER的CRF的要求?

谢谢.

ste*_*sia 7

注意:我不是斯坦福工具的开发者,也不是NLP专家.只是一个lambda用户,在某些时候也需要这样的信息.另请注意,下面给出的部分信息来自官方常见问题解答:http://nlp.stanford.edu/software/crf-faq.shtml#a

以下是我训练自己的NER的步骤:

  1. 安装java8
  2. 创建一个火车/测试样本.它必须采用.tsv以下格式的文件形式:

      Venez    O
      découvrir    O
      lundi    DAY
      le    O
      nouvel    O
      espace    O
      de    O
      vente    O
      ODHOJS    ORGANISATION
    
    Run Code Online (Sandbox Code Playgroud)

    根据文本的原始格式,您可以使用SQL语句或其他NLP工具创建此示例.标签是最复杂的部分,因为我不知道其他方法,而不是手工完成.

  3. 使用此命令训练模型:

    java -cp "stanford-ner.jar:lib/*" -mx4g edu.stanford.nlp.ie.crf.CRFClassifier -prop prop.txt
    
    Run Code Online (Sandbox Code Playgroud)

    这里prop.txt也描述哪里.

    这应该创建一个新的.jar包含新训练的模型.

  4. 测试模型性能:

    java -cp "stanford-ner.jar:lib/*" edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier ner-model.ser.gz -testFile test.tsv > test.res
    
    Run Code Online (Sandbox Code Playgroud)

    输入test.tsv格式与train.tsv文件相同.输出中test.res有一个包含NER预测类的额外列.最后几行还显示了精度,召回和F1的总结.

  5. 最后,您可以在真实数据上使用NER:

    java -cp "stanford-ner.jar:lib/*" -mx5g edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier ner-model.ser.gz  -textFile test.txt -outputFormat inlineXML > test.res
    
    Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 如果有人在寻找一个法国语料库,这里是一个有200.000条目https://github.com/EuropeanaNewspapers/ner-corpora/blob/master/enp_FR.bnf.bio/enp_FR.bnf.bio在有16GB内存和酷睿i7 SSD,培训需要10多分钟 (3认同)