文本分类

Python文本数据分析——新闻分类任务

谁说我不能喝 提交于 2020-02-03 05:48:45
逆文档频率(Inverse Document Frequency缩写为IDF) 如果某个词比较少,但是它在这篇文章中多次出现,那么它可能就反映了这篇文章的特性正是我们需要的关键词 词频(TF)=某个词在文章中的出现次数 / 该文出现次数最多的词出现的次数 逆文档频率(IDF)=log(语料库的文档总数 / 包含该词的文档数+1) TF-IDF:关键词提取 TF-IDF=词频(TF)X 逆文档频率(IDF) 数据源: http://www.sogou.com/labs/resource/ca.php import pandas as pd import jieba df_news=pd.read_table('data/val.txt',names=['category','theme','URL','content'],encoding='utf-8') df_news=df_news.dropna() print(df_news.head()) 分词:使用结巴分词器 content=df_news.content.values.tolist() print(content[1000]) content_S=[] for line in content: current_segment=jieba.lcut(line) if len(current_segment)>1 and

【NLP】文本分类综合(rnn,cnn,word2vec,TfidfVectorizer)

淺唱寂寞╮ 提交于 2020-01-31 11:25:03
目录 0.中文评论情感分析(keras+rnn) 0.1 需要的库 0.2 预训练词向量 0.3 词向量模型 0.4 训练语料 (数据集) 0.5 分词和tokenize 0.6 索引长度标准化 0.7 反向tokenize 0.8 构建embedding matrix 0.9 padding(填充)和truncating(修剪) 0.10 用keras搭建LSTM模型 0.11 结论 0.12 错误分类 1.新浪新闻分类(tensorflow+cnn) 2.搜狐新闻文本分类(word2vec) 2.1 数据的准备 2.2 word2vec模型 2.3 特征工程: 2.4 模型训练,模型评估 2.4.1 标签编码: 2.4.2 逻辑回归模型 2.4.3 保存模型 2.4.4 交叉验证 2.4.5 模型测试 2.5 总结 3.搜狐新闻文本分类(TfidfVectorizer) 0.中文评论情感分析(keras+rnn) 0.1 需要的库 # 首先加载必用的库,jieba和gensim专门中文 # %matplotlib inline功能是可以内嵌绘图,并且可以省略掉plt.show()这一步 % matplotlib inline import numpy as np import matplotlib . pyplot as plt import re #正则化用 import

lucent,solr,ES比较

随声附和 提交于 2020-01-31 07:57:02
| 0 什么是全文搜索 什么是全文搜索引擎? 百度百科中的定义 : 全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。 从定义中我们已经可以大致了解全文检索的思路了,为了更详细的说明,我们先从生活中的数据说起。 我们生活中的数据总体分为两种: 结构化数据 和 非结构化数据 。 结构化数据 : 指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据 : 非结构化数据又可称为全文数据,指不定长或无固定格式的数据,如邮件,word文档等。 当然有的地方还会有第三种: 半结构化数据 ,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。 根据两种数据分类,搜索也相应的分为两种:结构化数据搜索和非结构化数据搜索。 对于结构化数据,我们一般都是可以通过关系型数据库(mysql,oracle等)的 table 的方式存储和搜索,也可以建立索引。 对于非结构化数据,也即对全文数据的搜索主要有两种方法: 顺序扫描法 , 全文检索 。 顺序扫描 :通过文字名称也可了解到它的大概搜索方式

文本分类(三) | (5) 训练、验证以及测试

回眸只為那壹抹淺笑 提交于 2020-01-30 01:07:41
完整项目 ​​​​​​​ 最后,介绍一下模型的训练、验证以及测试流程。 目录 1. 训练 2. 验证 3. 测试 1. 训练 def train(config, model, train_iter, dev_iter, test_iter): start_time = time.time() model.train()#训练模式 param_optimizer = list(model.named_parameters()) #下列参数 不进行正则化(权重衰减) no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight'] optimizer_grouped_parameters = [ {'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)], 'weight_decay': 0.01}, {'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)], 'weight_decay': 0.0}] # optimizer = torch.optim.Adam(model.parameters(), lr=config

