在使用R中的twitteR软件包分析#flipkart上的推文时,大多数推文都是关于优惠的新闻,大约有2-3个句柄。这无助于评估关于flipkart的整体情绪。我可以在提取推文时排除这2-3个句柄吗?我需要客户回复,而不是新闻。 感谢
答案 0 :(得分:1)
这只是一个提示,而不是一个完整的解决方案(我认为这不可行)。然而,评论的时间太长了。
查看twitter api文档,如何搜索,query operators段。如果您将-
添加到术语中,则会将其从查询中排除。
只需在您的搜索查询中转换为twitteR
,如下所示:
searchTwitter("#flipkart -pricetrak", n=10)
您可以尝试排除某些条款,但这不是一件容易的事。
此外,你不应该这样做,例如#flipkart -@flipkart
,因为大多数客户的评论似乎都是针对用户@flipkart
的,并且您会将其丢失。 (搜索查询的条款被解释为用户或推文的内容。)
最后一点,您的搜索查询中最多只能有500个字符。
希望它有所帮助。
<强>更新强>
根据评论,我提出了一些你可以采取的其他简单行动。但我担心没有“魔弹”,你应该玩数据并进行大量的试验。另外,重要的是要注意twitteR
库,虽然它非常有用,但在做更多“高级”的东西时使用起来有点棘手(实际上每个twitter库都有点像我的经验,并且有时你最终需要直接访问Twitter REST API;在某种程度上它是有道理的,因为库使得常见任务非常简单,比如获取推文,但对其他任务来说不一定容易)。
这是一个玩具示例,说明如何访问发送推文的用户:
tweets = searchTwitter("#flipkart -pricetrak", n=10)
for (tweet in tweets) {
screenName <- as.data.frame(tweet)$screenName
print(screenName)
tuser <- getUser(screenName)
verified <- as.data.frame(tuser)$verified
print(verified)
}
通过这种方式,您可以过滤来自@flipkart
的推文,或者来自您知道不是客户的用户列表。此外,您可以假设客户通常不是经过验证的用户(有关已验证帐户的详细信息,请参阅here),只需过滤推文即可。
客户在其推文中发送链接会很奇怪(当然现在不可能)。您可以用类似的方式过滤它们:
for (tweet in tweets) {
text <- as.data.frame(tweet)$text
print(text)
print(length(strsplit(text, "https://")[[1]]))
}
(当然,如果strsplit
的长度为1,则推文文本中没有链接。)
通过这种方式,您将过滤一些实际来自真实客户的推文,但我认为这可以轻松过滤包含优惠或交易的大部分推文(所有包括链接)。
希望它有用。
更新2
评论后,代码的改进版本
data <- NULL
ads <- NULL
for (tweet in tweets) {
tweet_df <- as.data.frame(tweet)
screenName <- tweet_df$screenName
tuser <- getUser(screenName)
verified <- as.data.frame(tuser)$verified
print(verified)
if (verified == TRUE) {
ads <- rbind(ads, tweet_df)
} else {
data <- rbind(data, tweet_df)
}
}
if (! is.null(ads)) {
write.table(ads, file = "ads.csv", append=TRUE, col.names=FALSE)
}
if (! is.null(data)) {
write.table(data, file = "data.csv", append=TRUE, col.names=FALSE)
}