Python:聚类搜索引擎关键词
Python:对搜索引擎关键词进行聚类
大家好,
我有一个CSV文件,里面有多达20,000行数据(我曾经处理过超过100,000行的数据,来自不同的网站),每一行都包含一个引导关键词(也就是有人在搜索引擎中输入的关键词,用来找到相关网站)和访问次数。
我想做的是把这些关键词分成“意思相似”的几个组,并创建一个层级结构,按照每个组的总搜索次数来排序。
举个例子,一个组可能是“女性服装”,理想情况下这个组里会包含这样的关键词: 女性服装,1000 女士穿着,300 女性衣服,50 女士服装,6 女性穿着,2
我可以考虑使用像Python自然语言工具包这样的东西:http://www.nltk.org/和WordNet,但我猜对于某些网站来说,引导关键词可能是WordNet不认识的词或短语。比如,如果网站是个明星网站,WordNet可能对“Lady Gaga”一无所知,新闻网站的情况就更糟了。
所以,我也在想,解决方案可能需要只依赖于源数据本身。
我的问题和如何对搜索引擎关键词进行聚类?中的问题很相似,只不过我想找一个开始的方向,使用Python而不是Java。
我也在想,Google Predict和/或Google Refine是否会有用。
总之,任何想法或建议都非常欢迎,
谢谢,
C
2 个回答
其实我也是个新手……不过我觉得可以用nltk和wordnet来处理这个问题(就像你说的那样)。
首先,要把所有的数字和特殊字符去掉(简单来说,就是把关键词清理干净)。
接着,检查一下基本的字符串匹配或者子字符串匹配。
然后给词语打上词性标签(默认把名词当作标签)。如果不是名词,就用wordnet找出它的所有同义词、反义词和异义词,然后也进行匹配。如果是名词的话,可以用一些简单的方法,比如最长公共子串匹配或者编辑距离、B/K树等等。
你可以根据需要调整这些步骤,以减少误判和漏判。
至于更高级的聚类分析,可以使用Python的机器学习模块(比如PyML、Reverend等),用已有的数据来进行训练,比如谷歌的ngram数据。
我非常喜欢Woosh。它是一个纯Python写的搜索引擎,提供了很多功能,其中就包括你所需要的那种功能。你可以去看看。
http://packages.python.org/Whoosh/index.html
你想要的功能叫做“分面搜索结果”。
http://packages.python.org/Whoosh/facets.html
赫尔南