【问题标题】:How to separate a sentence into words [duplicate]如何将句子分成单词[重复]
【发布时间】:2017-12-18 22:36:30
【问题描述】:

在 r 中,我目前正在处理对话数据集。目前的数据如下所示:

Mike, "Hello how are you"
Sally, "Good you"

我计划最终为这些数据创建一个词云,并且需要它看起来像这样:

Mike, Hello
Mike, how
Mike, are
Mike, you
Sally, good
Sally, you

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我对 R 并不完全熟悉,所以我不太了解。以前当我只有长字符串并且没有附加名称时,我做了 thing1
  • 您的标题并不能真正代表您正在尝试做的事情。 “如何将句子分成单词”或类似的会更好。

标签: r words sentence


【解决方案1】:

也许像这样使用reshape2::melt?

# Sample data
df <- read.csv(text =
    'Mike, "Hello how are you"
    Sally, "Good you"', header = F)

# Split on words
lst <- strsplit(trimws(as.character(df[, 2])), "\\s");
names(lst) <- trimws(df[, 1]);

# Reshape into long dataframe 
library(reshape2);
df.long <- (melt(lst))[2:1];
#     L1 value
#1  Mike Hello
#2  Mike   how
#3  Mike   are
#4  Mike   you
#5 Sally  Good
#6 Sally   you

说明:在空格 \\s 的第二列中拆分尾随/前导空格修剪 (trimws) 条目并存储在 list 中。从第一列中获取list 条目名称,并使用reshape2::melt 将其重塑为长data.frame。

我把它变成逗号分隔的data.frame 留给你...

【讨论】:

  • 为什么投反对票?这确实提供了一个有效的解决方案,并且应该让 OP 走上正轨。
  • 也许是因为 OP 没有显示足够的尝试证据。也许这是不鼓励支持这种道德规范。
  • @JosephK。行;我同意OP缺乏主动性;这就是为什么我决定给出一个解决方案大纲和解释,而不是一个完整的解决方案。
  • @JosephK。这个问题有一个明确的输入和一个期望的输出,这比 95% 的 R 问题要好,并且足以不将其关闭为没有代表。一些失败的尝试会很好,是的,但这甚至不在问题的下半部分,特别是对于第一个问题。尤其是对于新用户来说,重要的是要教如何提出更好的问题,而不是仅仅对问题投反对票,让那些还不了解的人士气低落。
【解决方案2】:

使用分词器,例如通过tidytext::unnest_tokens:

library(tidyverse)
library(tidytext)

dialogue <- read_csv(
    'Mike, "Hello how are you"
     Sally, "Good you"', 
    col_names = c('speaker', 'sentence')
)

dialogue %>% unnest_tokens(word, sentence)
#> # A tibble: 6 x 2
#>   speaker  word
#>     <chr> <chr>
#> 1    Mike hello
#> 2    Mike   how
#> 3    Mike   are
#> 4    Mike   you
#> 5   Sally  good
#> 6   Sally   you

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多