ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 128
Abonament PDF

Segmentarea topică a documentelor text

Alexandru Parvu
Machine Learning Engineer @ Accesa



PROGRAMARE


Înainte de a aborda tematica acestui articol, trebuie analizată problema pe care încearcă să o soluționeze. Un clișeu, dar și un adevăr este faptul că 90% din datele create în totalitate de umanitate au fost create în ultimii doi ani, după cum se poate observa în Figura 1. Însă, ceea ce este rar menționat, este că mai bine de 80% din aceste date sunt nestructurate - majoritatea datelor generate sunt sub formă de fișiere video, text, imagini, fișiere 3D și altele.

Această realitate creează o dificultate în a folosi aceste date deoarece, spre deosebire de datele tabulare, nu există o cale simplă de a sorta, segmenta sau filtra aceste informații. Acest fapt este cauzat de lipsa unei etichete care poate fi folosită pentru filtrare. Absența unei astfel de ordini duce la inaccesibilitatea datelor pentru utilizatorul final.

Problema cu Datele Text

Datele Text sunt, pe departe, cea mai răspândită formă de date și, adesea, cea care conține cea mai multă informație. Există zicala că o poză valorează o mie de cuvinte însă - pragmatic vorbind - nu se învață algebră sau inginerie din imagini. Totuși, nu vorbim doar de documente text de tip tehnic - majoritatea datelor text curent generate sunt sub formă de articole, review-uri, comentarii, documente istorice și multe alte exemple, postate fără etichetare sau fără o altă modalitate de a discerne informațiile din aceste documente. Problema ar putea fi rezolvată prin implementarea unei convenții de etichetare încă de la începutul fiecărei platforme, dar în momentul în care o convenție este gândită, deja există mulți terabytes de date text ce trebuie reprocesați. Și, chiar în cazul în care o convenție a fost implementată de la început, nu am avea o garanție că aceste convenții s-ar aplica datelor deja generate sau datelor ce urmează a fi.

Figura 1, sursa: IBM

În această privință, acest articol intenționează să demonstreze că, atunci când avem de-a face cu datele text, problema întâmpinată nu este chiar atât de dificilă. În multe cazuri, machine learningul poate rezolva aceste probleme sau discerne aceste informații, fără a fi nevoiți să recurgem la un proces ce ar avea, în caz contrar, un cost ridicat în termeni de timp și resurse.

Sursele de date

În rândurile următoare vom analiza trei surse de date, toate prezentând problema unei lipse de structură, făcând filtrarea imposibilă.

Ar fi dificil pentru orice persoană să înțeleagă lungimea acestor texte doar după o numărătoare de cuvinte. Prin urmare, pentru a fi mai inteligibil cât de mare este volumul de text, intenționăm să folosim un punct de referință simplu - o comparație cu lungimea Bibliei.

Sursele de date sunt următoarele:

După cum se poate observa, cele trei surse de date sunt de origini total diferite, toate prezentând aceeași problemă - nu există o etichetare, deci nu avem posibilitatea filtrării. Acest fapt, combinat cu volumul mare de date text duce la o dificultate ridicată în a obține informații utile din datele respective, în timp util.

Cea mai evidentă soluție ar fi crearea unui count vectorizer sau mai avansat Term Frequency-Inverse Document Frequency embeding și folosirea unui algoritm clasic de segmentare pe rezultatul acestor procese, însă s-ar crea o segmentare fără a ne permite o înțelegere a particularităților acelor segmente. Astfel, rezultatul ar fi segmentarea datelor inițiale și apariția necesității parcurgerii întregului volum, pentru a discerne informații, în segmente care prezintă exact aceeași problemă. Concluzionăm că problema resurselor și timpului necesare nu a fost rezolvată, ci doar împărțită în probleme mai mici.

Totuși, există algoritmi de segmentare care nu prezintă această problemă, algoritmii folosiți în acest articol fiind Alocarea Latent Dirichlet și Factorizarea Matricelor Non-Negative.

Ambii algoritmi se bazează pe aceleași asumpții:

NPR

Figura 2

Setul de Date este format din 11.991 de articole de știri neetichetate. Știm că sunt articole de știri dar, neavând o etichetă, nu avem cum să fim siguri dacă sunt despre politică sau despre meteo.

Știm care sunt cele mai des folosite cuvinte: cuvintele de stop din limba engleză, dar nu putem să le folosim pe acestea pentru a categorisi articolele, după cum poate fi observat în Figura 2. Și, chiar eliminând aceste cuvinte de stop, este dificil să determinăm un subiect, fapt vizibil în Figura 3. Putem, astfel, concluziona că un simplu filtru aplicat cuvintelor cheie nu poate fi utilizat pentru a segmenta articolele, așa că recurgem la metodele de categorisire menționate anterior.

Figura 3

Începem prin asumarea unui număr de șapte segmente. Nu există un număr corect de segmente, dar un număr mai mare va crea segmente mai specifice, un număr mai mic va crea segmente mai generale.

Astfel, rezultă un număr de șapte segmente, fiecare având o frecvență diferită pentru cuvinte diferite. De exemplu, pentru primul topic, (Topic_0), putem observa în Figura 4 că cele mai ridicate frecvențe se găsesc la cuvintele de natură financiară. Se observă că algoritmul nu oferă o denumire topică. Numele segmentului poate fi determinat pe baza cuvintelor cu frecvența cea mai mare pentru fiecare topic.

Figura 4

cv = CountVectorizer(max_df=0.95, min_df=2, 
     stop_words='english')

dtm = cv.fit_transform(data['Article'])
LDA = LatentDirichletAllocation(n_components=7
    WW random_state=42
     , n_jobs=-1
     , verbose=1
     , max_iter=100).fit(dtm)

Obținem următoarele rezultate:

Pentru a testa asumpțiile făcute, au fost selectate mai multe articole în mod aleatoriu.

Cultural News

Order in the court — but maybe not in movie theaters. With all the talk lately about politics and the judiciary — fights over Supreme Court vacancies, the President complaining about"" judges — I've been thinking about the judges I've seen on screen, and how their depiction might have intersected with public opinion through the years. Ce

Finance

Updated at 2:30 p. m. ET, for years, Puerto Rico has grappled with an debt crisis, watching as its bills have grown to more than $70 billion. Including what the U. S. territory owes to pension funds, that debt exceeds $120 billion. Now, Puerto Rico's struggle with its creditors has stepped into U. S. federal court, where an unprecedented case

Sursă: NPR Data | Kaggle

Testele de mai sus tind să confirme asumpțiile făcute.

Spotify

Figura 5.1

S-a putut observa că aceste metode de segmentare funcționează pentru articole de știri, dar pot fi testate în circumstanțe diferite, pe versurile cântecelor. Totuși, ar trebui limitate așteptările a ceea ce pot face acești algoritmi; așteptările nu ar trebui să fie ca algoritmii să determine genul muzicii, ci, după cum sugerează numele, să determine topicul sau subiectul cântecelor care adesea nu coincid cu un gen de muzică.

Figura 5.2

Setul de date Spotify are un total de 57.650 versuri de cântece; vom vedea dacă acestea pot fi segmentate în funcție de topic.

După cum se putea aștepta, cel mai des întâlnite cuvinte în acest set de date sunt cuvinte englezești de stop - Figura 5.1 și 5.2; dacă le ignorăm pe acestea, putem observa că cele mai des întâlnite cuvinte sunt de natură sentimentală. Astfel, putem presupune că segmentarea topică va fi în relație cu un sentiment.

Același algoritm ca în cazul precedent a fost rulat peste setul de date Spotify, asumând același număr de șapte segmente. Putem observa în Figura 6 că cele mai întâlnite cuvinte pentru al treilea topic au o conotație religioasă, deci putem asuma un topic de natură religioasă. Ca și înainte, algoritmul nu îi asumă o denumire segmentului, ci un număr; denumirea este implicită din cuvintele cu frecvența cea mai mare în fiecare topic.

Figura 6

Astfel, denumirea topicelor a fost dedusă după cum urmează:

Ca și înainte, asumpțiile făcute trebuie testate cu unele selecții aleatorii:

Locational

They're really rockin' Boston
In Pittsburgh, P. A.
Deep in the heart of Texas
And 'round the Frisco Bay
All over St. Louis
And down in New Orleans
All the cats want to dance with
Sweet little sixteen

Sweet little sixteen

Song: Sweet Little Sixteen by Chuck Berry

Love

All my love
Came to nothin' at all my love
When I woke up to find
You were no longer mine
All my love
Throw away after all this time
Now there's no place for me
In the future you see
I don't understand you
I've done all I c
Song: All My Love by Cliff Richard

Sursă: Spotify Million Song Dataset | Kaggle

Figura 7

Asumpțiile par a fi corecte. Acum putem verifica popularitatea topicelor în baza de date, după cum poate fi observat în Figura 7.

Îmbrăcăminte de femei

Nu, această denumire nu este începutul unei glume. Din punct de vedere tehnic, este, mai degrabă, o tragedie - motivul e că, în calitate de comerciant de haine pentru femei, ai presupune că e relativ direct modul în care înțelegi dorința clientelor când vine vorba de produsele vândute. Desigur, e relativ ușor să măsori satisfacția per total, bazându-te pe un sistem de rating, după cum poate fi observat în Figura 8.

Figura 8

Se poate observa că, per total, clientele sunt mulțumite de produsele cumpărate, dar nu ai cum să determini care este interesul clientelor, dacă nu te folosești de textul review-urilor.

Figura 9

Într-un astfel de mediu, se poate observa că se pot folosi exact aceleași unelte ca și în cazurile prezentate anterior. În Figura 9, sunt ilustrate cele mai des întâlnite cuvinte, dar acestea nu ne oferă topicurile de interes; ca și în cazurile precedente, trebuie să aplicăm Alocarea Latent Dirichlet, cu o asumare de 7 topicuri de interes. Rezultatele sunt următoarele segmente - primele 20 de cuvinte după frecvența folosirii:

Ca și în cazurile precedente, trebuie testate asumpțiile printr-o selecție aleatorie:

Material and Color

I'm not usually a fan of simple crewneck sweaters, but this one has some nice added details that make it a keeper. The dark red oxblood color is nice (it manages to be a red sweater without feeling overly holiday), the detailing at shoulder/chest is interesting yet subtle enough to not be distracting and doesn't feel bulky at all, the dropped shoulder seams are done correctly and without the body becoming boxy. It does feel like it might run a tad bit large, but only very slightly.

Appearance

I love natural colors and nature themes, but this top was a disappointment. I ordered both the small and the XS, because retailer can run very large. The small was too big and the XS did not hang correctly, the arms hit at a weird spot and the neckline wouldn't sit right. Overall, the fit was boxy and unflattering. The fabric is pretty, but the style is well.... boring. There was just no wow factor for me. I think the fabric deserved a much better design.

Sursa: Women's E-Commerce Clothing Reviews

Asumpțiile par a fi adevărate, însă această investigație se poate duce și mai departe. Avem un rating pentru produsele vândute, deci se poate investiga și distinge care sunt topicurile de interes pentru produsele cu rating pozitiv și cele cu rating negativ - se pot obține informații valoroase despre cliente.

Figura 10

Figura 11

Se începe cu convenția că toate produsele cu un rating de 4 stele sau, mai mult, sunt considerate produse cu rating pozitiv, iar restul, cu rating negativ. Se separă datele în review-uri pozitive și negative, iar asupra fiecărui set de date se aplică separat același algoritm ca și în exemplele anterioare. În acest caz, au fost asumate doar patru topicuri. Se pot observa în figura 10 topicurile discutate în review-uri pozitive. Același lucru poate fi observat legat de cele negative în Figura 11.

Produsele cu reviewuri pozitive tind să aibă topicul legat de:

Astfel, printr-un algoritm de segmentare, s-a putut observa perspectiva clientelor atât în privința produselor care sunt pe placul lor, cât și a celor care nu sunt.

Concluzie

Când este luat în considerare faptul că majoritatea datelor generate în mod curent sunt nestructurate și o bună parte a acestora este sub formă de text, atât companiile, cât și indivizii se vor confrunta cu mari dificultăți în a încerca să extragă informații utile din acestea. Totuși, cel puțin în cazul datelor de tip text, există anumite unelte care pot ajuta în această privință și, în ciuda dificultăților întâmpinate, se pot obține informații valoroase din aceste date.

Referințe

  1. Cod și imagini

  2. Date NPR

  3. Date Spotify

  4. Date Women's Clothing

  5. Estimări IBM

LANSAREA NUMĂRULUI 129

Experts panel: JavaScript

Luni, 27 Martie, ora 18:00

sediul Accesa

Facebook Meetup StreamEvent YouTube

Conferință

VIDEO: NUMĂRULUI 128

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • Connatix
  • BoatyardX
  • AboutYou
  • Telenav
  • .msg systems
  • Grab
  • Colors in projects

INTERVIURILE TSM