如何聚类搜索引擎关键字?
从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会为你做这件事,最好先研究一下。
希望有所帮助!