2011-03-28 53 views
5

的Python:聚类搜索引擎关键词的Python:聚类搜索引擎关键词

嗨, 我有一个CSV,长达20000行(我有10万以上的不同的网站),包含关键字指每行(即某个关键字有人键入到搜索引擎中以查找相关网站)以及多次访问。

我正在做的是将这些关键字聚类为“相似含义”的聚类,并创建聚类层次结构(按每个聚类总搜索次数进行排列)。

一个例子簇 - “妇女服装” - 将理想地包含关键字沿着这些路线: 妇女服装,1000个 女装,300 妇女衣服,50 女士服装,6名 妇女穿,2

我可以使用Python Natural Language Toolkit:http://www.nltk.org/和WordNet,但是,我猜测对于某些网站来说,引用关键字将是WordNet一无所知的单词/短语。例如,如果网站是名人网站,WordNet不太可能知道“Lady Gaga”的任何内容,如果网站是新闻网站,情况会更糟。

因此,我也猜测这个解决方案必须是一个只使用源数据本身的解决方案。

我的查询与How to cluster search engine keywords?提出的查询非常相似,只是我正在寻找某处开始使用Python而不是Java。

我也怀疑Google Predict和/或Google Refine是否有任何用处。

无论如何,任何想法/建议最受欢迎,

感谢, Ç

+0

不禁兜售自己[回答一个相关的问题] (http://stackoverflow.com/questions/4787984/i-want-to-get-related-searches-or-keywords)。 – 9000 2011-03-28 13:02:20

回答

0

好吧,我一个小白myself..But我想去做的方式NLTK和共发现。(你已经说过)

首先清除所有的数字和特殊字符(基本清理关键字)

检查基本字符串匹配/子匹配

标签POS标签,(以默认标签为名词) 如果不是名词,则使用wordnet获取所有同义词同义词和异名并匹配它们。 如果它是一个名词,然后使用一些基本的技术,如一个lowest common substring match或lavenshtein距离,B/K树等

可以通过嵌套的水平,根据您的误报的需要/底片

至于高级别你可以使用Python机器学习模块(如PyML,Reverend等),并使用已经提供的数据来训练..如google's ngram data on LDC

+0

嗨拉菲,感谢您的回复,并不完全确定我完全理解您的答案。但有一个问题 - 这种方法将如何处理尚未在WordNet中的“新”单词和短语? – user679134 2011-03-28 20:13:40

+0

嘿@ user679134..Well for new words or phrases you can使用像最低公共子串匹配,lavenshtein距离,B/K Tree等基本技术....我认为这应该足够好.. – Rafi 2011-03-29 04:37:47