Python:群集搜索引擎关键字
您好, 我有一个CSV,最多20,000行(我有10万多个不同的网站),每行包含一个引用关键字(即某人在搜索引擎中键入的关键字以查找相关网站),以及多次访问。
我要做的是将这些关键词聚类成“相似含义”的群集,并创建群集的层次结构(按每个群集的总搜索总数的顺序排列)。
一个示例集群 - “女装” - 理想情况下会包含以下几行中的关键字: 女装,1000 女士服装,300 女装,50 女装,6 女装,2
我可以使用类似Python自然语言工具包的东西:http://www.nltk.org/和WordNet,但是,我猜测对于某些网站,引用关键字将是WordNet一无所知的单词/短语。例如,如果网站是名人网站,WordNet不太可能对“Lady Gaga”有任何了解,如果该网站是新闻网站则更糟糕。
所以,我也猜测解决方案必须是一个只使用源数据本身的解决方案。
我的查询与How to cluster search engine keywords?提出的查询非常相似,只是我正在寻找一个可以开始使用Python而不是Java的地方。
我也想知道Google Predict和/或Google Refine是否有用。
无论如何,任何想法/建议都是最受欢迎的,
谢谢, ç
答案 0 :(得分:2)
我非常喜欢Woosh。它是一个纯python搜索引擎,除其他外,提供这种功能。看看吧。
http://packages.python.org/Whoosh/index.html
您正在寻找的功能称为“分面搜索结果”
http://packages.python.org/Whoosh/facets.html
埃尔南
答案 1 :(得分:0)
嗯,我自己也是一个菜鸟。但我认为这样做的方法是nltk和wordnet。(正如你已经说过的那样)
首先删除所有数字和任何特殊字符(基本上清理关键字)
检查基本字符串匹配/子字符串匹配
标记POS标记,(将默认标记符作为名词) 如果它不是名词,那么使用wordnet获取所有同义词同音异义词和异名词并匹配它们。 如果它的名词然后使用一些基本技术,如lowest common substring match或lavenshtein距离,B / K树等。
您可以根据您的误报/否定需求嵌套水平
对于高级集群,您可以使用Python机器学习模块(如PyML,Reverend等),并使用已经给定的数据来训练..就像google's ngram data on LDC