我正在尝试标记一些句子。例如句子:

String sentence = "The sky is blue. A cat is #blue.";


我在Open nlp中使用以下命令:

SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE;
String[] result = tokenizer.tokenize(sentence);


但是我希望opennlp将'#'视为一个单词的字母。因此,“ #blue#”将是一个令牌。

这个怎么做 ?

最佳答案

您只需要创建一个新的Tokenizer对象(实现Tokenizer)。

Tokenizer t = new Tokenizer() {

    @Override
    public Span[] tokenizePos(String arg0) {


    }

    @Override
        public String[] tokenize(String arg0) {


        }
};


然后,将SimpleTokenizer代码复制/粘贴到那些2函数中。

并将“#”与其他字母数字值关联:

if (StringUtil.isWhitespace(c)) {
    charType = CharacterEnum.WHITESPACE;
} else if (Character.isLetter(c) || c=='#') {
    charType = CharacterEnum.ALPHABETIC;
} else if (Character.isDigit(c)) {
    charType = CharacterEnum.NUMERIC;
} else {
    charType = CharacterEnum.OTHER;
}

关于java - 使用Open nlp标记忽略标签的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17147733/

10-10 10:54