如标题所述,我只是在寻找算法或解决方案,人们可能会使用这些算法或解决方案来接收 twitter firehose(或其中的一部分)和
a) 一般确定问题 b) 对于一个问题,确定可能相同的问题,并有一定的信心
谢谢!
最佳答案
(A)
我会尝试使用 machine learning 来识别问题和 Bag of Words model .
- 创建一组带标签的推文,并用二进制标记它们中的每一个 标志:有问题或没有问题。
- 从训练集中提取特征。这些功能传统上是文字,但至少在我尝试过的任何时候 - 使用 bi-grams显着改善了结果。 (3 克对我的情况没有帮助)。
- 根据数据构建分类器。我通常会发现 SVM提供比其他分类器更好的性能,但您也可以使用其他分类器 - 例如 Naive Bayes或 KNN (但您可能需要 feature selection 算法)。
- 现在您可以使用分类器对推文进行分类。1
(B)
此问题在 Information-Retrieval 的世界中被提及作为“重复检测”或“近似重复检测”。
您至少可以使用语义解释找到彼此非常相似的问题,正如 Markovitch 和 Gabrilovich 在他们的精彩文章 Wikipedia-based Semantic Interpretation for Natural Language Processing 中所描述的那样.至少,它会帮助您确定两个问题是否在讨论相同的问题(即使不完全相同)。
思路是这样的:
- 使用维基百科构建表示其语义的向量,对于术语
t
,条目vector_t[i]
是术语的tf-idf分数>i
因为它与术语t
共同出现。文章中详细描述了这个想法。阅读前 3-4 页就足以理解它。无需全部阅读。2 - 对于每条推文,构建一个向量,该向量是其项向量的函数。比较两个向量 - 您可以确定两个问题是否在讨论相同的问题。
编辑:
第二个想法是,BoW 模型不太适合这里,因为它忽略了术语的位置。但是,我相信如果您添加 NLP提取特征的处理(例如,对于每个术语,还表示它是前主题还是后主题,这是使用NLP procssing确定的),结合机器学习会产生很好的结果。
(1) 要评估您的分类器,您可以使用 cross-validation ,并检查预期的准确性。
(2) 我知道 Evgeny Gabrilovich 将他们创建的实现算法发布为一个开源项目,只需要寻找它。
关于algorithm - 在 Twitter 上识别重复问题的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12374267/