Я пытаюсь идентифицировать и агрегировать синонимы для данного набора данных. См. Примеры данных ниже.Идентификация и группировка синонимов в R
library(tm)
library(SnowballC)
dataset <- c("dad glad accept large admit large accept dad big large big accept big accept dad dad Happy dad accept glad papa dad Happy dad glad dad dad papa admit Happy big accept accept big accept dad Happy admit Happy Happy glad Happy dad accept accept large daddy large accept large large large big daddy accept admit dad admit daddy dad admit dad admit Happy accept accept Happy daddy accept admit")
docs <- Corpus(VectorSource(dataset))
dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
sort(rowSums(m),decreasing=TRUE)
Результат:
accept dad happy admit large big daddy glad papa
15 14 9 8 8 6 4 4 2
Я хотел бы найти синонимы для каждого из приведенных выше слов с использованием пакета WordNet, что я скачал и установил. Например, чтобы получить синоним «принять» я могу сделать:
library(wordnet)
setDict("C:/Program Files (x86)/WordNet/2.1/dict")
filter <- getTermFilter("ExactMatchFilter", "accept", TRUE)
terms <- getIndexTerms("VERB", 1, filter)
getSynonyms(terms[[1]])
Результат:
[1] "accept" "admit" "assume" "bear" "consent" "go for" "have" "live with"
[9] "swallow" "take" "take on" "take over"
Теперь я хотел бы объединить эти два результирующих наборов, так что он группы синонимов в следующем путь. Отметьте наиболее часто встречающиеся слова (ранг 1) для данной группы и групп этих слов позже похоже на это:
id word word_count syn_group rank
1 accept 15 1 1
5 admit 8 1 2
2 dad 14 2 1
8 daddy 4 2 2
9 papa 2 2 3
3 happy 9 3 1
7 glad 4 3 2
4 large 8 4 1
6 big 6 4 2
это, то можно были бы агрегировать как этот
id word word_count
1 accept 15+8
2 dad 14+4+2
3 happy 9+4
4 large 8+6
и конечный результат будет тогда
id word word_count
1 accept 23
2 dad 20
3 large 14
4 happy 13
Я столкнулись несколько вопросов, в том числе получение GetIndexTerms для обхода через слова, являются ли они существительные, глаголы и т.д. Надеюсь, что это все та kes смысл? Любая помощь приветствуется. Спасибо.
FYI: перейдите в Wordnet.princeton.edu и загрузите версию WordNet для своей операционной системы. После его установки вы можете получить код GraveDigger после библиотеки (wordnet). – lawyeR