【NLP】 9. 处理创造性词汇 & 词组特征(Creative Words & Features Model), 词袋模型处理未知词,模型得分

这里写目录标题

  • [处理创造性词汇 & 词组特征(Creative Words & Features Model)](#处理创造性词汇 & 词组特征(Creative Words & Features Model))
        • [1. 处理否定(Negation Handling)](#1. 处理否定(Negation Handling))
        • [2. 词组特征(Bigrams & N-grams)](#2. 词组特征(Bigrams & N-grams))
        • [3. 结合否定传播与 n-grams 进行优化](#3. 结合否定传播与 n-grams 进行优化)
  • [词袋模型(Bag-of-Words, BoW)](#词袋模型(Bag-of-Words, BoW))
        • [1. BoW 示例](#1. BoW 示例)
        • [2. 处理未知词](#2. 处理未知词)
        • [3. 为什么忽略未知词?](#3. 为什么忽略未知词?)
        • [4. 处理未知词的方法](#4. 处理未知词的方法)
  • [计算模型得分(Score Calculation)](#计算模型得分(Score Calculation))

处理创造性词汇 & 词组特征(Creative Words & Features Model)

在 NLP 任务(如情感分析、文本分类)中,我们不仅要考虑单个词,还要考虑词的组合(n-grams),以及如何处理否定(negation)等特殊情况,以提高模型的理解能力。

1. 处理否定(Negation Handling)

问题:简单的情感分析模型可能会忽略否定词的影响。例如:

  • 句子:"I love this place" → 可能被分类为正向情感。
  • 句子:"I don't love this place" → 由于 "love" 是正面词,可能仍然被误判为正向情感,但实际上应该是负向情感。

解决方案:否定传播(Negation Propagation) 一种方法是在否定词后面的词前加上 "NOT_",直到遇到标点符号。

示例 1(单层否定)

  • 原句:"I don't recommend this restaurant at all."
  • 转换后:"I don't NOT_recommend NOT_this NOT_restaurant NOT_at NOT_all."

效果:模型不会错误地把 "recommend" 视为正向词,而是识别出它受到了否定的影响。

示例 2(双重否定)

  • 原句:"She didn't dislike the movie." (实际上表达的是喜欢这个电影)
  • 转换后:"She didn't NOT_dislike NOT_the NOT_movie."

挑战:单纯加 "NOT_" 可能导致错误理解,因此在这种情况下,可能需要更高级的依存解析(Dependency Parsing)来判断句子实际表达的情感。

2. 词组特征(Bigrams & N-grams)

除了单个词(unigram),我们还可以使用双词组(bigram)、三词组(trigram)来捕捉更丰富的语义信息。

示例 1(双词组 - bigram)

  • 原句:"The coffee is incredibly strong"
  • Bigram 生成:
    • The_coffee
    • coffee_is
    • is_incredibly
    • incredibly_strong

效果:相比单独的 "strong","incredibly_strong" 更能表达强烈的正向情感。

示例 2(情感分析中的 bigram)

  • 原句:"The service is not great at all."
  • Bigram 生成:
    • The_service
    • service_is
    • is_NOT (保留否定信息)
    • NOT_great
    • great_at
    • at_all

效果:因为包含 "is_NOT" 和 "NOT_great",模型更容易识别该句子的负面情感,而不仅仅是依赖单个 "great"。

示例 3(带否定传播的 bigram)

  • 原句:"I don't think this hotel is amazing."
  • 转换后:"I don't NOT_think NOT_this NOT_hotel NOT_is NOT_amazing."
  • Bigram 生成:
    • I_don't
    • don't_NOT_think
    • NOT_think_NOT_this
    • NOT_this_NOT_hotel
    • NOT_hotel_NOT_is
    • NOT_is_NOT_amazing

效果:模型可以学会识别 "NOT_amazing" 这种特征,避免误判该句子为正面情感。

3. 结合否定传播与 n-grams 进行优化

在实际 NLP 任务中,常见的做法是:

  • 应用否定传播(添加 "NOT_" 标记)。
  • 使用 n-grams(如 bigram/trigram),让模型更好地理解上下文。
  • 结合机器学习或深度学习模型(如 LSTM、BERT),利用更复杂的上下文信息。

词袋模型(Bag-of-Words, BoW)

BoW 是 NLP 中一种简单但有效的文本表示方法,它将文本转换为词频(word counts)**或**词向量(word vectors) ,但 不考虑词序

1. BoW 示例

例如:

  • 句子 1:"I love this movie"
  • 句子 2:"This movie is amazing"

BoW表示:

复制代码
{"I": 1, "love": 1, "this": 2, "movie": 2, "is": 1, "amazing": 1}

每个词汇都会被映射为它在文本中出现的次数(词频)。

2. 处理未知词

当遇到训练集中没有出现过的词 (即未知词,unknown words),BoW 通常直接忽略它们,因为它们不在预定义的词汇表(vocabulary)中。

示例 1(未知词被忽略)

  • 训练集的词汇表["I", "love", "this", "movie", "is", "amazing"]
  • 测试句子:"I really love this old movie"

"really" 和 "old" 在训练集词汇表中不存在,因此它们被忽略:

复制代码
{"I": 1, "love": 1, "this": 1, "movie": 1}

示例 2(金额作为未知词被忽略)

  • 句子:"That will be $12523.22 please"

由于 "$12523.22" 可能不在训练集的词汇表中,它被当作未知词(unknown token),并不计数。最终的词频向量可能是:

复制代码
{"That": 1, "will": 1, "be": 1, "please": 1}
3. 为什么忽略未知词?
  • BoW 依赖词汇表,未知词无法转换为向量,通常会被忽略。
  • 减少噪声:某些数值(如金额、时间)可能对 NLP 任务(如情感分析)无关紧要。
  • 简化计算:省略未知词可以减少计算成本,避免词表过大导致模型效率下降。
4. 处理未知词的方法

虽然 BoW 直接忽略未知词,但现代 NLP 方法可以更好地处理:

  1. 使用特殊标记(UNK Token):
    • 例如,将所有未知词替换为 "<UNK>",使模型仍然能学习到它们的位置影响。
  2. 使用子词(Subword Tokenization):
    • 例如 WordPiece、Byte Pair Encoding(BPE)、SentencePiece ,可以拆分 " 12523.22 " 为 [ " 12523.22 " 为 [" 12523.22"为["", "12523", ".", "22"],从而保留部分信息。
  3. 使用预训练词向量(如 Word2Vec, GloVe, BERT):
    • 这些方法可以通过相似词的关系推测出未知词的意义。

计算模型得分(Score Calculation)

在处理 NLP 任务时,计算一个模型的得分是常见的做法。常见的计算方法是将每个特征的计数值与其对应的权重值相乘,然后求和。

得分计算公式
score = ∑ f ∈ features ( count f × weight f ) \text{score} = \sum_{f \in \text{features}} (\text{count}_f \times \text{weight}_f) score=f∈features∑(countf×weightf)

其中:

  • score:模型的最终得分。
  • features:特征的集合,模型使用的数据特征。
  • count_f :特征 f 的计数值,通常指的是特征在样本中出现的次数。
  • weight_f :与特征 f 相关的权重值,通常由模型学习得到,表示特征的重要性或影响力。

通过这种方式,模型使用每个特征的计数和权重来生成一个最终的得分,用于分类或回归任务中的预测。

通常在这种模型中,也会加入一个偏置权重(bias weight),用于在预测中对某个标签进行偏向,或者作为常数项来调整模型的输出。

这种方法也适用于 线性模型,例如逻辑回归和线性回归等。

相关推荐
机器之心7 分钟前
AI也要007?Letta、伯克利提出「睡眠时间计算」,推理效率翻倍还不加钱
人工智能
机器之心10 分钟前
WSDM 25唯一最佳论文:从谱视角揭开推荐系统流行度偏差放大之谜
人工智能
新智元19 分钟前
国产 Vidu Q1 出道即顶流,登顶 VBench!吉卜力、广告大片、科幻特效全包了
人工智能·openai
人机与认知实验室44 分钟前
宽度学习与深度学习
人工智能·深度学习·学习
新智元1 小时前
AI 永生时代来临!DeepMind「生成幽灵」让逝者赛博重生
人工智能·openai
HyperAI超神经1 小时前
【vLLM 学习】Aqlm 示例
java·开发语言·数据库·人工智能·学习·教程·vllm
cnbestec1 小时前
欣佰特携数十款机器人相关前沿产品,亮相第二届人形机器人和具身智能行业盛会
人工智能·机器人
爱的叹息1 小时前
关于 梯度下降算法、线性回归模型、梯度下降训练线性回归、线性回归的其他训练算法 以及 回归模型分类 的详细说明
人工智能·算法·回归·线性回归
EasyGBS1 小时前
室外摄像头异常自检指南+视频监控系统EasyCVR视频质量诊断黑科技
大数据·人工智能·音视频