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

深度解析自然语言处理之篇章分析

在本文中,我们深入探讨了篇章分析的概念及其在自然语言处理(NLP)领域中的研究主题,以及两种先进的话语分割方法:基于词汇句法树的统计模型和基于BiLSTM-CRF的神经网络模型。

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

file

一、引言

篇章分析在自然语言处理(NLP)领域是一个不可或缺的研究主题。与词语和句子分析不同,篇章分析涉及到文本的更高级别结构,如段落、节、章等,旨在捕捉这些结构之间的复杂关系。这些关系通常包括但不限于衔接、连贯性和结构等方面,它们不仅对理解单一文本有重要意义,还在多文本、跨文本甚至跨模态的分析中起到至关重要的作用。从推荐系统的个性化内容生成,到机器翻译的文本质量优化,再到对话系统的上下文理解,篇章分析的应用场景极为广泛。

篇章分析的整体理念

篇章分析的核心理念是“高层次的语义和语用分析”。在这个视角下,文本不仅仅是词和句子的简单集合,更是信息和观点的有机组合。每个篇章元素都在与其他元素交互,形成更大的语义和语用结构。因此,篇章分析的目标不仅是理解各个单元(如句子、段落)如何构成一个统一和连贯的文本,更是在多层次、多维度上理解文本传达的深层含义。

内容之间的关联关系

  1. 篇章的衔接、连贯与结构: 这三个方面是篇章分析的基石。衔接关注句子或段落之间的明确联系,如转折、因果等;连贯性关注文本整体的流畅度和可读性;结构则从宏观角度审视文本,探讨如何更有效地组织信息。这三者相互关联,相互促进,共同构成了高质量的文本。

  2. 话语分割: 在深入到基于词汇句法树和循环神经网络的话语分割之前,理解这三个核心方面是至关重要的。话语分割方法试图在更细粒度上划分和理解文本,为后续的任务提供基础。


二、篇章分析的基础概念

什么是篇章?

篇章是由两个或更多的句子构成的,用于表达一个或多个紧密相关的观点或信息的文本单元。与单个句子或词汇不同,篇章包括更复杂的结构和含义,通常需要通过多个句子甚至多个段落来传达。

示例

比如,在一篇关于气候变化的文章中,一个篇章可能会专门讨论极端天气现象的增加,从统计数据到具体的事件案例,再到可能的影响,构成一个完整的讨论。

篇章分析的重要性

篇章分析是自然语言处理中非常重要的一部分,因为它能够帮助机器更好地理解人类语言的复杂性和多层次性。篇章分析能够从宏观的角度捕捉文本信息,提供比句法和语义分析更为全面的理解。

示例

拿新闻摘要生成为例,单从句子级别出发,我们可能只能获取到表面的信息。但如果能够进行篇章分析,我们不仅可以抓住文章的主要观点,还能了解各个观点是如何逻辑排列和相互支持的。

篇章分析在NLP中的应用

篇章分析在NLP的多个应用场景中都有着广泛的用途。以下是几个典型的应用场景:

  1. 信息检索: 通过篇章分析,可以更准确地理解用户的查询意图,从而返回更相关的搜索结果。
  2. 机器翻译: 篇章层面的分析能够帮助机器翻译系统更准确地把握原文的语境,提高翻译的自然性和准确性。
  3. 文本摘要: 除了抓住文章的主要观点,篇章分析还能捕捉到观点之间的逻辑关系,生成更为精炼和高质量的摘要。

示例

  1. 在信息检索中,如果用户查询“气候变化的影响”,仅从词汇或句子级别分析可能会返回关于“气候”和“影响”的广泛文章。但通过篇章分析,可以更精确地找到讨论“气候变化影响”的具体篇章或文章。

  2. 在机器翻译中,比如一个长句子由多个短句子构成,而这些短句子之间有因果、转折等复杂关系。篇章分析能帮助机器更准确地捕捉这些关系,从而生成更自然的译文。

  3. 在文本摘要中,通过篇章分析,系统可以识别文章的主要观点,以及这些观点是如何通过证据和论点串联起来的,从而生成一个全面而准确的摘要。

