【问题标题】:Using huggingface transformers with a non English language使用非英语的拥抱脸转换器
【发布时间】:2020-05-21 20:46:14
【问题描述】:

我已经安装了最新版本的转换器,我能够使用它的简单语法对英语短语进行情感预测:

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}]

这是使用最佳多语言模型的尝试:

稍微好一点,但仍然远远超出目标。

有什么我可以做的吗?

【问题讨论】:

    标签: python-3.x multilingual huggingface-transformers


    【解决方案1】:

    问题是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,这对我来说似乎是一个基本模型。在这种情况下,您首先需要微调您自己的情绪分析模型,然后可以从该检查点加载。否则,您也可能会得到有问题的结果。

    【讨论】:

    • 可以以类似的方式确定管道的标记器,检查为每个模型加载的标记器。通常,它也与您在 bert-base-multilingual 模型中使用的类似。对于任何其他问题,请考虑打开一个新问题而不是更新旧问题。
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 2021-04-01
    • 2020-11-26
    • 1970-01-01
    • 2021-08-10
    • 2023-04-10
    • 2022-06-28
    • 2020-11-06
    相关资源
    最近更新 更多