Подтвердить что ты не робот

Исключение базового слова вместо корневого слова в R

Есть ли способ получить базовое слово вместо корневого слова при использовании NLP в R?

код:

> #Loading libraries
> library(tm)
> library(slam)
> 
> #Vector
> Vec=c("happyness happies happys","sky skies")
> 
> #Creating Corpus
> Txt=Corpus(VectorSource(Vec))
> 
> #Stemming
> Txt=tm_map(Txt, stemDocument)
> 
> #Checking result
> inspect(Txt)
A corpus with 2 text documents

The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
  create_date creator 
Available variables in the data frame are:
  MetaID 

[[1]]
happi happi happi

[[2]]
sky sky

> 

Могу ли я получить базовое слово "happy" (базовое слово) вместо "happi" (корневое слово) для "happyness happies happys", используя R.

4b9b3361

Ответ 1

Вероятно, вы ищете стеблемера. Вот некоторые из разработчиков Просмотр задачи CRAN: обработка естественного языка:

  • RWeka - это интерфейс для Weka, который представляет собой набор алгоритмов машинного обучения для задач интеллектуального анализа данных, написанных на Java. Особенно полезной в контексте обработки естественного языка является его функциональность для токенизации и генерации.

  • Snowball предоставляет стволовые сноуборды, которые содержат стволовых Портер и несколько других стеблемеров для разных языков. Подробнее см. Веб-страницу Snowball.

  • Rstem является альтернативным интерфейсом к версии C алгоритма сокращения слова Porter.

Ответ 2

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

Английский язык претерпел неожиданные морфологические сюрпризы, которые затронут как вероятностные, так и основанные на правилах модели. Вот некоторые примеры:

  • Удаление префикса для удаления суффикса -able, как и в обитаемом.
  • Изменение категории слова, как в существительном велосипеде, возникающем из-за прекращения велосипедного глагола (может влиять на правила, основанные на категориях).
  • Слова с отрицательными значениями не могут принимать отрицательные префиксы (вы можете иметь нечеткое, но не безобразное).
  • Два слова как составное, как в "драйвере грузовика" (вы будете относиться к ним как к одному слову, когда начинаете).

У английского языка также есть проблема с I-умлаутом, где слова, такие как мужчины, гуси, ноги, лучшие и множество других слов (все с "е-подобным звуком" ) не могут быть легко устранены. Также могут быть проблемы с внешними заимствованными словами, такими как автомат.

Превосходная форма является хорошим примером исключений:

лучший → хороший

старший → старый

Лемматизатор будет учитывать такие исключения, но будет медленнее. Вы можете ознакомиться с правилами Porter stemmer, чтобы получить представление о том, что вам нужно, или просто использовать его пакет SnowballC R.

Ответ 3

stemCompletion можно использовать здесь. Это не лучший, но управляемый.

Stemm = tm_map(Txt, stemCompletion, dictionary=Txtt)
inspect(Stemm)

A corpus with 2 text documents

The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
  create_date creator 
Available variables in the data frame are:
  MetaID 

[[1]]
happyness happies happies

[[2]]
sky sky

Ответ 4

Когда мне нужно было сделать что-то подобное, я записал свой список слов в текстовом файле и подал его на английский веб-инструмент проекта Lexicon Project, затем проанализировал результат обратно на R. Немного неуклюже, но много хорошие данные доступны от ELP. Для вашего использования, проверьте ELP MorphSP. Для счастья он дает {happy} > ness >

http://elexicon.wustl.edu/query14/query14.asp