从Stanfordcorenlp库实现tokenizer的标准程序是什么?

时间:2015-09-23 12:04:40

标签: tokenize stanford-nlp stringtokenizer

斯坦福核心NLP使用PTB Tokenizer进行标记化。但是,我想实现自己的tokenizer。作为其中的一部分,在我们指定注释器的属性文件中,我没有设置tokenize,因为我想自己编写Tokenizer并将输出的令牌放入 CoreAnnotations.TokensAnnotation.class通过set方法,以便ssplit稍后会使用它们。但是,当我尝试运行它时,程序失败说ssplit无法在没有标记器的情况下出现。我想知道是否有任何实现自定义Tokenizer的程序?

1 个答案:

答案 0 :(得分:0)

  1. 确保创建一个使用自定义标记化的Annotator(Annotator接口位于edu / stanford / nlp / pipeline中);对于这个例子,我们将调用你的自定义注释器MyTokenizerAnnotator,并假设它在org.foo包中

  2. 构建StanfordCoreNLP管道时,请务必将其添加到属性中:

    props.set("customAnnotatorClass.mytokenize" , "org.foo.MyTokenizerAnnotator")
    
  3. 当您为管道设置注释器时,而不是“tokenize”将“my tokenize”设置为

    props.set("annotators", "mytokenize, ssplit, pos, lemma")
    
  4. 确保将Annotator.TOKENIZE_REQUIREMENT添加到设置MyTokenizerAnnotator的requirementsSatisfied()方法返回,这将告诉管道您的自定义标记生成器满足标记化要求并将停止ssplit投诉

  5. 供您参考,以下是一些相关类的javadoc,如果您要构建自己的tokenizer,您一定要看看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

  6. 如果您需要任何进一步的帮助,请与我们联系!