《机器学习》——TF-IDF(关键词提取)
文章目录
- TF-IDF简介
- TF-IDF应用场景
- TF-IDF模型
- 模型参数
- 主要参数
- TF-IDF实例
- 实例步骤
- 导入数据和模块
- 处理数据
- 处理文章开头和分卷处理
- 将各卷内容存储到数据帧
- jieba分词和去停用词处理
- 计算 TF-IDF 并找出核心关键词
TF-IDF简介
- TF - IDF(Term Frequency - Inverse Document Frequency)是一种用于信息检索和文本挖掘的常用加权技术。它由两部分组成:词频(TF)和逆文档频率(IDF)。
- 词频(TF)
- 词频是指某个词在一篇文档中出现的频率。计算方法是用某个词在文档中出现的次数除以文档的总词数。例如,文档 A 中有 100 个单词,单词 “apple” 出现了 5 次,那么单词 “apple” 在文档 A 中的词频 TF = 5/100 = 0.05。它衡量的是一个词在单篇文档中的重要性,词频越高,说明这个词在这篇文档中可能越重要。
- 逆文档频率(IDF)
- 逆文档频率是一个词在整个文档集合中的稀有程度的度量。计算方法是先计算文档总数 N,然后统计包含某个词的文档数 n,那么这个词的逆文档频率 IDF = log (N/n)。例如,假设有 1000 篇文档(N = 1000),其中只有 10 篇文档包含单词 “banana”(n = 10),那么单词 “banana” 的逆文档频率 IDF = log (1000/10)= log (100)≈ 2.(这里以自然对数为例)。IDF 的值越大,说明这个词越稀有,在区分文档时可能越有价值。
- TF - IDF 值
- TF - IDF 值是词频和逆文档频率的乘积,即 TF - IDF = TF×IDF。它综合考虑了一个词在单篇文档中的出现频率和在整个文档集合中的稀有程度,从而能够更好地衡量一个词对于某篇文档的重要性。在上面的例子中,如果 “apple” 的 TF = 0.05,并且假设其 IDF = 1.5(具体值取决于文档集合),那么 “apple” 的 TF - IDF 值 = 0.05×1.5 = 0.075。
- 词频(TF)
TF-IDF应用场景
- 文本分类
- 在文本分类任务中,TF - IDF 可以用来提取文本的特征向量。例如,将新闻文章分为体育、娱乐、科技等类别。通过计算每篇新闻文章中各个单词的 TF - IDF 值,然后选择 TF - IDF 值较高的单词作为特征,构建一个特征向量来代表这篇文章。这个特征向量可以作为机器学习分类算法(如朴素贝叶斯、支持向量机等)的输入,帮助分类器判断文章所属的类别。
- 信息检索
- 在搜索引擎中,TF - IDF 用于对搜索结果进行排序。当用户输入一个查询词时,搜索引擎会计算查询词与文档库中各个文档的相关性。TF - IDF 可以帮助衡量查询词在文档中的重要性,从而将与查询词相关性高的文档排在前面。例如,用户搜索 “人工智能应用”,搜索引擎会根据文档中 “人工智能” 和 “应用” 这两个词的 TF - IDF 值来判断文档与查询的相关性,TF - IDF 值高的文档更有可能被优先展示。
- 关键词提取
- 可以利用 TF - IDF 来提取文档的关键词。通常,TF - IDF 值较高的词很可能是文档的关键词。例如,对于一篇学术论文,通过计算论文中各个词的 TF - IDF 值,选择排名靠前的词作为关键词,这些关键词可以帮助读者快速了解论文的主题。
TF-IDF模型
模型参数
主要参数
- input
- 该参数指定输入数据的类型。
- 可选值:
- ‘filename’:表示输入是文件名列表,会从文件中读取文本内容。
- ‘file’:表示输入是文件对象,会从文件对象中读取文本内容。
- ‘content’(默认):表示输入是文本内容列表,直接使用输入的文本进行处理。
- encoding
- 用于指定文本的编码方式。
- 例如,对于包含多种语言字符的文本,可以使用 ‘utf-8’ 进行编码,确保字符能被正确解析。
- decode_error
- 当解码错误发生时的处理策略。
- 可选值:
- ‘strict’(默认):会引发 UnicodeDecodeError 异常。
- ‘ignore’:忽略错误,直接跳过无法解码的部分。
- ‘replace’:用 ‘?’ 或其他替换字符替换无法解码的部分。
- strip_accents
- 去除重音字符,将其转换为 ASCII 字符。
- 可选值:
- ‘ascii’:将重音字符转换为相应的 ASCII 字符。
- None:不进行此操作。
- lowercase
- 是否将文本转换为小写。
- 默认值为 True,将所有文本转换为小写,以确保不区分大小写进行处理,因为在 TF-IDF 计算中通常认为大小写不同但拼写相同的词是相同的词。
- preprocessor
- 可以自定义预处理函数,在分词前对文本进行预处理。
- 例如,可以定义一个函数,将 HTML 标签去除或进行一些特殊符号的替换,该函数会在分词前应用于每个文档。
- tokenizer
- 自定义分词函数,用于将文本拆分成词或标记。
- 例如,可以使用自己编写的分词函数代替默认的分词方式,对文本进行更细致的分词处理,如对中文进行分词,可以使用 jieba 分词工具,将其封装为一个函数传入此参数。
- analyzer
- 定义特征应该由哪些部分组成。
- 可选值:
- ‘word’(默认):以词为单位。
- ‘char’:以字符为单位。
- ‘char_wb’:以字符为单位,考虑词边界。
- stop_words
- 可以是以下几种情况:
- None(默认):不使用停用词。
- ‘english’:使用内置的英文停用词列表,会过滤掉常见的英文停用词,如 and, the, is 等。
- 自定义的停用词列表,例如 [‘我’, ‘你’, ‘他’] 可用于中文停用词过滤。
- 可以是以下几种情况:
- token_pattern
- 用于指定分词的正则表达式模式。
- 默认是 r"(?u)\b\w\w+\b",即匹配至少两个字母数字字符组成的词,可根据需要修改此正则表达式以适应不同的语言或特殊字符要求。
- ngram_range
- 定义要考虑的词或字符的范围。
- 接收一个元组 (min_n, max_n),例如 (1, 2) 表示考虑一元词(单个词)和二元词(两个词的组合),可以捕捉到一些短语信息,对于一些特定任务可能会提高性能。
- max_df
- 用于过滤掉过于常见的词。
- 可以是浮点数,范围在 (0.0, 1.0],表示文档频率的最大阈值,例如 0.8 表示文档频率超过 80% 的词将被过滤;也可以是整数,表示绝对的文档频率。
- min_df
- 用于过滤掉过于罕见的词。
- 可以是浮点数,范围在 [0.0, 1.0],表示文档频率的最小阈值,例如 0.2 表示文档频率低于 20% 的词将被过滤;也可以是整数,表示绝对的文档频率。
- max_features
- 只考虑最常见的 max_features 个词。
- 例如,设置为 1000 时,仅考虑词汇表中最常见的 1000 个词,用于限制特征的维度,避免高维度带来的计算开销和过拟合。
- vocabulary
- 可以是 None(默认),表示使用从输入数据中学习的词汇表;也可以是一个字典或可迭代对象,用于手动指定词汇表,只有在该词汇表中的词才会被考虑进行 TF-IDF 计算。
TF-IDF实例
对红楼梦文章进行TF-IDF处理,提取到关键字。
通过网盘分享的文件:红楼梦.txt
链接: https://pan.baidu.com/s/1y4_qTi1UgkCHo7exi5g4kw 提取码: 246h
–来自百度网盘超级会员v2的分享
通过网盘分享的文件:StopwordsCN.txt
链接:https://pan.baidu.com/s/1827ZPVgGdoIo86dLDJCV1Q
提取码: t27s
–来自百度网盘超级会员v2的分享
实例步骤
所导入的库下载:
pip install jieba
pip install pandas==1.3.5
pip install scikit-learn==1.0.2
- 导入数据和模块
- 处理数据
- 处理文章开头和分卷处理
- 将各卷内容存储到数据帧
- jieba分词和去停用词处理
- 训练模型并计算出TF-IDF值
导入数据和模块
import os
import pandas as pd
import jieba
from sklearn.feature_extraction.text import TfidfVectorizerfile = open('红楼梦.txt', encoding='utf-8')
处理数据
处理文章开头和分卷处理
注意:分卷文件夹需要自己创建。
# 标志,用于标记是否是第一次保存文件
flag = 0
# 打开一个文件用于存储开始部分的内容
juan_file = open('红楼梦开头.txt', 'w', encoding='utf-8')# 开始遍历《红楼梦》的文本文件
for line in file:# 当找到包含"卷 第"的行,认为是一个新的卷的开始if '卷 第' in line:# 提取卷名并添加后缀.txtjuan_name = line.strip() + '.txt'# 构建存储该卷的文件的完整路径path = os.path.join('.\\分卷\\', juan_name)print(path)# 如果是第一次读取到卷 第if flag == 0:# 打开新文件存储该卷内容juan_file = open(path, 'w', encoding='utf-8')flag = 1else:# 关闭之前的文件,并打开新文件存储该卷内容juan_file.close()juan_file = open(path, 'w', encoding='utf-8')continue# 将行内容写入当前的卷文件juan_file.write(line)
# 关闭最后的卷文件
juan_file.close()
部分输出:
将各卷内容存储到数据帧
# 存储文件路径和文件内容的列表
filePaths = []
fileContents = []
# 遍历分卷目录下的所有文件
for root, dirs, files in os.walk(r'.\分卷'):for name in files:# 构建文件的完整路径filePath = os.path.join(root, name)print(filePath)# 将文件路径添加到列表filePaths.append(filePath)# 打开文件f = open(filePath, 'r', encoding='utf-8')# 读取文件内容fileContent = f.read()f.close()# 将文件内容添加到列表fileContents.append(fileContent)
# 将文件路径和文件内容存储到一个 DataFrame 中
corpos = pd.DataFrame({'filePath': filePaths,'fileContent': fileContents})
print(corpos)
使用 os.walk 遍历 .\分卷 目录下的所有文件,将文件路径存储在 filePaths 列表,文件内容存储在 fileContents 列表中。
将 filePaths 和 fileContents 存储在 pandas 数据帧 corpos 中。
jieba分词和去停用词处理
# 加载结巴分词的自定义词库
jieba.load_userdict(r'./红楼梦词库.txt')# 读取停用词文件
stopwords = pd.read_csv(r'StopwordsCN.txt',encoding='utf-8', engine='python', index_col=False)
# 打开一个文件用于存储分词结果
file_to_jieba = open(r'分词汇总.txt', 'w', encoding='utf-8')
# 遍历 DataFrame 中的每一行
for index, row in corpos.iterrows():# 存储分词后的内容juan_ci = ''# 获取文件路径filePath = row['filePath']# 获取文件内容fileContent = row['fileContent']# 对文件内容进行结巴分词segs = jieba.cut(fileContent)# 遍历分词结果for seg in segs:# 如果分词不在停用词列表中,且长度不为 0if seg not in stopwords.stopword.values and len(seg.strip()) > 0:# 将该分词添加到存储分词结果的字符串中juan_ci += seg + ' '# 将该卷的分词结果写入文件file_to_jieba.write(juan_ci + '\n')
# 关闭存储分词结果的文件
file_to_jieba.close()
计算 TF-IDF 并找出核心关键词
# 打开存储分词结果的文件
inFile = open(r'分词汇总.txt', 'r', encoding='utf-8')
# 读取文件的每一行存储在 corpus 中
corpus = inFile.readlines()# 创建 TF-IDF 向量化器
vectorizer = TfidfVectorizer()
# 对 corpus 进行拟合和转换,得到 TF-IDF 矩阵
tfidf = vectorizer.fit_transform(corpus)
# 获取特征名称
wordlist = vectorizer.get_feature_names()# 将 TF-IDF 矩阵转换为 DataFrame
df = pd.DataFrame(tfidf.T.todense(), index=wordlist)# 遍历每一个文档(这里假设是每一卷)
for i in range(len(corpus)):# 获取当前文档的 TF-IDF 特征列表featurelist = df.iloc[:, i].to_list()# 存储当前文档的关键词及其 TF-IDF 值resdict = {}# 遍历每个特征for j in range(0, len(wordlist)):# 将特征和对应的 TF-IDF 值存储到字典中resdict[wordlist[j]] = featurelist[j]# 对关键词按 TF-IDF 值降序排序resdict = sorted(resdict.items(), key=lambda x: x[1], reverse=True)# 输出第 i+1 个文档的前 10 个核心关键词print("第{}回的核心关键词:".format(i + 1), resdict[0:10]
部分结果:
相关文章:
《机器学习》——TF-IDF(关键词提取)
文章目录 TF-IDF简介TF-IDF应用场景TF-IDF模型模型参数主要参数 TF-IDF实例实例步骤导入数据和模块处理数据处理文章开头和分卷处理将各卷内容存储到数据帧jieba分词和去停用词处理 计算 TF-IDF 并找出核心关键词 TF-IDF简介 TF - IDF(Term Frequency - Inverse Do…...
金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout
找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数: 默认值: -Xms512m -Xmx1024m 改为: -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错:An I/O error occurred …...
XML在线格式化 - 加菲工具
XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...
thinkphp8.0 likeadmin 框架添加API 文档自动生成工具 apidoc支持
Apidoc 是一个便捷的 API 文档自动生成工具,它能帮助开发者快速生成和管理 API 文档。以下是 Apidoc 的主要特点和功能: 主要特点 开箱即用 安装后,无需繁杂配置,直接按照文档编写注释,即可自动生成 API 文档。 轻松编…...
计算机网络 (44)电子邮件
一、概述 电子邮件(Electronic Mail,简称E-mail)是因特网上最早流行的应用之一,并且至今仍然是因特网上最重要、最实用的应用之一。它利用计算机技术和互联网,实现了信息的快速、便捷传递。与传统的邮政系统相比&#…...
【Idea启动项目报错NegativeArraySizeException】
项目场景: Idea启动项目报错(打包不报错),项目在服务器部署运行没有问题,尝试了重启idea、重启电脑、maven clean/install 都不行 maven-resources-production:sample: java.lang.NegativeArraySizeException: -5833…...
长安“战疫”网络安全公益赛的一些随想
起因 今年刚进入大学,开始带校队,为了培养校队新成员,也就一直计划着和当地的一些高校合作交流,但是由于种种原因一直被搁置下来。正巧学校信息中心和四叶草有一个培训项目的合作,学校的网安协会也算是沾了光成为了培…...
【网络编程】基础知识
目录 网络发展史 局域网和广域网 局域网(LAN) 广域网(Wan) 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址(后续编程使用) IP地址转换 字节序 网络模型 网络的体系结…...
RK3568平台(音频篇)lineout无声调试
一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…...
计算机组成原理(计算机系统3)--实验三:取指和指令译码设计
一、 实验目标: 设计完成一个连续取指令并进行指令译码的电路,从而掌握设计简单数据通路的基本方法。 二、实验内容 本实验完成:1)首先完成一个译码器;2)接着实现一个寄存器文件;3࿰…...
紫光无人机AI飞控平台介绍
随着无人机技术的迅猛发展,无人机飞控平台的智能化需求不断提升。紫光无人机AI飞控平台作为一款创新型产品,为用户提供了从飞行控制到任务管理的一站式解决方案,尤其在AI实时识别和事件分析方面具有显著优势。本文将介绍平台的核心功能、技术…...
基于EMQX+MQTT+ESP32+Openharmony的开发实例
EMQX介绍 EMQ X 是基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是开源社区中最流行的 MQTT 消息服务器。EMQX 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实…...
npm发布组件(vue3+webpack)
1.初始化Vue项目 vue create my-app 2.本地运行 npm run serve 3.新增目录和文件 1. src/package/index.js 2. src/package/wlz-btn/index.vue 3. src/package/wlz-input/index.vue // src\package\index.js import WlzBtn from "./wlz-btn"; import WlzInput …...
kubuntu24.04配置vmware17.5.1
背景 个人主机的最后一次折腾吧。 丝滑上网前提:singbox实践https://blog.csdn.net/qq_43652666/article/details/145190110 vmware 博通官网下载vmware workstation pro 17.5.1版本,注意一个新注册的账号只能下载一个win版本的vmware和一个linux版本…...
开发规范
开发规范 企业项目开发有2种开发模式:前后台混合开发和前后台分离开发。 前后台混合开发 顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题…...
大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4)
大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4) 前言本篇摘要11. Chatbot:融合大模型的多模态聊天机器人11.4 使用Blocks创建自定义聊天机器人11.4.1 简单聊天机器人演示11.4.2 流式传输Chatbot11.4.3 添…...
[操作系统] 深入理解操作系统的概念及定位
概念 任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。 其核心功能如图片所示,包括: 内核 (Kernel): 内核是操作系统的核心部分,被认为是狭义上的操作系统,直接与硬件打交道。负责进程管理、内…...
redhat安装docker 24.0.7
1、下载docker镜像包 wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz 2、解压 tar -xvf docker-24.0.7.tgz 3、解压的docker文件夹全部移动至/usr/bin目录 cd docker cp -p docker/* /usr/bin 4、注册服务 vi /usr/lib/systemd/syste…...
数据库基础实验1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤
安装MySQL详细步骤 1. 下载 MySQL 安装程序 访问 MySQL 官方网站:MySQL Downloads。在下载页面,选择 "MySQL Community (GPL) Downloads"。在 "MySQL Community Server" 部分,根据你的操作系统(Windows&…...
如何攻击一个服务器(仅用于教育及娱乐实验目的)
import socket import osdef create_virus():# 创建一个简单的病毒脚本,它会不断尝试连接目标服务器并发送恶意数据virus_code """ import socket import time import threadingdef attack_server(ip, port):while True:try:s socket.socket(socke…...
HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)
在开发一款影视APP时,首页的轮播图是一个非常重要的部分。它不仅能够吸引用户的注意力,还能有效地推广重点内容。为了提升应用的性能和用户体验,可以实现轮播图的懒加载功能。本文将详细介绍如何在HarmonyOS NEXT应用开发中实现这一功能。 1.…...
Jmeter 简单使用、生成测试报告(一)
一、下载Jmter 去官网下载,我下载的是apache-jmeter-5.6.3.zip,解压后就能用。 二、安装java环境 JMeter是基于Java开发的,运行JMeter需要Java环境。 1.下载JDK、安装Jdk 2.配置java环境变量 3.验证安装是否成功(java -versio…...
采用海豚调度器+Doris开发数仓保姆级教程(满满是踩坑干货细节,持续更新)
目录 一、采用海豚调度器+Doris开发平替CDH Hdfs + Yarn + Hive + Oozie的理由。 1. 架构复杂性 2. 数据处理性能 3. 数据同步与更新 4. 资源利用率与成本 6. 生态系统与兼容性 7. 符合信创或国产化要求 二、ODS层接入数据 接入kafka实时数据 踩坑的问题细节 三、海…...
大疆最新款无人机发布,可照亮百米之外目标
近日,DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列,包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起,DJI Matrice 4T价格为38888元起。 图片来源:大疆官网 DJI Matrice 4E DJI Matrice 4T D…...
无公网IP 实现外网访问本地 Docker 部署 Navidrome
Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…...
踏上 C++ 编程之旅:开篇之作
踏上 C 编程之旅:开篇之作 在计算机编程的广袤天地中,C 宛如一座巍峨的高峰,吸引着无数开发者攀登探索。今天,就让我们一同开启这段充满挑战与惊喜的 C 编程之旅,在代码的世界里开辟属于自己的道路。 一、为什么选择…...
JS逆向系列之某考古站数据解密
声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 文章目录 声明本次目标网址逆向分析ing代码python实现最近太忙了,博客摆烂了好久,狗头保命.jpg。 本次目标网址 aHR0cHM6Ly93d3cua2F…...
idea 如何安装 github copilot
idea 如何安装 github copilot 要在 IntelliJ IDEA 中安装 GitHub Copilot,可以按照以下步骤操作: 打开 IntelliJ IDEA: 启动 IntelliJ IDEA。 打开插件管理器: 点击菜单栏中的 File。 选择 Settings(Windows/Linux)或 Prefere…...
html5各行各业官网模板源码下载 (4)
文章目录 1.来源2.源码模板2.1 html实现酷炫美观的可视化大屏(十种风格示例,附源码)2.2 HTML5实现古典音乐网站源码模板22.3 HTML5实现古典音乐网站源码模板32.4 HTML5实现小鸟过管道小游戏源码2.5 HTML5实现俄罗斯方块小游戏2.5 HTML5实现剪刀石头布小游戏(附源码)…...
2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一
2023-2024 学年 广东省职业院校技能大赛(高职组“信息安全管理与评估”赛题一) 模块一:网络平台搭建与设备安全防护第一阶段任务书任务 1:网络平台搭建任务 2:网络安全设备配置与防护DCRS:DCFW:DCWS:DCBC:WAF: 模块二:网络安全事件…...
理解CPU负载与使用率
目录 CPU使用率 CPU负载 CPU使用率 定义:就像看一个工人干活的时间占他上班时间的比例。比如工人上班8小时,实际干活6小时,干活时间占比就是68100%75%。对于CPU,单核的看它被占用的时间占总时间的比例,多核的就把每个…...
鸿蒙-点击Notification通知并打开App的具体页面
意图通知 获取router事件中传递参数并跳转 目前点击通知消息打开应用的指定页面,通过为通知添加行为意图的方式。也就是在wants的parameters中设置自定义参数,然后在UIAbility的onNewWant或者onCreate方法中 解析配置的自定义参数信息判断跳转不同页面&a…...
Jmeter分布式测试的注意事项和常见问题
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是一款开源的性能测试工具,使用Jmeter进行分布式测试时,也需要注意一些细节和问题,否则可能会影响测试结果的准确性和可靠…...
w~Transformer~合集11
我自己的原文哦~ https://blog.51cto.com/whaosoft/12472192 #LightSeq 最高加速9倍!字节跳动开源8比特混合精度Transformer引擎,近年来,Transformer 已经成为了 NLP 和 CV 等领域的主流模型,但庞大的模型参数限制了它的高效训练和推理。…...
YOLOv10-1.1部分代码阅读笔记-build.py
build.py ultralytics\data\build.py 目录 build.py 1.所需的库和模块 2.class InfiniteDataLoader(dataloader.DataLoader): 3.class _RepeatSampler: 4.def seed_worker(worker_id): 5.def build_yolo_dataset(cfg, img_path, batch, data, mode"train"…...
c++ 中的容器 vector、deque 和 list 的区别
表格汇总: 容器存储结构随机访问性能中间插入/删除性能两端插入/删除性能内存管理特点迭代器类型适用场景vector连续存储的动态数组 O ( 1 ) O(1) O(1) O ( n ) O(n) O(n)(需要移动元素)末尾: O ( 1 ) O(1) O(1),头部…...
如何有效学习PyTorch:从基础到实践的全面指南
随着人工智能和深度学习技术的飞速发展,PyTorch作为当前最流行的深度学习框架之一,凭借其动态计算图、灵活的编程模型以及强大的社区支持,在学术界和工业界均得到了广泛应用。本文旨在为初学者和有一定基础的读者提供一套系统、全面的PyTorch…...
大模型WebUI:Gradio全解11——Chatbots:融合大模型的多模态聊天机器人(3)
大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(3) 前言本篇摘要11. Chatbot:融合大模型的多模态聊天机器人11.3 组件Chatbot及ChatMessage11.3.1 Chatbot:聊天机器人组件1. API参数2.…...
MTK6768 Android13 亮度条均匀调节实现
文章目录 需求:问题现象:需求实现疑难问题点:相关资源修改的文件调试技巧具体需求实现去除亮度弹框设置去掉跳转逻辑SystemUI亮度条长按跳转屏蔽 实现亮度均匀调节PhoneWindowManager.javaBrightnessUtils convertLinearToGammaFloatBrightne…...
力扣560和为K的数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], …...
【MVCC过程中会加锁吗?】
MVCC过程中会加锁吗? 一、MVCC的工作原理二、MVCC的并发控制三、MVCC中的加锁情况在MVCC(Multi-Version Concurrency Control,多版本并发控制)过程中, 通常不需要加锁来控制并发访问。 MVCC是一种数据并发控制技术,它允许在不同的事务中对同一数据进行并发访问,而不需要…...
LeetCode100之搜索二维矩阵(46)--Java
1.问题描述 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回…...
Android BottomNavigationView不加icon使text垂直居中,完美解决。
这个问题网上千篇一律的设置iconsize为0,labale固定什么的,都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果:垂直方向,文本不居中,看着很难受 问题解决之后:舒服多了 其实很简单&…...
cmake + vscode + mingw 开发环境配置
1.软件准备 准备如下软件: mingw64(安装完成之后检测是否有环境变量,如果没有需要配置) cmake(安装完成之后检测是否有环境变量,如果没有需要配置) vscode(安装CMake插件࿰…...
【GPON实战】ONT和OLT的vlan处理机制(一)
引言 ONT和OLT支持多种vlan配置,包括单层tag vlan,默认vlan(PVID),vlan转换,vlan翻译,双层vlan等等。那ONT和OLT是如何处理的呢?本文将介绍ONT和OLT对vlan的处理机制,第一篇介绍单层vlan场景ONT和OLT如何打vlan和剥离vlan,第二篇将介绍OLT是如何通过omci消息将vlan的…...
Qt模块概览(核心模块、GUI模块等)
Qt 模块概览 Qt 是一个跨平台的应用程序开发框架,广泛用于开发图形用户界面(GUI)程序,在前面的章节中,我们已经介绍了许多控件、布局的用法,这些都属于QT的GUI模块,当然QT也支持非 GUI 程序的开发,也就是核心模块。 Qt 框架由多个模块组成,每个模块提供特定的功能。…...
七大排序算法
文章目录 排序的概念及引用1.插入排序2.希尔排序(缩小增量排序)3.选择排序4.堆排序5.冒泡排序6.快速排序7.归并排序8.代码排序部分的测试9.代码加效果大致测试时间(仅供参考) 排序的概念及引用 排序:将数据按照特定的规律排成递增或递减的操作 稳定性:…...
代理模式实现
一、概念:代理模式属于结构型设计模式。客户端不能直接访问一个对象,可以通过代理的第三者来间接访问该对象,代理对象控制着对于原对象的访问,并允许在客户端访问对象的前后进行一些扩展和处理;这种设置模式称为代理模…...
国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现后台批量生成PDF文档
PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(LoogArch)芯片架构。 PageOffice 版本&…...
基于若依的脚手架,扩展了flowable、mybatisPlus、lombok、前端美化
前言 若依框架可以说是非常优秀的框架,奈何前端一直有点丑,而且集成的东西比较少,我就基于若依,做了一个轻美化版本,主要集成了工作流、mybatisPlus、lombok等工具。 因为我也在用这个框架为公司做系统,所…...