基于Word2Vec和LSTM实现微博评论情感分析

关于深度实战社区

我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万+粉丝,拥有2篇国家级人工智能发明专利。

社区特色:深度实战算法创新

获取全部完整项目数据集、代码、视频教程,请进入官网:zzgcz.com。竞赛/论文/毕设项目辅导答疑,v:zzgcz_com


1. 项目简介

本项目是一个基于深度学习的中文情感分析模型。其目标是通过分析社交媒体文本(如微博)中的情感倾向,识别出用户发布内容的情感类型(正面、中性或负面)。项目的数据集为某社交媒体平台的标注微博内容,模型使用LSTM(长短时记忆网络)对中文文本进行情感分类。首先,项目采用中文分词技术对文本进行预处理,并去除停用词,然后使用Word2Vec生成词向量。随后,模型将预训练的词向量作为嵌入层输入,通过LSTM对文本进行特征提取,并通过全连接层输出情感分类结果。模型采用了交叉熵损失函数进行损失计算,并使用Adam优化器进行参数优化。训练完成后,项目使用测试集进行模型评估,并输出分类的准确率。此模型可广泛应用于社交媒体内容分析、用户情感监测、市场情绪分析等场景,有助于进一步了解用户的真实情感和态度,从而提供更具针对性的服务或策略。

在这里插入图片描述

2.技术创新点摘要

  1. 数据预处理的优化: 项目对原始微博数据进行了有效的清洗和处理,包括去除缺失值、停用词过滤以及中文分词。为了提升文本处理的效果,项目采用了jieba库进行分词,能够识别中文文本中的复杂语义结构。与传统的文本预处理相比,使用自定义的停用词表进一步过滤噪声词汇,从而保留更为关键的文本信息。
  2. 自定义词向量生成: 在词向量表示中,项目通过Word2Vec模型生成了语料库中的词向量表示,并采用自定义的词典和填充机制。特别地,模型定义了词到索引的映射,使用“”符号作为填充符,使得所有序列长度一致,确保了数据输入的一致性。Word2Vec模型利用上下文关系捕捉了中文词汇的潜在语义表示,相比于传统的one-hot编码,它能够更好地表达词语间的语义关系,提升了情感分类的效果。
  3. 自定义LSTM模型设计: 在模型结构上,项目设计了一个多层LSTM模型用于特征提取,并将其与全连接层结合进行情感分类。LSTM具备处理长序列数据的能力,可以有效捕捉上下文信息,从而在处理复杂的中文语句时能够考虑长距离依赖关系。此外,嵌入层使用了基于Word2Vec生成的预训练词向量,并通过设置嵌入层权重不可训练的方式进行参数冻结,这样不仅提高了模型的收敛速度,还避免了训练过程中对词向量的过度调整,保持了词向量原有的语义信息。
  4. 分类标签的自定义映射与损失函数的选择: 项目对原始情感标签进行了自定义映射,并采用了交叉熵损失函数来处理多类别情感分类问题。在优化策略上,使用了Adam优化器进行参数更新,Adam通过自适应学习率调整提升了模型训练的稳定性和收敛速度。

3. 数据集与预处理

数据集来源及特点: 本项目的数据集来自社交媒体平台(如微博),包含经过标注的用户发布内容及其情感标签。数据集包括两个主要字段:‘微博中文内容’和’情感倾向’。'微博中文内容’为用户在社交媒体上的文本信息,而’情感倾向’分为正面(1)、中性(0)、和负面(-1)三种类别标签。项目使用了前1000条标注样本,经过初步清洗处理后,总样本数有所减少。此数据集的特点是文本内容较为简短、非正式语句较多,且存在大量网络用语、表情符号等,增加了情感分类的复杂度。

