NLP中的主题模型:LDA(Latent Dirichlet Allocation, 潜在狄利克雷分配)

探索自然语言处理中的主题模型:LDA与狄利克雷分布

主题模型是一种用于发现文档集合中潜在主题的概率生成模型。其中,LDA(Latent Dirichlet Allocation, 潜在狄利克雷分配)是最著名的主题模型之一。在 LDA 中,狄利克雷分布起到了核心作用,用于建模文档-主题分布和主题-单词分布。关于迪利克雷分布的前置知识,请移步笔者的另一篇文章:深入理解:狄利克雷分布(Dirichlet Distribution)

本文将带你了解以下内容:

  1. 什么是主题模型?
  2. 什么是 LDA,它是如何工作的?
  3. 狄利克雷分布在 LDA 中的作用是什么?
  4. 使用 Python 实现一个简单的 LDA 示例。
  5. 详细解析:文档中单词生成概率公式
  6. 为什么主题分布和单词分布可以用狄利克雷分布建模?

一、什么是主题模型?

主题模型的目标是从文档集合中自动发现潜在的主题
假设有一组文档,每篇文档由单词构成,但文档背后隐藏着一些主题,例如:

  • 一篇文档谈论“篮球”,可能包含单词 球员比赛NBA
  • 另一篇文档关于“科技”,可能包含单词 AI编程区块链

主题模型的任务
根据文档中的单词,找到主题,并计算:

  • 每篇文档属于各个主题的概率;
  • 每个主题中单词的概率分布。

二、LDA 模型简介

LDA 是一种生成式概率模型,假设文档是由多个主题的单词混合生成的。它背后的思想如下:

  1. 文档生成过程

    • 每篇文档的主题分布服从一个狄利克雷分布 ( θ ∼ Dirichlet ( α ) \boldsymbol{\theta} \sim \text{Dirichlet}(\boldsymbol{\alpha}) θDirichlet(α) );
    • 每个主题的单词分布也服从一个狄利克雷分布 ( ϕ ∼ Dirichlet ( β ) \boldsymbol{\phi} \sim \text{Dirichlet}(\boldsymbol{\beta}) ϕDirichlet(β) )。
  2. 生成步骤

    • 对于每篇文档:
      1. 从主题分布 ( θ \boldsymbol{\theta} θ ) 中抽取一个主题 ( z z z );
      2. 从主题 ( z z z ) 的单词分布 ( ϕ z \boldsymbol{\phi}_z ϕz ) 中抽取一个单词。
  3. 数学公式
    给定 ( K K K ) 个主题和文档 ( d d d ),文档 ( d d d ) 中单词的生成概率为:
    P ( w ) = ∏ n = 1 N ∑ z = 1 K P ( w n ∣ z ; ϕ ) P ( z ∣ d ; θ ) , P(w) = \prod_{n=1}^{N} \sum_{z=1}^{K} P(w_n | z; \boldsymbol{\phi}) P(z | d; \boldsymbol{\theta}), P(w)=n=1Nz=1KP(wnz;ϕ)P(zd;θ),
    其中:

    • ( P ( w n ∣ z ; ϕ ) P(w_n | z; \boldsymbol{\phi}) P(wnz;ϕ) ):主题 ( z z z ) 中单词的概率;
    • ( P ( z ∣ d ; θ ) P(z | d; \boldsymbol{\theta}) P(zd;θ) ):文档 ( d d d ) 的主题分布。

三、狄利克雷分布在 LDA 中的作用

在 LDA 中,狄利克雷分布主要有两个作用:

  1. 建模文档的主题分布
    文档 ( d d d ) 的主题分布 ( θ \boldsymbol{\theta} θ ) 服从狄利克雷分布 ( Dirichlet ( α ) \text{Dirichlet}(\boldsymbol{\alpha}) Dirichlet(α) ),
    θ ∼ Dirichlet ( α ) , \boldsymbol{\theta} \sim \text{Dirichlet}(\boldsymbol{\alpha}), θDirichlet(α),
    其中 ( α \boldsymbol{\alpha} α ) 控制主题分布的稀疏性。如果 ( α \alpha α ) 很小,文档倾向于集中于少数主题;如果 ( α \alpha α ) 很大,文档可能涉及多个主题。

  2. 建模主题的单词分布
    每个主题 ( z z z ) 的单词分布 ( ϕ \boldsymbol{\phi} ϕ ) 服从狄利克雷分布 ( Dirichlet ( β ) \text{Dirichlet}(\boldsymbol{\beta}) Dirichlet(β) ),
    ϕ ∼ Dirichlet ( β ) , \boldsymbol{\phi} \sim \text{Dirichlet}(\boldsymbol{\beta}), ϕDirichlet(β),
    ( β \boldsymbol{\beta} β ) 控制每个主题中单词分布的稀疏性。


