【问题标题】:Text Mining - Splitting Texts Into Individual Observations文本挖掘 - 将文本拆分为单独的观察
【发布时间】:2018-01-25 02:54:48
【问题描述】:

我有一个唯一 ID 的数据集和每个 ID 的一个句子。我想按单词分解句子并删除停用词以清理数据以进行进一步分析。

Example of dataset: 
ID  Sentence
1  The quick brown fox 
2  Feel free to be

Breaking up sentence: 
ID  Word 
1  The 
1  quick 
1  brown 
1  fox 
2  Feel 
2  free 
2  to 
2  be 

Removing the stopwords: 
ID  Word
1  quick 
1  brown 
1  fox 
2  Feel 
2  free

我已经在数据框中拥有 ID 和句子。什么是分解文本的合适功能,包括在每个单词之后删除标点符号(如果有的话),然后删除带有停用词的行。

【问题讨论】:

  • 看看this question。我认为这可以帮助你。你需要学习如何使用unnest_tokens()
  • 我已经尝试过该功能,但遇到了一些困难。以下是我面临的一些错误。错误:无法将 NULL 转换为 quosure,typeof(x) 中的错误:找不到对象“word”,check_input(x) 中的错误:输入必须是任意长度的字符向量或字符向量列表,每个长度为 1。
  • 我刚刚给你留下了一个演示。我没有你的实际数据。所以我真的不能给你比我写的更多的东西。更改代码中的任何部分,看看你能做什么。

标签: r text-mining data-cleaning


【解决方案1】:

使用tidytext 包,您可以执行以下操作。包有停用词。您需要调用数据。然后,将unnest_tokens() 应用于文本列。您需要指定两个名称。一个用于目标列,另一个用于输出中的新列。一旦你梳理了句子,你就可以对数据进行子集化。这里我在dplyr包中使用了filter()

library(dplyr)
library(tidytext)

foo <- data.frame(ID = c(1, 2),
                  Sentence = c("The quick brown fox", "Feel free to be"),
                  stringsAsFactors = FALSE)

data(stop_words)

unnest_tokens(foo, input = Sentence, output = word) %>%
filter(!word %in% stop_words$word)

  ID  word
1  1 quick
2  1 brown
3  1   fox
4  2  feel
5  2  free

【讨论】:

  • 哇停用词是数据?从来不知道。你介意我用这个包更新我的解决方案吗?
  • tm 包中也有停用词。您肯定不想手动指定所有停用词,是吗?
  • 确实如此。以前从来没有遇到过这个。但现在我已经看到了。需要更多地了解这一点。非常感谢
  • @Onyambu 我很高兴你今天发现了一些新东西。 :)
  • @xyn 很高兴为您提供帮助。
【解决方案2】:
  A=read.table(text="ID  Sentence
    1  'The quick brown fox' 
    2  'Feel free to be'",h=T,stringsAsFactors=F)


(dat=rev(stack(setNames(strsplit(A$Sentence," "),1:2))))

  ind values
1   1    The
2   1  quick
3   1  brown
4   1    fox
5   2   Feel
6   2   free
7   2     to
8   2     be


dat[-grep("The|to|be",dat$values),]
  ind values
2   1  quick
3   1  brown
4   1    fox
5   2   Feel
6   2   free

或者你可以这样做:

 dat[!dat$values%in%stop_words$word,TRUE),]

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 2014-05-18
    • 2019-05-05
    • 2013-02-09
    • 1970-01-01
    • 2017-06-04
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多