【问题标题】:Implementing N-grams in my corpus, Quanteda Error在我的语料库中实现 N-gram,Quanteda Error
【发布时间】:2016-04-14 06:25:07
【问题描述】:

我正在尝试在我的 R 语料库上实现 quanteda,但我得到:

Error in data.frame(texts = x, row.names = names(x), check.rows = TRUE,  : 
  duplicate row.names: character(0)

我对此没有太多经验。这是数据集的下载:https://www.dropbox.com/s/ho5tm8lyv06jgxi/TwitterSelfDriveShrink.csv?dl=0

代码如下:

tweets = read.csv("TwitterSelfDriveShrink.csv", stringsAsFactors=FALSE)
corpus = Corpus(VectorSource(tweets$Tweet))
corpus = tm_map(corpus, tolower)
corpus = tm_map(corpus, PlainTextDocument)
corpus <- tm_map(corpus, removePunctuation)
corpus = tm_map(corpus, removeWords, c(stopwords("english")))
corpus = tm_map(corpus, stemDocument)

quanteda.corpus <- corpus(corpus)

【问题讨论】:

  • 如果您提供可重现的示例,您将立即扩大可能的回答者池。此外,一旦得到答复,它只会使您受益。通过概括问题,您可以帮助未来的您和其他人。
  • 已更新下载链接,希望对您有所帮助。
  • @gamelanguage,在你的方法中使用 tm 得到了同样的错误,但你不需要 tm,只需要 quanteda 和 stringsAsFactors = FALSE。

标签: r text analytics n-gram quanteda


【解决方案1】:

您正在使用 tm 进行的处理正在为 tm 准备一个对象,而 quanteda 不知道如何处理它...... quanteda 自己完成所有这些步骤,帮助(“dfm”),可以从选项中可以看出。

如果您尝试以下方法,您可以继续前进:

dfm(tweets$Tweet, verbose = TRUE, toLower= TRUE, removeNumbers = TRUE, removePunct = TRUE,removeTwitter = TRUE, language = "english", ignoredFeatures=stopwords("english"), stem=TRUE)

从字符向量创建 dfm ... ...小写 ...标记化 ... 索引文档:6,943 个文档 ... 索引功能:15,164 种功能类型 ...从提供的 174 个(全局)特征类型中删除了 161 个特征 ... 词干提取特征(英文),修剪了 2175 个特征变体 ...创建了一个 6943 x 12828 稀疏 dfm ... 完全的。 经过时间:0.756 秒。 高温

【讨论】:

    【解决方案2】:

    不需要从 tm 包开始,甚至根本不需要使用 read.csv() - 这就是 quanteda 配套包 readtext 是为了。

    所以要读入数据,你可以将readtext::readtext()创建的对象直接发送到语料库构造函数:

    myCorpus <- corpus(readtext("~/Downloads/TwitterSelfDriveShrink.csv", text_field = "Tweet"))
    summary(myCorpus, 5)
    ## Corpus consisting of 6943 documents, showing 5 documents.
    ## 
    ## Text Types Tokens Sentences Sentiment Sentiment_Confidence
    ## text1    19     21         1         2               0.7579
    ## text2    18     20         2         2               0.8775
    ## text3    23     24         1        -1               0.6805
    ## text5    17     19         2         0               1.0000
    ## text4    18     19         1        -1               0.8820
    ## 
    ## Source:  /Users/kbenoit/Dropbox/GitHub/quanteda/* on x86_64 by kbenoit
    ## Created: Thu Apr 14 09:22:11 2016
    ## Notes: 
    

    从那里,您可以直接在 dfm() 调用中执行所有预处理词干,包括选择 ngram:

    # just unigrams
    dfm1 <- dfm(myCorpus, stem = TRUE, remove = stopwords("english"))
    ## Creating a dfm from a corpus ...
    ## ... lowercasing
    ## ... tokenizing
    ## ... indexing documents: 6,943 documents
    ## ... indexing features: 15,577 feature types
    ## ... removed 161 features, from 174 supplied (glob) feature types
    ## ... stemming features (English), trimmed 2174 feature variants
    ## ... created a 6943 x 13242 sparse dfm
    ## ... complete. 
    ## Elapsed time: 0.662 seconds.
    
    # just bigrams
    dfm2 <- dfm(myCorpus, stem = TRUE, remove = stopwords("english"), ngrams = 2)
    ## Creating a dfm from a corpus ...
    ## ... lowercasing
    ## ... tokenizing
    ## ... indexing documents: 6,943 documents
    ## ... indexing features: 52,433 feature types
    ## ... removed 24,002 features, from 174 supplied (glob) feature types
    ## ... stemming features (English), trimmed 572 feature variants
    ## ... created a 6943 x 27859 sparse dfm
    ## ... complete. 
    ## Elapsed time: 1.419 seconds.
    

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多