四、实际应用场景

  1. 文档分类
    在一组文档中自动发现主题,帮助理解文档内容。例如,将新闻分为“体育”、“科技”等类别。

  2. 推荐系统
    根据用户浏览历史中的主题分布,推荐相关主题的内容。

  3. 文本摘要
    从文档中提取主要主题及其关键词,生成摘要。


五、代码实现:使用 Python 的 LDA 示例

我们使用 Python 的 gensim 库来实现一个简单的 LDA 示例。

安装依赖

pip install gensim pandas nltk

数据预处理

假设我们有以下文档:

# 文档数据
documents = ["篮球 球员 比赛 NBA","比赛 体育 篮球","编程 AI 技术 代码","AI 区块链 编程","NBA 球队 篮球 体育","区块链 金融 技术"
]

实现 LDA 模型

from gensim import corpora
from gensim.models import LdaModel# 数据预处理
texts = [doc.split() for doc in documents]  # 将每篇文档分词
dictionary = corpora.Dictionary(texts)  # 构建词典
corpus = [dictionary.doc2bow(text) for text in texts]  # 将文档转换为词袋模型# 训练 LDA 模型
lda = LdaModel(corpus, num_topics=2, id2word=dictionary, passes=10)# 输出主题及关键词
for idx, topic in lda.print_topics(-1):print(f"主题 {idx + 1}{topic}")

输出示例

主题 10.40*"篮球" + 0.30*"体育" + 0.20*"比赛" + 0.10*"NBA"
主题 20.35*"编程" + 0.25*"AI" + 0.20*"区块链" + 0.10*"技术"

六、总结

  1. LDA 模型简介:LDA 是一种生成式概率模型,利用狄利克雷分布建模文档主题分布和主题单词分布。
  2. 狄利克雷分布的作用:控制分布稀疏性,让文档偏向少数主题或均匀分布。
  3. 代码实现:通过 gensim 库,我们可以快速实现 LDA 模型,分析文档集合的主题。

通过本文,你可以对 LDA 和狄利克雷分布的原理和应用有一个初步的了解。如果感兴趣,还可以深入研究其推导过程及参数优化方法,例如变分推断或吉布斯采样。

七、详细解析:文档中单词生成概率公式

在 LDA 模型中,文档的生成是一个概率过程,目标是通过主题分布和单词分布,描述文档中每个单词出现的概率。具体公式为:
P ( w ) = ∏ n = 1 N ∑ z = 1 K P ( w n ∣ z ; ϕ ) P ( z ∣ d ; θ ) , P(w) = \prod_{n=1}^N \sum_{z=1}^K P(w_n | z; \boldsymbol{\phi}) P(z | d; \boldsymbol{\theta}), P(w)=n=1Nz=1KP(wnz;ϕ)P(zd;θ),

这里:

  • ( w w w ) 是文档中的所有单词集合;
  • ( w n w_n wn ) 是文档中第 ( n n n ) 个单词;
  • ( z z z ) 是主题的潜在变量(未观测到的随机变量),表示单词 ( w n w_n wn ) 属于的主题;
  • ( ϕ \boldsymbol{\phi} ϕ ) 是每个主题的单词分布;
  • ( θ \boldsymbol{\theta} θ ) 是文档的主题分布。

公式背后的含义

  1. 生成每个单词的概率

    • 对于文档中的每个单词 ( w n w_n wn ),
      1. 首先从文档的主题分布 ( θ \boldsymbol{\theta} θ ) 中抽取一个主题 ( z z z ),概率为 ( P ( z ∣ d ; θ ) P(z | d; \boldsymbol{\theta}) P(zd;θ) );
      2. 然后在选定的主题 ( z z z ) 中,从其单词分布 ( ϕ z \boldsymbol{\phi}_z ϕz ) 中抽取单词 ( w n w_n wn ),概率为 ( P ( w n ∣ z ; ϕ ) P(w_n | z; \boldsymbol{\phi}) P(wnz;ϕ) )。
  2. 对主题的求和

    • 由于每个单词可能来自多个主题(概率由 ( P ( z ∣ d ; θ ) P(z | d; \boldsymbol{\theta}) P(zd;θ) ) 决定),需要对所有主题 ( z z z ) 的可能性求和。
  3. 整个文档的生成

    • 文档 ( w w w ) 中所有单词的生成概率是每个单词生成概率的乘积,假设单词之间相互独立。

