SZTAKI HLT | huBERT: BERT-jellegű modellek magyarra

huBERT: BERT-jellegű modellek magyarra

2020 -

Ezen az oldalon a Magyar Webcorpus 2.0-n tanított mély neurális nyelvmodelleket (BERT, Electra, stb.) hozzuk nyilvánosságra.

Modellek

huBERT

Kis-nagybetűs modell, amit a Webkorpusz 2.0-n és a magyar Wikipédia 2018-as állapotán tanítottunk. Két formátumban lehet letölteni:

Wikipédia

A magyar Wikipédián tanított modellek. A tanítás részletei a lent idézett publikációban találhatók.

  • huBERT cased: a megszokott kis-nagybetűs modell.
  • huBERT lowercased: kisbetűsített (és nem a megszokott uncased) modell. Az angollal ellentétben az ékezetek a magyarban megkülönböztető szerepet töltenek be, ezért meghagytuk őket.

Eredmények

Mindegyik modell felülmúlja a többnyelvű BERTet maszkolt nyelvmodellezésben, névelemfelismerésben és főnévicsoport-felismerésben, a teljes huBERT modell pedig 0,5%-kal jobb a Wikipédia modelleknél mindegyik feladaton. Főnévicsoport-felismerésben a huBERT modellé a jelenlegi legjobb eredmény (táblázat az emBERT GitHub oldalról):

Feladat Tanítókorpusz multi-BERT F1 huBERT wiki F1 huBERT F1
névelemfelismerés Szeged NER korpusz 97.08% 97.03% 97.62%
minimális NP felismerés Szeged TreeBank 2.0 95.58% 96.64% 97.14%
maximális NP felismerés Szeged TreeBank 2.0 95.05% 96,41% 96,97%

Használat

A modellek úgy, ahogy vannak betölthetők TensorFlowba. A javasolt felhasználási mód azonban a modellek Pytorch-ra konvertálása, majd a konvertált modell használata (és finomhangolása) a transformers könyvtár segítségével.

A teljes huBERT modell megtalálható a Hugging Face Model Hubon is. Ugyanúgy használható Pytorch és TF 2.0 alatt is mint bármelyik transformers modell:

from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained("SZTAKI-HLT/hubert-base-cc")
model = AutoModel.from_pretrained("SZTAKI-HLT/hubert-base-cc")

Kisbetűs modellek

Kiegészítés a kisbetűs modellekhez: mivel a transformers könyvtár nem ismer ilyet, ezért szükség van egy extra lépésre. Mind a cased, mint kisbetűs modellhez a BertTokenizer-t do_lower_case=False beállítással kell létrehozni, és utóbbinak a bemeneti szöveget kézileg kisbetűsíteni kell. Lásd:

tokenizer = BertTokenizer.from_pretrained('path/to/hubert_wiki_lower', do_lower_case=False) tokens = tokenizer.tokenize('Az én szövegem'.lower())

Idézés

Ha használja bármelyik modellt, kérjük idézze az alábbi publikációt:

Nemeskey, Dávid Márk (2020). “Natural Language Processing methods for Language Modeling”. PhD thesis. Eötvös Loránd University.

Tulajdonos