繁体   English   中英

如何从tsv文件训练斯坦福CRF NER

[英]How to train Stanford CRF NER from a tsv file

我想训练自己的模型,例如,我需要通过训练后的模型运行此字符串:“《丰田陆地巡洋舰1956-1987黄金投资组合》杂志上的49条杂志文章的书http://t.co/EqxmY1VmLg http:// t .co / F0Vefuoj9Q

tsv文件如下所示:

Toyota  PERS
Land    PERS

当我通过程序运行它时:

public static void main(String[] args) {
        String serializedClassifier2 = "C:/standford-ner/ner-model.ser.gz";
      try {
            NERClassifierCombiner classifier = new NERClassifierCombiner(false, false, 
                     serializedClassifier2);
            String ss = "Book of 49 Magazine Articles on Toyota Land Cruiser 1956-1987 Gold Portfolio http://t.co/EqxmY1VmLg http://t.co/F0Vefuoj9Q";
            System.out.println("---");
            List<List<CoreLabel>> out = classifier.classify(ss);
            for (List<CoreLabel> sentence : out) {
              for (CoreLabel word : sentence) {
                System.out.print(word.word() + '/' + word.get(AnswerAnnotation.class) + ' ');
              }
              System.out.println();
            }


        } catch (ClassCastException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

这是我得到的输出:

Book/PERS of/PERS 49/O Magazine/PERS Articles/PERS on/O Toyota/PERS Land/PERS Cruiser/O 1956-1987/PERS Gold/PERS Portfolio/PERS http://t.co/EqxmY1VmLg/PERS http://t.co/F0Vefuoj9Q/PERS 

对我来说,输出是错误的。 我需要得到Book/O of/O 我不确定它是如何获得此值的,例如在我的tsv文件中未提及“ book”。 我在tsv文件中没有提到的单词应该是O 这个tsv文件仅仅是个开始; 我还有很多话要补充。

您已给分类器训练数据,其中100%的数据是一类: PERS 由于您的训练数据中有100%是该课程,因此您可以将100%的作业返还给该课程。

对于算法, O只是另一类。 您没有提供O示例,因此它不会将任何内容归类为O

斯坦福大学NER CRF常见问题解答提供了培训数据示例

CHAPTER O
I   O
Emma    PERS
Woodhouse   PERS
,   O
handsome    O
,   O
clever  O
,   O
and O
rich    O
,   O
with    O
a   O
comfortable O
home    O
...

因此,您可以在其中看到它们在原位标记每个标记,并带有大量O类的示例。 我并不完全熟悉CRF分类器的工作原理,但是我怀疑您需要为它提供经过适当标记的实际数据,而不仅仅是给出目标类成员示例的列表。

但是,这引出了另一个问题-如果您只是想为该任务匹配字符串,为什么要使用NER? 为什么不匹配字符串? 如果这是您的目标,那么跳过复杂的NLP将使您免于头疼。 您将更快地获得结果,并且更容易手动调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM