O metoda pentru codificarea unui set de date de documente text intr-un formular care, atunci cand este reglat cu GPT-2 OpenAI, reteaua va putea genera text referitor la cuvintele cheie specificate (desi textul codificat poate functiona teoretic cu orice tip de neuronal bazat pe text generarea retelei, utilizeaza orizontul lung al GPT-2 si abilitatile puternice de context).

Puteti demonstra rezultatele cu un exemplu despre cum sa utilizati scriptul in folderul de exemplu. In plus, puteti juca singur cu cuvinte cheie cu Reddit GPT-2 API (GitHub) sau puteti citi exemple pregenerate ale acelui model bazat pe cuvinte cheie pe / r / legaladvice.

Codificarea este tokenizata utilizand spaCy pentru o tokenizare mai robusta a cuvintelor cheie si paralelizata utilizand ray pentru a accelera masiv codarea pe seturi de date mari (aproximativ 11x accelerarea folosind 32 vCPU / thread-uri vs. single threaded, la 70% utilizare CPU)

Utilizare

Aceasta repoare contine un script keyword_encode.py care incearca sa extraga cuvintele cheie intr-un mod nesupravegheat (desi puteti furniza propriile cuvinte cheie daca le aveti). Metodologia este urmatoarea pentru fiecare document text:

  1. Extrageti cuvintele cheie din fiecare document ca „cuvinte cheie” folosind spaCy, care simbolizeaza atat cuvintele cheie, cat si eticheteaza partile lor de vorbire.
    • Sunt extrase doar substantive, verbe, adjective si adverbe. Substantivele folosesc versiunea bruta a cuvantului (pentru cea mai buna experienta a utilizatorului atunci cand le introduc manual), in timp ce celelalte POS utilizeaza versiunile lematizate (pentru a reduce supraadaptarea, dar totusi furniza informatii).
    • Substantivele proprii, entitatile denumite si substantivele compuse sunt considerate ca fiind propriul lor cuvant cheie.
    • Pronumele si cuvintele stop sunt excluse din cuvintele cheie.
    • Cuvintele cheie sunt deduse.
  2. Pregatiti cuvintele cheie in asa fel incat textul documentului sa fie generat conditionat de cuvintele cheie.
  3. Scrieti cuvintele cheie, apoi documentul pentru fiecare set generat de cuvinte cheie.
    • Documentele sunt procesate in loturi cu ray; dupa ce fiecare lot este codificat, lotul este amestecat inainte de a scrie pentru a reduce scurgerile.

Cazul implicit (trecerea unui CSV de titluri) genereaza cuvinte cheie si genereaza un .txt de cuvinte cheie si titluri.

Scriptul keyword_decode.py contine functii pentru decodarea textelor codificate generate in bloc (de exemplu, generate prin gpt-2-simple, desi trunchierea nativa este recomandata in acest caz de utilizare). decode_texts () va extrage textul din fiecare sectiune taxonomica specificata pentru lista furnizata de texte, iar decode_file () poate extrage si decoda toate textele si scrie intr-un fisier.

Taxonomie

Acest script este, de asemenea, capabil sa gestioneze conditii ierarhice suplimentare. Acest script are 4 posibilitati totale implementate: categorie, cuvinte cheie, titlu si corp.

categoria este cel mai larg domeniu de aplicare al unui text dat. (de exemplu, subreditarea unei postari date, vorbitorul unei fraze date daca se foloseste pentru chatbots)

body este utilizat daca exista o cantitate mare de text dependent de titlu (de exemplu, o postare pe blog).

Consultati codul pentru mai multe informatii.

Note utile

  • Nu exista o baza matematica / teetica explicita in spatele cuvintelor cheie, in afara de degradarea tipica a textului; in ciuda acestui fapt, rezultatele sunt bune si inca mai este loc de imbunatatit!
  • Cuvintele cheie nu vor fi prezente in textul rezultat 100% din timp, dar prezenta cuvintelor cheie in text este inca mare.
  • Scopul documentului (documentelor) text plus cuvintele cheie trebuie sa se incadreze in domeniul de aplicare maxim 1023 simbol al GPT-2 (de exemplu, ar trebui sa fie doar cateva paragrafe max).
  • Cuvintele cheie manuale pot functiona mai bine daca le aveti, pe care le puteti seta cu parametrul keywords_field pe encode_keywords ().
  • Ar trebui sa existe o cantitate egala din toate documentele de categorie unica pentru a preveni partinirea esantionarii.
  • Delimetrele sunt alese ca fiind caractere ASCII unice, mai putin frecvente, care sunt relativ putin probabil sa fie utilizate oriunde altundeva, astfel incat reteaua sa invete in mod explicit semnificatia acestor caractere. (vezi Wired and Stack Overflow pe caracterul rar). S-ar putea sa fie mai bine in viitor sa se bazeze delimitatorii pe GPT-2 BPE, dar acest lucru este mai putin robust.
  • Puteti utiliza mai mult decat cuvinte cheie max_keywords atunci cand generati dintr-un model cu GPT-2, desi rezultatele vor varia.

Intretinator / Creator

Max Woolf (@minimaxir)

Proiectele open-source ale lui Max sunt sustinute de Patreon. Daca vi s-a parut util acest proiect, orice contributie monetara la Patreon este apreciata si va fi folosita in mod creativ.

Licenta

MIT

Declinare de responsabilitate

Aceasta repo nu are nicio afiliere sau relatie cu OpenAI.