数据预处理流程:

  1. 数据清洗: 项目首先检查了’微博中文内容’列中的缺失值并删除所有含有缺失值的记录,确保输入数据完整性。接着通过定制的停用词表过滤掉高频但无实际意义的词汇(如“的”、“了”等),以减少噪声影响。
  2. 中文分词处理: 由于中文文本缺乏天然的分隔符,项目使用了jieba分词工具对文本进行切分,将整段文本分解成单独的词语。相较于字粒度的处理,词粒度能够更好地表达中文语义,提高模型的理解能力。
  3. 词向量生成: 预处理后的文本经过Word2Vec模型训练生成词向量。Word2Vec通过上下文窗口捕捉词汇的语义关系,并将每个词映射为100维的向量表示。随后,项目定义了词到索引的映射,并通过填充符()对文本序列进行填充,使所有文本的输入长度一致,从而确保模型在处理时输入数据格式的规范性。
  4. 特征工程: 项目提取了每条文本的分词结果,并将其转换为对应的词向量索引。针对情感标签,项目进行了自定义映射,将原始标签映射为数值标签,以便模型识别并进行分类处理。该过程使得模型能够充分利用文本特征进行情感倾向的分类。

4. 模型架构

  1. 模型结构的逻辑与数学公式

本项目采用了**LSTM(长短时记忆网络)**模型进行中文情感分类。模型分为以下几层:

  1. 嵌入层(Embedding Layer)

    1. 该层的主要功能是将输入的词语索引(input_ids)转换为词向量(word embeddings)。模型使用了预训练好的Word2Vec词向量,并定义了词汇表大小和嵌入维度。嵌入矩阵的表示如下:

E ∈ R V × D \mathbf{E} \in \mathbb{R}^{V \times D} ERV×D

其中,V 是词汇表大小,D 是词向量的维度。在模型中,词汇表大小为vocab_size,每个词的向量表示维度为100。嵌入层的输出为每个句子中词语索引对应的嵌入向量序列:

X = E [ i n p u t _ i d s ] ( X ∈ R N × D ) \mathbf{X} = \mathbf{E}[input\_ids] \quad (\mathbf{X} \in \mathbb{R}^{N \times D}) X=E[input_ids](XRN×D)

其中,N 是句子中的词数。

  1. LSTM层(Long Short-Term Memory Layer)

    1. LSTM层的目的是提取文本的上下文特征。LSTM通过输入门、遗忘门和输出门来控制信息的流动,避免长期依赖的问题。其每个时刻的输出为:

h t , c t = L S T M ( X t , h t − 1 , c t − 1 ) \mathbf{h}_t, \mathbf{c}_t = LSTM(\mathbf{X}_t, \mathbf{h}_{t-1}, \mathbf{c}_{t-1}) ht,ct=LSTM(Xt,ht1,ct1)

其中,ht 是当前时刻的隐藏状态,ct 是记忆状态。该模型的LSTM层包含128个隐藏单元(hidden_dim=128),因此输出隐藏状态的维度为:

h t ∈ R 128 \mathbf{h}_t \in \mathbb{R}^{128} htR128

  1. 全连接层(Fully Connected Layer)

    1. LSTM层的最后一个隐藏状态作为情感分类的输入,并通过全连接层(FC层)进行情感分类。全连接层的输出表示为:

y = W h l a s t + b \mathbf{y} = \mathbf{W} \mathbf{h}_{last} + \mathbf{b} y=Whlast+b

其中,W 是权重矩阵(维度为128 \times 3),b 是偏置向量,hlast 是LSTM层的最后一个隐藏状态。模型的输出层维度为3,对应三种情感类别(正面、中性、负面)。

  1. 损失函数(Loss Function)

    1. 模型采用交叉熵损失函数(Cross-Entropy Loss),用于计算模型预测与实际标签之间的误差:

L = − 1 N ∑ i = 1 N ∑ j = 1 C y i j ⋅ log ⁡ ( p i j ) \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{C} y_{ij} \cdot \log(p_{ij}) L=N1i=1Nj=1Cyijlog(pij)

其中,N 是样本数量,C 是类别数量,yij 是第i个样本第j个类别的真实标签,pij 是模型预测的第j个类别的概率。

  1. 模型整体训练流程

