NLP面试题思考

1. 词干提取词形还原的区别及使用场景

方法定义特点使用场景
词干提取(Stemming)通过截断词的后缀或前缀,得到一个可能不是标准词汇的词干规则简单,速度快,但结果可能不是有效单词适用于搜索引擎、信息检索等对精度要求不高的任务
词形还原(Lemmatization)根据单词的词性(POS)和语境,返回其标准词形(词典中存在的单词)需要依赖词典,精确但速度较慢适用于 NLP 任务,如机器翻译、问答系统等

词干提取:通常使用规则或启发式方法,不依赖词典,如:

Porter Stemmer(最常见)

from nltk.stem import PorterStemmer

ps = PorterStemmer()
print(ps.stem("running"))  # 输出: run
print(ps.stem("flies"))    # 输出: fli(可能错误)

还有:Lancaster Stemmer(更激进)

Snowball Stemmer(支持多种语言)

词形还原:基于词典(如 WordNet),结合 词性(POS)信息 进行转换。更精确,但计算开销大。

from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet

lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize("running", pos='v'))  # 输出: run
print(lemmatizer.lemmatize("flies", pos='n'))   # 输出: fly

词干提取和词形还原的使用场景

场景推荐方法原因
搜索引擎 / 信息检索Stemming快速归一化不同形式的单词,提高召回率
机器翻译 / 语义分析Lemmatization需要准确的单词语义,防止误解析
关键词提取Lemmatization需要保留词汇的原始意义
低资源计算 / 轻量级应用Stemming计算速度快,不需要词典支持

2. 词袋模型的优缺点?

✅ 优点

  1. 简单易实现:易于构建特征矩阵,计算效率高。
  2. 可用于文本分类:适用于情感分析、垃圾邮件检测等任务。
  3. 可结合 TF-IDF:可降低高频词影响,提高低频词的区分度。
  4. 与机器学习兼容:可用于 SVM、逻辑回归、朴素贝叶斯等模型。

❌ 缺点

  1. 丢失语序:无法区分 "I love NLP""NLP love I"
  2. 丢失语义:无法识别同义词,如 "good""excellent" 视为完全不同的词。
  3. 维度高且稀疏:词汇表大时,矩阵稀疏,计算成本高。
  4. 无法处理未见词(OOV):训练集未出现的词无法表示。

3. BLEU值是什么?

BLEU 值(BLEU Score) 是用于评估 机器翻译(Machine Translation, MT)文本生成 任务的指标,衡量 生成文本Candidate与参考文本Reference的相似度

4. 中文分词中的歧义问题类型:

  • 交集型歧义:同一串字符可以有多种切分方式,如 ABC 可分为 AB/CA/BC
  • 组合型歧义:多个词可以不同方式组合,如 AB 可合并为 ABA/B

5. 在文本情感分析任务中常使用交叉熵:

6. 什么是ROUGH指标?与BLEU指标的区别?

对比项ROUGE(Recall-Oriented Understudy for Gisting Evaluation)BLEU(Bilingual Evaluation Understudy)
用途主要用于 自动摘要评估,也可用于文本生成主要用于 机器翻译评估,也可用于文本生成
核心思想召回率为主,衡量参考文本中的 n-gram 是否出现在生成文本中精确率为主,衡量生成文本中的 n-gram 是否出现在参考文本中
计算方式计算 n-gram 召回率(ROUGE-N)、最长公共子序列(ROUGE-L)等计算 n-gram 精确率,并加上 长度惩罚
n-gram 统计参考文本中的 n-gram 是否出现在生成文本生成文本中的 n-gram 是否出现在参考文本
主要指标- ROUGE-N(n-gram 召回率)
- ROUGE-L(最长公共子序列)
- ROUGE-W(加权最长公共子序列)
- ROUGE-S(跳跃 n-gram)
- BLEU-N(n-gram 精确率)
- BLEU-4(标准 4-gram 计算)
适用于文本摘要、文本生成(如 GPT-3 评估)机器翻译、文本生成

7. cnn在nlp任务的应用多见于什么场景?

cnn对位置不敏感,适合语序对nlp任务影响不大的场景。

优势原因
并行计算(Parallelism)CNN 计算不依赖前后时序关系,可以 并行处理,比 RNN 快
捕捉局部特征(Local Features)CNN 使用 卷积核(Filters),可以有效提取 n-gram 级别的短语信息
适用于短文本(Short Text)适用于短文本任务,如 情感分析、新闻分类,比 RNN 更高效
参数共享(Parameter Sharing)CNN 共享卷积核参数,在大语料训练时 更具鲁棒性
避免梯度消失(Gradient Vanishing)

RNN 处理长文本时易梯度消失,CNN 结构避免了这个问题

8. word embedding是什么?