文本分类(三) | (3) 数据预处理

淺唱寂寞╮ 提交于 2020-01-30 00:25:14
完整项目 ​​​​​​​ 本篇博客主要介绍一下数据预处理,包括构建数据集和迭代器。由于预训练语言模型有相应的词表文件,所以不需要手动构建词典,不过在预处理阶段,需要指明输入序列的填充部分和非填充部分。 目录 1. 构建数据集 2. 构建迭代器 1. 构建数据集 PAD, CLS = '[PAD]', '[CLS]' # padding符号, bert中综合信息符号 def build_dataset(config): def load_dataset(path, pad_size=32): contents = [] with open(path, 'r', encoding='UTF-8') as f: for line in tqdm(f):#遍历每一行 lin = line.strip()#去掉首尾空白符 if not lin:#遇到空行 跳过 continue content, label = lin.split('\t')#text label;每一行以\t为切分,拿到文本 token = config.tokenizer.tokenize(content) #分字(汉语 character-level) bert内置的tokenizer token = [CLS] + token #头部加入 [CLS] token seq_len = len(token)

python中文文本分类

怎甘沉沦 提交于 2020-01-29 05:37:22
,中文文本分类流程: 预处理 中文分词 结构化表示-构建词向量空间 权重策略—TF-IDF 分类器 评价. 二,具体实现 预处理 1.1 打标签: 对评论数据打好标签,这里将汽车评论数据分为正面和负面两类。假设负面标签为0,正面标签为1. 1.2 整理数据集: 一般可分为训练集,验证集和测试集。为什么要这么分,这篇博文给了浅显的解释:训练集、验证集和测试集的意义本试验将数据分为训练集和测试集两类。 1.3 得到训练集预料库: 例如,训练集文本的路径:train_data/train_positive.xlsx , train_data/train_negtive.xlsx… 1.4 得到测试集语料库: 例如,测试集文本的路径:test_data/test_negtive.xlsx , test_data/test_positive.xlsx… 2 中文分词 2.1 概述 第1节预处理中的语料库都是没有分词的原始语料(即连续的句子,而后面的工作需要把文本分为一个个单词),现在需要对这些文本进行分词,只有这样,才能在基于单词的基础上,对文档进行结构化表示。 中文分词有其特有的难点(相对于英文而言),最终完全解决中文分词的算法是基于概率图模型的条件随机场(CRF),CRF的原理我们不细说了,直接调用中文分词的工具,这里用的是python第三方分词库jieba(所采用的算法就是条件随机场)

文本分类(二) | (1) 项目介绍

a 夏天 提交于 2020-01-28 12:36:10
文本分类(二)专栏主要是对Github优秀文本分类项目的解析,该文本分类项目,主要基于深度学习模型,包括TextCNN、TextRNN、FastText、TextRCNN、BiLSTM_Attention、DPCNN、Transformer,使用PyTorch实现。 目录 1. 项目特点 2. 数据集 3. 项目组织结构 4. 使用方式 1. 项目特点 相比于文本分类(一),它主要有以下几个不同: 1)提供了一种不同的数据预处理方式。文本分类(一)中我们使用的是THUCNews完整数据集,每条数据都是完整的新闻,属于篇章分类;文本分类(二),我们使用的是THUCNews的一个子集,每条数据都是从新闻中抽取的标题,属于标题(短文本)分类。之前我们是提前把数据预处理好,存储为数组或tensor的格式,训练时再从文件中加载,适合数据量比较大的情况;现在我们预处理和训练同时进行,将数据预处理完接着进行训练,不需要存储为中间文件,适合数据量比较小的情况。 2)数据生成器:当数据比较大时,没办法一次性把数据全部加载到内存或显存中,此时我们可以使用数据生成器。训练时,不是把全部数据都加载到内存或显存中,而是用到哪一部分数据(某个batch),就用数据生成器生成该部分数据,只把这部分数据加载到内存或显存中,避免溢出。在文本分类(一)中,我们把预处理好的数据想封装为Dataset对象