模型的整体训练流程如下:

  1. 数据加载与预处理: 数据集被分为训练集和测试集,分别使用自定义的WeiboDataset类进行封装,并通过DataLoader进行批次加载(训练集和测试集批次大小均为32)。

  2. 模型初始化: 初始化SentimentLSTM模型,设置词汇表大小、嵌入维度(100)、LSTM隐藏层单元数(128)、输出类别(3),并导入预训练的Word2Vec词向量矩阵。

  3. 训练过程:

    1. 前向传播(Forward Propagation): 将输入文本索引序列传入模型,经过嵌入层、LSTM层和全连接层输出预测结果。
    2. 损失计算(Loss Calculation): 采用交叉熵损失函数计算预测结果与真实标签之间的误差。
    3. 反向传播(Backward Propagation): 通过loss.backward()计算梯度,并使用Adam优化器进行参数更新(学习率设为0.001)。
    4. 多轮次训练(Epoch Training): 训练过程持续10个epoch,每个epoch输出训练集的平均损失。
  4. 模型评估: 在测试集上进行评估,模型计算所有样本的预测类别,并与真实类别标签进行比对,统计正确预测数量,从而计算测试集的准确率。准确率的计算公式如下:

A c c u r a c y = Number of Correct Predictions Total Number of Predictions × 100 % Accuracy = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}} \times 100\% Accuracy=Total Number of PredictionsNumber of Correct Predictions×100%

  1. 模型评估指标
  • 准确率(Accuracy): 准确率衡量了模型在测试集上的分类正确性,表示为所有正确分类的样本占总样本的比例。通过输出准确率,可以直观地了解模型在情感分类任务中的表现。

5. 核心代码详细讲解

1. 数据预处理和特征工程

1.1 数据清洗与分词处理
# 加载停用词,将停用词文件中的每一行读取并存入集合stop_words中with open('停用词.txt', 'r', encoding='utf-8') as f:stop_words = set(f.read().splitlines())
  • 解释: 该段代码通过读取本地的“停用词.txt”文件来获取停用词列表。每一行代表一个停用词,通过splitlines()函数将其存入集合stop_words中。停用词的作用是在后续的分词处理中去除无意义或常见的词汇(如“的”、“了”),以避免这些词对模型训练产生干扰。
# 定义数据预处理函数,用于分词和去除停用词def preprocess_text(text):words = jieba.lcut(text)  # 使用jieba进行中文分词words = [word for word in words if word not in stop_words]  # 去除停用词return words  # 返回处理后的词列表
  • 解释: preprocess_text 是用于文本预处理的函数,执行以下两个步骤:

    • 使用jieba.lcut()对输入的文本进行分词,返回一个词语列表。
    • 遍历分词结果,去除所有存在于stop_words集合中的词汇,仅保留有意义的词语。这一过程可以有效减少文本中无用信息的干扰,提高模型的特征表达效果。
1.2 Word2Vec词向量生成与映射
# 训练Word2Vec模型,设置向量维度为100,窗口大小为5,最低词频为1,使用4个线程
w2v_model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
  • 解释: 该行代码使用Word2Vec模型来训练词向量:

    • sentences:输入的数据集,包含分词后的文本列表。
    • vector_size=100:设置词向量的维度为100(每个词用100个浮点数表示)。
    • window=5:窗口大小为5,即考虑目标词周围5个词作为上下文。
    • min_count=1:词语最低出现频率为1,保证所有词都能被纳入词向量训练中。
    • workers=4:使用4个CPU线程并行处理,提升训练速度。
# 创建词到索引的映射字典,索引从1开始,0预留给填充符'<PAD>'
word2idx = {word: idx + 1 for idx, word in enumerate(vocab)}
word2idx['<PAD>'] = 0  # 添加填充符的索引
  • 解释: 创建一个词到索引的映射字典(word2idx),其中word是词汇表中的每个词,idx为对应的索引。索引从1开始,0被保留给填充符<PAD>。该填充符用于对输入文本进行序列长度的统一操作。

2. 模型架构构建

