中文NLP一般流程

server/2024/11/17 7:25:09/

一.获取语料(数据信息)

语料:一种语言学研究的内容。语料是构成语料库的最基本单元。所以,人们简单地用文本进行表示, 并把文本中的上下文关系作为现实世界中语言的上下文关系的替代品。通常将一个文本集合称为语料库(Corpus),当有几个这样的文本集合的时候,我们称之为语料库集合(Corpora)。
来源:

已有语料:积累的文档
下载语料:网络搜索公开获取的语料
抓取语料:使用爬虫等技术获取需要的语料

语料即为所谓的数据,往期的介绍中有详细描述语料信息的。目前在互联网高速发展的时代,语料包括很多信息,尤其是多模态信息-视频、语音、文本、图片等,都可以被认为是一种语料信息。
但本次主要介绍关于中文自然语言处理的一些基础流程,想要详细了解多模态的,建议关注一些微信公众号。

二.语料预处理

1.语料清洗

利用python等编程语言对语料库进行预处理,留下有用的信息,删除噪音数据。
常见的数据清洗方式:人工去重、对齐、删除、标注等,或者规则提取内容、正则表达式匹配、根据词性标注、命名实体提取、编写脚本或者代码批处理等。

2.分词

将文本分成词语,以便后续将其转换为机器可以理解的表达形式。例如将其使用热编码进行表示或词嵌入进行表示。
常见的分词算法如下:

基于字符串匹配的分词方法
基于理解的分词方法
基于统计的分词方法
基于规则的分词方法。

3.词性标注
给词语打词类标签,如形容词、动词、名词等
在情感分析、知识推理等任务中是必须的
常见的词性标注方法:基于规则的方法和基于统计的方法
基于统计的方法

基于最大熵的词性标注
基于统计最大概率输出词性
基于HMM的词性标注

4.去停用词
去掉对文本特征没有任何贡献作用的字词,比如标点符号、语气、人称等

三.特征工程

把分词转换为机器能够计算的类型,一般为向量
常见的表示模型

词袋模型 TF-IDF
词向量:One-hotWord2VecGlove

四.特征选择

机器学习训练语料数据时,需要进行特征的选择,以达到更好的效果。
特征选择可以帮助我们减少特征数量,从而降低模型的复杂度,避免过拟合的风险。同时,选择与目标变量相关性较高的特征可以提高模型的预测准确性。
特征选择可以减少特征数量,从而减少计算成本。在处理大规模数据集时,减少特征数量可以大大降低计算时间和资源消耗。
过多的特征会使得模型更加复杂,从而增加过拟合的风险。通过特征选择,可以减少特征数量,降低模型的复杂度,从而避免过拟合的风险。
选择与目标变量相关性较高的特征可以提高数据的可解释性。通过特征选择,可以找到与目标变量相关性较高的特征,从而更好地理解数据之间的关系。
特征选择是特征工程的重要组成部分。通过特征选择,可以找到与目标变量相关性较高的特征,然后对这些特征进行加工和变换,从而构建更加准确和有效的特征集。
特征选择的方法有很多种,选择合适的方法需要考虑数据的特点和分析的目的。常用的特征选择方法包括:
在这里插入图片描述特征选择的方法总结如上所示。
该图片来自:https://blog.csdn.net/weixin_38037405/article/details/123062904

五.模型训练

机器学习模型:KNN、SVM、Naive Bayes、决策树、GBDT、K-Means、逻辑回归、线性回归、Adaboost、随机森林、Markov Chains等
深度学习模型:CNN、ResNet、RNN、LSTM、GRU、Transformers、BERT、GPT系列、GNN、GAT、Fasttext、TextCNN、LLaMa系列、ChatGLM系列等。
强化学习模型:
注意过拟合和欠拟合的问题:
过拟合:在训练集上表现很好,但是在测试集上表现很差。
解决方法:

增大数据的训练量
增加正则化项,如L1正则和L2正则
特征选择不合理,人工筛选特征和使用特征选择算法,采用dropout方法等

欠拟合:
模型不能很好的拟合数据
常见的解决方法:

添加其它特征增加模型的复杂度,比如神经网络中加入更多的层。线性模型通过添加多项式使模型泛化能力更强。减少正则化参数,目的在于防止过拟合,但是模型出现了欠拟合,需要减少正则化参数。

注意梯度消失和梯度爆炸的问题

六.评估指标

可以使用正确率、错误率、精准率、召回率、F1、ROC曲线、AUC曲线、BLEU、METEOR、ROUGE等评估指标进行衡量。

七.模型上线应用

第一就是线下训练模型,然后将模型做线上部署。
第二就是在线训练,在线训练完成后把模型pickle持久化


http://www.ppmy.cn/server/32468.html

相关文章

初学python记录:力扣1235. 规划兼职工作

题目: 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。 给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime …

c#使用Elastic.Clients.Elasticsearch 库进行ElasticSearch的增删改查操作,根据变量动态构建查询条件。

实体类Shop结构: public class Shop {public string UUID { set; get; }public string ItemType { set; get; }public long ItemId { set; get; }public string ItemName { set; get; }public long Gold { set; get; }public long Number { set; get; }public string Data { s…

14_Scala面向对象编程_属性

属性 1.类中属性声明 // 1.给Scala声明属性;var name :String "zhangsan"val age :Int 302.系统默认赋值 scala由于初始化变量必须赋值,为了解决此问题可以采用下划线赋值,表示系统默认赋值 , –但是此方法局限于变量&…

js方法返回类型

在JavaScript中,方法可以是以下几种形式: 1. **函数声明**:传统的函数声明方式。 javascript function greet() { console.log(Hello, World!); } 2. **函数表达式**:使用变量赋值的方式定义函数。 javascript const greet…

基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

从零开始学AI绘画,万字Stable Diffusion终极教程(一)

【第1期】SD入门 2022年8月,一款叫Stable Diffusion的AI绘画软件开源发布,从此开启了AIGC在图像上的爆火发展时期 率先学会SD的人,已经挖掘出了越来越多AI绘画有趣的玩法 从开始的AI美女、线稿上色、真人漫改、头像壁纸 到后来的AI创意字、AI…

在Django中实现多用户角色和权限管理的方法

在Django中实现多用户角色和权限管理可以通过以下步骤实现: 定义用户角色模型:首先,定义一个用户角色模型,该模型表示不同的用户角色,例如管理员、普通用户、编辑等。 from django.db import modelsclass Role(model…

Cocos Creator 3D物理引擎的物理参数控制详解

前言 Cocos Creator是一款基于JavaScript和TypeScript的开源游戏引擎,它提供了强大的3D物理引擎,可以帮助开发者实现各种物理效果。在Cocos Creator中,我们可以通过控制物理参数来实现不同的物理效果,比如重力、碰撞检测、摩擦力…