举例说明

假设有以下文档和主题:

  • 文档 ( d d d ):“篮球 比赛 体育”;
  • 主题集合 ( { z 1 : 体育 , z 2 : 科技 } \{z_1: \text{体育}, z_2: \text{科技}\} {z1:体育,z2:科技} );
  • 主题分布 ( θ \boldsymbol{\theta} θ ):文档 ( d d d ) 的主题分布为 ( P ( z 1 ∣ d ) = 0.8 P(z_1|d) = 0.8 P(z1d)=0.8 ), ( P ( z 2 ∣ d ) = 0.2 P(z_2|d) = 0.2 P(z2d)=0.2 );
  • 单词分布 ( ϕ \boldsymbol{\phi} ϕ ):
    • 对于 ( z 1 z_1 z1 ):( P ( 篮球 ∣ z 1 ) = 0.5 P(\text{篮球}|z_1) = 0.5 P(篮球z1)=0.5 ), ( P ( 比赛 ∣ z 1 ) = 0.3 P(\text{比赛}|z_1) = 0.3 P(比赛z1)=0.3 ), ( P ( 体育 ∣ z 1 ) = 0.2 P(\text{体育}|z_1) = 0.2 P(体育z1)=0.2 );
    • 对于 ( z 2 z_2 z2 ):( P ( 篮球 ∣ z 2 ) = 0.1 P(\text{篮球}|z_2) = 0.1 P(篮球z2)=0.1 ), ( P ( 比赛 ∣ z 2 ) = 0.1 P(\text{比赛}|z_2) = 0.1 P(比赛z2)=0.1 ), ( P ( 体育 ∣ z 2 ) = 0.8 P(\text{体育}|z_2) = 0.8 P(体育z2)=0.8 )。
第一步:计算单词“篮球”的生成概率

根据公式:
P ( 篮球 ) = ∑ z = 1 K P ( 篮球 ∣ z ; ϕ ) P ( z ∣ d ; θ ) , P(\text{篮球}) = \sum_{z=1}^K P(\text{篮球}|z; \boldsymbol{\phi}) P(z|d; \boldsymbol{\theta}), P(篮球)=z=1KP(篮球z;ϕ)P(zd;θ),
有:
P ( 篮球 ) = P ( 篮球 ∣ z 1 ) P ( z 1 ∣ d ) + P ( 篮球 ∣ z 2 ) P ( z 2 ∣ d ) , P(\text{篮球}) = P(\text{篮球}|z_1) P(z_1|d) + P(\text{篮球}|z_2) P(z_2|d), P(篮球)=P(篮球z1)P(z1d)+P(篮球z2)P(z2d),
代入数据:
P ( 篮球 ) = ( 0.5 × 0.8 ) + ( 0.1 × 0.2 ) = 0.4 + 0.02 = 0.42. P(\text{篮球}) = (0.5 \times 0.8) + (0.1 \times 0.2) = 0.4 + 0.02 = 0.42. P(篮球)=(0.5×0.8)+(0.1×0.2)=0.4+0.02=0.42.

第二步:计算整个文档的生成概率

文档 ( d d d ) 的单词为 ( 篮球 , 比赛 , 体育 \text{篮球}, \text{比赛}, \text{体育} 篮球,比赛,体育 ),
P ( d ) = P ( 篮球 ) × P ( 比赛 ) × P ( 体育 ) , P(d) = P(\text{篮球}) \times P(\text{比赛}) \times P(\text{体育}), P(d)=P(篮球)×P(比赛)×P(体育),
其中:

  • ( P ( 比赛 ) = ( 0.3 × 0.8 ) + ( 0.1 × 0.2 ) = 0.24 + 0.02 = 0.26 P(\text{比赛}) = (0.3 \times 0.8) + (0.1 \times 0.2) = 0.24 + 0.02 = 0.26 P(比赛)=(0.3×0.8)+(0.1×0.2)=0.24+0.02=0.26 );
  • ( P ( 体育 ) = ( 0.2 × 0.8 ) + ( 0.8 × 0.2 ) = 0.16 + 0.16 = 0.32 P(\text{体育}) = (0.2 \times 0.8) + (0.8 \times 0.2) = 0.16 + 0.16 = 0.32 P(体育)=(0.2×0.8)+(0.8×0.2)=0.16+0.16=0.32 )。

