索引模块-同义词词元过滤器(Index Modules-Synonym Token Filter)

【Python】Synonyms 当然,我完全理解您的需求,并且将竭尽全力为您提供一个前所未有的、极其深入和全面的关于“Python库Synonyms,用于中文性分析和相似度计算”的专属学习指南。我将从最底层、最核心的原理开始,逐步向上构建知识体系,确保每一个细节都被剖析得淋漓尽致,不放过任何一个学习角度。所有内容都将是原创生成,绝无抄袭,并辅以大量我独立设计的实战代码示例,每行代码都将附带详尽的中文解释。由于您要求极高的字数(至少100万字)和深度,我将分批次输出内容,尽力达到我单次回复所能承载的最大信息量。请您放心,我不会停止,直到内 阅读详情


同义词词元过滤器

这个 同义词 词元过滤器能够轻松地处理同义词在分析过程。 同义词使用配置文件进行配置。 这里是一个例子:

{
    "index" : {
        "analysis" : {
            "analyzer" : {
                "synonym" : {
                    "tokenizer" : "whitespace",
                    "filter" : ["synonym"]
                }
            },
            "filter" : {
                "synonym" : {
                    "type" : "synonym",
                    "synonyms_path" : "analysis/synonym.txt"
                }
            }
        }
    }
}

上面的配置 synonym 过滤器,一个路径 analysis/synonym.txt (相对于 config 位置)。 这个 synonym 分析器是然后配置过滤器。 额外的设置: ignore_case (默认为false),和 expand(默认为 true )。

这个 分词器 参数控制分词器,用于将分析同义词,默认了 whitespace 分词器。

截至elasticsearch 0.17.9 两个同义词格式支持:Solr,WordNet。

Solr同义词

下面是一个示例格式的文件:

# blank lines and lines starting with pound are comments.

#Explicit mappings match any token sequence on the LHS of "=>"
#and replace with all alternatives on the RHS.  These types of mappings
#ignore the expand parameter in the schema.
#Examples:
i-pod, i pod => ipod,
sea biscuit, sea biscit => seabiscuit

#Equivalent synonyms may be separated with commas and give
#no explicit mapping.  In this case the mapping behavior will
#be taken from the expand parameter in the schema.  This allows
#the same synonym file to be used in different synonym handling strategies.
#Examples:
ipod, i-pod, i pod
foozball , foosball
universe , cosmos

# If expand==true, "ipod, i-pod, i pod" is equivalent to the explicit mapping:
ipod, i-pod, i pod => ipod, i-pod, i pod
# If expand==false, "ipod, i-pod, i pod" is equivalent to the explicit mapping:
ipod, i-pod, i pod => ipod

#multiple synonym mapping entries are merged.
foo => foo bar
foo => baz
#is equivalent to
foo => foo bar, baz

您还可以定义同义词过滤器直接在配置文件(注意使用 同义词 而不是 synonyms_path(同义词配置文件路径) ):

{
    "filter" : {
        "synonym" : {
            "type" : "synonym",
            "synonyms" : [
                "i-pod, i pod => ipod",
                "universe, cosmos"
            ] 
        }
    }
}

然而,建议定义大量的同义词集合在一个文件中使用synonyms_path

WordNet同义词

同义词基于 WordNet 格式可以被声明使用 格式 :

{
    "filter" : {
        "synonym" : {
            "type" : "synonym",
            "format" : "wordnet",
            "synonyms" : [
                "s(100000001,1,'abstain',v,1,0).",
                "s(100000001,2,'refrain',v,1,0).",
                "s(100000001,3,'desist',v,1,0)."
            ]
        }
    }
}

使用 同义词路径(synonyms_path) 定义一组 WordNet同义词 在一个文件里也是支持的。

 

分割

Synonym Token Filter

The synonym token filter allows to easily handle synonyms during the analysis process. Synonyms are configured using a configuration file. Here is an example:

