2015-07-14 2 views
2

Я пытаюсь использовать теггер POS для Стэнфорда, чтобы пометить французский текст. Для этого я пользуюсь следующей командой:плохой токенизация в stanford postagger

ID изображения:

cat file.txt | Java -mx10000m -cp 'Стэнфорд-postagger.jar:' edu.stanford.nlp.tagger.maxent.MaxentTagger -модели модели/french.tagger -sentenceDelimiter перевод строки> output.txt

(Существует один предложение на строку.)

Но я заметил, что теги были довольно плохими, и настоящая проблема на самом деле исходит из самой французской токенизации. Я думаю, что токенизация выполняется английским токенизатором.

Так что я попытался только разметить текст на французском языке, делая это:

кошки file.txt | Java -mx10000m -cp 'Стэнфорд-postagger.jar:' edu.stanford.nlp.international.french.process.FrenchTokenizer -sentenceDelimiter новой строки> tokenized.txt

И там французские жетоны хороши.

Как я могу указать теггеру использовать французскую модель для маркировки, но также французский токенизатор одновременно?

+0

Вы Ограниченный повелевать использовать строки, или вы можете написать класс Java для этого? –

+0

Я бы предпочел, чтобы в командной строке использовалось гораздо больше или команда, которую можно вызвать из python. – dhokas

ответ

2

Вы можете использовать флаги -tokenizerFactory и -tokenizerOptions для управления токенизацией. В разделе «Маркировка и тестирование из командной строки» раздела javadoc for MaxentTagger имеется полный список доступных опций.

Я считаю, что следующая команда будет делать то, что вы хотите:

java -mx10000m -cp 'stanford-postagger.jar:' \ 
    edu.stanford.nlp.tagger.maxent.MaxentTagger \ 
    -model models/french.tagger \ 
    -tokenizerFactory 'edu.stanford.nlp.international.french.process.FrenchTokenizer$FrenchTokenizerFactory' \ 
    -sentenceDelimiter newline 
+0

Когда я пытаюсь это сделать, появляется следующее сообщение об ошибке: «Не удалось загрузить фабрику токеновщика», за которым следует «Причиненный: java.lang.NoSuchMethodException: edu.stanford.nlp.international.french.process.FrenchTokenizer.newTokenizerFactory()» – dhokas

+0

Чтение кода, похоже, что документы вводят в заблуждение. и что вам нужно '-tokenizerFactory edu.stanford.nlp.international.french.process.FrenchTokenizer.FrenchTokenizerFactory'. –

+0

Нет, потому что теперь я получаю «java.lang.ClassNotFoundException». На самом деле, просто факт предоставления опции по умолчанию «edu.stanford.nlp. process.PTBTokenizer» генерирует ошибку ... – dhokas

Смежные вопросы