标签:模型 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项目
标签:模型 python print 了解 tun ems isp 直接 splay
原文地址:https://www.cnblogs.com/timelapse/p/13590995.html