2015-09-23 116 views
0

斯坦福核心NLP使用PTB Tokenizer进行标记。但是,我想实现我自己的标记器。作为其中的一部分,在我们指定注释器的属性文件中,我没有把tokenize设置为我想自己编写Tokenizer并将输出令牌放在 CoreAnnotations.TokensAnnotation.class,set方法中,以便ssplit稍后使用它们。但是,当我尝试运行这个程序是失败的说ssplit不能存在没有标记器。我想知道是否有任何程序来实现自定义的Tokenizer?从Stanfordcorenlp库实现标记器的标准程序是什么?

回答

0
  1. 请确保您创建了一个使用自定义标记的Annotator(Annotator接口在edu/stanford/nlp/pipeline中);在这个例子中,我们会打电话给您的自定义注释MyTokenizerAnnotator,并假设它是在包org.foo

  2. 当您生成StanfordCoreNLP管道,请务必将其添加到属性:

    props.set("customAnnotatorClass.mytokenize" , "org.foo.MyTokenizerAnnotator") 
    
  3. 当您为您的管道注释,而不是“令牌化”,把“我的记号化”

    props.set("annotators", "mytokenize, ssplit, pos, lemma") 
    
  4. 确保Annotator.TOKENIZE_REQUIREMENT添加到该集合MyTokenizerAnnotator的requirementsSatisfied()方法回报,这将告诉您的自定义标记生成器满足了记号化需求的管道,将停止SSPLIT投诉

  5. 供您参考,这里有一些相关的类的javadoc,你一定要看看TokenizerAnnotator.java实施如果你要建立自己的分词:

    http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/pipeline/Annotator.html

    http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/pipeline/TokenizerAnnotator.html

请让我知道,如果你需要更多帮助!

相关问题