什么是线程推文的一套好的启发式方法?
Posted
技术标签:
【中文标题】什么是线程推文的一套好的启发式方法?【英文标题】:What's a good set of heuristics for threading tweets? 【发布时间】:2011-04-02 22:21:42 【问题描述】:每个人都知道,如果您想发送电子邮件,请使用Jamie Zawinski's algorithm。但这是一个新世纪,有一个 新的消息服务。
发布的线程状态更新的最佳算法是什么 推特?
我绝对希望它处理的事情:
简单的部分:使用in_reply_to_status_id
,
in_reply_to_user_id
和 in_reply_to_screen_name
。
(顺便说一下,找到这些值的适当文档
本身就很有用!这样的文件不是
显然与来自
here,
例如。)
用于推断“回复”关系的良好启发式
使用@
约定提及用户但不是
明确回复特定消息。这些
“提及”are provided in the "entities" element of
statuses now
如果你要求。这些启发式方法可能会考虑
帐户 (a) 两次状态更新之间的时间,(b) 是否
两个用户之间有后续回复等。
(回复由旧式转发和
附加评论,如mentioned by user85509
below
只是这种回复方式的一个例子。)
发生在两个以上用户之间的对话。
使用给算法的一组推文,或全部 Twitter 上的推文。
...但也许你可以想更多。
【问题讨论】:
【参考方案1】:由于只有一个答案,而且赏金截止日期很快就要到了,我想我应该添加一个基线答案,这样赏金就不会自动授予一个不会增加太多超出问题内容的答案。
显而易见的第一步是获取您的原始推文集并关注所有in_reply_to_status_id
链接以构建许多有向无环图。这些关系您几乎可以 100% 确定。 (即使是原始集合中没有的推文,您也应该关注这些链接,将它们添加到您正在考虑的状态更新集合中。)
除了这个简单的步骤之外,还必须处理“提及”。与电子邮件线程不同,没有什么比主题行更有用的了——这不可避免地很容易出错。我将采取的方法是为状态 ID 之间的每个可能的关系创建一个特征向量,这些关系可能由该推文中的提及表示,然后训练一个分类器来猜测最佳选项,包括“不回复”选项。
要计算出“所有可能的关系”位,首先要考虑提及一个或多个其他用户且不包含in_reply_to_status_id
的每个状态更新。假设这些推文之一的示例是:1
@a @b no it isn't lol RT @c Yes, absolutely. /cc @stephenfry
...您将为此更新与在上周@a
、@b
、@c
和@stephenfry
的时间线中的每个更新之间的关系创建一个特征向量(说)以及该更新和特殊的“无回复”更新之间的一个。然后你必须创建一个特征向量 - 你可以添加任何你想要的东西,但我至少建议添加:
following / followed
比率。
等
等
这些越多越好,因为分类器只会使用那些被证明是有用的。我建议尝试使用random forest 分类器,它在Weka 中很方便地实现。
下一个需要一个训练集。起初这可能很小 - 足以让识别对话的服务正常运行。对于这个基本服务,必须添加一个很好的界面来纠正不匹配或错误链接的更新,以便用户可以纠正它们。使用这些数据可以构建更大的训练集和更准确的分类器。
1...这可能是 Twitter 上典型的话语水平;)
【讨论】:
【参考方案2】:在 Twitter 上,人们经常在他们回复的消息前写上“RT”。
【讨论】:
转发不是回复,而是“转发”。这只是意味着你在重复别人说的话,然后是一个归属。 根据我的经验,它用于两者。人们经常使用“”的格式进行回复。
以上是关于什么是线程推文的一套好的启发式方法?的主要内容,如果未能解决你的问题,请参考以下文章