从 Google Analytics 中,我有一个(长)关键字列表,人们在搜索引擎中使用这些关键字来查找我的网站。我想找到“核心关键词”,假设的例子:
java online training
learning java
scala training
training for java
online training java
learn scala programming
理想的结果是:“java”、“在线训练”、“训练”、“scala”和“学习”。
困难似乎在于检测完整的短语、忽略常用词(for)和处理变体(学习-学习)。
有没有一个库可以做到这一点(最好是 JVM)?或者有一个合适的算法我可以自己实现吗?
这是一个术语或关键词提取问题。我进行了搜索,结果出现了Kea http://current.com/1vi9m4c,这看起来正是您想要的。
您可以通过以下算法实现简单的解决方案:
- 在文档中生成具有所需短语长度的 ngram 列表(选择任意短语长度限制,例如 3 或 4)
- 将 ngram 放入Multiset http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multiset.html
- 按照程度或计数的顺序迭代多重集的条目,也许可以使用任意截止值
就像你说的,这会有一个停用词的问题。您可以做一些简单的事情,例如拥有一本停用词词典,或者您可以做类似的事情词频-逆文档频率 http://en.wikipedia.org/wiki/Tf%E2%80%93idf它可以帮助您自动识别非常频繁的术语。 KEA 会为您做这件事,最好先调查一下。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)