人工智能中的文本分类:技术突破与实战指导

在本文中,我们全面探讨了文本分类技术的发展历程、基本原理、关键技术、深度学习的应用,以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用,旨在提供对文本分类技术深入理解的全面视角。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

一、引言

文本分类作为人工智能领域的一个重要分支,其价值和影响力已经深入到我们日常生活的各个角落。在这个数据驱动的时代,文本分类不仅是机器学习和深度学习技术的集中展示,更是智能化应用的基础。

文本分类的重要性

文本分类的核心是将文本数据按照其含义或属性分配到预定义的类别中。这听起来简单,但在实际操作中却极具挑战性。为什么文本分类如此重要?其实,无论是个人用户还是大型企业,我们都在日常生活中与海量的文本数据打交道。例如,电子邮件自动分类系统可以帮助我们区分垃圾邮件和重要邮件,社交媒体平台利用文本分类来过滤不恰当的内容,而在商业智能中,文本分类帮助企业从客户反馈中提取有价值的洞察。

技术发展历程

文本分类技术的发展经历了从简单的基于规则的方法到复杂的机器学习算法,再到今天的深度学习模型的演变。在早期,文本分类依赖于专家系统和简单的统计方法,但这些方法往往受限于规模和灵活性。随着机器学习的发展,尤其是支持向量机(SVM)和随机森林等算法的应用,文本分类的准确性和适应性有了显著提高。进入深度学习时代,卷积神经网络(CNN)和循环神经网络(RNN)等模型极大地提高了文本分类的性能,特别是在处理大规模和复杂的数据集时。

现代应用实例

在现代应用中,文本分类技术已成为许多行业不可或缺的部分。例如,在金融领域,文本分类被用于分析市场趋势和预测股市动态。金融分析师依赖于算法从新闻报道、社交媒体帖子和财报中提取关键信息,以做出更明智的投资决策。此外,医疗保健行业也在利用文本分类技术来处理病历报告,自动识别疾病模式和病人需求,从而提高诊断的准确性和效率。

通过这些例子,我们可以看到,文本分类不仅是技术的展示,更是现代社会运作和发展的关键部分。随着技术的不断进步和应用领域的不断拓展,文本分类的重要性和影响力只会继续增长。

二、文本分类基础

file
文本分类是人工智能和自然语言处理(NLP)领域的一个核心任务,涉及到理解和处理自然语言文本,将其分类到预定义的类别中。这一任务的基础是理解文本的含义,并据此做出决策。

文本分类的定义和目的

简单来说,文本分类是将文本数据(如文档、邮件、网页内容等)自动分配到一个或多个预定义类别的过程。这个过程的目的在于简化信息处理,提高数据组织和检索的效率,以及支持更复杂的信息处理任务,如情感分析或主题识别。

文本分类的关键要素

1. 预处理

  • 重要性:预处理是文本分类的首要步骤,涉及清洗和准备原始文本数据。
  • 方法:包括去除噪音(如特殊字符、无关信息)、词干提取、分词等。

2. 特征提取

  • 概念:将文本转化为机器可理解的形式,通常是数值向量。
  • 技术:传统方法如词袋模型(Bag of Words)和TF-IDF,以及现代方法如词嵌入(Word Embeddings)。

3. 分类算法

  • 多样性:文本分类可采用多种机器学习算法,包括朴素贝叶斯、决策树、支持向量机等。
  • 发展:深度学习方法如卷积神经网络(CNN)和循环神经网络(RNN)为文本分类带来了革命性的改进。

文本分类的应用领域

文本分类广泛应用于多个领域,包括:

  • 垃圾邮件检测:自动识别并过滤垃圾邮件。
  • 情感分析:从用户评论中提取情感倾向,广泛应用于市场分析和社交媒体监控。
  • 主题分类:自动识别文章或文档的主题,用于新闻聚合、内容推荐等。

挑战和考量

