2014-11-17 3 views
1

Когда я пытаюсь использовать эти трубы последовательно, я получаю ошибку:В MALLET Java API, почему канал Input2CharSequence не подается в канал CharSequenceLowercase()?

Исключение в потоке «основной» java.lang.IllegalArgumentException: CharSequenceLowercase ожидает строку, нашел класс java.lang.StringBuffer

I не видны какие-либо трубы, доступные в MALLET, чтобы исправить это. Но мне кажется, CharSequenceLowercase() должен быть в состоянии принять в CharSequence ...

ответ

0

Комментарий, что линия, а затем вызвать

pipeList.add(new TokenSequenceLowercase()); 

, снижающих случаи лексем. Похоже, что канал CharSequenceLowerCase не может принимать StringBuffer. если вы посмотрите на его код, он принимает только строку.

+0

Да, я закончил тем, что сделал следующее: 'pipeList.add (новый Input2CharSequence (« UTF-8 »)); pipeList.add (новый CharSequence2TokenSequence (Pattern.compile ("\\ p {L} [\\ p {L} \\ p {P}] + \\ p {L}"))); pipeList.add (новый TokenSequenceLowercase()); ' , потому что у CharSequence2TokenSequence, похоже, нет такой же проблемы, как CharSequenceLowercase. Мне все еще кажется, что обе эти трубы должны принимать один и тот же ввод, основываясь на соглашениях об именах, но я думаю, что это не так. – pjshap

+0

Правда, это странно ... –