Word Embedding(词向量) 是将 单词映射到低维连续向量空间,使得相似的单词在向量空间中更接近。常见的方法包括 Word2Vec、GloVe、FastText,以及 Transformer 预训练的嵌入(如 BERT)

假设我们有以下单词:

["king", "queen", "man", "woman"]

Word Embedding 可能将它们映射为:

单词维度 1维度 2维度 3维度 4
king0.50.80.20.7
queen0.60.90.10.6
man0.20.70.30.8
woman0.30.80.20.7

维度个数是一个超参数,由语料库规模、词汇表大小、计算资源、任务需求等因素决定。

常见 Word Embedding 维度

模型常见维度适用场景
Word2Vec(Google 预训练)300一般 NLP 任务
GloVe(Stanford 预训练)50, 100, 200, 300文本分类、搜索
FastText100, 300适用于 OOV 词
BERT(Transformer)768, 1024需要强上下文理解的任务

word embedding的优点:

  • 词嵌入相比one-hot embedding,维度低且为连续向量,方便机器学习型的处理;
  • word embedding具有天然的聚类效果,语义相似的词在向量空间上也较为接近;
  • 是无监督的方法,方便应用到海量数据。

9. 什么是Word2Vec?

Word2Vec 是一种 基于上下文学习单词向量 的方法,即word embedding的实现算法之一,主要有两种训练方式:

  1. CBOW(Continuous Bag of Words):通过上下文预测中心词。
  2. Skip-Gram:通过中心词预测上下文。

word2vec与glove的区别:

word2vec使用神经网络学习word-embedding的表示,属于predictive-model;
而Glove算法本质上是对词频共现矩阵进行SVD降维,属于count-based model。

10. 介绍一下隐马尔可夫模型

HMM(隐马尔可夫模型)的思想 是:系统存在一个 不可直接观测的隐藏状态序列,但可以通过 观测状态序列 来推断隐藏状态的变化。HMM 假设 当前隐藏状态只依赖于前一个状态(马尔可夫性),并通过 状态转移概率 进行跳转,同时根据 观测概率(发射概率) 生成可见数据。

HMM 的基本步骤

  1. 定义状态空间:确定隐藏状态(如词性)和观测状态(如单词)。
  2. 初始化概率:设定初始状态分布、状态转移概率、发射概率。
  3. 计算问题(前向算法):求观测序列的概率。
  4. 解码问题(维特比算法):找到最可能的隐藏状态序列。
  5. 训练问题(Baum-Welch):从数据中学习最优参数(状态转移 & 发射概率)。

11. Bert的思想和结构是什么?

BERT(Bidirectional Encoder Representations from Transformers)是基于 Transformer encoder 的预训练模型,通过双向注意力机制建模文本上下文,从大规模语料中学习通用语言表示。

其主要训练任务包括:

  • MLM(Masked Language Model):随机遮蔽部分单词,预测被遮蔽词,以学习双向上下文关系。
  • NSP(Next Sentence Prediction):判断两句话是否连续,以学习跨句子关系。
BERT 主要结构

BERT 采用 多层 Transformer 编码器 进行文本建模,主要包括:

  • 输入层

    • Token Embedding:将输入文本转换为 WordPiece 词向量。
    • Segment Embedding:区分不同句子(如 NSP 任务)。
    • Position Embedding:编码单词在句子中的位置。
  • 编码层

    • 多个 Transformer 编码器层(如 BERT-Base 12 层,BERT-Large 24 层) 组成。
    • 采用 多头自注意力(Multi-Head Attention),可同时关注多个上下文关系。
    • 采用 Feed-Forward Network(FFN) 进行特征转换。
  • 输出层

    • MLM 预测头:预测被遮蔽的单词。
    • NSP 分类头:判断两个句子是否相连。

12. 简述Transformer模型结构,特别是Encoder-Decoder特点与区别

Transformer 采用 典型的 Encoder-Decoder 结构,其中:

  • Encoder 端 和 Decoder 端 均由 6 个 Block 组成。

  • Encoder Block 主要包含:

    • 多头自注意力(Self-Attention)

    • 前馈神经网络(Feed-Forward Network, FFN)

  • Decoder Block 额外包含:

    • 多头自注意力(Self-Attention)

    • Encoder-Decoder 交互注意力(Cross-Attention)

    • 前馈神经网络(FFN)

  • 每个 Block 还包含 残差连接(Residual Connection)和 Layer Normalization(层归一化),用于稳定训练。

📌 Transformer 结构与各组件作用

