我需要使用 Transformers python 库对用芬兰语编写的产品评论(正面/负面)进行分类。我尝试用这个模型来做: https://github.com/TurkuNLP/FinBERT
但那个只支持
fill-mask
任务,而不支持 sentiment-analysis
或 text-classification
。我能否就在哪里找到合适的型号提供一些建议?这是我的代码:
import transformers
import torch
model = transformers.BertForMaskedLM.from_pretrained("TurkuNLP/bert-base-finnish-cased-v1")
model.eval()
if torch.cuda.is_available():
model = model.cuda()
tokenizer = transformers.BertTokenizer.from_pretrained("TurkuNLP/bert-base-finnish-cased-v1")
# this doesn't work, because this model does not support sentiment analysis
classifier = transformers.pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)
print(classifier("Lorem ipsum text."))
提前致谢
我知道这是一个老问题,但如果其他人偶然发现这个问题来寻找答案。
我认为至少现在你可以使用 Transformer 的管道,而且非常简单;只需通过情绪分析任务即可。
使用变压器和火炬:
from transformers import pipeline
fin_inputs = [
"Ruoka oli aivan syömäkelvottoman suolaista, yök!",
"Hauki on kala",
"Oli aivan ihana päivä, rakas!"
]
# Load model
sentiment_pipeline = pipeline("sentiment-analysis", model="TurkuNLP/bert-base-finnish-cased-v1")
# Infer sentiments
sentiment_results = sentiment_pipeline(fin_inputs)
# Print the results
for no, sentiment_result in enumerate(sentiment_results):
print(f'{no}: {fin_inputs[no]} - {sentiment_result["label"]}:{sentiment_result["score"]}')
结果是:
0:Ruoka oli aivan syömäkelvottoman suolaista,yök! - LABEL_1:0.5049001574516296
1:卡拉上的 Hauki - LABEL_1:0.6031284332275391
2:Oli aivan ihana päivä,rakas! - LABEL_1:0.5859299302101135
对我来说,标签似乎已经关闭,分数也并不令人印象深刻,但你可以尝试来自huggingface的更新的微调模型,
model="nisancoskun/bert-finnish-sentiment-analysis-v2"
这样你可以获得看似更好的结果:
0:Ruoka oli aivan syömäkelvottoman suolaista,yök! - 负:0.9999066591262817
1:卡拉上的 Hauki - 正值:0.9982430934906006
2:Oli aivan ihana päivä,rakas! - 正:0.9998261332511902
但是,这个模型似乎缺乏中性标签,所以我仍在尝试找到一个具有所有三个标签的芬兰语语言情感分析模型:负面、中性和正面。