Le processeur central NLP utilise le Tokenizer PTB pour la tokenisation. Mais, je veux implémenter mon propre tokenizer. En tant que partie de cela, dans le fichier de propriétés où nous spécifions les annotateurs, je n'ai pas mis tokenize comme je veux écrire Tokenizer moi-même et mettre les jetons en sortie en CoreAnnotations.TokensAnnotation.class
par set
méthode de sorte que ssplit les utilise plus tard.Mais, quand je essayer d'exécuter ceci, le programme échoue à dire que ssplit ne peut pas être présent sans tokenizer. Je voudrais savoir s'il existe une procédure pour implémenter un Tokenizer personnalisé?Quelle est la procédure standard pour l'implémentation d'un tokenizer à partir de la bibliothèque Stanfordcorenlp?
Répondre
Assurez-vous de créer un Annotator qui utilise votre tokenization personnalisé (l'interface Annotator est dans edu/stanford/NLP/pipeline); pour cet exemple, nous allons appeler votre MyTokenizerAnnotator annotateur personnalisé, et supposons qu'il est dans le paquet org.foo
Lorsque vous construisez le pipeline de StanfordCoreNLP, assurez-vous d'ajouter à propriétés:
props.set("customAnnotatorClass.mytokenize" , "org.foo.MyTokenizerAnnotator")
lorsque vous définissez annotateurs pour votre pipeline, au lieu de « tokenize » mettre « mon tokenize »
props.set("annotators", "mytokenize, ssplit, pos, lemma")
Assurez-vous d'ajouter Annotator.TOKENIZE_REQUIREMENT à l'ensemble de la méthode requirementsSatisfied() de MyTokenizerAnnotator renvoie, cela indiquera au pipeline que votre tokenizer personnalisé remplit la condition de tokenize et arrêtera la plainte ssplit
Pour votre référence, voici les javadocs pour certaines classes pertinentes, vous devriez certainement regarder l'implémentation de TokenizerAnnotator.java si vous allez construire votre propre tokenizer:
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
S'il vous plaît laissez-moi savoir si vous besoin d'aide supplémentaire!