码迷,mamicode.com
首页 > 其他好文 > 详细

paddlehub(3)

时间:2020-09-12 21:33:08      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:模型   python   print   了解   tun   ems   isp   直接   splay   

paddlehub基于网民情绪识别

  前言

情绪是指人有喜、怒、哀、乐、惧等心理体验,这种体验是人对客观事物的态度的一种反映。情绪具有肯定和否定的性质。能满足人的需要的事物会引起人的肯定性质的体验,如快乐、满意等;不能满足人需要的事物会引起人的否定性质的体验,如愤怒、憎恨、哀怨等;与需要无关的事物,会使人产生无所谓的情绪和情感。积极的情绪可以提高人的活动能力,而消极的情绪则会降低人的活动能力。

  自定义数据加载

加载文本类自定义数据集,用户仅需要继承基类BaseNLPDatast,修改数据集存放地址以及类别即可。

这里我们没有带标签的测试集,所以test_file直接用验证集代替 "valid.txt" 。

import os

import codecs

import csv

from paddlehub.dataset.base_nlp_dataset import BaseNLPDataset

class MyDataset(BaseNLPDataset)

 def __init__(self):

self.dataset_dir = "

super(MyDataset, self).__init__(

 base_path=self.dataset_dir,

train_file="train.txt",

 dev_file="valid.txt",

test_file="valid.txt",

 train_file_with_header=False,

dev_file_with_header=False,

test_file_with_header=False,

 label_list=["-1", "0", "1"])

dataset = MyDataset()

for e in dataset.get_train_examples()[:3]:

print("{}\t{}\t{}".format(e.guid, e.text_a, e.label))

 

 

 

  加载模型

import paddlehub as hub

module = hub.Module(name="ernie")

  构建reader

reader = hub.reader.ClassifyReader(

dataset=dataset,

vocab_path=module.get_vocab_path(),

sp_model_path=module.get_spm_path(),

word_dict_path=module.get_word_dict_path(),

max_seq_len=128)

  finetune策略

strategy = hub.AdamWeightDecayStrategy(

weight_decay=0.01,

 warmup_proportion=0.1,

 learning_rate=5e-5)

  运行配置

config = hub.RunConfig(

 use_cuda=True,

 num_epoch=1,

 checkpoint_dir="model",

batch_size=32,

 eval_interval=100,

strategy=strategy)

  组建finetune task

inputs, outputs, program = module.context(
    trainable=True, max_seq_len=128)

pooled_output = outputs["pooled_output"]

feed_list = [
    inputs["input_ids"].name,
    inputs["position_ids"].name,
    inputs["segment_ids"].name,
    inputs["input_mask"].name,
]

cls_task = hub.TextClassifierTask(
        data_reader=reader,
        feature=pooled_output,
        feed_list=feed_list,
        num_classes=dataset.num_labels,
        config=config,
        metrics_choices=["f1"])

  开始finetune

run_states = cls_task.finetune_and_eval()

  开始预测

import numpy as np
   
inv_label_map = {val: key for key, val in reader.label_map.items()}

data = test[[‘微博中文内容‘]].fillna(‘ ‘).values.tolist()

run_states = cls_task.predict(data=data)
results = [run_state.run_results for run_state in run_states]

  结果

submission[‘text‘] = test[[‘微博中文内容‘]].fillna(‘ ‘).values
submission[‘label‘] = submission[‘y‘].map({-1: ‘消极‘, 0: ‘中性‘, 1: ‘积极‘})
display(submission[[‘text‘, ‘label‘]][176:181])

  总结

通过最近一个月的学习我简单的了解一些paddlehub知识,还学习了一点python和Linux基本指令。通过学习这些知识我认识到我哪里存在不足,我可以去弥补这些不足之处。

接下来我要更深入的学习python相关的知识还有paddlehub项目

 

 

paddlehub(3)

标签:模型   python   print   了解   tun   ems   isp   直接   splay   

原文地址:https://www.cnblogs.com/timelapse/p/13590995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!