Группировка похожих текстов в R - PullRequest
0 голосов
/ 29 июня 2018

Я получил данные о назначении сотрудников, имеющие столько уникальных значений. Я хочу объединить воедино многие формы одного обозначения, такие как «Старший менеджер», «Старший менеджер», «Старший менеджер», «Старший менеджер» и т. Д.). Кроме того, эти данные также содержат опечатки.

Какая будет лучшая техника для объединения многих обозначений в одно с помощью R.

Является ли кластеризация лучшим способом решения этой проблемы, или может какой-то другой метод поможет лучше решить мою проблему.

Я пробовал «евклидово расстояние» и k-средства, но ни один из них не дал удовлетворительных результатов.

library(tm)
library(data.table)
library(SparseM)
library(cluster)
    data <- readLines('RDATA.txt')
    head(data)

enter image description here

        data <- data[1:50]
        source <- VectorSource(data)
        corpus <- Corpus(source)
        corpus <- tm_map(corpus, content_transformer(tolower))
        corpus <- tm_map(corpus, removeNumbers)
        corpus <- tm_map(corpus, removePunctuation)
        corpus <- tm_map(corpus, stripWhitespace)
        corpus <- tm_map(corpus, removeWords, stopwords('english'))
    dtm = DocumentTermMatrix(corpus,
                             control = list(
                               wordLengths=c(4, 15),

                             ))
    m  <- as.matrix(dtm)
    distMatrix <- dist(m, method="euclidean")
    groups <- hclust(distMatrix,method="ward.D" )
    groups2 <-cutree(groups, k=10)
    clus_data <-cbind(data,groups2)
    clus_data

1 Ответ

0 голосов
/ 30 июня 2018

Это не может работать таким образом.

Просто рассмотрите "собака", "туман". Эти слова похожи, но вы не хотите, чтобы они были сгруппированы. Это не просто опечатка.

Из-за этого вы не можете использовать неконтролируемый метод, такой как кластеризация. Вам нужно что-то обученное на языке , типичные орфографические ошибки и, возможно, фонетику.

...