gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:23:45 30 4
gpt4 key购买 nike

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

像这样:

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

我是新来的。我研究了术语 vector ,但它们似乎适用于单个文档。因此,我认为这将是术语 vector 和聚合与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

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

flex 博客文章配置,但具有:

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

将瓦片分析器应用于相关字段后(如博客文章中所述),并用 重新索引数据,您应该能够在 body字段上返回一个简单的 terms aggregation的查询,以查看前一个一百个三字短语。
{
"size" : 0,
"query" : {
"match_all" : {}
},
"aggs" : {
"three-word-phrases" : {
"terms" : {
"field" : "body",
"size" : 100
}
}
}
}

关于elasticsearch - 在所有文档中获取前100个最常用的三个单词短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380463/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com