Классификация на основе списка слов R - PullRequest
0 голосов
/ 07 февраля 2019

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

"Это пример текста, который я хочу классифицировать на основе слов, которые сопоставляются из списка. Это будет примерно 2-3 предложения. Word4, word5, text, text, text"

Topic 1     Topic 2     Topic (X)
word1       word4       word(a)
word2       word5       word(b)
word3       word6       word(c)

Учитывая, что этот текст соответствует словам в теме 2, я хочу назначить новый столбец с этой меткой.Предпочитается, если это можно сделать с помощью пакетов "tidy-verse".

1 Ответ

0 голосов
/ 07 февраля 2019

Учитывая предложение в виде строки и темы во фрейме данных, вы можете сделать что-то вроде этого

input<- c("This is an example of text that I want to classify based on the words that are matched from a list. This would be about 2 - 3 sentences long. word4, word5, text, text, text")
df <- data.frame(Topic1 = c("word1", "word2", "word3"),Topic2 = c("word4", "word5", "word6"))

## This splits on space and punctation (only , and .)
input<-unlist(strsplit(input, " |,|\\."))

newcol <- paste(names(df)[apply(df,2, function(x) sum(input %in% x) > 0)], collapse=", ")

Учитывая, что я не уверен в фрейме данных, вы тоже хотите добавить это, я сделал векторnewcol.

Если у вас был фрейм данных с длинными предложениями, вы можете использовать аналогичный подход.

inputdf<- data.frame(title=c("This is an example of text that I want to classify based on the words that are matched from a list. This would be about 2 - 3 sentences long. word4, word5, text, text, text", "word2", "word3, word4"))
input <- strsplit(as.character(inputdf$title), " |,|\\.")

inputdf$newcolmn <-unlist(lapply(input, function(x) paste(names(df)[apply(df,2, function(y) sum(x %in% y)>0)], collapse = ", ")))
...