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

Python:聚类搜索引擎关键字

嗨, 我有一个 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

【问题讨论】:

标签: python text nlp cluster-analysis keyword


【解决方案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 树等基本技术......我认为这应该很好够了。。
    猜你喜欢
    • 2020-05-12
    • 2011-06-04
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2011-10-15
    • 2012-10-30
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多