Twitter的趋势主题通常不仅仅包含一个词。但对于组合术语,通常有不同的拼写方式,例如:
“混血王子”/“混血王子”
要查找提及趋势主题的所有更新,您需要所有拼写方式。 Twitter这样做:
您在左侧有主题名称,在右侧有不同的拼写方式。你认为这是手动还是自动完成的?是否可以自动执行此操作?如果是的话:怎么样?
我希望你能帮助我。提前致谢!
“anderstornvig”提到了Levenshtein /编辑距离,这是一个好主意但不太合适,因为某些排列比其他排列更重要。问题似乎是,当我们确定哪些差异是“重要的”而哪些差异是“微不足道的”时,我们会使用大量特定领域的知识。例如,我们知道“混血王子”中的连字符非常重要,但“Firefox 3”中的数字非常重要。
因此,您可以考虑自定义像Levenshtein这样的简单指标。添加参数,您可以自定义哪些差异很重要,哪些类型不重要。
特别是,Levenshtein计算将一个字符串转换为另一个字符串所需的“编辑”(即插入,删除和替换)的数量。实际上,它对每个编辑加权相同。您可以编写一个实现,对不同的编辑进行加权。例如,将“ - ”改为“”应该具有非常低的权重(表示不重要)。当数字单独时,将“3”改为“2”应该具有非常高的权重(表示高重要性)。
通过参数化计算,您可以创建一个不断改进算法的途径。构建初始配置并在某些测试数据上运行它。找到度量标准较弱的地方 - 例如,它合并了您认为应该分开的两个术语 - 并修改参数化直到您满意为止。
这样,您就可以使用特定于域的知识来训练算法。
最有可能的是,他们有一些自动系统可能会提出合并的候选人,然后人类最终选择将它们结合起来。可能会有一些它们自动组合。
你真正需要一个人进入的地方是有共同的绰号。像迈克尔杰克逊,MJ,迈克尔等,或MacDonalds,McD,Micky-D等等。然后用技术你有Visual Studio,VS2008,VS等等或StackOverflow,SO等等。然后是C#,C-Sharp, C#.NET都是一样的,但C和C ++是不同的。
所以它需要是一个组合。它可能依赖于已知变体和基于先前分析或其他来源的组合的数据库,但该数据库将由编辑定期维护。
假设趋势主题是通过计算生成的,那么在Twitter上执行它的确切算法将难以猜测。它很可能是高度机密和专利(对于专利算法可能听起来很可怕)。
虽然我认为他们使用某种自然语言算法,但我觉得这是合情合理的。根据具体情况,它们通常很难以计算方式执行,并且只会在某种程度上执行您想要的操作。
关于这个主题的一个明显有用的阅读来自wiki:
祝好运。
我记得当MJ去世时,Twitter手动回去并修正主题以指向他死亡的推文。这些天要求计算机自动做这样的事情会有很多,尽管它可以松散地完成。