深入NLP核心技术:文本张量表示与词嵌入全面解析

系列文章目录

01-中文NLP入门必备:全面解析分词、命名实体识别与词性标注(附详细实战案例)

02-深入NLP核心技术:文本张量表示与词嵌入全面解析


文章目录

  • 系列文章目录
  • 前言
  • 一、文本张量表示
    • [1.1 文本张量表示简介](#1.1 文本张量表示简介)
      • [1.1.1 举例说明](#1.1.1 举例说明)
      • [1.1.2 文本张量表示的意义](#1.1.2 文本张量表示的意义)
  • 二、文本张量表示方法
    • [2.1 One-Hot编码](#2.1 One-Hot编码)
      • [2.1.1 原理与例子](#2.1.1 原理与例子)
      • [2.1.2 实现代码](#2.1.2 实现代码)
      • [2.1.3 优劣势分析](#2.1.3 优劣势分析)
    • [2.2 Word2vec模型](#2.2 Word2vec模型)
      • [2.2.1 Word2vec 的核心思想](#2.2.1 Word2vec 的核心思想)
      • [2.2.2 CBOW 模式](#2.2.2 CBOW 模式)
        • [(1)CBOW 模型的结构](#(1)CBOW 模型的结构)
        • [(2)CBOW 的数学表示](#(2)CBOW 的数学表示)
      • [2.2.3 Skip-Gram 模式](#2.2.3 Skip-Gram 模式)
        • [(1)Skip-Gram 模型的结构](#(1)Skip-Gram 模型的结构)
        • [(2)Skip-Gram 的数学表示](#(2)Skip-Gram 的数学表示)
      • [2.2.4 CBOW 与 Skip-Gram 的区别](#2.2.4 CBOW 与 Skip-Gram 的区别)
      • [2.2.5 Word2vec 的实现代码](#2.2.5 Word2vec 的实现代码)
      • [2.2.6 Word2vec 的优缺点](#2.2.6 Word2vec 的优缺点)
      • [2.2.7 Word2vec 的应用场景](#2.2.7 Word2vec 的应用场景)
  • 三、文本张量的进阶表示方法
    • [3.1 FastText 模型](#3.1 FastText 模型)
      • [3.1.1 FastText 的核心原理](#3.1.1 FastText 的核心原理)
      • [3.1.2 FastText 的特点](#3.1.2 FastText 的特点)
      • [3.1.3 FastText 的实现](#3.1.3 FastText 的实现)
        • [(1)安装 FastText](#(1)安装 FastText)
        • [(2)训练 FastText 模型](#(2)训练 FastText 模型)
        • [(3)加载和使用 FastText 模型](#(3)加载和使用 FastText 模型)
        • (4)运行结果示例
      • [3.1.4 FastText 的优缺点](#3.1.4 FastText 的优缺点)
    • [3.2 ELMo 模型](#3.2 ELMo 模型)
      • [3.2.1 ELMo 的核心原理](#3.2.1 ELMo 的核心原理)
      • [3.2.2 ELMo 的特点](#3.2.2 ELMo 的特点)
      • [3.2.3 ELMo 的实现](#3.2.3 ELMo 的实现)
      • [3.2.4 ELMo 的优缺点](#3.2.4 ELMo 的优缺点)
    • [3.3 FastText 和 ELMo 的对比](#3.3 FastText 和 ELMo 的对比)
  • [四、词嵌入(Word Embedding)介绍](#四、词嵌入(Word Embedding)介绍)
    • [4.1 Word Embedding 的基本原理](#4.1 Word Embedding 的基本原理)
      • [4.1.1 举例说明](#4.1.1 举例说明)
    • [4.2 Embedding 层的可视化分析](#4.2 Embedding 层的可视化分析)
      • [4.2.1 可视化代码实现](#4.2.1 可视化代码实现)
      • [4.2.2 在 TensorBoard 中查看结果](#4.2.2 在 TensorBoard 中查看结果)
    • [4.3 Word Embedding 的应用场景](#4.3 Word Embedding 的应用场景)
      • [4.3.1 应用场景](#4.3.1 应用场景)
    • [4.4 优缺点分析](#4.4 优缺点分析)
      • [4.4.1 优点](#4.4.1 优点)
      • [4.4.2 缺点](#4.4.2 缺点)
  • 五、总结

前言

在自然语言处理(NLP)领域,如何将语言转化为计算机可以理解和处理的形式,一直是研究的核心问题。从最初的简单统计方法,到后来的神经网络模型,每一次技术革新都推动了 NLP 的边界不断拓展。而在这其中,文本表示技术扮演着关键角色。

如果你是一名 NLP 初学者,可能会对 "文本张量表示" 或 "词嵌入" 感到陌生;如果你是进阶者,也许会对如何选择合适的文本表示方法感到困惑。那么这篇文章就是为你准备的!本文将从基础讲起,带你了解 One-hot 编码的起源与局限,再一步步深入到 Word2vec、FastText、神经网络 Embedding 等高级方法。更重要的是,本文不仅讲解理论,还提供代码示例和实际操作,帮助你真正掌握这些技术。

无论你是为了完成文本分类、情感分析,还是想构建自己的 NLP 应用,掌握文本张量表示和词嵌入方法将成为你不可或缺的技能。接下来,让我们一起解锁这扇 NLP 的大门吧!


一、文本张量表示

文本张量表示是将文本中的每个单词映射为计算机可处理的数字向量,进而将整段文本转换为矩阵。它是许多NLP任务(如文本分类、情感分析和机器翻译)的基础。

1.1 文本张量表示简介

文本张量表示通过以下步骤实现:

  1. 将文本中的每个单词表示为向量,称为"词向量"。
  2. 将这些词向量按顺序组合成矩阵,表示整个文本。

1.1.1 举例说明

假设有一段文本:
["自然", "语言", "处理", "很", "有趣"]

可以将其表示为如下矩阵:

plaintext 复制代码
[[1.12, 0.32, 0.11, 0.43],
 [0.45, 1.21, 0.67, 0.12],
 [0.78, 0.54, 1.01, 0.89],
 [0.34, 0.23, 0.11, 0.21],
 [0.56, 0.67, 0.23, 1.34]]

每一行对应一个单词的向量表示。

1.1.2 文本张量表示的意义

文本张量表示的核心作用包括:

  • 统一表示形式:文本转换为数字表示后,便于机器学习模型进行计算。
  • 上下文信息:在一些高级表示方法中,可以捕获单词之间的语义关系。

二、文本张量表示方法

当前有多种方法将文本表示为张量。以下介绍其中三种方法:one-hot编码、word2vec和word embedding。

2.1 One-Hot编码

One-hot编码是一种最基础的文本表示方法,将每个单词表示为一个稀疏向量,其中只有一个元素为1,其余元素为0。

2.1.1 原理与例子

假设有如下文本:
["苹果", "香蕉", "橙子", "苹果"]

使用One-hot编码后,结果为:

plaintext 复制代码
苹果: [1, 0, 0]
香蕉: [0, 1, 0]
橙子: [0, 0, 1]

2.1.2 实现代码

以下代码展示了如何使用Python实现One-hot编码:

python 复制代码
from sklearn.preprocessing import LabelBinarizer

# 定义词汇表
vocabulary = ["苹果", "香蕉", "橙子"]

# 实例化LabelBinarizer
encoder = LabelBinarizer()
encoder.fit(vocabulary)

# 对文本进行One-hot编码
text = ["苹果", "香蕉", "苹果"]
onehot_encoded = encoder.transform(text)

print("One-hot编码结果:")
print(onehot_encoded)

运行结果:

plaintext 复制代码
[[1 0 0]
 [0 1 0]
 [1 0 0]]

2.1.3 优劣势分析

优点:

  • 简单易懂,易于实现。

缺点:

  • 向量维度等于词汇表大小,当词汇表较大时,存储和计算效率低下。
  • 无法表示单词之间的语义关系。

2.2 Word2vec模型

Word2vec 是由 Tomas Mikolov 等人在 2013 年提出的一种用于生成词向量的无监督学习方法。它通过构建一个浅层的神经网络,将单词映射到一个高维向量空间,使得词向量能够反映单词之间的语义和上下文关系。

Word2vec 模型有两个主要的训练模式:

  • CBOW (Continuous Bag of Words):通过上下文预测目标词。
  • Skip-Gram:通过目标词预测上下文。

下面,我们将详细讲解 Word2vec 的工作原理、两种训练模式的区别,以及实现代码和应用示例。

2.2.1 Word2vec 的核心思想

Word2vec 的目标是将每个单词表示为稠密向量,使得在向量空间中语义相似的单词距离较近。通过训练神经网络模型,单词的上下文关系被隐式编码进词向量中,从而形成语义关联。

(1)工作流程
  1. 构建训练数据:从语料中生成上下文-目标词对。
  2. 定义模型结构:通过 CBOW 或 Skip-Gram 构建神经网络。
  3. 训练神经网络:根据上下文预测目标词(或根据目标词预测上下文),并更新模型参数。
  4. 提取词向量:训练完成后,模型权重矩阵即为词向量。

2.2.2 CBOW 模式

CBOW 模式的基本思路是:通过上下文词预测目标词。例如,给定句子"我喜欢学习 NLP",在上下文窗口为 2 的情况下:

  • 上下文:["我", "学习"]
  • 目标词:"喜欢"
(1)CBOW 模型的结构

CBOW 是一个单层神经网络,主要包含以下步骤:

  1. 输入层:将上下文单词的 one-hot 编码传入网络。
  2. 隐藏层:通过词向量矩阵(词汇表大小 × 词向量维度)对上下文单词编码进行嵌入。
  3. 输出层:通过 softmax 输出预测的目标单词。
(2)CBOW 的数学表示

设上下文词为 (C_1, C_2, ..., C_m),目标词为 (T)。CBOW 模型的目标是最大化:
P ( T ∣ C 1 , C 2 , . . . , C m ) \ P(T | C_1, C_2, ..., C_m) P(T∣C1,C2,...,Cm)

这通过以下步骤实现:

  1. 将上下文词的 one-hot 编码与词嵌入矩阵相乘,得到上下文词的嵌入向量。
  2. 对上下文词的嵌入向量求平均,得到上下文表示。
  3. 将上下文表示传入输出层,预测目标词。

2.2.3 Skip-Gram 模式

Skip-Gram 模式与 CBOW 相反,它通过目标词预测上下文词。例如,仍以句子"我喜欢学习 NLP"为例,在上下文窗口为 2 的情况下:

  • 目标词:"喜欢"
  • 上下文:["我", "学习"]
(1)Skip-Gram 模型的结构

Skip-Gram 模型的流程如下:

  1. 输入层:将目标词的 one-hot 编码输入网络。
  2. 隐藏层:通过词向量矩阵将目标词映射到稠密向量。
  3. 输出层:通过 softmax 输出预测的上下文词。
(2)Skip-Gram 的数学表示

设目标词为 (T),上下文词为 (C_1, C_2, ..., C_m)。Skip-Gram 模型的目标是最大化:
P ( C 1 , C 2 , . . . , C m ∣ T ) \ P(C_1, C_2, ..., C_m | T) P(C1,C2,...,Cm∣T)

这通过以下步骤实现:

  1. 将目标词的 one-hot 编码与词嵌入矩阵相乘,得到目标词的嵌入向量。
  2. 将目标词嵌入向量传入输出层,预测上下文词。

2.2.4 CBOW 与 Skip-Gram 的区别

特性 CBOW Skip-Gram
训练目标 根据上下文预测目标词 根据目标词预测上下文
计算复杂度 较低 较高
适合场景 语料较小 语料较大,且对低频词效果较好
优缺点 更快,更适合大规模语料 表示低频词效果更好

2.2.5 Word2vec 的实现代码

下面是一个完整的 Word2vec 实现代码示例,展示如何训练和使用 CBOW 和 Skip-Gram 模型。

(1)示例代码:训练 Word2vec 模型

使用 gensim 库训练 Word2vec:

python 复制代码
from gensim.models import Word2Vec

# 准备训练数据
sentences = [
    ["我", "喜欢", "学习", "NLP"],
    ["NLP", "是", "非常", "有趣", "的", "领域"],
    ["深度学习", "改变", "了", "自然语言处理"]
]

# 训练 Word2vec 模型(CBOW 模式)
cbow_model = Word2Vec(sentences, vector_size=100, window=3, min_count=1, sg=0)
print("CBOW 模型训练完成")

# 训练 Word2vec 模型(Skip-Gram 模式)
skipgram_model = Word2Vec(sentences, vector_size=100, window=3, min_count=1, sg=1)
print("Skip-Gram 模型训练完成")
(2)示例代码:获取词向量
python 复制代码
# 查看单词的词向量
word_vector = cbow_model.wv["学习"]
print("学习的词向量 (CBOW):", word_vector)

# 查找相似单词
similar_words = skipgram_model.wv.most_similar("学习", topn=5)
print("与 '学习' 相似的单词 (Skip-Gram):", similar_words)

运行结果:

plaintext 复制代码
学习的词向量 (CBOW): [0.123, -0.432, 0.893, ...]
与 '学习' 相似的单词 (Skip-Gram): [('NLP', 0.87), ('深度学习', 0.81), ('自然语言处理', 0.78)]

2.2.6 Word2vec 的优缺点

优点:

  • 能捕获词语之间的语义关系。
  • 向量稠密,节省存储空间。
  • 模型训练速度快,尤其适合大规模语料。

缺点:

  • 无法捕获单词的上下文多义性(一个单词的含义可能在不同语境中不同)。
  • 对低频词的表示能力较弱(Skip-Gram 模式部分缓解了这一问题)。

2.2.7 Word2vec 的应用场景

Word2vec 生成的词向量在以下领域有广泛应用:

  1. 文本分类:将文本表示为词向量的平均值或其他组合,作为分类模型的输入。
  2. 信息检索:计算查询与文档之间的相似度。
  3. 机器翻译:将源语言和目标语言单词映射到相同的向量空间。
  4. 推荐系统:基于词向量的语义相似性进行内容推荐。

三、文本张量的进阶表示方法

随着自然语言处理的发展,传统的表示方法(如 One-hot 和 Word2vec)在某些情况下难以满足实际需求,比如处理上下文相关的单词含义或子词信息。因此,近年来发展出了更多进阶的文本表示方法,如 FastText、GloVe、ELMo 和 BERT 等。这些方法不仅能够捕获语义信息,还可以适应更加复杂的语言场景。

在本节中,我们将以 FastTextELMo 为例,详细介绍进阶文本张量表示方法的原理、特点和实现。


3.1 FastText 模型

FastText 是由 Facebook 开发的一种改进的词向量表示方法。与 Word2vec 不同的是,FastText 在训练时利用了子词信息(subword),因此对 OOV(Out-of-Vocabulary)词汇有更好的泛化能力。

3.1.1 FastText 的核心原理

FastText 的核心思想是:将单词拆分为一组子词(n-gram),并通过子词的组合来表示一个单词。这种方式能够:

  • 捕捉单词的内部结构(如前缀和后缀)。
  • 有效处理未见过的单词(如拼写错误、新词等)。

示例:

假设单词为"学习",n-gram 的表示方式可能是:

  • 单词:学习
  • 子词(3-gram):["<学", "学习", "习>"]

在 FastText 中,单词的向量表示为所有子词向量的平均值或加权求和。


3.1.2 FastText 的特点

  • 子词表示:FastText 将单词分解为子词,有助于处理罕见单词或未见过的单词。
  • 高效训练:在大型语料上训练速度快,且易于并行化。
  • 支持无监督和有监督学习:既可以训练词向量,也可以用于文本分类。

3.1.3 FastText 的实现

以下示例展示如何使用 FastText 训练和加载模型。

(1)安装 FastText

FastText 提供了 Python 接口,首先确保安装库:

bash 复制代码
pip install fasttext
(2)训练 FastText 模型
python 复制代码
import fasttext

# 训练无监督词向量模型
model = fasttext.train_unsupervised(input="data/fil9", model="skipgram", dim=100)
print("模型训练完成")

# 保存模型
model.save_model("fasttext_model.bin")
print("模型保存完成")
(3)加载和使用 FastText 模型
python 复制代码
# 加载已保存的模型
model = fasttext.load_model("fasttext_model.bin")

# 获取单词向量
word_vector = model.get_word_vector("学习")
print("学习的词向量:", word_vector)

# 查询与某单词语义相似的词
similar_words = model.get_nearest_neighbors("学习")
print("与 '学习' 语义相似的单词:", similar_words)
(4)运行结果示例
plaintext 复制代码
学习的词向量: [-0.123, 0.432, -0.892, ...]
与 '学习' 语义相似的单词: [('学术', 0.82), ('研究', 0.79), ('教育', 0.76)]

3.1.4 FastText 的优缺点

优点:

  • 子词粒度的表示使其在 OOV 场景下表现优异。
  • 可以在大规模语料上快速训练。

缺点:

  • 子词的分解会导致模型在某些复杂语境下失去全局语义信息。
  • 由于没有考虑上下文,仍然无法处理同一单词在不同语境下的多义性问题。

3.2 ELMo 模型

ELMo(Embeddings from Language Models)是由 AllenNLP 提出的深度上下文嵌入模型,它通过双向 LSTM 构建语言模型,可以捕获上下文信息,从而生成动态的词向量。

3.2.1 ELMo 的核心原理

ELMo 的核心思想是:每个单词的表示不仅由该单词决定,还由其上下文中的其他单词决定。与静态词向量(如 Word2vec 和 FastText)不同,ELMo 的词向量是动态的,会随上下文的不同而变化。

示例:

  • 在句子"苹果是一种水果"中,"苹果"的向量表示为水果的语义。
  • 在句子"苹果公司推出新产品"中,"苹果"的向量表示为公司的语义。

ELMo 通过以下步骤实现:

  1. 使用双向语言模型(BiLM)训练语料。
  2. 从语言模型的不同层提取特征,生成上下文相关的词向量。

3.2.2 ELMo 的特点

  • 上下文相关:ELMo 的词向量会根据单词的上下文动态调整。
  • 多层次特征:ELMo 提取了语言模型的多层特征,包含底层语法和高层语义信息。
  • 任务适配性:可以方便地用于各种下游 NLP 任务,如命名实体识别(NER)和文本分类。

3.2.3 ELMo 的实现

以下是使用 TensorFlow 实现 ELMo 的示例代码:

(1)安装 AllenNLP

ELMo 是 AllenNLP 的一部分,可以通过以下命令安装:

bash 复制代码
pip install allennlp allennlp-models
(2)加载预训练模型
python 复制代码
from allennlp.modules.elmo import Elmo, batch_to_ids

# 定义 ELMo 模型参数
options_file = "https://allennlp.org/elmo-weights/elmo_2x4096_512_2048cnn_2xhighway_options.json"
weight_file = "https://allennlp.org/elmo-weights/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5"

# 加载预训练的 ELMo 模型
elmo = Elmo(options_file, weight_file, num_output_representations=1, dropout=0)

# 准备输入文本
sentences = [["我", "喜欢", "学习"], ["深度", "学习", "很", "有趣"]]
character_ids = batch_to_ids(sentences)

# 获取 ELMo 表示
embeddings = elmo(character_ids)
print("ELMo 嵌入完成")
(3)运行结果

ELMo 的输出包含每个单词的动态嵌入:

plaintext 复制代码
Sentence 1:
我: [-0.123, 0.543, ...]
喜欢: [0.234, -0.872, ...]
学习: [0.987, -0.765, ...]

Sentence 2:
深度: [0.214, -0.912, ...]
学习: [0.672, 0.198, ...]

3.2.4 ELMo 的优缺点

优点:

  • 词向量动态变化,可以更好地捕获上下文信息。
  • 结合了语言模型的多层次特征,适用于多种 NLP 任务。

缺点:

  • 模型复杂度高,训练和推理速度较慢。
  • 对计算资源要求较高。

3.3 FastText 和 ELMo 的对比

特性 FastText ELMo
语义建模 子词建模 上下文建模
动态/静态表示 静态表示 动态表示
计算复杂度
适用场景 小规模计算资源、OOV 单词表示 高语义复杂度任务,如阅读理解和问答

四、词嵌入(Word Embedding)介绍

词嵌入(Word Embedding)是将词汇映射到一个高维空间(通常是稠密向量空间)的方法,它可以捕获词汇的语义和上下文信息。广义上,任何稠密的词向量表示方法(如 Word2vec、FastText)都可以视为词嵌入的一种。狭义上,词嵌入特指在神经网络中通过 embedding 层 进行训练得到的嵌入矩阵。


4.1 Word Embedding 的基本原理

在神经网络中,Embedding 层的作用是将输入的单词 ID 映射为稠密向量表示(嵌入向量)。这层通常由一个权重矩阵表示,权重矩阵在训练过程中被优化。最终,权重矩阵中的每一行就是一个单词的词向量。

4.1.1 举例说明

假设有以下句子:
"我喜欢学习"

对应的词汇表:
{"我": 0, "喜欢": 1, "学习": 2}

通过 Embedding 层训练后,得到以下嵌入矩阵:

plaintext 复制代码
[[0.12, 0.45, -0.34],  # "我" 的嵌入向量
 [0.78, -0.21, 0.56],  # "喜欢" 的嵌入向量
 [-0.43, 0.67, 0.89]]  # "学习" 的嵌入向量

当输入单词 "喜欢" 时,Embedding 层会输出对应的嵌入向量 [0.78, -0.21, 0.56]


4.2 Embedding 层的可视化分析

通过 TensorBoard,我们可以对嵌入矩阵进行可视化,从而直观地观察词汇之间的语义相似性。以下是一个具体的实验步骤:

4.2.1 可视化代码实现

以下代码展示了如何构建一个 nn.Embedding 层,并使用 TensorBoard 可视化嵌入向量。

python 复制代码
import torch
import torch.nn as nn
from torch.utils.tensorboard import SummaryWriter
from tensorflow.keras.preprocessing.text import Tokenizer
import jieba

# 实现词嵌入层的可视化
def word_embedding_visualization():
    # 1. 准备输入文本
    sentences = [
        "我喜欢学习自然语言处理",
        "自然语言处理是一门有趣的学科"
    ]

    # 分词
    word_list = [jieba.lcut(sentence) for sentence in sentences]

    # 2. 将文本数值化
    tokenizer = Tokenizer()
    tokenizer.fit_on_texts(word_list)

    # 打印词汇表
    word_index = tokenizer.index_word
    print("词汇表:", word_index)

    # 将句子转换为数字序列
    sentence_to_id = tokenizer.texts_to_sequences(word_list)
    print("句子转为 ID:", sentence_to_id)

    # 3. 创建 nn.Embedding 层
    embedding = nn.Embedding(num_embeddings=len(word_index) + 1, embedding_dim=8)

    # 打印词嵌入矩阵
    print("词嵌入矩阵:", embedding.weight.data)

    # 4. 使用 TensorBoard 可视化
    writer = SummaryWriter()
    writer.add_embedding(embedding.weight.data, metadata=list(word_index.values()))
    writer.close()

    print("可视化完成,请启动 TensorBoard 查看结果。")

# 运行函数
word_embedding_visualization()

4.2.2 在 TensorBoard 中查看结果

  1. 启动 TensorBoard:

    bash 复制代码
    tensorboard --logdir=runs --host 0.0.0.0
  2. 打开浏览器访问:

    http://127.0.0.1:6006
    
  3. 在 TensorBoard 的嵌入页面,可以通过降维后的可视化图查看词向量的分布,并通过最近邻操作验证词汇的语义相似性。


4.3 Word Embedding 的应用场景

4.3.1 应用场景

  1. 文本分类:通过将句子转换为嵌入向量,作为分类模型的输入。
  2. 情感分析:捕捉语句中与情感相关的语义信息。
  3. 机器翻译:在源语言和目标语言之间构建语义关联。
  4. 信息检索:计算查询词与文档之间的语义相似性。

4.4 优缺点分析

4.4.1 优点

  • 稠密表示:相比 One-hot 编码,Word Embedding 维度较低,效率更高。
  • 捕获语义信息:能够反映词汇之间的语义相似性。
  • 灵活扩展:适用于多种下游任务,效果显著。

4.4.2 缺点

  • 上下文局限:传统的嵌入方法(如 Word2vec)无法处理同一个词在不同语境中的多义性。
  • 训练依赖:需要足够大的语料才能生成高质量的词向量。

五、总结

在本文中,我们系统地介绍了文本张量表示方法及其应用场景。从基础的 One-hot 编码,到进阶的 Word2vec 和 FastText,再到神经网络中的 Embedding 层,我们逐步建立了一个完整的文本表示框架。

通过这些技术,我们可以:

  1. 高效地将文本转化为计算机可处理的形式。
  2. 捕捉文本中的语义和上下文信息。
  3. 应用于各种自然语言处理任务。

希望通过本文,读者对文本张量表示有了更全面的理解,并能将这些技术应用到实际的 NLP 项目中。

相关推荐
HaiJaine13 分钟前
机器学习中特征选择的重要性
人工智能·机器学习
美格智能14 分钟前
CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布
人工智能·microsoft·机器人
1021123456789030 分钟前
怎么修复损坏或者语法有问题的PDF-免费PDF编辑工具分享
人工智能·adobe·pdf·wps·adobe acrobat reader·格式工厂·福昕阅读器
minstbe31 分钟前
半导体数据分析: 玩转WM-811K Wafermap 数据集(一) AI 机器学习
人工智能
Elastic 中国社区官方博客32 分钟前
Elasticsearch:使用 Playground 与你的 PDF 聊天
大数据·人工智能·elasticsearch·搜索引擎·ai·pdf·全文检索
大霸王龙39 分钟前
大数据智能选课系统
大数据·人工智能·python·信息可视化·django
大数据在线1 小时前
进击的开放固件,突破AI时代多元算力管理难题
人工智能·浪潮信息·openbmc·ai算力·开放固件
Mia@1 小时前
智能化文档开发(DI)
nlp·paddle
Jeo_dmy1 小时前
ChatGPT入门之文本情绪识别:先了解LSTM如何处理文字序列
人工智能·chatgpt·lstm
JINGWHALE12 小时前
设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析
前端·人工智能·后端·设计模式·性能优化·系统架构·状态模式