NeuralCoref 4.0 | Koreferenčné rozlíšenie v priestore s neurónovými sieťami

Blog

NeuralCoref 4.0 | Koreferenčné rozlíšenie v priestore s neurónovými sieťami

NeuralCoref je rozšírenie potrubia pre spaCy 2.1+, ktoré anotuje a rieši klastre koferencií pomocou neurónovej siete. NeuralCoref je pripravený na výrobu, je integrovaný do NLP pipeline spaCy a je rozšíriteľný o nové tréningové dátové sady.



Krátky úvod do koreferenčného rozlíšenia a NeuralCoref nájdete v našom blogovom príspevku . NeuralCoref je napísaný v jazyku Python/Cython a prichádza s vopred pripraveným štatistickým modelom pre len anglicky .






NeuralCoref je sprevádzaný vizualizačným klientom NeuralCoref-Viz, webové rozhranie poháňané REST serverom, ktoré je možné vyskúšať online. NeuralCoref je vydaný pod licenciou MIT.



Verzia 4.0 už vyšla! Dostupné na pip a kompatibilné so SpaCy 2.1+.



NeuralCoref online demo






    Operačný systém: macOS / OS X · Linux · Windows (Cygwin, MinGW, Visual Studio)Verzia Pythonu: Python 3.6+ (iba 64 bit)Správcovia balíkov: [pip]

Nainštalujte NeuralCoref

Nainštalujte NeuralCoref s pip

Toto je najjednoduchší spôsob inštalácie NeuralCoref.

|_+_|

|_+_| chyba

Ak máte chybu s uvedením |_+_| keď načítate NeuralCoref s |_+_|, znamená to, že budete musieť nainštalovať NeuralCoref zo ​​zdrojov distribúcie namiesto kolies, aby ste NeuralCoref postavili proti najnovšej verzii SpaCy pre váš systém.

V tomto prípade jednoducho znova nainštalujte neuralcoref nasledovne:

obnoviť odstránené e-maily aol
|_+_|

Inštalácia modelu SpaCy

Aby ste mohli používať NeuralCoref, musíte mať aj anglický model pre SpaCy.

Môžete použiť akýkoľvek anglický model, ktorý funguje dobre pre vašu aplikáciu, ale všimnite si, že výkon NeuralCoref je silne závislý od výkonu modelu SpaCy a najmä od výkonov komponentov Tagger, parser a NER modelu SpaCy. Väčší model SpaCy English tak zlepší aj kvalitu koreferenčného rozlíšenia (pozri niektoré detaily v Vnútornosti a model časť nižšie).

Tu je príklad, ako si môžete nainštalovať SpaCy a (malý) anglický model pre SpaCy, viac informácií nájdete na webovej stránke spacy:

|_+_|

Nainštalujte NeuralCoref zo ​​zdroja

NeuralCoref môžete nainštalovať aj zo zdrojov. Najprv budete musieť nainštalovať závislosti, ktoré zahŕňajú Cython a SpaCy.

Tu je postup:

|_+_|

Vnútornosti a model

NeuralCoref sa skladá z dvoch podmodulov:

  • modul na detekciu zmienok založených na pravidlách, ktorý využíva SpaCy tagger, parser a anotácie NER na identifikáciu množiny potenciálnych zmienok o koreferencii a
  • dopredná neurónová sieť, ktorá vypočítava koreferenčné skóre pre každý pár potenciálnych zmienok.

Keď prvýkrát importujete NeuralCoref do pythonu, stiahne sa váhy modelu neurónovej siete do priečinka vyrovnávacej pamäte.

Priečinok vyrovnávacej pamäte je štandardne nastavený na |_+_| (pozri file_utils.py ), ale toto správanie sa dá prekonať nastavením premennej prostredia |_+_| ukázať na iné miesto.

Priečinok vyrovnávacej pamäte je možné kedykoľvek bezpečne vymazať a modul pri ďalšom načítaní znova stiahne model.

Viac informácií o umiestnení, sťahovaní a procese ukladania interného modelu do vyrovnávacej pamäte získate aktivovaním pythonu |_+_| modul pred načítaním NeuralCoref takto:

|_+_|

Načítava sa NeuralCoref

Pridanie NeuralCoref do potrubia anglického jazyka SpaCy

Tu je odporúčaný spôsob, ako vytvoriť inštanciu NeuralCoref a pridať ho do zásobníka anotácií SpaCY:

|_+_|

Načítanie NeuralCoref a jeho manuálne pridanie do potrubia anglického jazyka SpaCy

Ekvivalentným spôsobom pridania NeuralCoref do kanála modelu SpaCy je najprv vytvoriť inštanciu triedy NeuralCoref a potom ju manuálne pridať do potrubia modelu jazyka SpaCy.

|_+_|

Pomocou NeuralCoref

NeuralCoref vyrieši koreferencie a označí ich ako atribúty rozšírenia v spaCy |_+_|, |_+_| a |_+_| objekty pod |_+_| slovník.

prúžok-rubín-napodobenina

Tu je zoznam anotácií:

