Python:聚类搜索引擎关键字

Posted

技术标签:

【中文标题】Python:聚类搜索引擎关键字【英文标题】:Python: Clustering Search Engine Keywords 【发布时间】:2011-07-24 09:36:12 【问题描述】:

嗨, 我有一个 CSV,最多 20,000 行(我有 100,000+ 用于不同的网站),每行包含一个引用关键字(即有人在搜索引擎中输入的关键字以查找相关网站),以及访问次数。

我想要做的是将这些关键字聚集成“相似含义”的集群,并创建集群的层次结构(按每个集群的总搜索次数排序)。

一个示例集群 - “女装” - 理想情况下包含以下关键字: 女装, 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 是否有用。

无论如何,欢迎提出任何想法/建议,

谢谢, C

【问题讨论】:

忍不住兜售我自己的answer to a related question。 【参考方案1】:

我非常喜欢 Woosh。它是一个纯 Python 搜索引擎,除其他外,还提供了这种功能。看看吧。

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

您正在寻找的功能称为“多面搜索结果”

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

埃尔南

【讨论】:

【参考方案2】:

好吧,我自己也是个菜鸟。但我认为解决方法是 nltk 和 wordnet。(正如你已经说过的)

先去掉所有的数字和任何特殊字符(基本上是把关键字清理干净)

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

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

您可以根据您对误报/否定的需要嵌套级别

至于高级聚类,您可以使用 Python 机器学习模块(如 PyML、Reverend 等),并使用已经给定的数据进行训练..如 google's ngram data on LDC

【讨论】:

您好 Rafi,感谢您的回复,但不完全确定我完全理解您的回答。但是有一个问题 - 这种方法将如何处理 WordNet 中尚未出现的“新”单词和短语? 嘿@user679134 ..对于新单词或短语,您可以使用最低公共子字符串匹配、lavenshtein 距离、B/K 树等基本技术......我认为这应该很好够了。。

以上是关于Python:聚类搜索引擎关键字的主要内容,如果未能解决你的问题,请参考以下文章

[转]python进行中文文本聚类(切词以及Kmeans聚类)

中文文本聚类(切词以及Kmeans聚类)

文本分类

文本分类

机器学习(25)之K-Means聚类算法详解

清华AIOps算法:KPI聚类