Lepšia analýza sentimentu s BERT

Predstavte si, že na svojich klientov odpovedáte robotom a chcete, aby to znelo trochu prirodzenejšie a ľudskejšie.

Foto: Hybrid on Unsplash

Aby ste to dosiahli, musíte urobiť odpovede viac personalizovanými. Jedným zo spôsobov, ako sa dozvedieť viac o zákazníkoch, s ktorými hovoríte, je analýza polarity ich odpovedí. Polaritou tu mám na mysli zistenie, či je veta (alebo skupina viet) napísaná s úmyslom byť vnímaná ako pozitívne alebo negatívne vyhlásenie. To znamená, že čelíme problému binárnej klasifikácie. Na vyriešenie tejto úlohy NLP existuje veľa metód. Testoval som niektoré a ten, ktorý skutočne prekonal ostatné, bol BERT.

Prehľad BERT

BERT (Bidirectionnal Encoder Representations for Transformers) je „nová metóda jazykových zastúpení v predškolení“ vyvinutá spoločnosťou Google a vydaná koncom roka 2018 (viac informácií o tejto téme nájdete tu). Keďže je vopred vyškolený na generické súbory údajov (z Wikipedia a BooksCorpus), dá sa použiť na riešenie rôznych úloh NLP. Zahŕňa to klasifikáciu na úrovni vety (ako je to tu), odpovedanie na otázky alebo klasifikácia na úrovni tokenov (napr. Časť značkovania reči) a BERT je schopný dosiahnuť najmodernejšie výkony v mnohých z týchto úloh.

Architektúra BERT v porovnaní s dvoma ďalšími najmodernejšími modelmi (zdroj: Devlin et al.)

V praxi poskytuje BERT vopred pripravené jazykové modely pre angličtinu a 103 ďalších jazykov, ktoré môžete doladiť podľa svojich potrieb. Tu uvidíme, ako doladiť anglický model na analýzu sentimentu.

Doladenie s BERT

BERT nedávno poskytol v Pythone učebnicu poznámok, ktorá ilustruje spôsob detekcie sentimentu pri filmových recenziách. Návod na cvičenie je dobre zostavený a jasný, takže sa ním nebudem podrobne zaoberať - tu je len niekoľko myšlienok. Najprv notebook používa IMDb dataset, ktorý si môžete stiahnuť priamo z Kerasu. Tento súbor údajov obsahuje 50000 filmových recenzií rozdelených na dve rovnaké časti, jednu na školenie a jednu na testovanie. Každý súbor údajov je vyrovnaný, pričom 12500 pozitívnych a 12500 negatívnych recenzií.

Príklady recenzií z množiny údajov IMDb. Polarita na nulu znamená, že veta vyjadruje negatívne pocity, zatiaľ čo jedna znamená, že je pozitívna.

Na jemné doladenie aplikujú jednu novú vrstvu a softmax na vrch vopred pripraveného modelu, ale môžete si ho prispôsobiť. Používa štruktúru odhadcov Tensorflow na trénovanie a predpovedanie výsledkov a vyžaduje niektoré funkcie, ako napríklad run_config alebo model_fn, buď kódované v notebooku alebo importované zo súboru run_classifier.py prítomného v GitHub, takže sa nemusíte s nimi obávať. ,

Vyhodnotenie modelu

Aby som videl, ako dobre funguje BERT, porovnal som to s dvoma ďalšími modelmi. Prvým je logistická regresia s vektorizáciou TF-IDF. Druhá je inšpirovaná Rezaeiniou a kol. (GIT). Používa vloženia Word2Vec, spolu s označovaním časti reči, a odovzdáva zreťazenie oboch do 1D konvolučnej siete.

Aj keď logistická regresia funguje prekvapivo dobre, keď prekonáva neurónový model, BERT prináša ešte lepšie skóre. Výsledky BERT sa navyše výrazne zlepšia, keď je model trénovaný na väčšom súbore údajov. Nevýhodou môže byť to, že tréning trvá pomerne dlho, dokonca aj s GPU. Logistická regresia dokončí výcvik v priebehu niekoľkých sekúnd, keď na to BERT potrebuje okolo 20 minút (s GPU a 25 000 preskúmaním školení).

Výsledky rôznych modelov

Podávame s Dockerom a Tensorflowom

Po uložení modelu ako uložený_model.pb (získaný napríklad pomocou metódy export_savedmodel) môžete nastaviť server, ktorý bude model spúšťať a robiť predpovede. Najskôr vytvoríme kontajner Docker z obsluhy tensorflow (najskôr musíte nainštalovať Docker) a do neho pridáme náš model. Model_en by mal byť priečinok obsahujúci priečinok s názvom 1 (potrebný pre tensorflow), ktorý sám obsahuje model, ktorý ste exportovali. To sa dosahuje pomocou príkazových riadkov uvedených nižšie.

Potom napíšeme jednoduchého klienta, ktorý vezme vetu ako vstup, prevedie ju na vstupné funkcie BERT (rovnako ako v tutoriále) a zavolá bežiaci kontajner Docker, ktorý vytvorí predpoveď. Pomocou banky môžete zmeniť klienta na jednoduché API. Nižšie uvedený pythonový kód zobrazuje tieto rôzne kroky.

Potom môžete urobiť predpovede odoslaním žiadosti o reťazec, napríklad pomocou Postmana.

Voila! Teraz ste pripravení vykonať podrobnú analýzu sentimentu s BERT a použiť ju v aplikácii v reálnom svete.