Pytext实战-构建一个文本分类器有多快

简介: Pytext实战-构建一个文本分类器有多快

1 数据集准备


1.png

数据集


数据集包括两个文件:train.tsvtest.tsv,内容是从网上搜集的情感文本数据,简单地经过分词后用空格拼接起来。训练集和测试集各有10000条数据


2 构建文本分类器


Pytext框架包括了Task, Trainer, Model, DataHandler, Exporter 组件,分别对应了任务切换、模型训练、模型结构、数据处理、模型导出的作用,它们都继承自名Component的类


2.png

(图片来自: https://pytext-pytext.readthedocs-hosted.com/en/latest/overview.html

Component可以读取JSON类型的配置文件,配置文件可以设置训练过程中使用的输入和学习率等参数。按照官方文本分类教程,我们几乎可以不需要实现模型,输入,输出等代码,只需要准备好数据集即可。


docnn.json的内容如下:


{
  "task": {
    "DocClassificationTask": {
      "data_handler": {
        "train_path": "train.tsv",
        "eval_path": "test.tsv",
        "test_path": "test.tsv"
      }
    }
  }
}


  • 步骤1 训练模型:


pytext train < docnn.json


3.png


经过3-4分钟后,10 epoch训练完毕,在没有使用词向量以及直接使用默认设置,在测试集的预测效果如下,



4.png

image.png


  • 步骤2 导出模型


CONFIG=docnn.json 
pytext export --output-path model.c2 < "$CONFIG"


在桌面上我们可以看到导出的模型 model.c2


5.png


  • 步骤3 模型预测
    参考意图识别的例子,我写了下面的测试代码


# !/usr/bin/env python3
# -*- coding:utf-8 _*-
"""
@Author:yanqiang
@File: demo.py
@Time: 2018/12/21 19:06
@Software: PyCharm
@Description:
"""
import sys
import pytext
import jieba
config_file = sys.argv[1]
model_file = sys.argv[2]
text = sys.argv[3]
text = " ".join([word for word in jieba.cut(text)])
config = pytext.load_config(config_file)
predictor = pytext.create_predictor(config, model_file)
# Pass the inputs to PyText's prediction API
result = predictor({"raw_text": text})
# Results is a list of output blob names and their scores.
# The blob names are different for joint models vs doc models
# Since this tutorial is for both, let's check which one we should look at.
doc_label_scores_prefix = (
    'scores:' if any(r.startswith('scores:') for r in result)
    else 'doc_scores:'
)
# For now let's just output the top document label!
best_doc_label = max(
    (label for label in result if label.startswith(doc_label_scores_prefix)),
    key=lambda label: result[label][0],
    # Strip the doc label prefix here
)[len(doc_label_scores_prefix):]
print("输入句子的情感为:%s" % best_doc_label)


我们看看效果:


python main.py "$CONFIG" model.c2 "超级喜欢蒙牛这个味 道"


python main.py "$CONFIG" model.c2 "这是什么商品啊!太 差了吧?"


6.png


3 总结


我们上面过程可以看到,pytext加速了模型从训练到落地的速度,省去了很多繁琐的工程。不过,我们上面的例子模型需要有待提高,需要研究下自定义模型和词向量使用,提高分类效果。

相关文章
|
机器学习/深度学习 存储 数据可视化
【PyTorch基础教程23】可视化网络和训练过程
为了更好确定复杂网络模型中,每一层的输入结构,输出结构以及参数等信息,在Keras中可以调用一个叫做model.summary()的API能够显示我们的模型参数,输入大小,输出大小,模型的整体参数等。
1697 0
【PyTorch基础教程23】可视化网络和训练过程
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
84 8
|
3月前
|
机器学习/深度学习 自然语言处理 数据挖掘
从理论到实践:详解GraphRAG框架下的多模态内容理解与生成
【10月更文挑战第10天】随着多媒体内容的爆炸性增长,如何有效地理解和生成跨模态的数据(如图像、文本和视频)变得越来越重要。近年来,图神经网络(GNNs)因其在处理非结构化数据方面的强大能力而受到广泛关注。在此背景下,Graph Retrieval-Augmented Generation (GraphRAG) 框架作为一种新的方法,通过结合图检索和生成模型来提升多模态内容的理解与生成效果。本文将深入探讨GraphRAG的基本原理、核心组件以及实际应用,并通过代码示例展示其在多媒体内容处理中的潜力。
468 0
|
6月前
|
机器学习/深度学习 算法 Serverless
现代深度学习框架构建问题之链式法则在反向传播中的作用如何解决
现代深度学习框架构建问题之链式法则在反向传播中的作用如何解决
65 3
|
6月前
|
机器学习/深度学习 API Docker
使用Python实现深度学习模型:模型部署与生产环境应用
【7月更文挑战第7天】 使用Python实现深度学习模型:模型部署与生产环境应用
254 0
|
8月前
|
机器学习/深度学习 分布式计算 算法
大模型开发:你如何确定使用哪种机器学习算法?
在大型机器学习模型开发中,选择算法是关键。首先,明确问题类型(如回归、分类、聚类等)。其次,考虑数据规模、特征数量和类型、分布和结构,以判断适合的算法。再者,评估性能要求(准确性、速度、可解释性)和资源限制(计算资源、内存)。同时,利用领域知识和正则化来选择模型。最后,通过实验验证和模型比较进行优化。此过程涉及迭代和业务需求的技术权衡。
140 2
|
机器学习/深度学习 数据采集 算法
机器学习基础:令你事半功倍的pipeline处理机制
机器学习基础:令你事半功倍的pipeline处理机制
机器学习基础:令你事半功倍的pipeline处理机制
|
8月前
|
自然语言处理 Python
BERT模型基本理念、工作原理、配置讲解(图文解释)
BERT模型基本理念、工作原理、配置讲解(图文解释)
969 0
|
机器学习/深度学习 计算机视觉
深度学习原理篇 第四章:DEIT
简要介绍DEIT的原理和代码实现。
466 0
|
机器学习/深度学习 PyTorch 算法框架/工具
机器学习框架PyTorch详解和案列分析
PyTorch 是一个基于 Python 的机器学习框架,由 Facebook 于 2016 年发布。它提供了一组灵活且高效的工具,可用于构建和训练各种深度学习模型。PyTorch 的核心组件是张量,它是一个多维数组,可以用于存储和处理数据。PyTorch 的张量与 NumPy 的数组类似,但也提供了 GPU 加速和自动微分等功能。PyTorch 使用动态计算图,这意味着在运行时可以修改计算图,从而允许更灵活的模型构建和调试。这与 TensorFlow 等框架的静态计算图不同。PyTorch 支持自动微分,可以方便地计算张量的梯度。这为构建和训练深度学习模型提供了便利。PyTorch 提供了构
467 0