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

ste*_*nos 5 java cluster-analysis keyword

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

java online training
learning java
scala training
training for java
online training java
learn scala programming
Run Code Online (Sandbox Code Playgroud)

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

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

是否有可以执行该操作的库(最好是JVM)?或者我可以自己实现一个合适的算法吗?

sjr*_*sjr 3

这是一个术语或关键词提取问题。我进行了搜索,结果找到了Kea,这看起来正是你想要的。

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

  • 在文档中生成具有所需短语长度的 ngram 列表(选择任意短语长度限制,例如 3 或 4)
  • 将 ngram 放入Multiset中
  • 按照程度或计数的顺序迭代多重集的条目,也许可以使用任意截止值

就像你说的,这会有一个停用词的问题。您可以做一些简单的事情,例如拥有一个停用词词典,或者您可以做一些事情,例如术语频率-逆文档频率,它可以帮助您自动识别非常频繁的术语。KEA 会为您做这件事,最好先调查一下。

希望有帮助!