class SentimentLSTM(nn.Module):def init(self, vocab_size, embed_dim, hidden_dim, output_dim, embeddings):super(SentimentLSTM, self).__init__()  # 调用父类的构造函数self.embedding = nn.Embedding(vocab_size, embed_dim, padding_idx=0)  # 定义嵌入层,忽略索引0的填充符self.embedding.weight.data.copy_(torch.from_numpy(embeddings))  # 将预训练的词向量赋值给嵌入层权重self.embedding.weight.requires_grad = False  # 冻结嵌入层权重,不进行微调self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True)  # 定义LSTM层,输入维度为嵌入维度,隐藏维度为hidden_dimself.fc = nn.Linear(hidden_dim, output_dim)  # 定义全连接层,将LSTM的隐藏状态映射到输出维度
  • 解释:
  1. self.embedding = nn.Embedding(vocab_size, embed_dim, padding_idx=0): 定义嵌入层,将输入的词语索引转换为对应的词向量,padding_idx=0表示填充符不参与计算。
  2. self.embedding.weight.data.copy_(torch.from_numpy(embeddings)): 使用Word2Vec生成的词向量(embeddings)来初始化嵌入层权重。
  3. self.embedding.weight.requires_grad = False: 冻结嵌入层权重,避免在模型训练过程中更新该层权重,从而保持词向量的原始语义信息。
  4. self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True): 定义LSTM层,其中embed_dim为输入维度,hidden_dim为LSTM的隐藏单元数量(本项目为128),batch_first=True表示输入的维度顺序为[batch_size, sequence_length, embed_dim]
  5. self.fc = nn.Linear(hidden_dim, output_dim): 定义全连接层,将LSTM层输出的隐藏状态映射到情感分类结果(3个类别)。

3. 模型训练与评估

for epoch in range(num_epochs):model.train()  # 设置模型为训练模式total_loss = 0  # 初始化总损失为0for inputs, labels in train_loader:  # 遍历训练数据加载器optimizer.zero_grad()  # 清零梯度outputs = model(inputs)  # 前向传播,获取模型输出loss = criterion(outputs, labels)  # 计算损失loss.backward()  # 反向传播,计算梯度optimizer.step()  # 更新模型参数total_loss += loss.item()  # 累加损失avg_loss = total_loss / len(train_loader)  # 计算平均损失print(f'Epoch {epoch + 1}/{num_epochs}, Loss: {avg_loss:.4f}')  # 打印当前轮次的损失
  • 解释:
  1. model.train():将模型设置为训练模式,使得模型的参数可更新。
  2. optimizer.zero_grad():每次训练前清空梯度,以避免梯度累加。
  3. outputs = model(inputs):将训练集数据传入模型,执行前向传播,获取模型预测输出。
  4. loss = criterion(outputs, labels):计算模型预测结果与真实标签之间的交叉熵损失。
  5. loss.backward():反向传播误差,计算模型的梯度。
  6. optimizer.step():根据计算出的梯度更新模型的权重参数。
  7. avg_loss = total_loss / len(train_loader):计算当前epoch的平均损失,并输出结果。

这些代码行构成了核心的训练与更新流程,每个epoch后会输出当前轮次的损失值,从而监测模型收敛效果。

6. 模型优缺点评价

优点:

  1. 有效的特征表达: 模型使用了Word2Vec词向量进行嵌入层初始化,并且通过预训练的词向量提高了模型的文本语义理解能力。这样既保留了词语之间的上下文语义关系,又避免了简单的one-hot编码无法表达词语间语义的局限性。
  2. 上下文信息的捕捉: 使用LSTM网络来处理文本序列数据,LSTM具备处理长序列依赖的能力,能够更好地理解文本的上下文信息,特别适用于中文情感分类任务中长句与复杂句结构的理解。
  3. 合理的权重冻结策略: 通过将嵌入层权重进行冻结,模型避免了对词向量的过度微调,从而保留了预训练词向量的原有语义信息,提升了模型的稳定性和收敛速度。
  4. 模型简单易实现: 模型结构设计相对简单,包括嵌入层、LSTM层和全连接层,易于实现和调试,适合小规模数据集的情感分类任务。

缺点:

  1. 缺乏更复杂的深度特征提取: 模型仅使用单层LSTM,无法捕捉文本中的更深层次特征。在处理复杂语句(如包含讽刺、反问等)的情感分类时,表现力可能受到限制。
  2. 对长文本的处理效果有限: 虽然LSTM可以捕捉上下文信息,但对于超长文本,模型的表现力可能会下降,因为LSTM的记忆单元仍存在信息遗失的风险。
  3. 模型易受过拟合影响: 由于模型相对简单,参数量较少,在小数据集上可能容易出现过拟合的情况,导致在测试集上表现不佳。