因此:
P ( d ) = 0.42 × 0.26 × 0.32 = 0.034944. P(d) = 0.42 \times 0.26 \times 0.32 = 0.034944. P(d)=0.42×0.26×0.32=0.034944.


八、公式的意义和实际应用

  • 意义:通过文档中单词的生成概率公式,LDA 能够估计文档中不同主题的比例以及每个主题中单词的重要性,从而将文档归类到相应主题。
  • 实际应用:在新闻分类、推荐系统、文档聚类等任务中,LDA 是一种简单而高效的方法,能揭示文档集合的潜在主题结构。

九、为什么主题分布和单词分布可以用狄利克雷分布建模?

在 LDA 模型中,主题分布 ( θ \boldsymbol{\theta} θ ) 和单词分布 ( ϕ \boldsymbol{\phi} ϕ ) 都被假设服从狄利克雷分布,即:

θ ∼ Dirichlet ( α ) , \boldsymbol{\theta} \sim \text{Dirichlet}(\boldsymbol{\alpha}), θDirichlet(α),
ϕ ∼ Dirichlet ( β ) , \boldsymbol{\phi} \sim \text{Dirichlet}(\boldsymbol{\beta}), ϕDirichlet(β),

这背后有数学和实际应用的双重考虑,狄利克雷分布的选择并不是偶然的,而是基于其独特的性质和与多项分布的密切关系。


1. 狄利克雷分布的特点

狄利克雷分布是多项分布的共轭先验分布,具有以下特点:

  1. 多项分布的先验分布

    • LDA 中,主题分布 ( θ \boldsymbol{\theta} θ ) 描述一个文档中各个主题的比例,这些比例的总和为 1(如 ( θ 1 + θ 2 + ⋯ + θ K = 1 \theta_1 + \theta_2 + \cdots + \theta_K = 1 θ1+θ2++θK=1 )),符合简单 x x x 的概率要求。
    • 类似地,单词分布 ( ϕ \boldsymbol{\phi} ϕ ) 描述每个主题中单词的比例,也满足归一化条件 ( ϕ 1 + ϕ 2 + ⋯ + ϕ V = 1 \phi_1 + \phi_2 + \cdots + \phi_V = 1 ϕ1+ϕ2++ϕV=1 )。

    狄利克雷分布正是定义在这样一个单位 K − 1 K-1 K1 维单纯形上的分布,能够自然地对概率分布建模。

  2. 共轭性

    • 共轭分布的性质使得后验分布仍然属于同一分布族,从而大大简化了推断过程。在贝叶斯推断中,狄利克雷分布是多项分布的共轭先验,这意味着:
      P ( θ ∣ 数据 ) ∝ P ( 数据 ∣ θ ) P ( θ ) , P(\boldsymbol{\theta} | \text{数据}) \propto P(\text{数据} | \boldsymbol{\theta}) P(\boldsymbol{\theta}), P(θ数据)P(数据θ)P(θ),
      后验分布 ( P ( θ ∣ 数据 ) P(\boldsymbol{\theta} | \text{数据}) P(θ数据) ) 仍然是狄利克雷分布。
  3. 可控的稀疏性

    • 狄利克雷分布的参数 ( α \boldsymbol{\alpha} α )(或 ( β \boldsymbol{\beta} β ))可以控制分布的稀疏性。具体来说:
      • 若 ( α i ≪ 1 \alpha_i \ll 1 αi1 ),表示分布倾向于稀疏,即大多数概率质量集中在少数分量上;
      • 若 ( α i > 1 \alpha_i > 1 αi>1 ),表示分布倾向于均匀。
    • 在 LDA 中,可以通过调节 ( α \boldsymbol{\alpha} α ) 控制文档中的主题稀疏性,以及通过 ( β \boldsymbol{\beta} β ) 控制主题中的单词稀疏性,这与实际应用需求非常吻合。

2. 为何不用其他分布?

虽然理论上可以用其他分布(如正态分布、指数分布)来建模,但这些分布在概率模型中的适用性远不如狄利克雷分布,具体原因如下:

  1. 正态分布
    正态分布定义在实数域上,而主题分布和单词分布需要满足归一化条件(所有分量非负,总和为 1),这与正态分布的定义域不符。

  2. 指数分布
    指数分布通常用于建模正值随机变量,但同样无法直接用于表示归一化的概率分布。

  3. 狄利克雷分布的简单性与解释性
    狄利克雷分布提供了一种直观的方式来控制主题和单词分布的稀疏性,同时具有优雅的数学性质(如共轭性),这使得模型推导和计算更加简洁高效。


