使用非英语语言的 huggingface 转换器

Using huggingface transformers with a non English language

我已经安装了最新版本的 transformers,我可以使用它简单的语法对英语短语进行情绪预测:

from transformers import pipeline
sentimentAnalysis = pipeline("sentiment-analysis")
print(sentimentAnalysis("Transformers piplines are easy to use"))
HBox(children=(FloatProgress(value=0.0, description='Downloading', max=442.0, style=ProgressStyle(description_…

HBox(children=(FloatProgress(value=0.0, description='Downloading', max=629.0, style=ProgressStyle(description_…

HBox(children=(FloatProgress(value=0.0, description='Downloading', max=230.0, style=ProgressStyle(description_…

HBox(children=(FloatProgress(value=0.0, description='Downloading', max=267844284.0, style=ProgressStyle(descri…

[{'label': 'POSITIVE', 'score': 0.9305251240730286}]

print(sentimentAnalysis("Transformers piplines are extremely easy to use"))

[{'label': 'POSITIVE', 'score': 0.9820092916488647}]

然而,当我在非英语语言(这里是希腊语)上尝试时,我没有得到预期的结果。

以下短语用英语翻译为:'This food is disgusting' 我希望我的情绪得分非常低,这不是我得到的:

print(sentimentAnalysis("Αυτό το φαγητό είναι αηδιαστικό"))
[{'label': 'POSITIVE', 'score': 0.7899578213691711}]

这里尝试使用最好的多语言模型:

稍微好一点,但仍远未达到目标。

有什么我可以做的吗?

问题是 pipelines 默认加载英文模型。在情感分析的情况下,这是 distilbert-base-uncased-finetuned-sst-2-english,参见 here

幸运的是,您只需指定要加载的确切模型,如 docs for pipeline:

中所述
from transformers import pipeline
pipe = pipeline("sentiment-analysis", model="<your_model_here>", tokenizer="<your_tokenizer_here>")

请记住,这些模型必须与您各自任务的架构兼容。我能找到的唯一希腊模型是 nlpaueb/bert-base-greek-uncased-v1,这对我来说似乎是一个基本模型。在这种情况下,您首先需要微调自己的情绪分析模型,然后才能从该检查点加载。否则,您也可能会得到有问题的结果。