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:聚类搜索引擎关键字的主要内容,如果未能解决你的问题,请参考以下文章