POI读写Word docx文件

五迷三道 提交于 2020-01-28 11:23:00
使用 POI 读写 word docx 文件 目录 1 读docx文件 1.1 通过XWPFWordExtractor读 1.2 通过XWPFDocument读 2 写docx文件 2.1 直接通过XWPFDocument生成 2.2 以docx文件作为模板 POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocument。一个XWPFDocument代表一个docx文档,其可以用来读docx文档,也可以用来写docx文档。XWPFDocument中主要包含下面这几种对象: l XWPFParagraph:代表一个段落。 l XWPFRun:代表具有相同属性的一段文本。 l XWPFTable:代表一个表格。 l XWPFTableRow:表格的一行。 l XWPFTableCell:表格对应的一个单元格。 1 读docx文件 跟读doc文件一样,POI在读docx文件的时候也有两种方式,通过XWPFWordExtractor和通过XWPFDocument。在XWPFWordExtractor读取信息时其内部还是通过XWPFDocument来获取的。 1.1 通过XWPFWordExtractor读 在使用XWPFWordExtractor读取docx文档的内容时,我们只能获取到其文本,而不能获取到其文本对应的属性值

hugging face transformer文本分类运行

谁说我不能喝 提交于 2020-01-28 11:18:04
hugging face 团队的transformer又更新了,现在里面有distilroberta和distilbert和albert模型,这三个模型值得我们对比其他模型的差异。那么如何运行呢? 首先进入GitHub,搜索transformer https://github.com/huggingface/transformers 进入这个repo git clone 或者下载下来 接着用pycharm或其他编辑器打开这个repo https://github.com/huggingface/transformers/tree/master/examples 选择examples里的run_gule.py 找到最下面的__main__,把所有代码剪切出来单独封装一个函数为main(),参数有两个model和dataset。 dataset是数据集的名字也是数据所在文件夹名称,model是model type。在这里,最重要的是命令行的argument,由于我们不想用命令行输入参数,这里可以在parser.add_argument中加入参数default,并设置required为False,这样就有了一个默认值。 接着我们设置data dir和训练batch大小和epoch次数。 def main(model,task): parser = argparse

文本挖掘的分词原理

与世无争的帅哥 提交于 2020-01-27 20:40:07
    在 文本挖掘的分词原理 中,我们讲到了文本挖掘的预处理的关键一步:“分词”,而在做了分词后,如果我们是做文本分类聚类,则后面关键的特征预处理步骤有向量化或向量化的特例Hash Trick,本文我们就对向量化和特例Hash Trick预处理方法做一个总结。 1. 词袋模型     在讲向量化与Hash Trick之前,我们先说说词袋模型(Bag of Words,简称BoW)。词袋模型假设我们不考虑文本中词与词之间的上下文关系,仅仅只考虑所有词的权重。而权重与词在文本中出现的频率有关。     词袋模型首先会进行分词,在分词之后,通过统计每个词在文本中出现的次数,我们就可以得到该文本基于词的特征,如果将各个文本样本的这些词与对应的词频放在一起,就是我们常说的向量化。向量化完毕后一般也会使用TF-IDF进行特征的权重修正,再将特征进行标准化。 再进行一些其他的特征工程后,就可以将数据带入机器学习算法进行分类聚类了。     总结下词袋模型的三部曲:分词(tokenizing),统计修订词特征值(counting)与标准化(normalizing)。     与词袋模型非常类似的一个模型是词集模型(Set of Words,简称SoW),和词袋模型唯一的不同是它仅仅考虑词是否在文本中出现,而不考虑词频。也就是一个词在文本在文本中出现1次和多次特征处理是一样的。在大多数时候