当使用R中的twitteR包分析#flipkart上的tweet时,大多数tweet都是关于报价的新闻,大约有2-3个句柄。这无助于评估flipkart的整体情绪。我可以在提取tweet的同时排除这些2-3个手柄吗?我需要客户的回应,而不是关于报价的新闻。谢谢
发布于 2016-02-02 11:03:39
这只是一个提示,不是一个完整的解决方案(我不认为这是可行的)。然而,它太长了,不能发表评论。
看看twitter文档,如何搜索,段落查询运算符。如果将-
添加到某个术语中,则将其排除在查询之外。
这可以简单地在搜索查询中转换为twitteR
,如下所示:
searchTwitter("#flipkart -pricetrak", n=10)
你可以尝试排除你的一些条款,但这将不是一个容易的任务。
此外,您不应该这样做,例如#flipkart -@flipkart
,因为大多数客户的评论似乎都是针对用户@flipkart
的,因此您会将它们松开。(搜索查询的术语被解释为tweet的用户或内容。)
最后,您的搜索查询中只有500个字符。
希望它能有所帮助。
更新
根据评论,我建议你可以采取其他一些简单的行动。但恐怕没有“魔法子弹”,你应该利用这些数据,做大量的试验。另外,重要的是要注意,twitteR
库虽然非常有用,但在进行更多“高级”操作时使用它要复杂一些(实际上,在我的经验中,每个twitter库都有点类似,有时您最终需要直接访问Twitter;从某种程度上说,它是有意义的,因为库使普通任务变得非常简单,比如获取tweet,但对于其他任务来说并不一定容易)。
这是一个玩具示例,说明如何访问发送tweet的用户:
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
的tweet,或者从您知道的不是客户的用户列表中筛选。此外,您还可以假设客户通常不是经过验证的用户(有关验证帐户的更多详细信息,请参见这里 ),只需过滤来自他们的tweet。
客户在推特中发送链接将是很奇怪的(当然现在是不可能的)。您可以以类似的方式过滤它们:
for (tweet in tweets) {
text <- as.data.frame(tweet)$text
print(text)
print(length(strsplit(text, "https://")[[1]]))
}
(当然,如果strsplit
的长度为1,则在tweet文本中没有链接)。
通过这种方式,您将过滤一些来自实际客户的tweets,但我认为这将是过滤大多数包含要约或交易的tweet的简单方法(它们都包含一个链接)。
希望它有用。
更新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)
}
https://stackoverflow.com/questions/35129208
复制相似问题