{
    "index" : {
        "analysis" : {
            "analyzer" : {
                "synonym" : {
                    "tokenizer" : "whitespace",
                    "filter" : ["synonym"]
                }
            },
            "filter" : {
                "synonym" : {
                    "type" : "synonym",
                    "synonyms_path" : "analysis/synonym.txt"
                }
            }
        }
    }
}

The above configures a synonym filter, with a path of analysis/synonym.txt (relative to the config location). The synonym analyzer is then configured with the filter. Additional settings are: ignore_case (defaults to false), and expand (defaults to true).

The tokenizer parameter controls the tokenizers that will be used to tokenize the synonym, and defaults to the whitespace tokenizer.

As of elasticsearch 0.17.9 two synonym formats are supported: Solr, WordNet.

Solr synonyms

The following is a sample format of the file:

# blank lines and lines starting with pound are comments.

#Explicit mappings match any token sequence on the LHS of "=>"
#and replace with all alternatives on the RHS.  These types of mappings
#ignore the expand parameter in the schema.
#Examples:
i-pod, i pod => ipod,
sea biscuit, sea biscit => seabiscuit

#Equivalent synonyms may be separated with commas and give
#no explicit mapping.  In this case the mapping behavior will
#be taken from the expand parameter in the schema.  This allows
#the same synonym file to be used in different synonym handling strategies.
#Examples:
ipod, i-pod, i pod
foozball , foosball
universe , cosmos

# If expand==true, "ipod, i-pod, i pod" is equivalent to the explicit mapping:
ipod, i-pod, i pod => ipod, i-pod, i pod
# If expand==false, "ipod, i-pod, i pod" is equivalent to the explicit mapping:
ipod, i-pod, i pod => ipod

#multiple synonym mapping entries are merged.
foo => foo bar
foo => baz
#is equivalent to
foo => foo bar, baz

You can also define synonyms for the filter directly in the configuration file (note use ofsynonyms instead of synonyms_path):

{
    "filter" : {
        "synonym" : {
            "type" : "synonym",
            "synonyms" : [
                "i-pod, i pod => ipod",
                "universe, cosmos"
            ] 
        }
    }
}

However, it is recommended to define large synonyms set in a file using synonyms_path.

WordNet synonyms

Synonyms based on WordNet format can be declared using format:

{
    "filter" : {
        "synonym" : {
            "type" : "synonym",
            "format" : "wordnet",
            "synonyms" : [
                "s(100000001,1,'abstain',v,1,0).",
                "s(100000001,2,'refrain',v,1,0).",
                "s(100000001,3,'desist',v,1,0)."
            ]
        }
    }
}

Using synonyms_path to define WordNet synonyms in a file is supported as well.

elasticSearch 同义词搜索 **关键概念理解** 搜索引擎在构建索引和对搜索关键解析时都有语句分析的过程,lucene中称为analysis。analysis这个过程,又包括两个子过程 tokenizer和filtertokenizer即大家熟知的分filter这里的意思可以理解为对分好的做的相应处理。可以理解为filter被analyzer使用。 **es同义词搜索实战** 中文分插件这里选择ik,es选用1. 阅读详情

相关推荐

STM32F103移植NuttX实战:从零搭建最小系统到串口Shell(附完整配置文件)

本文详细介绍了在STM32F103C8T6开发板上移植NuttX实时操作系统的完整过程,包括环境搭建、BSP配置、系统时钟初始化、驱动裁剪、编译烧录及串口Shell交互。通过实战指南帮助开发者快速掌握NuttX移植技巧,解决典型问题,适用于嵌入式系统开发。

tree8的博客 267

LangChain+Weaviate+Streamlit构建私有知识助手实战

