huBERT: BERT-jellegű modellek magyarra
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:
- mint egy nyers Tensorflow checkpoint, ahogy a hivatalos BERT tanítókód elmentette.
- mint egy előtanított Hugging Face modell. Ezt ugyanúgy lehet letölteni, finomhangolni és használni, mint bármelyik másik modellt a Hugging Face Model Hubról.
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.