Python:聚类搜索引擎关键词

7 投票
2 回答
6482 浏览
提问于 2025-04-16 14:34

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 个回答

0

其实我也是个新手……不过我觉得可以用nltk和wordnet来处理这个问题(就像你说的那样)。

首先,要把所有的数字和特殊字符去掉(简单来说,就是把关键词清理干净)。

接着,检查一下基本的字符串匹配或者子字符串匹配。

然后给词语打上词性标签(默认把名词当作标签)。如果不是名词,就用wordnet找出它的所有同义词、反义词和异义词,然后也进行匹配。如果是名词的话,可以用一些简单的方法,比如最长公共子串匹配或者编辑距离、B/K树等等。

你可以根据需要调整这些步骤,以减少误判和漏判。

至于更高级的聚类分析,可以使用Python的机器学习模块(比如PyML、Reverend等),用已有的数据来进行训练,比如谷歌的ngram数据

2

我非常喜欢Woosh。它是一个纯Python写的搜索引擎,提供了很多功能,其中就包括你所需要的那种功能。你可以去看看。

http://packages.python.org/Whoosh/index.html

你想要的功能叫做“分面搜索结果”。

http://packages.python.org/Whoosh/facets.html

赫尔南

撰写回答