Java 如何对搜索引擎关键词进行聚类?

Java 如何对搜索引擎关键词进行聚类?,java,cluster-analysis,keyword,Java,Cluster Analysis,Keyword,从Google Analytics中,我有一个(很长)的关键词列表,人们可以在搜索引擎中找到我的网站。我想找到“核心关键词”,假设示例: java online training learning java scala training training for java online training java learn scala programming 理想的结果是:“java”、“在线培训”、“培训”、“scala”和“学习” 困难似乎在于检测完整的短语,忽略常用词(for)和处理变

从Google Analytics中,我有一个(很长)的关键词列表,人们可以在搜索引擎中找到我的网站。我想找到“核心关键词”,假设示例:

java online training
learning java
scala training
training for java
online training java
learn scala programming
理想的结果是:“java”、“在线培训”、“培训”、“scala”和“学习”

困难似乎在于检测完整的短语,忽略常用词(for)和处理变体(learn-learning)


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

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

您可以通过以下算法实现简单的解决方案:

  • 生成文档中具有所需短语长度的NGRAM列表(选择任意短语长度限制,如3或4)
  • 将ngram放入
  • 按次数或计数的顺序迭代多重集的条目,可能使用任意截止
正如你所说,这将有一个问题,停止字。你可以做一些简单的事情,比如有一本停止词词典,或者你可以做一些可以帮助你自动识别非常频繁的词的事情。KEA会帮你做的,最好先调查一下


希望有帮助

我认为你需要花更多的时间来说明你的要求。即使在你有限的例子中,我也不知道为什么你不认为“编程”是“核心”。如果你用Google的结果来寻找好的关键词呢?Scala的结果会比for->better word的结果要少。您可以搜索所有可能的短语,并记录每个短语的结果数,然后找到存在好短语的范围。(这只是一个快速的想法,所以我不会把它作为一个答案)