我尝试创建一个矩阵,为此我想要文本。 为此,我使用此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)
我注意到矩阵中有大写字母的单词。
你能解释一下我为什么会遇到这个问题吗?
谢谢
答案 0 :(得分:3)
正如@chateaur所说,它确实在内部执行toLower,它不会在任意点向您公开管道的内容。 RTextTools + tm在您可以执行的操作,管道中的何处,何时以及以何种顺序构建严重的结构限制。这真的令人沮丧。避免......
我建议您编写自己的管道,最近我在调查时发现的最佳开源软件包是quanteda 。 为了说明它有一个重载的toLower()方法,你可以在字符串,语料库,令牌上使用 - 无论你喜欢什么,没有限制,在禁用词之前或之后,删除标点符号和词干。与RTextTools + tm不同,它还有许多其他有用的方法来构建您想要的任意步骤顺序的管道。 (您还可以通过查看活动维护者的数量/速率,提交,问题,修复,发布,github上的命中,SO,谷歌,代码的清洁程度和API来衡量quanteda等软件包的实用性......) 。
在前端使用RTextTools + tm有时会很痛苦,并且经常会受到限制。我只是发现了太多的错误,限制,语法怪癖和烦恼 - 它扼杀了我的生产力并不断地让我疯狂。而且它也不太高效。您仍然可以使用(RTextTools +)tm来构造和操作DTM(和TF / TFIDF)矩阵,并使用e1071作为分类器。
另外:对qdap包提及在文档/话语层面同样添加有用工具的荣誉提名。
(PS:R文本处理软件包如此分散......真是让人感到非常难过......很多人在交叉使用并疯狂地重新发明轮子......但有时这种情况会因多种原因而发生。)< / p>