当前位置: 首页 > news >正文

elasticsearch使用记录

参考文章:https://elasticsearch-py.readthedocs.io/en/v8.8.2/
参考文章:https://cuiqingcai.com/6214.html
参考文章:https://www.cnblogs.com/cupleo/p/13953890.html
elasticsearch版本:8.8.2(软件包发行版)
python版本:3.10

目录

      • 导入包
      • 测试是否连接成功
      • 测试数据
      • 创建删除index
      • 插入数据
      • 查询数据
        • 模糊搜索
        • 精确搜索-使用keyword索引
        • 精确搜索-多个词语
        • 精确搜索-非中文可以直接使用
        • 精确搜索-多列匹配
        • id查询
      • 更新数据
      • 删除数据
      • 简易封装

导入包

from elasticsearch import Elasticsearches = Elasticsearch(hosts=["https://192.168.1.1:9200"],basic_auth=['elastic', '123456'],verify_certs=False)

测试是否连接成功

>>> es.ping()
True
>>> es.info()
{ 'name' : 'qhdata-dev',
'cluster_name' : 'elasticsearch',
'cluster_uuid' : 'un55kUpqQ9iFGEfp5UUQ5g',
'version' : { 'number' : '8.8.2',
'build_flavor' : 'default',
'build_type' : 'deb',
'build_hash' : '98e1271edf932a480e4262a471281f1ee295ce6b',
'build_date' : '2023-06-26T05:16:16.196344851Z',
'build_snapshot' : FALSE,
'lucene_version' : '9.6.0',
'minimum_wire_compatibility_version' : '7.17.0',
'minimum_index_compatibility_version' : '7.0.0' },
'tagline' : 'You Know, for Search' }

测试数据

doc = [
{'org_id': 'qh0000016598985','org_name': '山东京博石油化工有限公司',  # 精确搜索使用的字段'org_code': '167154095','org_usc_code': '913716251671540959'
},
{'org_id': 'qh0000017998348','org_name': '山东天宏新能源化工有限公司',  # 精确搜索使用的字段'org_code': '670528461','org_usc_code': '913716256705284610'
},
{'org_id': 'qh0000017996506','org_name': '山东昆仑京博能源有限公司',  # 精确搜索使用的字段'org_code': '577790166','org_usc_code': '913716255777901660'
},
{'org_id': 'qh0000018265983','org_name': '诺力昂化学品(博兴)有限公司',  # 精确搜索使用的字段'org_code': '720705287','org_usc_code': '913716007207052873'
},
]

创建删除index

