0

我尝试创建一个矩阵,为此我想降低文本。为此,我使用此 R 指令:

matrix = create_matrix(tweets[,1], toLower = TRUE, language="english", 
                      removeStopwords=FALSE, removeNumbers=TRUE, 
                      stemWords=TRUE) 

这里的R代码:

library(RTextTools)
library(e1071)

pos_tweets =  rbind(
  c('j AIME la voiture', 'positive'),
  c('cette machine est performante', 'positive'),
  c('je me sens en bonne forme ce matin', 'positive'),
  c('je suis super excitée d aller voir le spectacle de demain', 'positive'),
  c('il est mon meilleur ami', 'positive')
)



neg_tweets = rbind(
  c('je séteste cette voiture', 'negative'),
  c('ce film est horrible', 'negative'),
  c('je suis fatiguée ce matin', 'negative'),
  c('je déteste ce concert', 'negative'),
  c('il n est pas mon ami', 'negative')
)

test_tweets = rbind(
  c('je suis heureuse ce matin', 'negative'),
  c('un bon ami', 'negative'),
  c('je me sens triste', 'positive'),
  c('pas belle cette maison', 'negative'),
  c('mauvaise chanson', 'negative')
)

tweets = rbind(pos_tweets, neg_tweets, test_tweets)

# build dtm
matrix= create_matrix(tweets[,1], toLower = TRUE, language="french", 
                      removeStopwords=FALSE, removeNumbers=TRUE, 
                      stemWords=TRUE) 

我说的问题是矩阵中有大写字母的单词。

你能解释一下为什么我会遇到这个问题吗?

谢谢

4

1 回答 1

3

正如@chateaur 所说,它确实在内部执行 toLower,它只是不会在任意点向您公开管道的内容。RTextTools + tm 对您可以做什么、在哪里、何时以及在您的管道中以什么顺序进行了严格的结构限制。真是令人沮丧。避免那个...

我建议您编写自己的 pipeline,而我最近在研究这个问题时发现的用于 pipeline 的最佳开源包是quanteda。为了说明这一点,它有一个重载的toLower()方法,您可以在字符串、语料库、标记上使用 - 无论您喜欢什么,都没有限制,在停用词之前或之后,标点符号删除和词干。与 RTextTools + tm 不同,它还有许多其他有用的方法可以按照您想要的任意步骤顺序构建您的管道。(您还可以通过查看活跃维护者的数量/比率、提交、问题、修复、发布、在 github、SO、google、代码的清洁度和 API 上的点击率来衡量像 quanteda 这样的包的有用性...) .

在前端使用 RTextTools + tm 有时会很痛苦,而且通常会受到限制。我只是发现了太多的错误、限制、语法怪癖和烦恼——它扼杀了我的工作效率并不断让我发疯。而且它的性能也不是很好。您仍然可以使用 (RTextTools +) tm 构建和操作 DTM(和 TF/TFIDF)矩阵,使用 e1071 进行分类器。

另外:对qdap包的荣誉提及,以在文档/话语级别类似地添加有用的工具。

(PS:R 文本处理包如此分裂真是令人难过......这么多人在交叉目的上工作并疯狂地重新发明轮子......但有时会发生这种情况有几个原因。)

于 2017-03-22T13:33:09.610 回答