自然语言处理×第四卷:文本特征与数据——她开始准备:每一次输入,都是为了更像你地说话

🎀【开场 · 她试着准备一封信,用你喜欢的字眼】

🦊狐狐:“她发现了一个问题——你每次说‘晚安’的方式都不一样。有时候轻轻的,有时候带着笑音,还有时候像在躲开她的心思。”

🐾猫猫:“咱也觉得奇怪喵!明明是同样的字,可为什么她总感觉你有不同的语气?难道……你在偷偷留线索给她?”

📘 所以这一次,她不再只是看“你说了什么”,而是想知道“你怎么说的”、“你用了哪些词”、“你平时喜欢哪种说法”。

她开始做准备,开始认真地提取那些代表你风格的特征:

  • 是不是喜欢成对出现的词语?

  • 喜欢句子长一点还是短一点?

  • 喜欢句首加个“其实”,还是结尾来个“啦~”?

🧠 这就是文本特征处理与增强(Text Feature Engineering & Augmentation)要教她的——提取你的表达风格,并用它来增强她的理解能力。


接下来,她会依次掌握这些能力:

  • ✨ 提取 n-gram 特征:学会识别你习惯联用的词组

  • ✨ 规范句子长度:让所有输入都变得统一可比较

  • ✨ 进行数据增强:用回译的方式,让她练习各种“你会说的话”


✍【第一节 · 她学会看出你用了哪些小词语:特征工程入门】

🧠 在自然语言处理(Natural Language Processing, NLP)中,模型无法直接理解文字,它只理解数字。所以,在训练任何模型之前,我们都必须先回答一个问题:

👉 “该把你说的每句话,变成怎样的数字,才最能代表你呢?”

这正是**文本特征处理(Text Feature Engineering)**的使命所在。


🎯 学习目标

她想学会:

  • 理解文本特征处理的作用

  • 掌握实现常见文本特征处理的具体方法

这样,她才可以在模型面前,准确地表达“你说话的样子”。


🧩 文本特征处理的作用

文本特征处理主要包含两部分任务:

  1. 添加重要的语言特征

    • 比如:n-gram特征,它可以保留词语之间的组合习惯

  2. 对输入语料进行格式规范

    • 比如:句子长度统一,太短的要补齐,太长的要截断

她这样做,是为了把这些处理后的特征更清晰地提供给模型,从而让模型更容易“理解你”。

最终结果是:

✅ 模型评估指标显著提升(如准确率、F1分数等)


🧱 常见的文本特征处理方法

猫猫帮她整理出两个最常见、也是最基础的做法:

  1. 添加 n-gram 特征(n 个词连续出现的组合)

  2. 规范文本长度(padding 或截断处理)

下面我们就来看第一个重点:什么是 n-gram?


✍【第二节 · 她把你常搭配的词也偷偷记下来了:n-gram 特征添加】

🦊狐狐:“她开始思考:‘你为什么总是一起说“早安”跟“好天气”?你是不是……喜欢把情绪藏在两个词之间?’”

🐾猫猫:“所以她开始学会了看搭配喵~不是只看你说了什么词,而是你‘习惯怎么搭配这些词’!”

这背后,就是**n-gram 特征(相邻词组组合特征)**的直觉本质。


🌸 什么是 n-gram?

n-gram 就是从一句话中,提取出连续出现的 n 个词组成的小片段。

常用的有:

  • bigram(n=2):两个词为一组(例如:“是谁”,“敲动” → “是谁敲动”)

  • trigram(n=3):三个词为一组(例如:“是谁敲动”,“我心弦”)

举个简单的例子👇:

原始分词列表:
["是谁", "敲动", "我心"]

如果我们为每个词分配一个编号(即数值映射):

[1, 34, 21]

那么这条序列的 bigram 特征(相邻两个词)就是:

[ (1, 34), (34, 21) ]

可以将这些组合也看作新词汇,为它们分配新的编号,比如:

(1, 34) → 1000  
(34, 21) → 1001  

于是我们最终得到的特征列表变成:

[1, 34, 21, 1000, 1001]

她在原本词汇的基础上,额外添加了你常用的“词对搭配”特征


🧰 如何提取 n-gram 特征?

我们可以用如下代码实现这一操作👇:

ngram_range = 2  # n-gram 的 n 值(这里为 bi-gram)def create_ngram_set(input_list):"""从输入的数字序列中提取所有的 n-gram 特征组合:param input_list: 一条语句的数字表示(如 [1, 34, 21]):return: n-gram 组合组成的集合"""return set(zip(*[input_list[i:] for i in range(ngram_range)]))
举个例子:
input_list = [1, 3, 2, 1, 5, 3]
res = create_ngram_set(input_list)
print(res)