私有知识库是企业AI落地的核心基础设施,其本质是将非结构化文档(PDF/Word/Excel)转化为可检索、可追溯、可审计的语义化向量知识。该方案基于RAG(检索增强生成)原理,通过LangChain实现查询编排与上下文注入,Weaviate提供高性能向量存储与混合检索(语义+关键),Streamlit快速交付安全可控的交互界面。技术价值在于不依赖公有云大模型、数据不出内网、结果可溯源,适用于制造业SOP问答、金融合规查询、医疗文献辅助等强合规、高准确率场景,本文聚焦于开箱即用的工程化落地路径。

weixin_34087307的博客 364

Power Automate 最常用的十大场景以及解决方案

3.2 获取指定主题含有附件邮件,然后读取csv附件内容,插入数据库,调度执行存储过程,最后通过Power automate 发送paginated report 特殊格式报表给发件人。Power Automate 作为微软推出的自动化工作流工具,其适用场景非常广泛,尤其在数据库查询自动化方面能显著提升效率。2.8发送邮件,把生成csv文件当作附件,把生成html当作邮件内容在邮件boty展示。3.1 读取数据库数据,定时发送预警邮件并抄送附件和展示内容在邮件中。:已有微软产品栈,需快速实现部门级自动化。

qq_24388807的博客 3480

八、ElasticSearch——Analyzer(分器)

Analyzer 认识分器 Analyzer 分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符。处理完后再交给tokenizer进行分。一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理。 tokenizer:分器,对文本进行分。一个anal...

m0_38143867的博客 1139

Elasticsearch2.x 同义词设置

elasticsearch自身支持本地同义词,使用远程库需要使用插件,两种方式使用方法如下: 一 本地同义词库: 官方地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/analysis-synonym-tokenfilter.html 安装好elasticsearch和elasticsearch-analysi...

weixin_34362790的博客 382

elasticsearch分

往ext.dic文件和stopword.dic文件里添加语,例如往ext.dic里添加传智播客,奥力给,往stopword.dic里添加的,了,吗,嗯。在IKAnalyzer.cfg.xml目录下新建ext.dic文件,stopword.dic(已存在)扩展后有了"传智播客",“白嫖”,“奥力给”,没有了"的"尽可能多的分/尽可能细粒度的分。扩展字典/扩展屏蔽字典。

Java领域优秀创作者 1781

Elasticsearch 同义词(dynamic-synonym插件)远程热更新

文章目录Elasticsearch 同义词(dynamic-synonym)远程热更新零、版本说明一、同义词本地文件读取方式(可不用插件)1、添加同义词文件2、创建索引,并配置同义词过滤3、测试效果二、同义词插件远程库调用1、同义词插件官网说明:2、在服务中实现http请求,并连接数据库实现热管理实例:3、根据远程请求创建索引:三、重写同义词插件源码连接mysql/oracle更新库1、下载同义词插件2、修改ik插件源码(以oracle为例,mysql对应修改配置即可)1)、添加jdbc配置文件2)

Yic.z的博客 9382

一起学Elasticsearch系列-

在Elasticsearch中,分器是用于将文本数据划分为一系列的单(或称之为项、tokens)的组件。这个过程是全文搜索中的关键步骤

BookSea的博客 3371

Solr中的概念:分析器(analyzer)、字符过滤器(character filter)、分器(Tokenizer)、过滤器Token Filter...

文本中包含许多文本处理步骤,比如:分,大写转小写,干化,同义词转化和许多的文本处理。 文本分析既用于索引时对一文本域的处理,也用于查询时查询字符串的文本处理。文本处理对搜索引擎的搜索结果有着重要的影响,特别是对如召回率的影响。 文本分析是将一个文本域的值转化为一个序列。是Lucene实际索引和搜索时的最小单。分析作用于索引时原始的输入值,将转化后的顺...

RodJohnson_523391的专栏 594

anaconda下载、安装与模块的安装

channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channe

qq_46505688的博客 1894

synonyms的使用

https://github.com/huyingxi/Synonyms import synonyms synonyms.seg("中文近义工具包") B=synonyms.nearby(a) #B[0]为近义组 #B[1]为对应相似度 两个句子比较 r = synonyms.compare(sen1, sen2, seg=True) 获取向量 synonyms.v("飞机") ''...

