Исключение базового слова вместо корневого слова в 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.
Ответы
Ответ 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