 <p>I don't think this is possible with command line options.</p> <p>If you want you can make a custom annotator and include it in your pipeline you could go that route.</p> <p>Here is some sample code:</p> <pre><code>package edu.stanford.nlp.pipeline; import edu.stanford.nlp.util.logging.Redwood; import edu.stanford.nlp.ling.*; import edu.stanford.nlp.util.concurrent.MulticoreWrapper; import edu.stanford.nlp.util.concurrent.ThreadsafeProcessor; import java.util.*; public class ProvidedPOSTaggerAnnotator { public String tagSeparator; public ProvidedPOSTaggerAnnotator(String annotatorName, Properties props) { tagSeparator = props.getProperty(annotatorName + ".tagSeparator", "_"); } public void annotate(Annotation annotation) { for (CoreLabel token : annotation.get(CoreAnnotations.TokensAnnotation.class)) { int tagSeparatorSplitLength = token.word().split(tagSeparator).length; String posTag = token.word().split(tagSeparator)[tagSeparatorSplitLength-1]; String[] wordParts = Arrays.copyOfRange(token.word().split(tagSeparator), 0, tagSeparatorSplitLength-1); String tokenString = String.join(tagSeparator, wordParts); // set the word with the POS tag removed token.set(CoreAnnotations.TextAnnotation.class, tokenString); // set the POS token.set(CoreAnnotations.PartOfSpeechAnnotation.class, posTag); } } } </code></pre> <p>This should work if you provide your token with POS tokens separated by "_". You can change it with the forcedpos.tagSeparator property.</p> <p>If you set customAnnotator.forcedpos = edu.stanford.nlp.pipeline.ProvidedPOSTaggerAnnotator</p> <p>to the property file, include the above class in your CLASSPATH, and then include "forcedpos" in your list of annotators after "tokenize", you should be able to pass in your own pos tags.</p> <p>I may clean this up some more and actually include it in future releases for people!</p> <p>I have not had time to actually test this code out, if you try it out and find errors please let me know and I'll fix it!</p>