文本分类虽然技术成熟,但仍面临一些挑战:

  • 语言多样性和复杂性:不同语言和文化背景下的文本处理需要特定的适应和处理策略。
  • 数据不平衡和偏见:训练数据的质量直接影响分类性能,需要注意数据偏见和不平衡问题。
  • 实时性和可扩展性:在处理大量实时数据时,算法的效率和扩展性变得尤为重要。

在本章中,我们对文本分类的基础进行了全面的介绍,从定义和目的到关键技术和挑战,为深入理解文本分类的技术细节和实际应用打下了坚实的基础。

三、关键技术和模型

file
在深入探讨文本分类的关键技术和模型时,我们会涉及从传统的机器学习方法到现代的深度学习技术。每种技术都有其独特之处,并在特定的应用场景下表现出色。在这一部分,我们将通过一些关键代码段来展示这些模型的实现和应用。

传统机器学习方法

朴素贝叶斯分类器

朴素贝叶斯是一种基于概率的简单分类器,广泛用于文本分类。以下是使用Python和scikit-learn实现的一个简单例子:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

# 创建一个文本分类管道
text_clf_nb = Pipeline([
    ('vect', CountVectorizer()),
    ('clf', MultinomialNB()),
])

# 示例数据
train_texts = ["This is a good book", "This is a bad movie"]
train_labels = [0, 1]  # 0代表正面,1代表负面

# 训练模型
text_clf_nb.fit(train_texts, train_labels)

支持向量机(SVM)

支持向量机(SVM)是另一种常用的文本分类方法,特别适用于高维数据。以下是使用SVM的示例代码:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline

# 创建一个文本分类管道
text_clf_svm = Pipeline([
    ('tfidf', TfidfVectorizer()),
    ('clf', SVC(kernel='linear')),
])

# 训练模型
text_clf_svm.fit(train_texts, train_labels)

深度学习方法

卷积神经网络(CNN)

卷积神经网络(CNN)在图像处理领域表现突出,也被成功应用于文本分类。以下是使用PyTorch实现文本分类的CNN模型的简单例子:

import torch
import torch.nn as nn
import torch.nn.functional as F

