自然语言处理任务之文本分类入门详解(未完待续)

本文主要是介绍自然语言处理任务之文本分类入门详解(未完待续),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

  • 0. 文本分类简介
  • 1. 数据集介绍
  • 2. 模型选择
  • 3. 数据预处理
    • 3.1. n-gram特征构造

参考链接: https://developers.google.com/machine-learning/guides/text-classification

0. 文本分类简介

文本分类在很多软件产品中都占据重要位置,很多智能应用都用到了文本分类模型。有的是将文本分类的结果作为输入以便进行后续其他任务,例如对话系统中的意图识别;有的是直接将文本分类结果最为任务的输出,例如垃圾邮件过滤、评论情感分类等等。无论何种场景,文本分类的准确程度都是一个很关键的指标。

1. 数据集介绍

Internet Movie Database (IMDb) movie reviews dataset
该数据集搜集了人们的影评数据,包含正面和负面两类,是情感分类的常用数据集。
数据集的主要信息如下:

  • 样本数量(训练集25000条,测试集25000条)
  • 类别数量(2)
  • 每一类的样本数量(12500)
  • 每条样本的单词个数(中位数174)
  • 每个单词在数据集中的频率
  • 每条样本的长度的分布

2. 模型选择

模型选择包含一下几方面的考虑:

  1. 选择何种文本表示方法?(将文本数值化的方法)
  2. 选择何种分类模型?
  3. 模型参数如何确定?

根据google的实验,我们可以参考他们总结出的以下几条经验:

  1. 计算(样本个数)/(每个样本内的单词数),简记为S/W,其中分母一般取所有样本里面的单词书的中位数。
  2. 如果上述比例小于1500,则采用bag-of-words(词袋)特征(n-grams+tf-idf),然后利用传统的分类模型(SVM,MLP,LR等)即可,具体见后文
  3. 如果上述比例大于1500,则采用神经网络(CNN,RNN),将文本序列作为输入特征,它们可以学习到词与词之间的前后关系。

本文涉及的数据集,S/W=144,因此我们可以采用n-gram+MLP作为数据预处理和分类模型的选择方案。

3. 数据预处理

  1. 随机打乱数据。主要是为了划分训练集和测试集的时候,能够保证训练集和测试集中各类别的样本分布比较均匀。当然,更严谨的一种做法是对label分层抽样。
  2. 将数据划分为80%的训练集和20%的验证集。有时还要再划分出一个测试集。
  3. Tokenization:把训练样本切分为一些更小的文本,它们是组成词袋(或者叫词表、词库)的元素,称之为“词”。这样能够泛化样本和label之间的关系,也即更利于模型去学习到样本与label之间的对应关系。
  4. Vectorization:对词的数值化表示

3.1. n-gram特征构造

这篇关于自然语言处理任务之文本分类入门详解(未完待续)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868648

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

十四、观察者模式与访问者模式详解

21.观察者模式 21.1.课程目标 1、 掌握观察者模式和访问者模式的应用场景。 2、 掌握观察者模式在具体业务场景中的应用。 3、 了解访问者模式的双分派。 4、 观察者模式和访问者模式的优、缺点。 21.2.内容定位 1、 有 Swing开发经验的人群更容易理解观察者模式。 2、 访问者模式被称为最复杂的设计模式。 21.3.观察者模式 观 察 者 模 式 ( Obser

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

Jitter Injection详解

一、定义与作用 Jitter Injection,即抖动注入,是一种在通信系统中人为地添加抖动的技术。该技术通过在发送端对数据包进行延迟和抖动调整,以实现对整个通信系统的时延和抖动的控制。其主要作用包括: 改善传输质量:通过调整数据包的时延和抖动,可以有效地降低误码率,提高数据传输的可靠性。均衡网络负载:通过对不同的数据流进行不同程度的抖动注入,可以实现网络资源的合理分配,提高整体传输效率。增

雨量传感器的分类和选型建议

物理原理分类 机械降雨量计(雨量桶):最早使用的降雨量传感器,通过漏斗收集雨水并记录。主要用于长期降雨统计,故障率较低。电容式降雨量传感器:基于两个电极之间的电容变化来计算降雨量。当降雨时,水滴堵住电极空间,改变电容值,从而计算降雨量。超声波式降雨量传感器:利用超声波的反射来计算降雨量。适用于大降雨量的场合。激光雷达式降雨量传感器:利用激光技术测量雨滴的速度、大小和形状等参数,并计算降雨量。主

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、