三、篇章的衔接

篇章分析中的一个重要概念是衔接(Cohesion)。衔接涉及文本中各个语言成分如何相互关联,以形成一个整体的、连贯的信息结构。

语义衔接

衔接主要是一种语义关系,它使篇章的各个组成部分在语义上紧密相连。这通常通过两种主要方式来实现:词汇衔接和语法衔接。

词汇衔接

词汇衔接主要涉及使用特定的词汇手段,如重述(Reiteration)和搭配(Collocation)。

重述 (Reiteration)

重述通常是通过词汇的重复或使用同义词、近义词、反义词、上下位词等来建立篇章的衔接。

例子:

太阳是生命之源,无论是人类还是动植物,都离不开太阳的照射。因此,阳光是非常重要的。

在这个例子中,“太阳” 和 “阳光” 建立了一种重述关系,增加了篇章的衔接性。

搭配 (Collocation)

搭配关系通常是词与词之间的习惯性组合,不仅限于一个句子内,也可能是跨句或跨段。

例子:

他拿起手机,然后开始浏览社交媒体。不久后,他发现了一条有趣的推文。

在这里,“手机” 和 “社交媒体”、“推文” 形成了一种搭配关系,增强了文本的连贯性。

语法衔接

语法衔接主要包括照应(Reference)、替代(Substitution)、省略(Ellipsis)和连接(Conjunction)。

照应 (Reference)

照应是指一个词或短语与前文或后文中的词或短语有明确的指代关系。

例子:

小明是个好学生。他总是第一个到校,最后一个离开。

在这里,“他”明确地指代了“小明”,形成了照应关系。

替代 (Substitution)

替代是用其他词或短语来代替前文中出现的词或短语。

例子:

有些人喜欢苹果,有些人则更偏向于橙子。

在这里,“更偏向于”替代了“喜欢”,形成了替代关系。

省略 (Ellipsis)

省略是在句子中去除某个不必要的成分,以使表达更简洁。

例子:

他想吃巧克力,但我不(想吃)。

这里,“想吃”被省略,但意思仍然清晰。

连接 (Conjunction)

连接是通过使用特定的连接词来建立逻辑关系,可以分为详述、延伸和增强三大类。

详述例子:

她很善良,例如,总是愿意帮助别人。

延伸例子:

他是个勤奋的学生。然而,他在数学方面却总是遭遇困难。

增强例子:

除了是一个优秀的程序员,他还是个热爱音乐的人。

在这些例子中,例如、然而和除了都作为连接词,增加了句子和段落之间的逻辑关系。

通过以上各种衔接手段,篇章可以形成一个结构严谨、语义连贯的整体,从而更有效地传达信息和观点。

四、篇章的连贯

篇章分析是一个复杂且有深度的领域,涉及到语义、语法、修辞和认知等多个层面。特别是在涉及到篇章连贯(Coherence)时,这一复杂性更为明显。

连贯(Coherence)与连贯性(Coherent)

连贯(Coherence)是指篇章在语义、功能和心理上构成一个整体,围绕同一个主题或意图展开。连贯性(Coherent)则是一个衡量篇章质量的指标。

示例:

考虑下列两个句子:

  1. 张三参加了马拉松比赛。
  2. 他完成了全程42.195公里。

这两个句子形成了一个连贯的篇章,因为它们都围绕着“张三参加马拉松比赛”这一主题展开。

局部连贯性(Local Coherence)

局部连贯性涉及篇章中前后相连的命题在语义上的联系。这通常需要考虑词汇、句法和语义等因素。

示例:

考虑以下的句子序列:

  1. 小明喜欢数学。
  2. 他经常参加数学竞赛。

这两个句子在局部层面上是连贯的,因为“小明”和“数学竞赛”都与“数学”有直接的语义联系。

整体连贯性(Global Coherence)

整体连贯性则更注重篇章中的所有命题与篇章主题之间的联系,这一点在长篇文章或论文中尤为重要。

示例:

