根据评论,生成情感四元组
答案格式为 目标| 观点| 方面| 情感极性; ...
适用于mt0-xl的lora adapter
使用方法
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
import peft
import torch
from peft import PeftConfig, PeftModel
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, HfArgumentParser
peft_model_id = 'yuyijiong/mt0-xl-sentiment-quadruple-lora-adapter'
peft_config = PeftConfig.from_pretrained(peft_model_id)
model = AutoModelForSeq2SeqLM.from_pretrained(
peft_config.base_model_name_or_path,
load_in_8bit=True,
device_map='auto'
)
tokenizer = AutoTokenizer.from_pretrained(peft_config.base_model_name_or_path)
# Load the Lora model
model = PeftModel.from_pretrained(model, peft_model_id)
model.eval()
text='情感四元组抽取任务:方面选项:价格/包装/物流/品质/口味;口感/综合评价/客服/色泽/气味/个体分量,情感极性选项:积极/中性/消极 答案格式:对象1| 观点1| 方面1| 情感极性1; 对象2| 观点2| 方面2| 情感极性2【已经开了4袋,普遍出现米沾在包装上了,看起来放了很久的样子】'
input_ids = tokenizer(text,return_tensors="pt", padding=True)['input_ids'].cuda(0)
with torch.no_grad():
with torch.autocast('cuda'):
output = model.generate(input_ids=input_ids,min_length=3,
do_sample=False,
max_new_tokens=32,
num_beams=4,
repetition_penalty=2.5,
length_penalty=1.5,
early_stopping=True)
output_str = tokenizer.batch_decode(output, skip_special_tokens=True)
['米| 普遍出现米沾在包装上了,看起来放了很久的样子| 品质| neg']