英文

HeBERT:用于极性分析和情感识别的预训练BERT模型

HeBERT是一个希伯来语的预训练语言模型。它基于Google的BERT架构,使用的是BERT-Base配置 (Devlin et al. 2018)

HeBERT是基于以下三个数据集进行训练的:

  • Hebrew版本的OSCAR (Ortiz, 2019) :约9.8GB的数据,包括10亿个词和2080万个句子。
  • Hebrew版本的 Wikipedia :约650MB的数据,包括6300万个词和380万个句子。
  • 为本研究目的收集的情感UGC数据(下面进行描述)。我们在情感识别和情感分析方面对模型进行了评估,用于下游任务。
  • 情感UGC数据描述

    我们的用户生成内容(UGC)是从三个主要新闻网站上收集的文章评论,时间跨度从2020年1月到2020年8月。总数据大小约为150MB,包括700万个词和35万个句子。我们由众包成员为8种情感(愤怒、厌恶、期望、恐惧、快乐、悲伤、惊讶和信任)和整体情感/极性对4000个句子进行了标注(每个句子的标注者为3-10名)。为了验证标注的准确性,我们使用克里本多夫阿尔法系数在每个句子的标注者之间进行了情感一致性检查,我们只保留得到alpha > 0.7的句子。请注意,尽管我们在愉快、信任和厌恶等情感上发现了普遍的一致,但有一些情感存在普遍的分歧,显然是由于在文本中找到它们的复杂性(例如期望和惊讶)。

    如何使用

    对于遮蔽语言模型(可微调为任何下游任务):

    from transformers import AutoTokenizer, AutoModel
    tokenizer = AutoTokenizer.from_pretrained("avichr/heBERT")
    model = AutoModel.from_pretrained("avichr/heBERT")
        
    from transformers import pipeline
    fill_mask = pipeline(
        "fill-mask",
        model="avichr/heBERT",
        tokenizer="avichr/heBERT"
    )
    fill_mask("הקורונה לקחה את [MASK] ולנו לא נשאר דבר.")
    

    对于情感分类模型(仅极性):

    from transformers import AutoTokenizer, AutoModel, pipeline
    tokenizer = AutoTokenizer.from_pretrained("avichr/heBERT_sentiment_analysis") #same as 'avichr/heBERT' tokenizer
    model = AutoModel.from_pretrained("avichr/heBERT_sentiment_analysis")
    
    # how to use?
    sentiment_analysis = pipeline(
        "sentiment-analysis",
        model="avichr/heBERT_sentiment_analysis",
        tokenizer="avichr/heBERT_sentiment_analysis",
        return_all_scores = True
    )
    
    >>>  sentiment_analysis('אני מתלבט מה לאכול לארוחת צהריים')	
    [[{'label': 'natural', 'score': 0.9978172183036804},
    {'label': 'positive', 'score': 0.0014792329166084528},
    {'label': 'negative', 'score': 0.0007035882445052266}]]
    
    >>>  sentiment_analysis('קפה זה טעים')
    [[{'label': 'natural', 'score': 0.00047328314394690096},
    {'label': 'possitive', 'score': 0.9994067549705505},
    {'label': 'negetive', 'score': 0.00011996887042187154}]]
    
    >>>  sentiment_analysis('אני לא אוהב את העולם')
    [[{'label': 'natural', 'score': 9.214012970915064e-05}, 
    {'label': 'possitive', 'score': 8.876807987689972e-05}, 
    {'label': 'negetive', 'score': 0.9998190999031067}]]
    

    我们的模型也在AWS上提供!有关更多信息,请访问 AWS' git

    对于命名实体识别(NER)模型:

        from transformers import pipeline
        
        # how to use?
        NER = pipeline(
            "token-classification",
            model="avichr/heBERT_NER",
            tokenizer="avichr/heBERT_NER",
        )
        NER('דויד לומד באוניברסיטה העברית שבירושלים')
    

    敬请关注!

    我们仍在继续改进我们的模型,并将根据进展修改此页面。请注意,我们目前仅发布了情感分析(极性),情感检测将稍后发布。我们的git: https://github.com/avichaychriqui/HeBERT

    如果您使用了此模型,请引用我们的论文:

    Chriqui, A., & Yahav, I.(2022)。HeBERT & HebEMO:希伯来BERT模型和用于极性分析和情感识别的工具。INFORMS Journal on Data Science(即将发表)。

    @article{chriqui2021hebert,
      title={HeBERT \& HebEMO: a Hebrew BERT Model and a Tool for Polarity Analysis and Emotion Recognition},
      author={Chriqui, Avihay and Yahav, Inbal},
      journal={INFORMS Journal on Data Science},
      year={2022}
    }