考虑以下的句子:

  1. 小红去了图书馆。
  2. 她借了几本关于量子物理的书。
  3. 她的目标是成为一名物理学家。

这些句子围绕着“小红对物理学的兴趣和目标”这一主题,展示了整体连贯性。

认知模式与连贯

篇章的语义结构受到人们普遍认知规律的制约,例如从一般到特殊、从整体到局部。

示例:

考虑以下句子:

  1. 北京是中国的首都。
  2. 故宫是北京的一大旅游景点。
  3. 故宫的午门是最受游客欢迎的地方。

这一系列句子符合从整体到局部的认知模式,先描述北京,再到具体的故宫,最后到更具体的午门。

理论与方法

篇章连贯性的研究有多种方法,包括关联理论、修辞结构理论(Rhetorical Structure Theory)、图式理论(Schema Theory)和基于语篇策略(Discourse Strategy)的研究等。

关联理论

在微观层面上,关联理论(Relevance Theory)提供了一种用于理解篇章中信息如何相互关联的框架。

修辞结构理论(Rhetorical Structure Theory)

这一理论尝试通过分析篇章中不同元素之间的修辞性关系,来理解篇章的连贯性。

图式理论(Schema Theory)

图式理论主要用于解释读者如何使用先前的知识来理解新信息,从而提供篇章连贯性的一种认知基础。

基于语篇策略(Discourse Strategy)的研究

这一方向主要研究篇章如何通过不同的语篇策略,如主题句、过渡句等,来增强其连贯性。


五、篇章的结构

篇章不仅是一组简单地排列在一起的句子,而是一个精心设计的结构,旨在传达特定的信息或达到特定的目的。

线性结构与等级结构

首先,篇章有线性结构和等级结构两种基本形式。线性结构是指句子按照某种逻辑顺序或时间顺序排列。例如:

“今天早上我起床,刷牙洗脸后吃了早餐。然后我走到公交站,搭乘公交车到达学校。”

这个例子中,句子按照事件发生的时间顺序排列,构成了线性结构。

等级结构则意味着句子和段落的组合可以构成更高级别的信息单元。以学术文章为例,它通常包括引言、主体和结论等部分,这些部分又由多个段落组成,形成了一个等级结构。

篇章超级结构(Superstructure)

篇章超级结构是用于描述篇章如何组织的一种高级结构。例如,在学术论文中,常见的超级结构包括“引言-方法-结果-讨论(IMRD)”。这种结构只涉及内容的组织方式,与内容本身无关。

修辞结构理论(Rhetorical Structure Theory, RST)

RST 是一种用于分析篇章结构的理论,它定义了不同文本单元(Text Span)之间的修辞关系。主要分为两种类型:

  • 核心(Nucleus):篇章中最重要的部分,例如:“吸烟有害健康。”
  • 辅助(Satellite):用于解释或支持核心信息的部分,例如:“据世界卫生组织统计,每年有 800 万人因吸烟导致的疾病而死亡。”

语篇模式(Textual Pattern)

语篇模式是长期形成的,通常带有文化背景的篇章组织方式。例如,在西方文化中,“问题-解决(Problem-Solution)”模式非常普遍。

例子:语篇模式在新闻报道中的应用

考虑以下新闻报道:

[1]“新的研究发现,青少年使用社交媒体的时间越长,出现抑郁症状的几率越高。”(核心)

[2]“这一发现是基于对 1000 名青少年进行为期一年的跟踪研究的结果。”(辅助)

这个报道用了“问题-解决”模式。[1]提出了一个问题(青少年使用社交媒体与抑郁),而[2]给出了该问题的一个解决方案(基于研究的证据)。

通过了解这些不同的结构和模式,作者可以更有效地组织篇章,读者也能更容易地理解和接收信息。这也是为什么篇章的结构是写作和阅读中不可或缺的一个方面。


六、基于词汇句法树的统计话语分割

file
话语分割(Discourse Segmentation)是自然语言处理中的一个关键任务,它旨在识别篇章中的基本篇章单元(Elementary Discourse Units, EDU)。这是后续进行高级篇章分析的基础。