class TextCNN(nn.Module):
    def __init__(self, vocab_size, embed_dim, num_classes):
        super(TextCNN, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.conv = nn.Conv2d(1, 100, (3, embed_dim))
        self.fc = nn.Linear(100, num_classes)

    def forward(self, x):
        x = self.embedding(x)  # Embedding layer
        x = x.unsqueeze(1)  # Add channel dimension
        x = F.relu(self.conv(x)).squeeze(3)  # Convolution layer
        x = F.max_pool1d(x, x.size(2)).squeeze(2)  # Max pooling
        x = self.fc(x)  # Fully connected layer
        return x

# 示例网络创建
vocab_size = 1000  # 词汇表大小
embed_dim = 100   # 嵌入层维度
num_classes = 2   # 类别数
model = TextCNN(vocab_size, embed_dim, num_classes)

循环神经网络(RNN)和LSTM

循环神经网络(RNN)及其变体LSTM(长短期记忆网络)在处理序列数据,如文本,方面非常有效。以下是使用PyTorch实现RNN的示例:

class TextRNN(nn.Module):
    def __init__(self, vocab_size, embed_dim, hidden_dim, num_classes):
        super(TextRNN, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.rnn = nn.RNN(embed_dim, hidden_dim, batch_first=True)
        self.fc = nn.Linear(hidden_dim, num_classes)

    def forward(self, x):
        x = self.embedding(x)
        x, _ = self.rnn(x)  # RNN layer
        x = x[:, -1, :]  # 获取序列的最后一个时间步的输出
        x = self.fc(x)
        return x

# 示例网络

创建
hidden_dim = 128  # 隐藏层维度
model = TextRNN(vocab_size, embed_dim, hidden_dim, num_classes)

这些代码段展示了不同文本分类技术的实现,从简单的机器学习模型到复杂的深度学习网络。在接下来的章节中,我们将进一步探讨这些模型的应用案例和性能评估。

四、深度学习在文本分类中的应用

深度学习技术已成为文本分类领域的重要推动力,为处理自然语言带来了前所未有的效果。在这一部分,我们将探讨深度学习在文本分类中的几种关键应用,并通过示例代码展示这些模型的实现。

卷积神经网络(CNN)的应用

CNN在文本分类中的应用,主要是利用其在提取局部特征方面的优势。以下是用PyTorch实现的一个简单的文本分类CNN模型:

import torch
import torch.nn as nn
import torch.nn.functional as F

class TextCNN(nn.Module):
    def __init__(self, vocab_size, embed_dim, num_classes):
        super(TextCNN, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.conv1 = nn.Conv2d(1, 100, (3, embed_dim))
        self.conv2 = nn.Conv2d(1, 100, (4, embed_dim))
        self.conv3 = nn.Conv2d(1, 100, (5, embed_dim))
        self.fc = nn.Linear(300, num_classes)

    def forward(self, x):
        x = self.embedding(x).unsqueeze(1)  # 增加一个维度表示通道
        x1 = F.relu(self.conv1(x)).squeeze(3)
        x1 = F.max_pool1d(x1, x1.size(2)).squeeze(2)
        x2 = F.relu(self.conv2(x)).squeeze(3)
        x2 = F.max_pool1d(x2, x2.size(2)).squeeze(2)
        x3 = F.relu(self.conv3(x)).squeeze(3)
        x3 = F.max_pool1d(x3, x3.size(2)).squeeze(2)
        x = torch.cat((x1, x2, x3), 1)  # 合并特征
        x = self.fc(x)
        return x

# 示例网络创建
vocab_size = 1000
embed_dim = 100
num_classes = 2
model = TextCNN(vocab_size, embed_dim, num_classes)

循环神经网络(RNN)和LSTM

RNN和LSTM在处理文本序列时表现出色,特别是在理解长文本和上下文信息方面。以下是使用PyTorch实现的LSTM模型:

class TextLSTM(nn.Module):
    def __init__(self, vocab_size, embed_dim, hidden_dim, num_classes):
        super(TextLSTM, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True)
        self.fc = nn.Linear(hidden_dim, num_classes)

    def forward(self, x):
        x = self.embedding(x)
        x, _ = self.lstm(x)  # LSTM layer
        x = x[:, -1, :]  # 获取序列最后一个时间步的输出
        x = self.fc(x)
        return x

# 示例网络创建
hidden_dim = 128
model = TextLSTM(vocab_size, embed_dim, hidden_dim, num_classes)

Transformer和BERT

Transformer模型,特别是BERT(Bidirectional Encoder Representations from Transformers),已经成为NLP领域的一个重要里程碑。BERT通过预训练和微调的方式,在多种文本分类任务上取得了革命性的进展。以下是使用Hugging Face的Transformers库来加载预训练的BERT模型并进行微调的代码:

from transformers import BertTokenizer, BertForSequenceClassification
import torch

# 加载预训练模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=num_classes)

# 示例文本
texts = ["This is a good book", "This is a bad movie"]
inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt")

# 微调模型
outputs = model(**inputs)

在这一章节中,我们展示了深度学习在文本分类中的几种关键应用,包括CNN、RNN、LSTM和Transformer模型。这些模型的代码实现为我们提供了一个实际操作的视角,帮助我们理解它们在文本分类任务中的作用和效果。

五、PyTorch实战:文本分类

在这一章节中,我们将通过一个具体的例子,展示如何使用PyTorch框架实现文本分类任务。我们将构建一个简单的深度学习模型,用于区分文本的情感倾向,即将文本分类为正面或负面。

场景描述

我们的目标是创建一个文本分类模型,能够根据用户评论的内容,自动判断其为正面或负面评价。这种类型的模型在各种在线平台,如电子商务网站、电影评价网站中都有广泛应用。

输入和输出

  • 输入:用户的文本评论。
  • 输出:二元分类结果,即正面(positive)或负面(negative)。

处理过程

1. 数据预处理

首先,我们需要对文本数据进行预处理,包括分词、去除停用词、转换为小写等,然后将文本转换为数字表示(词嵌入)。

2. 构建模型

我们将使用一个基于LSTM的神经网络模型,它能有效地处理文本数据的序列特性。

3. 训练模型

使用标记好的数据集来训练我们的模型,通过调整参数优化模型性能。

4. 评估模型

在独立的测试集上评估模型性能,确保其准确性和泛化能力。

完整的PyTorch实现代码

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, Dataset
import torch.nn.functional as F

# 示例数据集
class TextDataset(Dataset):
    def __init__(self, texts, labels):
        self.texts = texts
        self.labels = labels

    def __len__(self):
        return len(self.texts)

    def __getitem__(self, idx):
        return self.texts[idx], self.labels[idx]

# 文本分类模型
class TextClassifier(nn.Module):
    def __init__(self, vocab_size, embed_dim, hidden_dim, num_classes):
        super(TextClassifier, self).__init__()
        self.embedding = nn.Embedding(vocab_size, embed_dim)
        self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True)
        self.fc = nn.Linear(hidden_dim, num_classes)

    def forward(self, x):
        x = self.embedding(x)
        x, _ = self.lstm(x)
        x = x[:, -1, :]
        x = self.fc(x)
        return x

# 参数设置
vocab_size = 10000  # 词汇表大小
embed_dim = 100    # 嵌入维度
hidden_dim = 128   # LSTM隐藏层维度
num_classes = 2    # 类别数(正面/负面)
batch_size = 64    # 批处理大小
learning_rate = 0.001  # 学习率

# 数据准备
train_dataset = TextDataset([...], [...])  # 训练数据集
test_dataset = TextDataset([...], [...])   # 测试数据集

train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)

# 初始化模型
model = TextClassifier(vocab_size, embed_dim, hidden_dim, num_classes)
optimizer = optim.Adam(model.parameters(), lr=learning_rate)

# 训练过程
for epoch in range(num_epochs):
    for texts, labels in train_loader:
        outputs = model(texts)
        loss = F.cross_entropy(outputs, labels)
        
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

# 测试过程
correct = 0
total = 0
with torch.no_grad():
    for texts, labels in test_loader:
        outputs = model(texts)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print(f'Accuracy of the model on the test texts: {100 * correct / total}%')

六、总结

在本文中,我们对文本分类技术进行了全面的探讨,从其基本原理到高级应用,从传统机器学习方法到最新的深度学习技术。我们的目的是为读者提供一个从基础到前沿的知识架构,帮助他们深入理解文本分类在人工智能领域的重要地位和发展趋势。

  1. 技术融合的重要性:文本分类的进步不仅仅源于单一技术的突破,而是多种技术的融合与创新。例如,深度学习的兴起给传统的文本分类方法带来了新的生命力,而最新的模型如Transformer则是自然语言处理领域的一个重大革命。

  2. 数据的核心作用:无论技术多么先进,高质量的数据始终是文本分类成功的关键。数据的准备、预处理和增强对于构建高效、准确的模型至关重要。

  3. 模型的可解释性与道德责任:随着文本分类技术的广泛应用,模型的可解释性和道德责任成为了不可忽视的话题。如何确保模型的决策公平、透明,并考虑到潜在的伦理影响,是我们未来需要深入探讨的问题。

  4. 持续的技术革新:文本分类领域持续经历着快速的技术革新。从最初的基于规则的系统,到现在的基于深度学习的模型,技术的进步推动了文本分类应用的边界不断扩展。

  5. 实践与理论的结合:理论知识和实际应用的结合是理解和掌握文本分类技术的关键。通过实战案例,我们能更深刻地理解理论,并在实际问题中找到合适的解决方案。

在文本分类的未来发展中,我们预计将看到更多的技术创新和应用探索。这不仅会推动人工智能领域的进步,也将在更广泛的领域产生深远的影响。我们期待看到这些技术如何在不同的行业中发挥作用,同时也关注它们如何更好地服务于社会和个人。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/175720.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传

实现 //时间戳13位毫秒private function getMillisecond() {list($s1,$s2) explode( ,microtime());return (float)sprintf(%.0f,(floatval($s1) floatval($s2)) * 1000);}// 组装参数private function gysscPost1($url,$data){// $data[timestamp] 1694402111964;$data[tim…

主播产品话术

以电子产品为例 一、产品特点 1.高效性能:这款产品采用了最先进的技术,确保高效运行,让你的工作更加流畅。 2.便捷操作:设计简洁,操作方便,即使是不熟悉电子产品的人也能轻松上手。 3.时尚外观:多种颜色可选,满足你…

2023年中国离心制冷机产量及产业链分析[图]

离心制冷机是一种常用的空调制冷设备,目前主要应用于酒店、写字楼、商场、学校等众多大型场所的集中制冷场景。离心制冷机由离心式制冷压缩机、蒸发器、冷凝器、主电动机、抽气回收装置、润滑系统、控制柜和起动柜等零部件组成。这些零部件的组成有的采用分散型组装…

不看后悔系列 | 秒做BI报表,告别低效分析

根据经验来看,做企业数据分析,通常是由业务提出需求,交给IT去取数开发,当业务通过分析报表有了新的需求时,仍需交给IT去取数分析,这就导致业务的分析效率低。进入大数据时代,这样的低效数据分析…

wpf使用CefSharp.OffScreen模拟网页登录,并获取身份cookie

目录 框架信息&#xff1a;MainWindow.xamlMainWindow.xaml.cs爬取逻辑模拟登录拦截请求Cookie获取 CookieVisitorHandle 框架信息&#xff1a; CefSharp.OffScreen.NETCore 119.1.20 MainWindow.xaml <Window x:Class"Wpf_CHZC_Img_Identy_ApiDataGet.MainWindow&qu…

ASM字节码操作类库(打开java语言世界通往字节码世界的大门) | 京东云技术团队

前言&#xff1a;授人以鱼不如授人以渔&#xff0c;应用asm的文章有很多&#xff0c;简单demo的也很多&#xff0c;那么ASM都具备哪些能力呢&#xff1f;如何去学习编写ASM代码呢&#xff1f;什么样的情景需要用到ASM呢&#xff1f;让我们带着这些问题阅读这篇文章吧。 这里由…

功率放大器在无线收发系统中的作用

功率放大器在无线收发系统中也扮演着至关重要的角色。无线通信是一种通过电磁波传输信息的技术&#xff0c;它具有便捷、灵活、广覆盖等优势&#xff0c;在现代社会得到了广泛应用。而功率放大器则是无线收发系统中的核心组件之一&#xff0c;主要用于增强信号的功率和距离。下…

paramiko STELNET登陆设备

实验目的&#xff1a; 公司有一台CE12800的设备&#xff0c;管理地址位172.16.1.2&#xff0c;现在需要编写自动化脚本&#xff0c;通过ssh登陆到设备上并进行简单的信息查看。 实验拓扑&#xff1a; 实验步骤&#xff1a; 步骤1&#xff1a;将本地电脑和ensp的设备进行桥接…

振南技术干货集:制冷设备大型IoT监测项目研发纪实(2)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 &#xff08;制冷设备对于便利店为何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。&#xff09; 2、电路设计 2.1 防护电路 2.1.1 强电防护 …

HT5169 单声道D类音频功放 I2S输入

HT5169是一款内置BOOST升压模块的D类音频功率放大器。内置的BOOST升压模块可通过外置电阻调节升压值&#xff0c;即使是锂电池供电&#xff0c;在升压至7.5V&#xff0c;2Ω负载条件下则能连续输出 11W功率。其支持外部设置调节BOOST输出电压。 HT5169是一颗单声道D类音频功放&…

银河麒麟安装Docker

# 配置阿里云 Centos8 镜像源&#xff0c;需要额外的一些依赖&#xff0c;而这些依赖在麒麟官方的源里面是没有的 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo# 配置阿里云 docker 镜像源 sudo yum-config-manager --add-r…

4.15每日一题(连续函数在有界闭区域上求最大/小值:拉格朗日乘数法、化条件为无条件法)

方法一&#xff1a;拉格朗日乘数法&#xff08;拉格朗日乘数设的方程比较好解的时候使用&#xff09; 方法二&#xff1a;化条件为无条件 &#xff08;拉格朗日乘数设的方程不好解的时候使用&#xff09; &#xff08;1&#xff09;直角坐标方程化条件为无条件法 &#xff08;2…

WCS WMS WES关系

一、定义&#xff1a; 仓库控制系统 &#xff08;WCS&#xff09; 是一种软件应用程序。 WCS用于指导仓库和配送中心&#xff08;DC&#xff09; 内的实时活动。作为仓库/配送中心的“交通警察”&#xff0c;WCS 负责保持一切顺利运行&#xff0c;最大限度地提高物料搬运子系…

CSS实现空心的“尖角”

大家好&#xff0c;我是南宫&#xff0c;来分享一个昨天解决的问题。 我记得之前刷面试题的时候&#xff0c;CSS面试题里面赫然有一题是“如何用CSS实现三角形”&#xff0c;我觉得这个问题确实很经典&#xff0c;我上的前端培训班当初就讲过。 大概思路如下&#xff1a; 先…

hadoop shell操作 hdfs处理文件命令 hdfs上传命令 hadoop fs -put命令hadoop fs相关命令 hadoop(十三)

hadoop fs -help rm 查看rm命令作用 hadoop fs 查看命令 1. 创建文件夹&#xff1a; # hdfs前缀也是可以的。更推荐hadoop hadoop fs -mkdir /sanguo 2.上传至hdfs命令&#xff1a; 作用&#xff1a; 从本地上传hdfs系统 &#xff08;本地文件被剪切走&#xff0c;不存在了&…

技术分享| gcc版本升级到5.2

一、介绍 GCC&#xff08;GNU Compiler Collection&#xff09;是一套广泛使用的开源编译器集合&#xff0c;用于编译多种编程语言&#xff0c;包括C、C、Objective-C、Fortran等。GCC 的不同版本提供了许多新功能、改进和修复&#xff0c;其中包括从 GCC 4.8.5 升级到 GCC 5.…

分享十几个适合新手练习的软件测试项目

说实话&#xff0c;在找项目的过程中&#xff0c;我下载过&#xff08;甚至付费下载过&#xff09;N多个项目、联系过很多项目的作者&#xff0c;但是绝大部分项目&#xff0c;在我看来&#xff0c;并不适合你拿来练习&#xff0c;它们或多或少都存在着“问题”&#xff0c;比如…

AIGC 点亮创作之旅,「重内容」行业也能轻装出发

毋庸置疑&#xff0c;AIGC 的普及成为了内容产业的一束光。 不仅策划们可以从信息挖掘、素材调用、修改编辑等基础文案工作中解放出来&#xff0c;美术也成为 AIGC 的应用强项&#xff0c;基本的加文字、换背景、改尺寸、延展素材等&#xff0c;都能快速解决。 内容创作者们也因…

kafka权限认证 topic权限认证 权限动态认证-亲测成功

kafka权限认证 topic权限认证 权限动态认证-亲测成功 kafka动态认证 自定义认证 安全认证-亲测成功 MacBook Linux安装Kafka Linux解压安装Kafka 介绍 1、Kafka的权限分类 身份认证&#xff08;Authentication&#xff09;&#xff1a;对client 与服务器的连接进行身份认证…

leetcode 240. 搜索二维矩阵 II

2023.11.22 本题最先想到的是暴力法和二分法&#xff0c;暴力法就不写了&#xff0c;写一下二分法的解法&#xff0c;java代码如下&#xff1a; class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row : matrix){int left 0;int right r…