es_index = 'test_org_id'
es.indices.delete(index=es_index, ignore=[400, 404])  # 删除 Index
es.indices.create(index=es_index, ignore=400)  # 创建 Index
es.indices.refresh()
# https://discuss.elastic.co/t/failed-to-parse-value-analyzed-as-only-true-or-false-are-allowed-es-upgrade-5-5-6-5/166473/2
mapping = {'properties': {'org_name': {'type': 'text','analyzer': 'ik_max_word',  # 模糊搜索分析器'search_analyzer': 'ik_max_word',"fields": {"keyword": {"type": "keyword",  # 相当于额外一重索引,类型为keyword,为精确搜索"ignore_above": 256  # 最多256个字符}}},'org_id': {'type': 'keyword',  # 强行锁定仅进行精确搜索},}
}
es.indices.put_mapping(index=es_index, body=mapping)

创建好的效果
在这里插入图片描述

插入数据

for i in doc:es.index(index=es_index, document=i)  # 自动随机生成唯一id,或者指定id

插入好的效果
在这里插入图片描述
在这里插入图片描述

查询数据

参考文章:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-get.html

模糊搜索

>>> es.search(index=es_index, query={"match": {'org_name': '山东'}}) # 模糊搜索
ObjectApiResponse ({ 'took' : 1,'timed_out' : FALSE,'_shards' : { 'total' : 1, 'successful' : 1, 'skipped' : 0, 'failed' : 0 },'hits' : { 'total' : { 'value' : 3, 'relation' : 'eq' },'max_score' : 0.37365946,'hits' : [{ '_index' : 'test_org_id','_id' : 'CWGOhYkBHWntshc80OFi','_score' : 0.37365946,'_source' : { 'org_id' : 'qh0000017996506', 'org_name' : '山东昆仑京博能源有限公司', 'org_code' : '577790166', 'org_usc_code' : '913716255777901660' }},{ '_index' : 'test_org_id','_id' : 'B2GOhYkBHWntshc80OEs','_score' : 0.35667494,'_source' : { 'org_id' : 'qh0000016598985', 'org_name' : '山东京博石油化工有限公司', 'org_code' : '167154095', 'org_usc_code' : '913716251671540959' }},{ '_index' : 'test_org_id','_id' : 'CGGOhYkBHWntshc80OFc',
'_score' : 0.35667494,
'_source' : { 'org_id' : 'qh0000017998348', 'org_name' : '山东天宏新能源化工有限公司', 'org_code' : '670528461', 'org_usc_code' : '913716256705284610' }}]}})

精确搜索-使用keyword索引

>>> es.search(index=es_index, query={"term": {'org_name.keyword': '山东昆仑京博能源有限公司'}})  # 精确搜索-使用keyword索引
ObjectApiResponse ({ 'took' : 1,'timed_out' : FALSE,'_shards' : { 'total' : 1, 'successful' : 1, 'skipped' : 0, 'failed' : 0 },'hits' : { 'total' : { 'value' : 1, 'relation' : 'eq' },'max_score' : 1.2039728,'hits' : [{ '_index' : 'test_org_id','_id' : 'CWGOhYkBHWntshc80OFi',
'_score' : 1.2039728,
'_source' : { 'org_id' : 'qh0000017996506', 'org_name' : '山东昆仑京博能源有限公司', 'org_code' : '577790166', 'org_usc_code' : '913716255777901660' }}]}})

精确搜索-多个词语

>>> es.search(index=es_index, query={"terms": {'org_name.keyword': ['山东昆仑京博能源有限公司', '山东京博石油化工有限公司']}})   # 精确搜索-多个词语
ObjectApiResponse ({ 'took' : 1,'timed_out' : FALSE,'_shards' : { 'total' : 1, 'successful' : 1, 'skipped' : 0, 'failed' : 0 },'hits' : { 'total' : { 'value' : 2, 'relation' : 'eq' },'max_score' : 1.0,'hits' : [{ '_index' : 'test_org_id','_id' : 'B2GOhYkBHWntshc80OEs','_score' : 1.0,'_source' : { 'org_id' : 'qh0000016598985', 'org_name' : '山东京博石油化工有限公司', 'org_code' : '167154095', 'org_usc_code' : '913716251671540959' }},{ '_index' : 'test_org_id','_id' : 'CWGOhYkBHWntshc80OFi',
'_score' : 1.0,
'_source' : { 'org_id' : 'qh0000017996506', 'org_name' : '山东昆仑京博能源有限公司', 'org_code' : '577790166', 'org_usc_code' : '913716255777901660' }}]}})

精确搜索-非中文可以直接使用

>>> es.search(index=es_index, query={"term": {'org_code': '670528461'}})  # 精确搜索-非中文可以直接使用
ObjectApiResponse ({ 'took' : 1,'timed_out' : FALSE,'_shards' : { 'total' : 1, 'successful' : 1, 'skipped' : 0, 'failed' : 0 },'hits' : { 'total' : { 'value' : 1, 'relation' : 'eq' },'max_score' : 1.2039728,'hits' : [{ '_index' : 'test_org_id','_id' : 'CGGOhYkBHWntshc80OFc',
'_score' : 1.2039728,
'_source' : { 'org_id' : 'qh0000017998348', 'org_name' : '山东天宏新能源化工有限公司', 'org_code' : '670528461', 'org_usc_code' : '913716256705284610' }}]}})

精确搜索-多列匹配

参考文章:https://stackoverflow.com/questions/43633472/how-to-simulate-multiple-fields-in-a-terms-query

>>> a = es.search(index=es_index, query={"bool":{'must':[{"term": {'org_code': '577790166'}},{"term": {'org_name.keyword': '山东昆仑京博能源有限公司'}}]}})  # 关系should是or的意思,must是and的意思
>>> a = es.search(index=es_index, query={"bool":{'should':[{"term": {'org_code': '577790166'}},{"terms": {'org_name.keyword': ['山东昆仑京博能源有限公司', '山东京博石油化工有限公司']}}]}})  # 关系should是or的意思,must是and的意思

id查询

>>> es.get(index=es_index, id='CGGOhYkBHWntshc80OFc', ignore=[404])  # id查询
ObjectApiResponse ({ '_index' : 'test_org_id','_id' : 'CGGOhYkBHWntshc80OFc','_version' : 1,'_seq_no' : 1,'_primary_term' : 1,
'found' : TRUE,
'_source' : { 'org_id' : 'qh0000017998348', 'org_name' : '山东天宏新能源化工有限公司', 'org_code' : '670528461', 'org_usc_code' : '913716256705284610' }})
>>> es.mget(index=es_index, ids=['CGGOhYkBHWntshc80OFc','CWGOhYkBHWntshc80OFi',] , ignore=[404])
ObjectApiResponse ({ 'docs' : [{ '_index' : 'test_org_id','_id' : 'CGGOhYkBHWntshc80OFc','_version' : 1,'_seq_no' : 1,'_primary_term' : 1,'found' : TRUE,'_source' : { 'org_id' : 'qh0000017998348', 'org_name' : '山东天宏新能源化工有限公司', 'org_code' : '670528461', 'org_usc_code' : '913716256705284610' }},{ '_index' : 'test_org_id','_id' : 'CWGOhYkBHWntshc80OFi','_version' : 1,'_seq_no' : 2,'_primary_term' : 1,
'found' : TRUE,
'_source' : { 'org_id' : 'qh0000017996506', 'org_name' : '山东昆仑京博能源有限公司', 'org_code' : '577790166', 'org_usc_code' : '913716255777901660' }}]})

更新数据

tmp_doc = {'org_id': 'qh0000016598985','org_name': '山东京博石油化工有限公司',  # 精确搜索使用的字段'org_code': '167154095','org_usc_code': '913716251671540959'
}
es.update(index=es_index, id='_WFwd4kBHWntshc80-AY', doc=tmp_doc)
tmp_doc = {"script": {  # 更新内容"source": "ctx._source['org_code']='123123123123'","lang": "painless"},"query": {  # 查询匹配"term": {"org_name.keyword": "山东天宏新能源化工有限公司"}}
}
es.update_by_query(index=es_index, body=tmp_doc)

删除数据

es.delete(index=es_index, id='_WFwd4kBHWntshc80-AY', ignore=[404])
es.delete_by_query(index=es_index, query={"term": {'org_name.keyword': '山东昆仑京博能源有限公司'}})

ps:这里的删除,是指直接把数据标记为待删除,等系统后续从index中删除。

简易封装

from elasticsearch import Elasticsearch
import time
import reclass ConnectElasticSearch(object):def __init__(self, **kwargs):self.hosts = kwargs.get("hosts", ["https://192.168.1.1:9200"])self.basic_auth = kwargs.get("basic_auth", ['elastic', '123456'])self.conn = Elasticsearch(hosts=self.hosts,basic_auth=self.basic_auth,verify_certs=False,retry_on_timeout=True)def cleanSearchResult(self, source, item:str = 'origin'):'''清理/解析查询回来的数据:param source: 查询的结果:param item: 需要的内容:return:'''assert item in ['origin', 'raw', 'max_score', 'max_score_source', '_source', '_id', '_index', '_score']hits = source.body['hits']max_score = hits['max_score']raw = hits['hits']if item == 'origin':return hitsif item == 'raw':return rawif item == 'max_score':return [i for i in raw if i['_score'] == max_score]if item == 'max_score_source':return [i['_source'] for i in raw if i['_score'] == max_score]if item == '_source':return [i['_source'] for i in raw]if item == '_id':return [i['_id'] for i in raw]if item == '_index':return [i['_index'] for i in raw]if item == '_score':return [i['_score'] for i in raw]def insert(self, index: str, source: pd.DataFrame) -> None:'''插入数据,模仿sql中的[insert]逻辑:param index: str,索引:param source: DataFrame,待入库数据:return: None'''source = source.to_dict(orient='records')for i in source:self.conn.index(index=index, document=i)def ignore(self, index: str, source: pd.DataFrame, primary_key: list[str]):'''插入数据,模仿sql中的[insert ignore]逻辑,当有相同主键数据时后忽略不插入:param index: str,索引:param source: DataFrame,待入库数据:param primary_key: list[str],主键所在列名:return: None'''source = source.to_dict(orient='records')for i in source:query = {'bool': {'must': []}}for pk in primary_key:tmp = re.sub('\.keyword$', '', pk)query['bool']['must'].append({"term": {pk: i.get(tmp)}})tmp = self.conn.search(index=index, query=query)raw = self.cleanSearchResult(tmp, 'raw')if raw == []:  # es中没有该条数据self.conn.index(index=index, document=i)def update(self, index: str, source: pd.DataFrame, primary_key: list[str]):'''插入数据,模仿sql中的[insert into on duplicate key update]逻辑,当有相同主键数据时后忽略不插入:param index: str,索引:param source: DataFrame,待入库数据:param primary_key: list[str],主键所在列名:return: None'''source = source.to_dict(orient='records')for i in source:query = {'bool': {'must': []}}for pk in primary_key:tmp = re.sub('\.keyword$', '', pk)query['bool']['must'].append({"term": {pk: i.get(tmp)}})tmp = self.conn.search(index=index, query=query)id = self.cleanSearchResult(tmp, '_id')if id == []:  # es中没有该条数据self.conn.index(index=index, document=i)else:for k in id:self.conn.update(index=index, id=k, doc=i)def only_update(self, index: str, source: pd.DataFrame, primary_key: list[str]):'''插入数据,模仿sql中的[update]逻辑,当有相同主键数据时后忽略不插入:param index: str,索引:param source: DataFrame,待入库数据:param primary_key: list[str],主键所在列名:return: None'''source = source.to_dict(orient='records')for i in source:query = {'bool': {'must': []}}for pk in primary_key:tmp = re.sub('\.keyword$', '', pk)query['bool']['must'].append({"term": {pk: i.get(tmp)}})tmp = self.conn.search(index=index, query=query)id = self.cleanSearchResult(tmp, '_id')if id == []:  # es中没有该条数据continueelse:for k in id:self.conn.update(index=index, id=k, doc=i)def delete(self, index: str, source: pd.DataFrame, primary_key: list[str]):'''插入数据,模仿sql中的[delete]逻辑,当有相同主键数据时后忽略不插入:param index: str,索引:param source: DataFrame,待入库数据:param primary_key: list[str],主键所在列名:return: None'''source = source.to_dict(orient='records')for i in source:query = {'bool': {'must': []}}for pk in primary_key:tmp = re.sub('\.keyword$', '', pk)query['bool']['must'].append({"term": {pk: i.get(tmp)}})self.conn.delete_by_query(index=index, query=query)

相关文章:

elasticsearch使用记录

参考文章:https://elasticsearch-py.readthedocs.io/en/v8.8.2/ 参考文章:https://cuiqingcai.com/6214.html 参考文章:https://www.cnblogs.com/cupleo/p/13953890.html elasticsearch版本:8.8.2(软件包发行版) python版本&#…...

UNI-APP_横屏切换竖屏出现样式混乱问题

app从竖屏页面1进入竖屏页面2,再进入横屏,再返回,再返回从新回到竖屏页面1,再次进入竖屏页面2,发现竖屏页面2的所有图片字体都被放大了。再返回竖屏1,再进入竖屏2,一切又恢复正常。 解决跳转横…...

数据可视化(3)

1.饼状图 #饼状图 #pie(x,labels,colors,labeldistance,autopct,startangle,radius,center,textprops) #x,每一块饼状图的比例 #labels:每一块饼形图外侧显示的文字说明 #labeldistance:标记的绘制位置,相对于半径的比例&#xf…...

AI面试官:MD5、DES、RSA、AES加密

AI面试官:MD5、DES、RSA、AES加密 文章目录 AI面试官:MD5、DES、RSA、AES加密1. 什么是MD5加密?它在实际应用中有哪些场景?2. DES加密是什么?它在现实中的应用场景有哪些?3. 问题:RSA加密是什么…...

Shell脚本学习-$$特殊变量

$$特殊变量: 获取脚本执行的进程号(PID)。 [rootvm1 scripts]# cat test_pid.sh echo $$ > /tmp/a.pid sleep 300代码说明: 1)获取$$值,也就是当前脚本进程的PID值,重定向到/tmp/a.pid文件…...

vscode中python插件过新导致无法正常debug问题解决安装vscode以前版本python插件教程

您需要从.vsix文件安装它。您可以在此处找到它们。 下载所需.vsix版本的文件。您可能需要单击assets才能看到它们。 然后打开 VSCode,转到extensions-> 单击三个点 ->install from vsix并选择您的文件。 重启以后,就可以正常debug了!...

chrome macos编译

下载工具包 git clone https://chromium.googlesource.com/chromium/tools/depot_tools/gitpwd export PATH"$PATH:/Users/lichengjun/Downloads/chrome_build/depot_tools" mkdir chromium cd chromium 如果想快的话直接: fetch --nohooks --no-history chromium (…...

Linux环境下Elasticsearch相关软件安装

Linux环境下Elasticsearch相关软件安装 本文将介绍在linux(Centos7)环境下安装Elasticsearch相关的软件。 1、安装Elasticsearch 1.1 Elasticsearch下载 首先去Elasticsearch官网下载相应版本的安装包,下载之后传输到linux服务器上。 官网地址:http…...

【趟坑记录】d3.zoom()的正确使用姿势 @d3.v7

【趟坑记录】d3.zoom()的正确使用姿势 d3.v7 文章目录 【趟坑记录】d3.zoom()的正确使用姿势 d3.v7问题重现原因分析解决方案放缩平移写法特殊修改transform函数的写法 总结 在开发一个D3应用的时候遇到了一个 zoom相关的问题,记录解决思路与方案 问题重现 最近在…...

基于 Docker + Nginx + Gitlab-runner 实现前端自动化部署流程

本篇会用到Docker,Gitlab-runner等相关工具,如果对其不是特别了解,可以参考下相关文档: GitLab RunnerDocker 快速入门CI/CD:持续集成/持续部署 在早期部署前端项目时,我们通常会通过ftp把前端代码直接传…...

make/makefile的使用

make/makefile 文章目录 make/makefile初步认识makefile的工作流程依赖关系和依赖方法make的使用 总结 make是一个命令,是一个解释makefile中指令的命令工具,makefile是一个文件,当前目录下的文件,两者搭配使用,完成项…...

Flutter中Navigator 跳转传参数和反向传参数

初始化路由 MaterialApp(routes: <String, WidgetBuilder>{"/Second": (BuildContext context){return Second("");}}, 跳转传参数 String va await Navigator.of(context).push(MaterialPageRoute(builder: (content) {return Second( demo); },…...

kettle开发-Day40-AI分流之case/switch

前言&#xff1a; 前面我们讲到了很多关于数据流的AI方面的介绍&#xff0c;包括自定义组件和算力提升这块的&#xff0c;今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时&#xff0c;我们需要在…...

MySQL下载与安装

MySQL下载与安装 一、下载 地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 当前最新是8.0版本&#xff0c;我选择上一个最新的mysql-5.7.24-winx64.zip 二、安装 MySQL安装文件分两种 .msi和.zip &#xff0c;.msi需要安装 zip格式是自己解压&#xff0c;解压缩之后…...

c++基础2

文件操作 程序运行时产生的数据属于临时数据&#xff0c;程序一旦运行结束都会被释放 通过文件可以将数据持久化 c中对文件操作需要包含 文件类型分为两种 文本文件&#xff1a;文件以ASCII码形式存储在计算机中二进制文件&#xff1a;文件以文本的二进制存储在计算机中&a…...

虚拟机VMware,linux,centos,如何将项目部署到服务器上面

vmware 是安装虚拟机的软件&#xff0c;centos是系统&#xff0c;linux是系统内核 将本地项目上线到服务器上面&#xff0c;如何实现呢&#xff1f; 准备好服务器&#xff0c;可以选择阿里云服务器 首先需要搭建环境&#xff0c;运行的主要环境是jdktomcatmysql; 通过远程连接…...

R语言 BPNN 反向传播神经网络

##BPNN-neuronet set.seed(123) folds <- createFolds(y=data$Groups,k=10) 建一个放auc值的空向量 auc<-as.numeric() Errorrate<-as.numeric() accuracy<-as.numeric() sensitivity<-as.numeric() specificity<-as.numeric() roc <- vector("li…...

回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 ![6 基本介绍 1.MATLAB实现TCN-BiGRU时间卷积双向门控循…...

Qt使用QPixmap类和QScreen类来实现简单截图功能

在Qt中&#xff0c;可以使用QPixmap类和QScreen类来实现截图功能。 以下是一个简单的示例代码&#xff0c;演示了如何在Qt中进行截图&#xff1a; #include <QtWidgets>void captureScreen() {// 获取屏幕对象QScreen *screen QGuiApplication::primaryScreen();// 截…...

【【51单片机LCD1602模块介绍】】

LCD1602的介绍 显示容量16x2 每个字符是5x7的点阵 VDD 是电源正极 4.5-5.5v VO 是对比度调节电压 RS 数据/指令 选择 1为数据0为指令 RW 读写选择1是读 0为写 E 使能 1为数据有效 下降沿执行命令 D0-D7 数据输入输出 A 背光电源正极 K 背光电源负极 LCD1602的操作流程 1.初始…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...