文本分类(代码片段)

yefan19 yefan19     2023-03-18     692

关键词:

背景

       文本分类属于文本挖掘。文本挖掘从已知文本提取未知的知识,即从非结构的文本中提取知识。文本挖掘主要领域:搜索和信息检索;文本聚类;文本分类;Web挖掘;信息抽取;自然语言处理;概念提取。[1]

  1. 搜索和信息检索:存储和文本文档的检索,包括搜索引擎和关键字搜索。
  2. 文本聚类:使用聚类方法,对词汇,片段,段落或者文件进行分组和归类。
  3. 文本分类:对片段,段落或文件进行分组和归类,在使用数据挖掘分类方法的基础上,经过训练地标记示例模型。
  4. Web挖掘:在互联网上进行数据和文本的挖掘,并特别关注网络的规模和相互联系。
  5. 信息抽取:从非结构化文本中识别与提取有关的事实和关系;从非结构化或半结构化文本中抽取出结构化数据的过程。
  6. 自然语言处理:将言语作为一种有意义,有规则的系统符号,在底层解析和理解语言的任务。

  文本分类方法:

  一、基于模式系统。也称为专家系统,将知识以规则表达式的形式进行分类‘;

   二、基于机器学习,即广义的归纳过程,采用一组与分类的例子,通过训练简历分类,是一种自动分类的技术。

中文短文本多类分类(multi-label-class)[2]

单标签多分类概述

一、单标签二分类算法

  单标签的 label 标签取值只有两种,并且算法中只有一个需要预测的标签的label 标签,即分类算法构建一个分类线将数据划分为两个类别。

  常用算法:Logistic、SVM、KNN、决策树等。

二、单标签多分类算法

  单标签多分类:待预测的 label 只有一个,但是label 标签的取值有多个,例如,

  假设有类["酸", "甜", "苦", "辣", "香"], "这个水果点酸"(label="酸"),"这个菜看起来很香"(label="香");

  常见算法:Softmax、SVM、KNN、决策树(集成学习 ----RF(Bagging)、Boosting(Adaboost、GBDT);XGBoost)

多分类问题转换为二分类算法的延伸,即将多分类任务拆分为若 干个二分类任务求解,
具体的策略如下:

  •  One-Versus-One(ovo):一对一
  •  One-Versus-All / One-Versus-the-Rest(ova/ovr): 一对多
  •  Error Correcting Output codes(纠错码机制):多对多

1、OVO(一对一)

  原理:将K个类别中的两两类别数据进行组合,然后使用组合后的 数据训练出来一个模型,从而产生K(K-1)/2个分类器,将这些分类器的结果进行融合,并将分类器的预测结果使用多数投票的方式 输出最终的预测结果值。

技术图片

 

 2、OVR (一对多)

1、ovr与softmax的区别:
  softmax 每一次训练模型用的是整个训练数据中的某一类别的数据,从而的该类别的权重系数,通过测试集计算各个类型权
重的预测值,取最大的预测值(或者概率)的类型作为预测类型。
  ovr 每一次是代入所有的训练集数据来训练子模型,取出结果为正例的类别(多个正例取最大值)。

FastText 文本分类算法[3]

 

fasttext的命令包括: 
supervised: 训练一个监督分类器 
quantize:量化模型以减少内存使用量 
test:评估一个监督分类器 
predict:预测最有可能的标签  
predict-prob:用概率预测最可能的标签 
skipgram:训练一个 skipgram 模型 
cbow:训练一个 cbow 模型 
print-word-vectors:给定一个训练好的模型,打印出所有的单词向量 
print-sentence-vectors:给定一个训练好的模型,打印出所有的句子向量
nn:查询最近邻居 
analogies:查找所有同类词

 

 

fasttext文本分类模型

1、训练文本分类器,使用 fasttext.train_supervised 函数,如下所示:

import fasttext  model = fasttext.train_supervised(‘data.train.txt‘)

其中,data.train.txt 是一个文本文件,每行包含一个训练语句以及标签。默认情况下,我们假定标签是带有字符串 __label__ 前缀的词

 

训练好模型后,可以检索单词和标签的列表:

print(model.words) print(model.labels)

 

为评估模型的精度和召回率,使用 test 函数:

def print_results(N, p, r):     print("N " + str(N))     print("P@ :.3f".format(1, p))     print("R@ :.3f".format(1, r))  print_results(*model.test(‘test.txt‘))

 

也可为特定文本预测标签:

model.predict("Which baking dish is best to bake a banana bread ?")

一般地, predict 函数值返回一个标签:即概率最高的标签。也可通过指定参数 k 返回多个标签,例如:

model.predict("Which baking dish is best to bake a banana bread ?", k=3)

也可预测多个数据,可以传递一个列表,如:

model.predict(["Which baking dish is best to bake a banana bread ?", "Why not put knives in the dishwasher?"], k=3)

 

 

参考

[1] https://www.cnblogs.com/xiaochi/p/10957729.html

[2] https://blog.csdn.net/qq_16555103/article/details/89104413

[3] https://pypi.org/project/fasttext

 

pytorchtextcnn实现中文文本分类(附完整训练代码)(代码片段)

PytorchTextCNN实现中文文本分类(附完整训练代码)目录PytorchTextCNN实现中文文本分类(附完整训练代码)一、项目介绍二、中文文本数据集(1)THUCNews文本数据集(2) 今日头条文本数据集 (3)自定... 查看详情

pytorchtextcnn实现中文文本分类(附完整训练代码)(代码片段)

