Найдите основные функции по идентификатору (содержит несколько документов с одинаковым идентификатором) из DTM

Я использую пакет тм.

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

Id       Text
13456    Hi, Good morning
13457    How are you?
13456    May I know who I am speaking to?
13456    Hi, Good evening

Я использовал пакет tm, построил dtm и извлек 5 лучших слов для каждого документа, и это выглядит так:

Id       Term1 Term2 Term3   Term4 Term5
13456    Hi    Good  morning term4 term5
13457    How   are   you     term4 term5
13456    I     Know  may     who   to
13456    Hi    Good  Evening term4 term5

Но требуемый результат:

Id      Term1 Term2 Term3 Term4   Term5
13456   Hi    Good  I     morning evening
13457   How   are   you   term4   term5

Я не смог найти никаких предыдущих вопросов, опубликованных по этому поводу. Заранее спасибо.


person Bhavya    schedule 20.11.2017    source источник
comment
Не могли бы вы явно указать функцию, которую вы использовали (чтобы иметь свой dtm), чтобы иметь возможность попробовать?   -  person denis    schedule 20.11.2017


Ответы (1)


Проблема, с которой вы столкнулись, связана с тем, что каждая строка ваших данных рассматривается как отдельный документ. Следовательно, вам необходимо aggregate ваши данные с помощью «d», прежде чем подавать их в процесс создания dtm.

Ниже показано и показано, как использовать aggregate в базе R. Если у вас огромное количество документов, это можно сделать более эффективно, например, с помощью пакета data.table, на который вы можете взглянуть. Однако для простоты я использую базу R. (Я использовал собственные примерные данные, в следующий раз, пожалуйста, используйте dput или предоставьте код, который генерирует ваши данные, чтобы другим было легче читать ваши примерные данные.)

df <- data.frame(id = c(1, 1, 2) , text = c("text1.", "text2.", "text3."))
# id  text
# 1  1 text1.
# 2  1 text2.
# 3  2 text3.
df <- aggregate(df$text, by = list(df$id), FUN = function(x) paste(x, collapse = " "))
# Group.1            x
# 1       1 text1. text2.
# 2       2        text3.
colnames(df) <- c("id", "text")
person Manuel Bickel    schedule 20.11.2017