当前位置: 首页 > 面试题库 >

在所有文档中获取前100个最常用的三个单词短语

堵景天
2023-03-14
问题内容

我大约有15,000个抓取的网站,其正文存储在elasticsearch索引中。我需要获得在所有这些文本中使用的前100个最常用的三个词短语:

像这样:

Hello there sir: 203
Big bad pony: 92
First come first: 56
[...]

我是新来的。我研究了术语向量,但它们似乎适用于单个文档。因此,我认为这将是术语向量和聚合与n元语法分析的结合。但是我不知道如何去实现它。任何指针都会有所帮助。

我当前的映射和设置:

{
  "mappings": {
    "items": {
      "properties": {
        "body": {
          "type": "string",
          "term_vector": "with_positions_offsets_payloads",
          "store" : true,
          "analyzer" : "fulltext_analyzer"
         }
      }
    }
  },
  "settings" : {
    "index" : {
      "number_of_shards" : 1,
      "number_of_replicas" : 0
    },
    "analysis": {
      "analyzer": {
        "fulltext_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "type_as_payload"
          ]
        }
      }
    }
  }
}

问题答案:

您正在寻找的被称为 带状疱疹 。带状疱疹就像“单词n-
gram”:字符串中多个项的序列组合。(例如,“我们所有人都生活”,“所有人都生活”,“住在一个”,“一个黄色”,“一个黄色潜水艇”)

在这里看看:https :
//www.elastic.co/blog/searching-with-
shingles

基本上,您需要一个带有带状板分析器的字段,该分析器仅生成三项带状板:

弹性博客文章配置,但具有:

"filter_shingle":{
   "type":"shingle",
   "max_shingle_size":3,
   "min_shingle_size":3,
   "output_unigrams":"false"
}

在将带状疱疹分析器应用于相关字段(如博客文章中)并 重新索引数据之后
,您应该能够在字段上发出返回简单术语汇总的查询,body以查看前一百个3 -词词组。

{
  "size" : 0,
  "query" : {
    "match_all" : {}
  },
  "aggs" : {
    "three-word-phrases" : {
      "terms" : {
        "field" : "body",
        "size"  : 100  
      }
    }
  }
}


 类似资料:
  • 问题内容: 我有一个历史记录表,该表存储了用户对延缓帖子执行的所有操作 我想要的是让最后三个用户完成所有操作 问题答案: 假设是一列, SQLFiddle演示

  • 问题内容: 我在Pandas数据框的一栏中有文字评论,我想用频率计数来计算N个最频繁出现的单词(整列- 不在单个单元格中)。一种方法是使用计数器,通过遍历每一行来对单词进行计数。有更好的选择吗? 代表性数据。 问题答案: 我很确定会给您您想要的东西(您可能必须在调用most_common之前从计数器结果中删除一些非单词)

  • 我是新的MongoDB,并试图从数据库检索单个文档的大小。 数据库名为“”集合名为“” 我试过: 我也尝试过: 但它只返回。如何获取文档的大小?非常感谢。

  • 嗨,我从javascript和react-native开始,我花了几个小时试图解决这个问题。有人能告诉我如何从firestore收集处获得所有文件吗? 我一直在尝试这个: 日志1打印所有对象(一个接一个),但日志2没有定义,为什么?

  • 我想知道如何使用Lucene获取单词在文档中的位置我已经生成了索引文件,我想从索引中提取一些信息,如索引的单词,单词在文档中的位置等

  • 问题内容: 我之前在这里问过类似的问题,但是我需要知道这种小的调整是否可能。我想将字符串缩短为100个字符,并使用它来做到这一点。但是,这只需要前100个字符,并不在乎是否分解一个单词。 有什么方法可以占用一个字符串的前100个字符,但要确保您不会打断一个单词? 例: 有没有办法使用PHP做到这一点? 问题答案: 您需要做的就是使用: