2015-09-23 80 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

請讓我知道,如果你需要更多幫助!

相關問題