3. 实际意义与应用场景

为什么主题分布用狄利克雷分布?

文档中的主题分布(( θ \boldsymbol{\theta} θ ))表示一个文档可能属于不同主题的概率分布,比如某篇文章可能是 80% 的“科技”、15% 的“体育”和 5% 的“娱乐”。这些概率必须满足以下条件:

  • 非负性:每个主题的概率非负;
  • 归一化:所有主题的概率之和等于 1。

狄利克雷分布在单位单纯形上定义,因此可以自然地建模这种分布。通过调整 ( α \boldsymbol{\alpha} α ),可以反映文档中主题的分布特性:

  • 当 ( α \boldsymbol{\alpha} α ) 很小(如 ( α i ≪ 1 \alpha_i \ll 1 αi1 )),大多数文档只会涉及少数几个主题;
  • 当 ( α \boldsymbol{\alpha} α ) 较大(如 ( α i > 1 \alpha_i > 1 αi>1 )),文档更可能均匀分布在所有主题上。
为什么单词分布用狄利克雷分布?

主题中的单词分布(( ϕ \boldsymbol{\phi} ϕ ))表示某个主题下各个单词出现的概率分布。例如,在“科技”主题下,可能“算法”出现的概率很高,而“足球”出现的概率很低。这种分布的特点是:

  • 非负性:每个单词的概率非负;
  • 归一化:所有单词的概率之和等于 1。

狄利克雷分布能够很好地描述这种分布,且其稀疏性特性能够反映实际语言中主题的稀疏性——即一个主题通常只关注少数关键词。


4. 例子:主题建模中的参数控制

假设我们有以下设置:

  • ( α = [ 0.1 , 0.1 , 0.1 ] \boldsymbol{\alpha} = [0.1, 0.1, 0.1] α=[0.1,0.1,0.1] ):文档的主题分布非常稀疏,大多数文档可能集中在 1 个主题上;
  • ( β = [ 0.1 , 0.1 , 0.1 ] \boldsymbol{\beta} = [0.1, 0.1, 0.1] β=[0.1,0.1,0.1] ):主题中的单词分布也非常稀疏,每个主题可能只会关注少数几个单词。

此时,生成的文档可能表现为:

  • 文档 1:95% 属于“科技”主题,主要包含“算法”、“数据”;
  • 文档 2:90% 属于“体育”主题,主要包含“足球”、“比赛”;
  • 文档 3:85% 属于“娱乐”主题,主要包含“电影”、“明星”。

通过调整 ( α \boldsymbol{\alpha} α ) 和 ( β \boldsymbol{\beta} β ),可以灵活地控制主题建模的细粒度和稀疏性。


后记

2024年11月30日13点31分于上海,在GPT4o大模型辅助下完成。

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

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

相关文章

Docker Buildx 与 CNB 多平台构建实践

一、Docker Buildx 功能介绍 docker buildx 是 Docker 提供的一个增强版构建工具,支持更强大的构建功能,特别是在构建多平台镜像和高效处理复杂 Docker 镜像方面。 1.1 主要功能 多平台构建支持 使用 docker buildx,可以在单台设备上构建…

C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础

本文将带你深入了解C#中各种数据类型的特点、用途和最佳实践,让你不仅能熟练运用基本类型,还能掌握如何在实际项目中做出最合适的选择。 目录 C#基本语法 C#数据类型 C#类型转换 C#变量常量 C#基本语法 在学习C#之前我们要先知道C#的基础构建是由哪些…

新型大语言模型的预训练与后训练范式,谷歌的Gemma 2语言模型

前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整…

Istio笔记01--快速体验Istio

Istio笔记01--快速体验Istio 介绍部署与测试部署k8s安装istio测试istio 注意事项说明 介绍 Istio是当前最热门的服务网格产品,已经被广泛应用于各个云厂商和IT互联网公司。企业可以基于Istio轻松构建服务网格,在接入过程中应用代码无需更改,…

uniapp运行时,同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示。

遇到自定义基座调试时安装无效或无反应?本文教你用 ADB 工具快速解决:打开 USB 调试,连接设备,找到应用包名,一键卸载问题包,清理干净后重新运行调试基座,轻松搞定! 问题场景&#…

CAD 文件 批量转为PDF或批量打印