PytorchTextCNN实现中文文本分类(附完整训练代码)目录PytorchTextCNN实现中文文本分类(附完整训练代码)一、项目介绍二、中文文本数据集(1)THUCNews文本数据集(2) 今日头条文本数据集 (3)自定义文本数据... 查看详情

python使用sklearn进行文本分类(代码片段)

查看详情

机器学习之新闻文本分类。(代码片段)

新闻文本分类首先需要通过大量的训练之后获得一个存放关键字的表,之后再输入一个新闻内容,通过代码就可以自动判断出这个新闻的类别,我这里是在已经有了新闻文本的关键词表后的处理,#encoding=utf-8#遍历文件,用Prosesso... 查看详情

中文文本分类1(代码片段)

文本挖掘(TextMining)是从非结构化文本信息中获取用户感兴趣或者有用的模式的过程。文本挖掘是指从大量文本数据中抽取事先未知的、可理解的、最终可用的知识的过程,同时运用这些知识更好地组织信息以便将来参考。文... 查看详情

文本分类(代码片段)

背景    文本分类属于文本挖掘。文本挖掘从已知文本提取未知的知识,即从非结构的文本中提取知识。文本挖掘主要领域:搜索和信息检索;文本聚类;文本分类;Web挖掘;信息抽取;自然语言处理;概念提取。... 查看详情

文本分类(代码片段)

文本情感分类文本分类是自然语言处理的一个常见任务,它把一段不定长的文本序列变换为文本的类别。本节关注它的一个子问题:使用文本情感分类来分析文本作者的情绪。这个问题也叫情感分析,并有着广泛的应用。同搜索... 查看详情

nlp文本情感分类(代码片段)

文本情感分类1.案例介绍2.思路分析3.准备数据集3.1基础Dataset的准备3.2文本序列化4.构建模型5.模型的训练和评估1.案例介绍为了对前面的wordembedding这种常用的文本向量化的方法进行巩固,这里我们会完成一个文本情感分类的... 查看详情

文本分类炼丹实录(上篇)(代码片段)

文本分类炼丹实录(上篇)在自然语言处理领域,文本分类是常见且基础的任务,并且很多任务如关系抽取等都有文本分类的影子。其中,本文旨在通过文本分类的例子,详述NLP任务常见流程,常见模... 查看详情

fasttext实现文本分类(代码片段)

fastText实现文本分类1.fastText的介绍2.安装和基本使用2.1安装步骤:2.2基本使用3.意图识别实现3.1数据准备3.1.1准备特征文本3.1.2准备闲聊文本3.1.3把文本转化为需要的格式3.1.4思考3.2模型的训练3.3模型的封装3.4模型测试1.fastText的... 查看详情

第二天学习进度--文本情感分类(代码片段)

昨天学习了简单的文本处理,之后在课后的练习中实现了包括了对tf-idf的处理和基于朴素贝叶斯简单的文本分类基于tf-idf的数据集在出现多个关键词的时候一般能够相对准确对文本进行分类,但是对于相对具有深层含义的内容,... 查看详情

基于torchtext的pytorch文本分类(代码片段)

作者|DR.VAIBHAVKUMAR编译|VK来源|AnalyticsInDiamag文本分类是自然语言处理的重要应用之一。在机器学习中有多种方法可以对文本进行分类。但是这些分类技术大多需要大量的预处理和大量的计算资源。在这篇文章中,我们使用PyTorch来... 查看详情

课后作业——新闻文本分类(代码片段)

引言:  本次任务是做一个新闻文本分类的算法,算法选择朴素贝叶斯实现。可以实现对新闻内容的一个具体分类。  环境:jupternookbook,py3.81.导入数据df_new=pd.read_excel(\'./data/123.xlsx\').astype(str)df_news=pd.DataFrame(df_new)df_news.head()... 查看详情

深度学习前沿应用文本分类fine-tunning(代码片段)

【深度学习前沿应用】文本分类Fine-Tunning@TOC前言应用BERT模型做短文本情绪分类#导入相关的模块importpaddleimportpaddlenlpasppnlpfrompaddlenlp.dataimportStack,Pad,Tupleimportpaddle.nn.functionalasFimportnumpyasnpfromfunctoolsimportpartial# 查看详情

深度学习实战案例:新闻文本分类(代码片段)

深度学习多分类案例:新闻文本分类公众号:机器学习杂货店作者:Peter编辑:Peter大家好,我是Peter~这里是机器学习杂货店MachineLearningGrocery~之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别... 查看详情

深度学习实战案例:新闻文本分类(代码片段)

深度学习多分类案例:新闻文本分类公众号:机器学习杂货店作者:Peter编辑:Peter大家好,我是Peter~这里是机器学习杂货店MachineLearningGrocery~之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别... 查看详情

简单的cnn文本分类(代码片段)

假设我们一句话有十个词,每个词语都可以用128维来表示,那么一句话就是一个10*128的矩阵图片。建立一个如下图的卷积神经网络:上面对这个图片进行卷积核大小分别为2、3、4的卷积计算形成feature_map最后通过softmax进行分类代... 查看详情

bert-多标签文本分类实战之三——多标签文本分类的方向与常用数据集介绍(代码片段)

·请参考本系列目录:【BERT-多标签文本分类实战】之一——实战项目总览·下载本实战项目资源:>=点击此处=<【注】本篇将首先介绍多标签文本分类中几个小方向,然后介绍这几个小方向对应的常用数据集... 查看详情