【问题标题】:What is the standard procedure for implementing a tokenizer from Stanfordcorenlp library?从 Stanfordcorenlp 库实现分词器的标准程序是什么?
【发布时间】:2015-09-23 12:04:40
【问题描述】:

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

【问题讨论】:

    标签: tokenize stanford-nlp stringtokenizer


    【解决方案1】:
    1. 确保创建一个使用自定义标记的注释器(注释器接口位于 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. 供您参考,这里是一些相关类的 javadocs,如果您要构建自己的标记器,您绝对应该查看 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

    如果您需要任何进一步的帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 2013-04-04
      • 2015-04-03
      • 2015-12-02
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多