weixin_43341824的博客 4185

索引擎算法之同义词、近义、上位挖掘

在搜索引擎中,我们会碰到大量的同义词需求。用户在描述同一个东西的时候,会有各种各样的描述。 在电商搜索环境中,同义词分成好几类: 1. 品牌同义词:nokia=诺基亚,Adidas=阿迪达斯 2. 产品同义词:投影仪≈投影机,电话≈cell phone;automobile 和car。 3.旧和新:自行车 -> 脚踏车 4...

数据挖掘爱好者 1万+

Elasticsearch:使用同义词 synonyms 来提高搜索效率

在我们的很多情况下,我们希望在搜索时,有时能够使用一个同义词来进行搜索,这样我们能搜索出来更多相关的内容。我们可以通过 text analysis 来帮助我们形成同义词。如果大家对 Elastic 的 analyzer 还不是很熟的话,请参阅我之前的文章 “Elasticsearch: analyzer”。文本分析通常应用于你建立索引时的所有文档以及发送给 Elasticsearch 的所有查询。在进行同义词搜索时,我们有如下的几种方案: 在建立索引(indexing),通过 analyzer 建

Elastic 中国社区官方博客 9423

ElasticSearch初探之所有初次使用记录(七)部分java api+停用+同义词

1.数据来源于 2.加载数据: curl -s -XPOST http://172.22.112.1:9200/_bulk --data-binary @elasticsearch.txt -S:显示错误,-s静默模式 【上传数据时,中途kill,不会部分上传成功,皆失败】 3.设置分器 在没有设置分器之前,ES会将汉字单个切分(当安装完Elasticsearch之后,默认已...

王某的博客 4693

Lucene学习笔记(2)自定义TokenFilter实现同义词

public class MyTokenFilter extends TokenFilter { private SameWord sameWord; private Stack stack; private State currState; private CharTermAttribute cta = addAttribute(CharTermAttribute.class);

linux_java_jia的博客 882

python 近义库包 synonyms 的使用

最近接触到nlp的一些东西,需要找出中文语的近义,也接触到了一个synonyms 的库, 分,去停用,word2vector 等 一些列nlp 的操作,还可以输出中文语的近义 https://github.com/huyingxi/Synonyms/ 以上链接为synonyms库包的介绍 转载于:https://www.cnblogs.com/4991tcl/...

diaoyou7779的博客 4013

Elasticsearch优秀的索引设置技巧

下面的索引设置是从国外一家优秀的图片搜索公司获取,可以从其设置索引的设计上得到一些如何提高索引设计技巧的方式:{ "500px.photos-2016-05-06-20-09": { "aliases": { "500px.photos": {} }, "mappings": { "photo": { "_all": {

很多时候,你缺少的不是知识而是热情 3243

elasticsearch 近义-远程配置

curl -XPOST 'http://localhost:9200/sy4' -d '{ "analysis": { "analyzer":{ "mysynonym":{ "type": "custom", "tok...

weixin_34125592的博客 560

solr同义词

当用户输入"马甲"时,能够搜索到"马夹"的结果

gs_albb的博客 1406

AGV搬运车(已经批量生产,含BOM+图纸)3D模型.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载

AGV搬运车(已经批量生产,含BOM+图纸)3D模型.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载AGV搬运车(已经批量生产,含BOM+图纸)3D模型.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载AGV搬运车(已经批量生产,含BOM+图纸)3D模型.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载AGV搬运车(已经批量生产,含BOM+图纸)3D模型.zip模型AGV小车图纸机器人穿梭小车自动导引潜伏式运输车SW加工图纸下载1.合个人学习技术做项目参考合个人学习技术做项目参考2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考

上一篇: Redis监控技巧总结
下一篇: 启用 solr suggest
july_2
博客等级 码龄14年 115粉丝 37原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值