模块位置作用
多头自注意力(Multi-Head Self-Attention)Encoder & Decoder让模型关注输入序列中不同部分的关联,捕捉长程依赖关系
Encoder-Decoder 交互注意力(Cross-Attention)Decoder让 Decoder 关注 Encoder 的输出,以生成正确的目标序列
前馈神经网络(Feed-Forward Network, FFN)Encoder & Decoder进一步处理 Transformer Block 输出,提高特征表达能力
残差连接(Residual Connection)Encoder & Decoder防止梯度消失,增强深层网络的训练效果
Layer NormalizationEncoder & Decoder归一化层,稳定训练,加速收敛
位置编码(Positional Encoding)输入层由于 Transformer 没有 RNN 结构,位置编码用于引入单词的顺序信息
为什么残差连接可以解决梯度爆炸?
  1. 缓解梯度消失:梯度可以绕过深层网络的非线性变换,直接传播到前层,提高参数更新效率。
  2. 稳定深层网络训练:让深层网络至少能学习恒等映射(Identity Mapping),避免退化问题。
  3. 加快收敛:提供直接的梯度传递路径,使训练更稳定,收敛速度更快。

13. Bert有哪些可以改进的地方?

  • 问题:中文 BERT 以汉字为单位,忽略了词级信息。
    改进:ERNIE 引入知识实体,BERT-WWM 采用 短语级 Mask(Whole Word Masking)

  • 问题:NSP 任务影响词向量性能。
    改进:RoBERTa 移除 NSP,使用 动态 Mask 替代静态 Mask。

  • 问题:BERT 计算开销大,推理慢。
    改进:DistilBERT、ALBERT 进行 模型蒸馏与参数共享,降低计算成本。

  • 问题:BERT 处理长文本受限(最大 512 tokens)。
    改进:Longformer、BigBird 采用 稀疏注意力机制,适应长文本。

  • 问题:生成任务表现不佳,预训练和生成过程不一致。
    改进:T5、BART 采用 序列到序列(Seq2Seq) 结构,优化生成能力。

  • 问题:位置编码使用绝对编码,难以建模长程依赖。
    改进:ALiBi、RoPE 采用 相对位置编码,增强位置感知能力。

14. Attention机制的核心作用?它为什么如此有效?

  • 在 Attention 出现之前,通常使用 RNN(LSTM)建模序列信息,这些模型需要读取完整句子并将所有信息压缩为固定长度的向量;当处理长句时,容易导致信息丢失等问题。
  • 注意力机制基于人类视觉注意机制,在处理长句时,不是按顺序浏览每个单词或字符,而是潜意识地关注信息密度最高的部分,并过滤掉无关信息;能更有效地捕获上下文信息。
  • 跳过固定长度瓶颈:不像 RNN 需要将所有信息压缩到一个向量,Attention 允许模型直接关注输入序列的关键部分,提高长文本处理能力。
  • 全局依赖建模:可以 并行处理,不像 RNN 依赖递归计算,避免梯度消失问题,适用于长程依赖建模。
  • 自适应权重分配:不同词的重要性不同,Attention 通过 权重机制 让模型动态调整关注点,提高信息提取效率。

15. 简述BPE模型

BPE(Byte Pair Encoding) 是一种 基于统计的子词分词算法,用于压缩词汇表并减少 OOV 词汇。从字符级开始,迭代合并出现频率最高的相邻字符或子词,形成更长的子词单元。

  • BPE 通过统计合并最频繁的字符对,适合一般数据压缩。
  • WordPiece 通过最大化语言模型概率合并子词,适合 NLP 任务,如 BERT

16. 简述NLP数据增强的办法

  • 加噪声:以信息丢失为主(Dropout),如 随机切词(每次切换不同词类)、在 Embedding 上随机 Dropout,或使用带权重的 Mask 遮蔽部分单词。
  • 同义词替换:随机选择一些词,替换为 同义词,如 “她非常美丽” → “她非常漂亮”,但 NLP 词向量相似的情况下,增强效果有限。
  • 反向翻译(Back Translation):使用机器翻译 将句子翻译成另一种语言,再翻译回原语言,得到 意思相近但表述不同的新句子,可增强语序多样性。
  • 生成式方法:使用 GAN / VAE 生成网络 生成新数据,适合 高质量数据增强,但训练 GAN 难度较大,计算成本高。

17. NLP如何解决OOV问题?

  • 子词分词(Subword Tokenization):使用 BPE、WordPiece、SentencePiece 等方法将 OOV 词拆分成已知子词,减少完全未见词的情况。
  • UNK(Unknown Token):用特殊符号 <UNK> 代替 OOV 词,但会丢失语义信息,适用于简单模型。
  • 字符级模型(Character-Level Model):直接基于字符级建模(如 CNN/RNN 处理字符级输入),适用于 OOV 词较多的场景。
  • 动态词向量(Contextual Embeddings):如 BERT、GPT、ELMo,能够基于上下文生成 OOV 词的语义表示,而不是依赖固定词表。
  • 词形还原(Lemmatization):将单词还原为词根,如 "running" → "run",减少 OOV 发生的可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值