2015-04-28 3 views
1

Я использую SnowballC для обработки текстового документа, но понимаю, что это слова, такие как «много» и «только», даже если они не должны быть выпущены.SnowballC in R stems «many» and «only»

> library(SnowballC) 
> 
> str <- c("many", "only", "things") 
> str.stemmed <- stemDocument(str) 
> str.stemmed 
[1] "mani" "onli" "thing" 
> 
> dic <- c("many", "only", "online", "things") 
> str.complete <- stemCompletion(str.stemmed, dic) 
> str.complete 
    mani  onli thing 
     "" "online" "things" 

Вы можете видеть, что после того, как вытекающие, «многие» и «только» стал «мани» и «онли», который не может быть завершена назад с stemCompletion позже, так как буквы в «многие» не включая «мани». Обратите внимание, что «onli» завершается до «онлайн» вместо оригинального «только».

Почему? Это способ исправить это?

+0

Следует отметить, что функции обработки текста, которые вы используете, поступают из пакета 'tm'. 'SnowballC' не имеет значения в этом случае, если вы не получите разные результаты, когда библиотека не привязана к пространству имен. –

ответ

2

Вот как работают стеблемеры. У вас есть (маленький) набор правил, которые сокращают большинство слов до чего-то похожего на каноническую форму (стебель), но не совсем. Есть много других угловых случаев, которые вы найдете, поэтому многие на самом деле не решаются называть их угловыми делами, например.

many -> mani 
other -> other 
corner -> corner 
cases -> case 
in -> in 
sentences -> sentenc 

Что вы хотите, это lemmatiser. Взгляните на этот вопрос для более подробного объяснения:

Stemmers vs Lemmatizers

3

Морфологические часто выполняются в виде набора правил из зачистки всех аффиксов - как деривационные и флективного - от слова, оставляя его корень. Лемматизация обычно удаляет только флективные аффиксы. Stemming - более агрессивная версия лемматизации. Учитывая то, что вы хотите, похоже, что вы предпочтете лемматизацию.

Чтобы сравнить два, большинство lemmatizers ограничены несколькими правилами для борьбы с аффиксов к существительных и глаголов в English-- -ED, -s, -ную, например. Есть несколько нерегулярных случаев, с которыми им приходится обращаться, но с некоторыми данными обучения многие, вероятно, охвачены.

Скобы, как ожидается, будут копать глубже. В результате пространство возможных преобразований, которые они могут сделать, больше, так что вы гораздо чаще можете ошибаться.

Чтобы посмотреть, что происходит в ваших данных, давайте рассмотрим особенности.

->onli: почему это произошло? Не совсем уверен в этом; там, наверное, какое-то правило, которое пытается удовлетворить слова как медик -ine и медика -al, суб- мари -ne и мари -ne, томографов - ne и imagi -na-tion.

только ->онли, многие ->мани: Это кажется особенно странным, но, вероятно, более разумным, чем предыдущее правило - особенно в контексте борьбы с глаголами, которые заканчиваются в -ed. Если вы сдерживание слова отказывали, изучал, модифицированный, указанный, вы хотите, чтобы они были эквивалентны их неизменяемой форма отрицают, исследования, изменить, указать , У вас может быть правило, чтобы преобразовать каждый глагол в незавидную форму, но авторы здесь решили сделать корни формами, заканчивающимися -i. Чтобы убедиться, что эти совпадения, -y окончания были преобразованы в -i.

С помощью lemmatizer вы можете получить более предсказуемые результаты. Так как они только удалить словоизменение суффиксов, вы получите только, много, онлайна и вещи, как вы хотели. И хороший штокмер, и lemmatizer могут работать хорошо, но стволовые делают больше материала и, следовательно, имеют больше места для ошибок.