可能的改进方向:

  1. 模型结构优化: 可以尝试使用双向LSTM(Bi-LSTM)或添加多层LSTM来提升模型捕捉复杂语义特征的能力。此外,可以在LSTM层后加入Attention机制,进一步聚焦重要的文本特征信息。
  2. 超参数调整: 调整LSTM的隐藏层单元数量、批次大小或学习率等超参数,以提高模型的收敛效果。
  3. 数据增强: 可以通过数据增强策略(如同义词替换、随机删除等)扩充训练数据,提升模型的泛化能力。还可以考虑引入更大规模的数据集进行训练,以进一步提升模型的稳健性和性能。

↓↓↓更多热门推荐:
基于YOLOv4和DeepSORT的车牌识别与跟踪系统
基于人工智能的实时健身训练分析系统:深蹲姿态识别与动作评估

全部项目数据集、代码、教程进入官网zzgcz.com

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css动态边框

参考&#xff1a; Clip-path实现按钮流动边框动画_在线clip-path-CSDN博客 https://www.5axxw.com/questions/simple/9ju5yt#google_vignette <div class"bottom-top-item-centent bottom-top-item-left"><vue-seamless-scroll :data"listLeftData&q…

【算法】链表:206.反转链表(easy)

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法&#xff08;快慢指针&#xff09; 解题步骤&#xff1a; 关键点&#xff1a; 复杂度分析&#xff1a; 4、代码 1、题目链接 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; …

如何用JavaScript编写一个简单的计数器

在网页开发中&#xff0c;计数器是一种常见的功能&#xff0c;它可以帮助我们记录点击次数、显示时间等。下面我将介绍如何在HTML页面中使用JavaScript实现一个基本的计数器。如图&#xff1a; 1、 创建HTML结构 首先&#xff0c;我们需要创建一个基础的HTML结构来容纳我们的计…

自动驾驶系列—深度剖析自动驾驶芯片SoC架构:选型指南与应用实战

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

物联网将如何影响全球商业?

互联网使人们能够交流&#xff0c;企业能够全天候不间断地跨洋跨洲持续运营。它重塑、颠覆并催生了新的产业&#xff0c;改变了人类与世界互动的方式。互联网曾经仅仅是一种方便、快捷、廉价的向世界各地发送信息的方式&#xff0c;而现在&#xff0c;只需打开或关闭任何连接到…

【C++】树形结构的关联式容器:set、map、multiset、multimap的使用

&#x1f33b;个人主页&#xff1a;路飞雪吖~ ✨专栏&#xff1a;C/C 目录 一、set的简单介绍和使用 &#x1f31f;set的介绍 &#x1f525;注意&#xff1a; &#x1f320;小贴士&#xff1a; &#x1f31f;set的使用 ✨set的构造 ✨set的迭代器 ​编辑 ✨set的容量 …

Html--笔记01:使用软件vscode,简介Html5--基础骨架以及标题、段落、图片标签的使用

一.使用VSC--全称&#xff1a;Visual Studio Code vscode用来写html文件&#xff0c;打开文件夹与创建文件夹&#xff1a;①选择文件夹 ②拖拽文件 生成浏览器的html文件的快捷方式&#xff1a; &#xff01;enter 运行代码到网页的方法&#xff1a; 普通方法&#xff1a…

Vue3实现动态菜单功能

文章目录 0.效果演示1.搭建Vue3项目1.1 vite 脚手架创建 Vue3 项目1.2 设置文件别名1.3 安装配置 element-plus1.4 安装配置路由2.登录页面3.后台管理页面3.1 搭建后台框架3.2 左侧菜单栏3.3 header 用户信息3.4 主要内容3.5 footer4.配置静态路由5.记录激活菜单5.1 el-menu 绑…

yub‘s Algorithmic Adventures_Day3

yub’s Algorithmic Adventures_Day3 有序数组的平方 link&#xff1a;977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 非递减顺序 一个数列中的元素从左到右依次不减&#xff0c;或者说不降序排列. 比如&#xff1a;1233445&#xff0c;12345. 思路分析 如果…