话语分割与修辞结构理论

根据修辞结构理论(Rhetorical Structure Theory, RST),篇章的修辞关系是定义在两个或多个EDU之间的。话语分割的主要目标就是识别这些EDU。

例子

考虑以下句子:

“苹果很好吃,但是很贵。”

在这里,“苹果很好吃” 和 “但是很贵” 可以被认为是两个不同的EDU。

SynDS 算法概述

SynDS 算法基于词汇句法树来估算一个单词是否应作为一个EDU的边界。它使用词汇中心(Lexical Head)映射规则来提取更多特征。

最大似然估计

给定句子 (s = w_1, w_2, …, w_n) 和它的句法树 (t),该算法使用最大似然估计来学习每个词 (w_i) 作为边界的概率 ( P(b_i | w_i) ),其中 (b_i \in {0, 1})。0表示非边界,1表示边界。

词汇中心映射

对于每个词 (w),该算法注意到其右侧兄弟节点的最高父节点,并使用这个信息来决定当前词是否应作为边界词。

PyTorch 实现

下面的 PyTorch 代码片段展示了这一算法的基础实现。

import torch
import torch.nn as nn
import torch.optim as optim# 假设我们已经得到了句法树和词汇向量
# feature_dim 是特征维度
class SynDS(nn.Module):def __init__(self, feature_dim):super(SynDS, self).__init__()self.fc = nn.Linear(feature_dim, 2)  # 二分类:0表示非边界,1表示边界def forward(self, x):return self.fc(x)# 初始化
feature_dim = 128
model = SynDS(feature_dim)
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()# 假设 x_train 是输入特征,y_train 是标签(0或1)
# x_train 的形状为 (batch_size, feature_dim)
# y_train 的形状为 (batch_size)
x_train = torch.rand((32, feature_dim))
y_train = torch.randint(0, 2, (32,))# 训练模型
optimizer.zero_grad()
outputs = model(x_train)
loss = criterion(outputs, y_train)
loss.backward()
optimizer.step()# 输出预测
with torch.no_grad():test_input = torch.rand((1, feature_dim))test_output = model(test_input)prediction = torch.argmax(test_output, dim=1)print("预测边界为:", prediction.item())

输入与输出

  • 输入:特征维度为 feature_dim 的词向量。
  • 输出:预测结果,0 或 1,代表是否为EDU边界。

处理过程

  1. 使用最大似然估计计算概率。
  2. 用交叉熵损失函数进行训练。
  3. 使用优化器进行权重更新。

七、基于循环神经网络的话语分割

file
话语分割是识别篇章中基本篇章单元(Elementary Discourse Units,简称EDU)的过程,为后续的分析打下基础。在这一篇章中,我们将专注于使用双向长短时记忆网络(BiLSTM)和条件随机场(CRF)进行话语分割的实现。

从序列标注到话语分割

在基于RNN的模型中,话语分割任务可以被重新定义为一个序列标注问题。对于输入的每一个词 (x_t),模型输出一个标签 (y_t),表示该词是否是一个EDU的起始边界。

输出标签的定义

  • ( y_t = 1 ) 表示 ( x_t ) 是EDU的起始边界。
  • ( y_t = 0 ) 表示 ( x_t ) 不是EDU的起始边界。

BiLSTM-CRF模型

BiLSTM-CRF结合了BiLSTM的能力来捕获句子中的长距离依赖关系和CRF的能力来捕获输出标签之间的关系。

BiLSTM层

BiLSTM可以从两个方向读取句子,因此它可以捕获前后文信息。

CRF层

条件随机场(CRF)是用于序列标注的概率图模型,其目标是找到给定输入序列 ( X ) 下可能的最佳输出序列 ( Y )。

PyTorch 实现

下面是使用PyTorch实现BiLSTM-CRF模型进行话语分割的示例代码:

import torch
import torch.nn as nn
from torchcrf import CRFclass BiLSTM_CRF(nn.Module):def __init__(self, vocab_size, embedding_dim, hidden_dim):super(BiLSTM_CRF, self).__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.lstm = nn.LSTM(embedding_dim, hidden_dim // 2, num_layers=1, bidirectional=True)self.hidden2tag = nn.Linear(hidden_dim, 2)  # 2表示两个标签:0和1self.crf = CRF(2)def forward(self, x):embeds = self.embedding(x)lstm_out, _ = self.lstm(embeds.view(len(x), 1, -1))lstm_feats = self.hidden2tag(lstm_out.view(len(x), -1))return lstm_feats# 参数设置
vocab_size = 5000
embedding_dim = 300
hidden_dim = 256# 初始化模型
model = BiLSTM_CRF(vocab_size, embedding_dim, hidden_dim)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, weight_decay=1e-4)# 模拟输入数据
sentence = torch.tensor([1, 2, 3, 4], dtype=torch.long)
tags = torch.tensor([1, 0, 1, 0], dtype=torch.long)# 前向传播
lstm_feats = model(sentence)# 计算损失和梯度
loss_value = -model.crf(lstm_feats, tags)
loss_value.backward()
optimizer.step()# 解码:得到预测标签序列
with torch.no_grad():prediction = model.crf.decode(lstm_feats)
print("预测标签序列:", prediction)

输入与输出

  • 输入:词的整数索引序列,长度为 ( T )。
  • 输出:标签序列,长度也为 ( T ),其中每个元素都是0或1。

处理过程

  1. 词嵌入层将整数索引转换为固定维度的向量。
  2. BiLSTM层捕获输入序列的前后文信息。
  3. 线性层将BiLSTM的输出转换为适用于CRF的特征。
  4. CRF层进行序列标注,输出每个词是否是EDU的开始。

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

相关文章:

深度解析自然语言处理之篇章分析

在本文中,我们深入探讨了篇章分析的概念及其在自然语言处理(NLP)领域中的研究主题,以及两种先进的话语分割方法:基于词汇句法树的统计模型和基于BiLSTM-CRF的神经网络模型。 关注TechLead,分享AI全维度知识…...

Python3.11教程3:模块和包(pip/conda)、文件系统(os/ shutil/json/pickle/openpyxl/xlrd)

文章目录 七、模块和包7.1 模块7.1.1 模块搜索路径7.1.2 PYTHONPATH和sys.path7.1.2 模块的导入和常见错误7.1.3 模块的缓存机制7.1.4 __name__ 和 __main__ 函数 7.2 标准库7.3 包7.3.1 创建包7.3.2 导入包7.3.3 pip包管理器7.3.4 conda 7.4 如何组织和管理大型项目中的模块与…...

shell 脚本工具(三剑客)

第一个:awk awk 是一种强大的文本处理工具和编程语言,最初由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在20世纪70年代早期创建。awk 的名称来自于这三位创造者的姓氏的首字母。它在 Unix 和类 Unix 操作系统中广泛使用,用于处理、…...

基于微信小程序的智能垃圾分类回收系统,附源码、教程

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1 简介 视频演示地址: 基于微信小程序的智能垃圾分类回收系统,可作为毕业设计 小…...

【C++进阶】:AVL树(平衡因子)

AVL树 一.概念二.插入1.搜索二叉树2.平衡因子 三.旋转1.更新平衡因子2.旋转1.左单旋2.右单旋3.先右旋再左旋4.先左旋再右旋 四.完整代码 一.概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元…...

Python教程33:关于在使用zipfile模块,出现中文乱码的解决办法

zipfile是Python标准库中的一个模块,zipfile里有两个class, 分别是ZipFile和ZipInfo,用来创建和读取zip文件,而ZipInfo是存储的zip文件的每个文件的信息的。ZIP文件是一种常见的存档文件格式,它可以将多个文件和目录压缩为一个文件…...

【疑难杂症】使用xshell连接云服务器连接不上

目录 【1】使用xshell连接云服务器连接不上 【1.1】解决方法一 【1.2】解决方法二 【1】使用xshell连接云服务器连接不上 Centos7使用xshell连接提示"ssh服务器拒绝了密码 请再试一次"。 问题如图所示,新安装了一台Centos7服务器,使用ssh连…...

