如何聚类搜索引擎关键字?

从Google Analytics我有一个(长)关键字列表,人们在搜索引擎中使用这些关键字来查找我的网站。 我想找到’核心关键词’,假设的例子:

java online training learning java scala training training for java online training java learn scala programming 

理想的结果是:’java’,’在线培训’,’培训’,’scala’和’学习’。

困难似乎是检测完整的短语,忽略常用词(for)和处理变化(学习 – 学习)。

是否有可以做到这一点的库(最好是JVM)? 或者我可以自己实现一个合适的算法吗?

这是术语或关键字提取问题。 我做了一个搜索,它出现了Kea ,看起来非常像你想要的。

您可以通过以下算法实现一个天真的解决方案:

  • 使用您想要的短语长度生成文档中的ngrams列表(选择任意短语长度限制,如3或4)
  • 将ngram放入Multiset
  • 按照程度或计数的顺序迭代多集的条目,也许是任意截止

就像你说的那样,这会产生一些关于停用词的问题。 您可以做一些简单的事情,例如使用停用词词典,或者您可以执行诸如术语频率 – 逆文档频率之类的操作 ,它可以帮助您自动识别非常频繁的术语。 KEA会为你做这件事,最好先研究一下。

希望有所帮助!