2015-02-27 4 views
0

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

Например, следующие предложения пропускают пробелы в «California.This» и «University, based».

Стэнфордский университет расположен в California.This университета является большой университет, основанный в 1891 году

The Tokenizer возвращается:

{ "Stanford", "Университет", "является", «находится», «in», «California.This», «университет», «есть», «a», «отлично», «университет», «,», «основано», «in», «1891», «.»}

Как наблюдалось, они разбили все жетоны, но «California.This» (я ожидаю иметь три жетона («Калифорния» ».« Это »). Я взглянул на правила токенизации, и я заметил, что регулярное выражение для слов принимает знаки препинания, используемые для конца предложения в слове.

WORD = {БУКВА} ({БУКВА} | {DIGIT}) ({БУКВА} ({БУКВА} [.!?] | {DIGIT})) *

Я снял последнюю часть и перекомпилированный, но токенизатор по-прежнему не изменяет его поведение.

Есть ли у кого-то идеи, как избежать этого нежелательного поведения? Или кто-то может указать мне еще один токенизатор, который хорошо работает с этими типами текстов?

ответ

1

Я предполагаю, что вы имеете в виду файл .flex для токенизатора?

Перед созданием необходимо создать новый код Java из этой спецификации. Используйте задачу сборки flexeverything Ant (см. Наш build spec).


Вы также можете найти Twokenize Полезно. Это автономный токенизатор для твитов. Это часть TweetNLP package группы Ноя Смита в КМУ. (Обратите внимание, что этот код является GPL v2.)