Qt MinGW / MSVC

MinGW/MSVC的关系 MinGW / MSVC.dll / .lib / .a 的关系 MinGW / MSVC Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是两种不同的编译器。 MinGW(Minimalist GNUfor Windows),它是一个可自由使用和自由发布的Windows特定头文件…...

【数学建模】数据预处理

为什么需要数据预处理 数学建模是将实际问题转化为数学模型来解决的过程,而数据预处理是数学建模中非常重要的一步。以下是为什么要进行数据预处理的几个原因: 数据质量:原始数据往往存在噪声、异常值、缺失值等问题,这些问题会对…...

VMware 安装 黑群晖7.1.1-42962 DS918+

本例的用的文件 1、ARPL 1.0beat 引导文件 vmdk格式: https://download.csdn.net/download/mshxuyi/88309308 2、DS918_42962.pat:https://download.csdn.net/download/mshxuyi/88309383 一、引导文件 1、创建一个虚拟机 2、下一步,选稍后…...

OpenCV(二十九):图像腐蚀

1.图像腐蚀原理 腐蚀操作的原理是将一个结构元素(也称为核或模板)在图像上滑动,并将其与图像中对应位置的像素进行比较。如果结构元素的所有像素与图像中对应位置的像素都匹配,那么该位置的像素值保持不变。如果结构元素的任何一个…...

【网络知识点】三次握手和四次挥手

文章目录 一、三次握手二、四次挥手 一、三次握手 三次握手的原理如下: 客户端向服务器发送一个SYN(同步)包,其中包含一个随机生成的初始序列号(ISN)。 服务器收到SYN包后,会发送一个SYNACK&…...

CSS整理

目录 CSS中的& 弹性(display:flex)布局 flex的对齐方式 justify-content align-items flex-wrap 弹性盒换行 flex:1 flex属性 flex-grow:项目的放大比例 flex-shrink:收缩 flex-basis:初始值&#xff…...

OpenCV 06(图像的基本变换)

一、图像的基本变换 1.1 图像的放大与缩小 - resize(src, dsize, dst, fx, fy, interpolation) - src: 要缩放的图片 - dsize: 缩放之后的图片大小, 元组和列表表示均可. - dst: 可选参数, 缩放之后的输出图片 - fx, fy: x轴和y轴的缩放比, 即宽度和高度的缩放比. - …...

Java 中的日期时间总结