AtribútTypPopis
|_+_|boolovská hodnotaJe vyriešená nejaká koreferencia v Doc
|_+_|zoznam |_+_|Všetky zhluky koreferingu spomína v doc
|_+_|unicodeUnicode reprezentácia dokumentu, kde je každá zmienka o koreferovaní nahradená hlavnou zmienkou v pridruženom klastri.
|_+_|Dict of DictSkóre koreferenčného rozlíšenia medzi zmienkami.
|_+_|boolovská hodnotaČi má rozsah aspoň jednu koreferujúcu zmienku
|_+_||_+_|Zhluk zmienok, ktoré korešpondujú s rozpätím
|_+_|DiktSkóre koreferenčného rozlíšenia & span s inými zmienkami (ak je to vhodné).
|_+_|boolovská hodnotaČi je token vo vnútri aspoň jednej koreferujúcej zmienky
|_+_|zoznam |_+_|Všetky zhluky zmienok o koreferovaní, ktoré obsahujú token

A |_+_| je zhluk zmienok o koreferingu, ktorý má 3 atribúty a niekoľko metód na zjednodušenie navigácie vo vnútri klastra:

Atribút alebo metódaTyp / Typ návratuPopis
|_+_|intIndex klastra v Doc
|_+_||_+_|Rozsah najreprezentatívnejších zmienok v klastri
|_+_|zoznam |_+_|Zoznam všetkých zmienok v klastri
|_+_|návrat |_+_|Prístup k zmienke v klastri
|_+_|výnosy |_+_|Opakujte zmienky v klastri
|_+_|návrat intPočet zmienok v skupine

Navigácia v reťazcoch klastrových koferencií

Môžete tiež jednoducho navigovať v reťazcoch klastrov koreferencie a zobraziť klastre a zmienky.

Tu je niekoľko príkladov, vyskúšajte si ich, aby ste si to sami vyskúšali.

|_+_|

Dôležité : NeuralCoref uvádza objekty spaCy Span, čo znamená, že máte prístup ku všetkým obvyklým atribútom Span ako |_+_| (index prvého tokenu rozsahu v dokumente), |_+_| (index prvého tokenu po rozpätí v dokumente) atď...

Príklad: |_+_| vám poskytne index prvého tokenu poslednej zmienky o druhom koreferenčnom klastri v dokumente.

Parametre

Do |_+_| môžete zadať niekoľko ďalších parametrov alebo |_+_| na kontrolu správania NeuralCoref.

Tu je úplný zoznam týchto parametrov a ich popis:

reagovať natívny navigačný panel
ParameterTypPopis
|_+_|plavákČíslo medzi 0 a 1, ktoré určuje, do akej miery je model chamtivý pri rozhodovaní o koreferencii (nenásytnejšie znamená viac koreferenčných prepojení). Predvolená hodnota je 0,5.
|_+_|intKoľko zmienok treba pozrieť späť pri zvažovaní možných predchodcov súčasnej zmienky. Zníženie hodnoty spôsobí, že systém bude bežať rýchlejšie, ale menej presne. Predvolená hodnota je 50.
|_+_|intSystém zváži prepojenie aktuálnej zmienky s predchádzajúcou ďalej ako |_+_| preč, ak zdieľajú podstatné alebo vlastné podstatné meno. V tomto prípade to vyzerá |_+_| namiesto toho preč. Predvolená hodnota je 500.
|_+_|boolovská hodnotaAk systém vyrieši koreferencie pre zámená v nasledujúcom zozname: |_+_|. Predvolená hodnota je True (koreference vyriešená).
|_+_|boolovská hodnotaMá systém ukladať skóre pre koreferencie v anotáciách. Predvolená hodnota je True.
|_+_|dict(str, zoznam(str))Konverzný slovník, ktorý môžete použiť na nahradenie vložení vzácne slová (kľúče) priemerom vložených položiek zoznamu bežné slová (hodnoty). Príklad: |_+_| pomôže vyriešiť koreferencie pre |_+_| pomocou vloženia pre bežnejšie |_+_| a |_+_| namiesto vloženia |_+_|. Toto momentálne funguje len pre jednotlivé slová (nie pre skupiny slov).

Ako zmeniť parameter

|_+_|

Použitie parametra konverzného slovníka na pomoc pri riešení zriedkavých slov

Tu je príklad, ako môžeme použiť parameter |_+_| pomôcť vyriešiť koreferencie zriedkavého slova, ako je meno:

|_+_|

Použitie NeuralCoref ako servera

Jednoduchý príklad serverového skriptu na integráciu NeuralCoref do REST API je uvedený ako príklad v |_+_| .

Ak ho chcete použiť, musíte najskôr nainštalovať Falcon:

|_+_|

Potom môžete spustiť server takto:

|_+_|

A požiadajte server takto:

|_+_|

Existuje mnoho ďalších spôsobov, ako môžete spravovať a nasadzovať NeuralCoref. Niektoré príklady možno nájsť v spaCy Universe.

Opätovné preškolenie modelu / rozšírenie na iný jazyk

Ak chcete model preškoliť alebo ho trénovať v inom jazyku, pozrite si naše školiace pokyny, ako aj náš blogový príspevok

Podrobnosti o stiahnutí:

Autor: huggingface
Odkaz na stiahnutie: Stiahnite si zdrojový kód
Oficiálna webová stránka: https://github.com/huggingface/neuralcoref
Licencia: Licencia MIT

#python