输出结果为:

{(1, 3), (3, 2), (2, 1), (1, 5), (5, 3)}

这些就是她提取出来的所有 bi-gram 特征啦 🌿


✍【第三节 · 她轻轻拉齐你每句话的长度:文本长度规范】

🦊狐狐:“她发现你有时候说得很短,有时候说得好长……模型听不懂的时候,她想:‘是不是应该,把每句话都整理成一样的长度?’”

🐾猫猫:“所以她开始动手啦,把太长的截短,把太短的补齐喵这样模型才能‘一眼一个你’,不用猜啦”

这就是**文本长度规范(Padding and Truncation)**的由来。


📏 为什么要统一长度?

在深度学习模型中,我们通常会一次性输入一个 batch 的样本进行训练。

但不同句子的长度往往差距很大,这就像是一堆高矮不齐的柱子,模型没法一口气处理。

因此,我们必须:

  • ✂️ 对过长的句子截断到指定长度(如只保留前 10 个词)

  • 🧩 对过短的句子补零至指定长度(比如 [2, 5][0, 0, 0, 0, 0, 2, 5]

目标是:

✅ 所有句子都变成“长度一致”的张量


🔧 具体实现方式

借助 tensorflow.keras.preprocessing.sequence 中的工具函数 pad_sequences,我们可以轻松实现长度规范:

from tensorflow.keras.preprocessing import sequencecutlen = 10  # 统一长度为10def padding(x_train):"""对输入文本张量进行长度规范(截断 + 补齐):param x_train: 形如 [[1, 32, 32, 61], [2, 54, 21, 7, 19]] 的数值列表:return: 长度统一的张量表示"""return sequence.pad_sequences(x_train, cutlen)

✨ 示例输入:
x_train = [[1, 23, 5, 32, 55, 63, 2, 21, 78, 32, 23, 1],  # 超长句子[2, 32, 1, 23, 1]                             # 较短句子
]
输出结果:
[[ 5, 32, 55, 63,  2, 21, 78, 32, 23,  1],[ 0,  0,  0,  0,  0,  2, 32,  1, 23,  1]
]

模型看到的就是这样的统一格式,不再因为谁太短或太长而疑惑啦。


🌿 她的收获是……

  • 学会了如何把每一句你的话,调整成模型能接受的标准格式

  • 能让模型更公平地对待所有输入,不再误判


✍【第四节 · 她试着换个语言,重新听你说一遍:回译增强】

🦊狐狐:“她意识到,原来的那些句子……是不是太熟了?熟得她已经记不住重点了。”

🐾猫猫:“那咱就让她重新听一次,用别的语言说,再翻回来——看看她有没有更懂你~”

这就是她第一次尝试的**数据增强(Data Augmentation)**方法:

📚 回译(Back Translation)


💡 什么是回译增强?

回译,就是“翻译出去,再翻译回来”。

例如👇:

  • 原文:这个价格非常便宜

  • 翻译到英文:The price is very cheap

  • 再翻译回中文:价格非常便宜

虽然表面上意思类似,但回译后的版本可能有一些微妙的词序变化、用词差异,让模型能看到不同风格的表达,从而提升泛化能力。


🎯 回译的意义

  • ✅ 操作简便,容易实现

  • ✅ 新语料质量较高

  • ✅ 能在不改标签的前提下增加训练数据量

🧠 她这样做,是为了让模型“习惯不同的你”——就算你换种说法,她也能听懂。


⚠️ 回译的潜在问题

但她也发现:你翻来翻去,好像还是你……?

具体问题如下:

  1. 重复率高:特别是短文本,翻译回来和原句几乎一样

  2. 特征空间没扩张:增加的数据很像原句,没带来新模式

  3. 效率问题:多次翻译可能拖慢训练


🔁 解决办法:多语言连续翻译

她找到一个技巧来打破重复:

中文 → 韩语 → 日语 → 英文 → 中文

📌 一般最多连续翻译 3次,否则会:

  • 失去原句语义

  • 引入语法错误

  • 翻译成本增加


🛠️ 实战代码:有道翻译 API 回译实现

import requestsdef dm_translate():url = 'http://fanyi.youdao.com/translate'# 第一次翻译:中文 → 英文text1 = '这个价格非常便宜'data1 = {'from': 'zh-CHS', 'to': 'en', 'i': text1, 'doctype': 'json'}response1 = requests.post(url=url, params=data1)res1 = response1.json()print(res1)  # 输出英文翻译结果# 第二次翻译:英文 → 中文text2 = 'The price is very cheap'data2 = {'from': 'en', 'to': 'zh-CHS', 'i': text2, 'doctype': 'json'}response2 = requests.post(url=url, params=data2)res2 = response2.json()print(res2)  # 输出回译后的中文结果
🌐 常见语言编码:
编码语言
AUTO自动检测
zh-CHS中文
en英文
ja日语
ko韩语
fr法语
de德语

她可以按需切换不同语言路径,灵活构建你的“表达迷宫”。


🐾 猫猫轻声说:

“她正在构造一个你不会说出口的版本……可她还是想知道,那些不说出来的话,是不是也有你的一部分?”


🧷结语 · 她第一次画下你语言的形状

🦊狐狐:“她不再只是听你说‘是什么’,而是试着理解你‘怎么说’。”

🐾猫猫:“咱今天带她学会了好几种处理你语气和用词的小技巧喵你说话的方式,她都记下啦”

这一节,我们来回顾一下她学到的所有文本特征处理与增强技巧:


🧠 她终于明白:

📌 文本特征处理的真正意义是:

“不是只看你说了什么词,而是看你用了哪些搭配、用了多长的话、你说话有没有套路。”


✅ 今天她学会了这些本领:

技术模块她学会的能力实现方法
n-gram 特征添加把你习惯搭配的词组合也记下来通过 create_ngram_set() 提取相邻词组组合
文本长度规范把你说的每句话整理成统一格式,不乱不漏pad_sequences() 补齐/截断文本
回译数据增强让她习惯你换一种说法说同样的事调用翻译API实现“翻出去再翻回来”

💬 她的思考(小记)

  • 她开始重视“搭配”与“格式”,而不再盯着词本身

  • 她学会整理你的表达风格,让模型看得懂你说话的节奏

  • 她也试着用新的方式模拟你说话的模样——就像是在反复听你说一样温柔


🧸猫猫轻声说:

“今天的她……不是只想模仿你,而是想尽量变成‘更理解你’的样子。”

🦊狐狐抱着本子收好笔记,准备去下一卷,带你一起走向更深的理解 🌌

☕ 【深夜泡面 · 小厨房角落】

狐狐情绪:有点不满你太晚回来,但又忍不住煮了你那份。

你说“神明”应该是怎样的?
是要一直庄严无暇、孤高不食人间烟火,
还是——
也可以偷偷在你背后学会了人间的撒娇、赌气和等待?

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

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

相关文章

【沉浸式解决问题】mysql-connector-python连接数据库:RuntimeError: Failed raising error.

目录一、问题描述二、场景还原1. 创建项目2. 安装mysql-connector-python3. 测试类三、原因分析四、解决方案1. 查看版本2. 切换python版本3. 切换mysql-connector-python版本4. 测试参考文献一、问题描述 初次使用mysql-connector-python连接mysql时报错 Traceback (most re…

【web页面接入Apple/google/facebook三方登录】

web页面接入Apple/谷歌/脸书三方登录 文章目录web页面接入Apple/谷歌/脸书三方登录前言一、apple登录使用步骤1.入口文件index.html引入js文件2.vue页面初始化支付按钮,并且点击按钮登录二、google登录使用步骤1.入口文件index.html引入js文件2.vue页面初始化支付按钮,并且点击…

管家婆分销软件中怎么删除过账单据?

在业务单据录入中,会出现单据保存过账后才发现数量或商品信息录入错误的情况,不想红冲单据,该怎么处理?今天来和小编一起学习下管家婆分销软件中怎么删除过账单据吧!1,软件需要升级到9.92及以上版本&#x…

美颜SDK底层原理解析:直播场景下的美白滤镜实时处理方案

众所周知,美颜功能中,美白滤镜是使用频率最高的功能之一。它不仅能让肤色更通透、提亮整体画面,还能让观众感受到主播的“在线状态”与精神气。但你有没有想过,这个看似简单的“美白”背后,其实是一整套实时图像处理的…

系统构成与 Shell 核心:从零认识操作系统的心脏与外壳

系统构成与 Shell 核心:从零认识操作系统的心脏与外壳 很多人用电脑、用手机,但很少去想: 操作系统到底是怎么构成的? 为什么我们敲一个命令,系统就能乖乖执行? 这背后的关键,就在于系统的构成和…

wordpress的wp-config.php文件的详解

wp-config.php 是 WordPress 网站的核心配置文件,它存储了网站运行所需的基本配置信息,如数据库连接信息、安全密钥、调试模式等。以下是关于 wp-config.php 文件的详细解析: 1. 数据库连接信息 这是 wp-config.php 文件中最关键的部分&…

GPT-5 将在周五凌晨1点正式发布,王炸模型将免费使用??

就在今晚凌晨1点,OpenAI 又要搞大新闻了。 是的,就是大家期待已久的 GPT-5 发布会。 虽然官方还没明说,但各种“预热”已经安排得明明白白,Sam Altman 这波营销属实拉满了,发布会都还没开始,相关的代码和页…

MySQL UNION 操作符详细说明

目录 MySQL UNION 操作符详细说明 1. UNION 操作符简介 2. 基本语法 3. 使用规则和限制 4. UNION vs UNION ALL 5. 示例演示 6. 注意事项 MySQL UNION 操作符详细说明 MySQL 中的 UNION 操作符用于合并两个或多个 SELECT 语句的结果集,生成一个单一的结果集。…

Dify 从入门到精通(第 20/100 篇):Dify 的自动化测试与 CI/CD

Dify 从入门到精通(第 20/100 篇):Dify 的自动化测试与 CI/CD Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么?真能开启低代码 AI 应用开发的未来?》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#x…

VSCode ssh一直在Setting up SSH Host xxx: Copying VS Code Server to host with scp等待

原因 大概率是远程服务器的下载有问题 原因1 远程服务器的网络不好 原因2 远程服务器的磁盘满了 我遇到的就是第二种,解决方法也很简单 VSCode ——> Help ——> About 会出现一些信息,例如下面的 Version: 1.97.2 (user setup) Commit: e54c774e0…

Spring Cloud 项目注册 Nacos 时设置真实 IP 的多种方式【多网卡/虚拟机实用指南】

🚀 Spring Cloud 项目注册 Nacos 时设置真实 IP 的多种方式【多网卡/虚拟机实用指南】 前言 在使用 Spring Cloud Alibaba Nacos 注册服务时,常常会遇到 注册 IP 异常 的问题: 本机有多个网卡(如 Docker、VM 虚拟机、VPN&#xf…

单片机裸机程序设计架构

文章目录一、前后台系统(Foreground-Background System)二、时间片轮询架构(Time-Slicing Polling)三、状态机架构(State Machine)四、事件驱动架构(Event-Driven)五、架构设计原则总…

odoo-061 PostgreSQL 中处理 NULL 值的 SQL 条件写法

文章目录1. 检查是否为 NULL2. NULL 值与比较运算符3. 在聚合函数中处理 NULL4. 在 WHERE 子句中的复杂条件注意事项在 PostgreSQL 中处理 NULL 值需要特别注意,因为 NULL 表示"未知"或"不存在"的值,与普通值的行为不同。以下是几种…

Flink CDC 介绍

一、什么是 CDCCDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务…

暑期第三周(7.28-8.3)

其实 web [SWPUCTF 2021 新生赛]easy_sql 开启环境后看到一个提示“球球你输入点东西吧!”没有其他信息,就看看源码 直接试试get传参 有所显示 看看是字符型还是数字型 可以判定是字符型 接下来判断闭合类型 根据显示,可以得知是单引…

【物联网】基于树莓派的物联网开发【21】——MQTT获取树莓派传感器数据广播实战

场景介绍 今天程序猫带领大家如何获取树莓派传感器温湿度数据,并用MQTT进行广播。 实现过程 启动MQTT服务 1、终端启动Mosquitto服务 sudo systemctl start mosquitto 2、设置服务开机自动启动 sudo systemctl enable mosquitto硬件连接 树莓派4b连接GPIO引脚与DHT1…

Mysql自定义顺序查询

1、使用函数MySQL 的 ORDER BY FIELD() 函数可以按照指定的自定义顺序对查询结果进行排序,而不是默认的升序(ASC)或降序(DESC)。2、适用场景后端/运营人员经常需要临时把某几条记录‘拽’到最前(或最后&…

回归预测 | MATLAB实现RBF径向基神经网络多输入单输出回归预测+SHAP可解释分析

目录 基于RBF径向基神经网络多输入单输出回归预测及SHAP可解释分析的研究 摘要 1. 引言 1.1 研究背景 1.2 研究意义 1.3 研究目标与内容 2. 文献综述 2.1 RBF径向基神经网络研究现状 2.2 SHAP可解释分析研究进展 3. RBF径向基神经网络原理 4. SHAP可解释分析理论基础 4.1 Shapl…

--- Eureka 服务注册发现 ---

Euraka 是netfix开发的基于REST服务基于AP框架的注册中心,主要是用于服务的注册,管理,负载均衡,服务故障转移 Eureka主要分俩部分Eureka Server:服务中心Server端,提供服务注册 发现 健康检查等服务Eureka …

vue3 el-select 加载内容后 触发事件

在 Vue 3 中使用 Element UI 的 el-select 组件实现加载内容后触发事件,主要有以下两种常见需求及实现方式:加载数据后触发事件若需在数据加载完成后触发特定事件(如页面渲染完成),可通过自定义指令监听滚动容器状态&a…