通过DTM查找Id(包含具有相同ID的多个文档)的主要功能

时间:2017-11-20 09:38:16

标签: r text-mining tm term-document-matrix

我正在使用包tm。

我有一个包含2列的数据框,第一列是ID,seocnd列包含文本。数据框如下所示。

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

我找不到任何先前的问题。 在此先感谢。

1 个答案:

答案 0 :(得分:0)

您遇到的问题源于这样一个事实,即您的每一行数据都被视为单独的文档。因此,在将数据提供给生成dtm的过程之前,您需要通过“dd”aggregate数据。

以下显示和如何在基础R中使用aggregate的示例。如果您有大量文档,则可以更有效地完成此操作,例如,使用包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")