与Twitter趋势类似的关键字/短语趋势搜索算法

时间:2012-02-04 18:46:56

标签: twitter nlp

想要建立一个可以扫描文本句子(用英语编写)并根据文本中出现的大多数单词或短语构建关键词排名的工具。

这与Twitter发现的Twitter趋势非常类似,并且会在推文中报告前10个单词。

我已经确定了算法中的高级步骤,如下所示

  1. 扫描文本并删除所有常见的常用词(例如,“the”,“is”,“are”,“what”,“at”等。)
  2. 将剩余的单词添加到散列图中。如果该单词已经在地图中,则增加其计数。
  3. 要获得前10个单词,请遍历hashmap并查找前10个计数。
  4. 第2步和第3步很简单,但我不知道在步骤1中如何检测文本中的重要单词并将它们与常用单词(介词,连词等)隔离开来

    另外,如果我想跟踪短语可能是什么方法? 例如,如果我有一个文字说“这种蜂蜜非常好” 我可能想跟踪“蜂蜜”和“好”,但我可能还想跟踪“非常好”或“蜂蜜非常好”的短语

    任何建议都将不胜感激。

    提前致谢

3 个答案:

答案 0 :(得分:2)

为了检测短语,我建议使用chunker。您可以使用NLP工具提供的工具,例如OpenNLPStanford CoreNLP

注意

  • 蜂蜜非常好不是一句话。这是条款。 非常好是一个短语。
  • 在信息检索系统中,这些常用词称为Stop Words

答案 1 :(得分:1)

实际上,您的步骤1与步骤3非常相似,因为您可能想要首先构成英语中最常见词汇的绝对数据库。这样的列表可以在互联网上轻松获得(维基百科甚至有一篇引用100 most common words in the English language的文章。)您可以将这些单词存储在散列图中,并且在扫描文本内容时只需忽略常用标记。

如果您不相信维基百科和已有的常用词汇列表,您可以构建自己的数据库。为此,只需扫描数以千计的推文(越多越好)并制作自己的频率表。

你正面临一个类似n-gram的问题。

不要重新发明轮子。您似乎想要做的事情已经完成了数千次,只需使用现有的库或代码片段(查看n-gram维基百科页面的外部链接部分。)

答案 2 :(得分:0)

查看NLTK库。它的代码排在第一和第二位:

1可以使用停用词或词干分析器删除常用词

2,3使用FreqDist

可以完成最常用的单词

其次,您可以使用Stanford NLP中的工具来跟踪您的文字