二分查找算法专题(1)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 优选算法专题 目录 二分查找算法的介绍 704. 二分查找 34. 在排序数组中查找元素的第一个和 最后一个位置 35. 搜索插入位置 69. x的平…

Java网络通信—UDP

0.小记 1.udp通信不需要建立socket管道&#xff0c;一边只管发&#xff0c;一边只管收 2.客户端&#xff1a;将数据&#xff08;byte&#xff09;打包成包裹&#xff08;DatagramPacket&#xff09;&#xff0c;写上地址&#xff08;IP端口&#xff09;&#xff0c;通过快递站&…

【网络安全】Cookie与ID未强绑定导致账户接管

未经许可,不得转载。 文章目录 前言正文前言 DigiLocker 是一项在线服务,旨在为公民提供一个安全的数字平台,用于存储和访问重要的文档,如 Aadhaar 卡、PAN 卡和成绩单等。DigiLocker 通过多因素身份验证(MFA)来保护用户账户安全,通常包括 6 位数的安全 PIN 和一次性密…

大数据开发--1.2 Linux介绍及虚拟机网络配置

目录 一. 计算机入门知识介绍 软件和硬件的概述 硬件 软件 操作系统概述 简单介绍 常见的系统操作 学习Linux系统 二. Linux系统介绍 简单介绍 发行版介绍 常用的发行版 三. Linux系统的安装和体验 Linux系统的安装 介绍 虚拟机原理 常见的虚拟机软件 体验Li…

[Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法

标题&#xff1a;[Linux] Linux 的进程如何调度——优先级与进程调度 个人主页水墨不写bug 目录 一、前言 二、将要出现的概念 1.进程调度队列 2.位图 3.进程的优先级 三、Linux进程的调度过程 1.活动队列&#xff08;*active指向的队列&#xff09; 2.过期队列&#…

openKylin--安装 .net6.0

编辑profile文件 cd .. //切换到根目录 cd /etc //切换到etc目录 vim profile //b编辑profile文件 1. 按→键移动到文件末尾 2. 按Insert键进入编辑模式 3. 按Enter另起一行开始编辑 export DOTNET_ROOT/home/dotnetexport PATH$PATH:/home/dotnet 可以通过右键--粘贴 的…

模拟实战数据落地:MSsql通过存储过程获得销售数据视图

话不多说 目标需求:通过传递参数(查询条件及查询时间)调用存储过程获得销售数据视图,并且在视图中有时间字段供后续引用,实现数据对接获取任务 最终结果如图: 实现以上结果步骤如下: 1)建立users表和orders表分别代表用户及订单,其中订单中用户id与用户表中用户id关联,并随机…

LLM - 使用 vLLM 部署 Qwen2-VL 多模态大模型 (配置 FlashAttention) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142528967 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 vLLM 用于 大语言模型(LLM) 的推理和服务,具有多项优化技术,包括先进…

VMware ESXi Centos7网卡名称 ens192 变更eth0

1.在 /etc/sysconfig/network-scirpts/ 文件夹下 创建一个ifcfg-eth0的文件&#xff0c; 最简单的方式是 mv ifcfg-ens192 ifcfg-eth0 然后 vi ifcfg-eth0 把DEVICE改成 DEVICEeth0 wq! 保存 2. vi /etc/sysconfig/grub # 在位置添加 net.ifnames0 biosdevname0 参数 完…

java基础 day1

学习视频链接 人机交互的小故事 微软和乔布斯借鉴了施乐实现了如今的图形化界面 图形化界面对于用户来说&#xff0c;操作更加容易上手&#xff0c;但是也存在一些问题。使用图形化界面需要加载许多图片&#xff0c;所以消耗内存&#xff1b;此外运行的速度没有命令行快 Wi…

【iOS】计算器的仿写

计算器 文章目录 计算器前言简单的四则运算UI界面事件的逻辑小结 前言 笔者应组内要求&#xff0c;简单实现了一个可以完成简单四则运算的计算器程序。UI界面则是通过最近学习的Masonry库来实现的&#xff0c;而简单的四则运算内容则是通过栈来实现一个简单的四则运算。 简单…