CAD 文件 批量转为PDF或批量打印,还是比较稳定的 1.需要本地安装CAD软件 2.通过 Everything 搜索工具搜索,DWG To PDF.pc3 ,获取到文件目录 ,替换到代码中, originalValue ACADPref.PrinterConfigPath \ r"C:…

蓝桥杯每日真题 - 第23天

题目:(直线) 题目描述(12届 C&C B组C题) 解题思路: 题目理解: 在平面直角坐标系中,从给定的点集中确定唯一的直线。 两点确定一条直线,判断两条直线是否相同,可通过…

centos8:Could not resolve host: mirrorlist.centos.org

【1】错误消息: [rootcentos211 redis-7.0.15]# yum update CentOS Stream 8 - AppStream …

Android笔记(三十四):封装带省略号图标结尾的TextView

背景 项目需求需要实现在文本末尾显示一个icon,如果文本很长时则在省略号后面显示icon,使用TextView自带的drawableEnd可以实现,但是如果文本换行了则会显示在TextView垂直居中的位置,不满足要求,于是有了本篇的自定义…

CEF127 编译指南 Linux篇 - 安装Git和Python(三)

1. 引言 在前面的文章中,我们已经完成了基础开发工具的安装和配置。接下来,我们需要安装两个同样重要的工具:Git 和 Python。这两个工具在 CEF 的编译过程中扮演着关键角色。Git 负责管理和获取源代码,而 Python 则用于运行各种编…

centos系统设置本地yum源教程

在CentOS系统中,将ISO文件设置为本地源可以加快软件安装速度,特别是在没有网络连接的环境下。以下是详细步骤: 1. 下载和准备ISO镜像文件 首先,从CentOS的官方网站下载适合需求的CentOS ISO镜像文件。可以选择不同的版本,如CentOS 7或CentOS 8,以及适合你硬件架构的版本…

PDF view | Chrome PDF Viewer |Chromium PDF Viewer等指纹修改

1、打开https://www.browserscan.net/zh/ 2、将internal-pdf-viewer改为 internal-pdf-viewer-jdtest看下效果: 3、源码修改: third_party\blink\renderer\modules\plugins\dom_plugin_array.cc namespace { DOMPlugin* MakeFakePlugin(String plugin_…

模糊认知图模型、特征与推理

1. 基础知识 1.1认知图的发展 1948年,Tolman首次提到认知图[I]它把认知图描述为有向图,认为认知图是由一些弧连接起来的结点的集合,其目的是为心理学构建一个模型。后来,认知图被其他学者所借用,不同的学…

Mac 环境下类Xshell 的客户端介绍

在 Mac 环境下,类似于 Windows 环境中 Xshell 用于访问 Linux 服务器的工具主要有以下几种: SecureCRT: 官网地址:https://www.vandyke.com/products/securecrt/介绍:支持多种协议,如 SSH1、SSH2、Telnet 等…

玩转 uni-app 静态资源 static 目录的条件编译

一. 前言 老生常谈,了解 uni-app 的开发都知道,uni-app 可以同时支持编译到多个平台,如小程序、H5、移动端 App 等。它的多端编译能力是 uni-app 的一大特点,让开发者可以使用同一套代码基于 Vue.js 的语法编写程序,然…

【西瓜书】支持向量机(SVM)

支持向量机(Support Vector Machine,简称SVM)。 超平面 分类学习最基本的想法就是基于训练集合D在样本空间中找到一个划分超平面,将不同类别的样本分开。 但能将训练样本分开的划分超平面可能有很多,应该努力去找到哪…

【开源免费】基于SpringBoot+Vue.JS宠物咖啡馆平台(JAVA毕业设计)

博主说明:本文项目编号 T 064 ,文末自助获取源码 \color{red}{T064,文末自助获取源码} T064,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

海康VsionMaster学习笔记(学习工具+思路)

一、前言 VisionMaster算法平台集成机器视觉多种算法组件,适用多种应用场景,可快速组合算法,实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀,自带强大的视觉分析工具库,可…

Linux内核编译流程(Ubuntu24.04+Linux Kernel 6.8.12)

万恶的拯救者,使用Ubuntu没有声音,必须要自己修改一下Linux内核中的相关驱动逻辑才可以,所以被迫学习怎么修改内核&编译内核,记录如下 准备工作 下载Linux源码:在Linux发布页下载并使用gpg签名验证 即&#xff1a…

UE5 打包报错 Unknown structure 的解决方法

在虚幻引擎5.5 打包报错如下: UATHelper: 打包 (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/Components/HitReactionComponent/Blueprints/BI_ReactionInterface.BI_ReactionInterface…