Я пытаюсь определить и агрегировать синонимы для данного набора данных. См. примеры данных ниже.
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 для циклического перебора слов, независимо от того, являются ли они существительными, глаголами и т. д. Надеюсь, все это имеет смысл? Любая помощь приветствуется. Спасибо.