在Twitter上识别重复问题的方法?

时间:2012-09-11 16:42:00

标签: algorithm twitter duplicates

正如标题中所述,我只是在寻找可能用于获取twitter firehose(或其中一部分)的算法或解决方案,并且

a)确定一般问题 b)对于一个问题,找出可能具有一定程度置信度的相同问题

谢谢!

1 个答案:

答案 0 :(得分:3)

<强>(A)

我会尝试使用machine learningBag of Words model来确定问题。

  1. 创建一组带标签的twits,并用二进制标记每个twits flag:问题还是不问题。
  2. 从训练集中提取要素。这些功能传统上是单词,但至少在我尝试过的时候 - 使用bi-grams显着改善了结果。 (3克对我的病例没有帮助。)
  3. 根据数据构建分类器。我经常发现SVM提供了比其他分类器更好的性能,但您也可以使用其他分类器 - 例如Naive BayesKNN(但您可能需要feature selection算法这些)。
  4. 现在,您可以使用分类器对推文进行分类。 1
  5. <强>(B)

    此问题在Information-Retrieval的世界中被称为“重复检测”或“近似重复检测”。
    你至少可以使用语义解释找到彼此非常相似的问题,正如Markovitch和Gabrilovich在其精彩的文章Wikipedia-based Semantic Interpretation for Natural Language Processing中所描述的那样。至少,它将帮助您确定两个问题是否正在讨论相同的问题(即使不相同)。

    这个想法是这样的:

    1. 使用维基百科构建代表其语义的向量,对于术语t,条目vector_t[i]是术语i的tf-idf分数,因为它与其共同出现术语t。该想法在文章中有详细描述。阅读3-4页首页就足以理解它。无需全部阅读。 2
    2. 对于每个推文,构造一个向量,该向量是其项的向量的函数。比较两个向量 - 您可以确定两个问题是否正在讨论相同的问题。
    3. 修改

      第二个想法,BoW模型不适合这里,因为它忽略了术语的位置。但是,我相信如果您为提取功能添加NLP处理(例如,对于每个术语,也表示它是预主题还是后主题,并且这是使用NLP procssing确定的),与机器学习相结合会产生很好的效果。


      (1)要评估您的分类器,您可以使用cross-validation,并检查预期的准确性。
      (2)我知道Evgeny Gabrilovich发布了他们作为开源项目创建的实现算法,只需要查找它。