【问题标题】:Create document clustering based on the text of the document根据文档的文本创建文档聚类
【发布时间】:2019-06-19 02:02:41
【问题描述】:

在 Elasticsearch 中,是否可以对文本最相似的文档进行分组,而无需提供初始查询以进行比较?

我知道可以查询和获取 MLT("more like this document") 但是,是否可以根据字段值在索引中对文档进行聚类?

例如:

document 1: The quick brown fox jumps over the lazy dog

document 2: Barcelona is a great city

document 3: The fast orange fox jumps over the lazy dog

document 4: Lotus loft Room - Bear Mountains Neighbourhood

document 5: I do not like to eat fish

document 6: "Lotus Loft" Condo From $160.00 CAD/night, sleeps up to 4

document 7: Lotus Loft

现在,执行某种聚合,它可以在不提供搜索查询的情况下进行分组:

Group 1: document 1 and document 3

Group 2: document 2 

Group 3: document 4 and document 6 and document 7

Group 4: document 5

请告诉我其他查找不同文档聚类的方法,例如使用 Apache Spark、KNN、无监督学习方式或任何其他算法来查找近似重复的文档或聚类相似的文档?

我只想根据我的 elasticsearch 文档的国家、城市、纬度、属性名称或描述等字段对我的文档进行聚类。

基本上我想知道-

如何使用 python 文本分析/无监督学习与 KNN/pyspark 与 MLIB 或任何其他文档聚类算法制作相似文档的集群(例如 json/csv)或查找重复文档?给我一些提示/开源项目或任何其他资源链接。我只需要一些具体的例子或教程来完成这个任务

【问题讨论】:

    标签: cluster-analysis knn cosine-similarity unsupervised-learning morelikethis


    【解决方案1】:

    是的,这是可能的。有一个名为 Carrot2 的 ElasticSearch 插件。聚类插件自动将相似的“文档”分组在一起,并为这些组分配人类可读的标签,它有 4 个内置的聚类算法(3 个免费,需要 1 个许可证)。如果要将所有文档聚集在 ES 索引中,可以进行 match_all 查询。

    这是我在 Python 3 中用于集群的 ES 6.6.2 客户端代码示例:

    import json
    import requests
    
    REQUEST_URL = 'http://localhost:9200/b2c_index/_search_with_clusters'
    HEADER = {'Content-Type':'application/json; charset=utf-8'}
    
    requestDict = {
      "search_request": {
        "_source": [ "title", "content", "lang" ],
        "query": {"match_all":{}},
        "size": 100
      },
    
      "query_hint": "",
      "field_mapping": {
        "title": ["_source.title"],
        "content": ["_source.content"],
        "language": ["_source.lang"],
      }
    }
    
    resp = requests.post(REQUEST_URL, data=json.dumps(requestDict), headers=HEADER)
    print(resp.json())
    

    顺便说一句,Solr 也使用 Carrot2 对文档进行聚类。

    【讨论】:

    • 我很久以前就需要它,但这真的很有帮助,我很感激。感谢您发布答案,先生。
    猜你喜欢
    • 2015-04-27
    • 2017-11-28
    • 2012-03-01
    • 2014-06-10
    • 2015-04-15
    • 2021-12-13
    • 2015-07-05
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多