前言 大家好,我是 god23bin,在日常开发中,我们经常需要处理日期和时间,日期和时间可以说是一定会用到的,现在总结下 Java 中日期与时间的基本概念与一些常用的用法。 基本概念 日期(年月日,某…...

创建10个线程并发执行(STL/Windows/Linux)

C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun(int arg) {cout << "one STL thread " << arg << " !" << endl; }int main(void) {int thread_count 1…...

三、创建各个展示模块组件

简介 在文件 components 中创建轮播模块组件,引入App.vue展示。欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件:First.vue、Second.vue、Third.vue、Fourth.vue、Fifth.vue、App.vue、vite-env.d.ts、assets 一、修改vite-env.d.ts文件 /// <reference type…...

推荐一款程序员截图神器!

快来看一下程序员必备的一款截图工具 今天就来和大家说一下作为程序员必备截图神器&#xff0c;几乎每一个程序员都会设置开机自启&#xff0c;因为这个截图功能太太太好用了&#xff01;&#xff01;&#xff01;只要你在键盘上按下F1就可以轻松截取整个屏幕&#xff0c;然后…...

无涯教程-JavaScript - IMCSC函数

描述 IMCSC函数以x yi或x yj文本格式返回复数的余割。 复数的余割定义为正弦的倒数。即 余割(z) 1 /正弦(z) 语法 IMCSC (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the cosecant.Required Notes Excel中的复数只是简单…...

Ubuntu22.04 LTS 显卡相关命令

第一部分查看驱显卡信息 一、查看显卡型号 # -i表示不区分大小写 lspci | grep -i nvidia # 必须安装好nvidia驱动 nvidia-smi -L 二、查看显卡驱动版本 cat /proc/driver/nvidia/version 三、查看CUDA、cuDNN版本 # 或者 nvcc -V&#xff08;两个显示的版本一致&#xf…...

《TCP/IP网络编程》阅读笔记--基于 TCP 的半关闭

目录 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 1-2--shutdown()函数 1-3--半关闭的必要性 2--基于半关闭的文件传输程序 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 Linux 系统中的 close 函数会将 TCP Socket 的连接完全断开&#xff0c;这意味着不能收…...

Rust的模块化

Rust的模块化要从Rust的入口文件谈起。 Rust的程序的入口文件有两个 如果程序类型是可执行应用&#xff0c;入口文件是main.rs&#xff1b;如果程序类型是库&#xff0c;入口文件是lib.rs&#xff1b; 入口文件中&#xff0c;必须声明本地模块&#xff0c;否则编译器在编译过…...

vmware设置桥接模式后ip设置

网络连接方式设置 找到虚拟机里机器的网络设置 左边是宿主机&#xff0c;右边是虚拟机&#xff0c;按照这个设置就可以上网了(IP指定一个没有占用的值&#xff0c;子网掩码和网关设置成一样的)就可以联网了。 over~~...

算法通关村第十七关:白银挑战-贪心高频问题

白银挑战-贪心高频问题 1. 区间问题 所有的区间问题&#xff0c;参考下面这张图 1.1 判断区间是否重叠 LeetCode252 https://leetcode.cn/problems/meeting-rooms/ 思路分析 因为一个人在同一时刻只能参加一个会议&#xff0c;因此题目的本质是判断是否存在重叠区间 将区…...

目标检测评估指标mAP:从Precision,Recall,到AP50-95

1. TP, FP, FN, TN True Positive 满足以下三个条件被看做是TP 1. 置信度大于阈值&#xff08;类别有阈值&#xff0c;IoU判断这个bouding box是否合适也有阈值&#xff09; 2. 预测类型与标签类型相匹配&#xff08;类别预测对了&#xff09; 3. 预测的Bouding Box和Ground …...

七大排序算法

目录 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 快速排序优化 非递归实现快速排序 归并排序 非递归的归并排序 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 常见的排序算法有插入排序(直接插入…...

GitHub two-factor authentication

1. 介绍 登录 GitHub 官网&#xff0c;会提示要开启双因子认证。 但推荐的 APP 都是国外了&#xff0c;国内用不了。 可以使用 “腾讯身份验证器” 微信小程序。 2. 操作 开启双因子认证&#xff1a; 打开 “腾讯身份验证器” 微信小程序&#xff0c;扫描 GitHub 那个二维…...

un-app-手机号授权登录-授权框弹不出情况

前言 手机号授权是获取用户信息api停用之后&#xff0c;经常使用的api。但是此api也是有很多坑 手机号授权会出现调用不起来的情况&#xff0c;这是因为小程序后台没有进行微信认证导致的 手机号授权调用不起来-没有微信认证 来到小程序后台-设置-基本设置-下拉找到微信认证…...

手写Spring:第14章-自动扫描Bean对象注册

文章目录 一、目标&#xff1a;自动扫描Bean对象注册二、设计&#xff1a;自动扫描Bean对象注册三、实现&#xff1a;自动扫描Bean对象注册3.0 引入依赖3.1 工程结构3.2 Bean生命周期中自动加载包扫描注册Bean对象和设置占位符属性类图3.3 主力占位符配置3.4 定义拦截注解3.4.1…...

redux中间件的简单讲解

redux中间件 中间件的作用&#xff1a; 就是在 源数据 到 目标数据 中间做各种处理&#xff0c;有利于程序的可拓展性&#xff0c;通常情况下&#xff0c;一个中间件就是一个函数&#xff0c;且一个中间件最好只做一件事情 数据源 --------> 中间件 --------> 中间件 -…...