• Blog/Știri
  • Pareri
  • Tutoriale
  • Stiri de top
  • Companii
  • Cursuri
  • Seturi de date
  • Educaţie
  • Evenimente (online)
  • Locuri de munca
  • Software
  • Webinarii

Recent am aruncat o privire asupra unui cadru pentru sarcinile de știință a datelor textuale în totalitate. Acum ne concentrăm pe elaborarea unei abordări generalizate pentru a ataca preprocesarea datelor textului, indiferent de sarcina specifică științifică a datelor textuale pe care o aveți în vedere.

datelor

Recent am analizat un cadru pentru abordarea sarcinilor științifice ale datelor textuale. Am păstrat acest cadru suficient de general încât să poată fi util și aplicabil oricărei sarcini de extragere a textului și/sau de procesare a limbajului natural.

Pașii la nivel înalt pentru cadrul au fost după cum urmează:

  1. Colectarea sau asamblarea datelor
  2. Prelucrarea datelor
  3. Explorarea și vizualizarea datelor
  4. Construirea modelului
  5. Evaluarea modelului

Deși un astfel de cadru ar fi, prin natură, iterativ, l-am demonstrat inițial vizual ca un proces destul de liniar. Această actualizare ar trebui să își pună adevărata natură în perspectivă (cu un semn evident la Procesul KDD):


Un cadru de sarcini de date textual revizuit (dar totuși simplu).

În mod clar, orice cadru axat pe preprocesarea datelor textuale ar trebui să fie sinonim cu pasul nr. 2. Extindând acest pas, în special, am avut următoarele informații despre ceea ce ar presupune probabil acest pas:

Mai general, suntem interesați să luăm un corp predeterminat de text și să efectuăm asupra acestuia câteva analize și transformări de bază, pentru a rămâne cu artefacte care vor fi mult mai utile pentru efectuarea ulterioară a unei sarcini analitice mai semnificative. Această sarcină suplimentară ar fi activitatea noastră principală de extragere a textului sau de procesare a limbajului natural.

Deci, așa cum s-a menționat mai sus, se pare că există 3 componente principale ale preprocesării textului:

  • tokenizare
  • normalizare
  • substituire

Pe măsură ce stabilim un cadru pentru abordarea preprocesării, ar trebui să avem în vedere aceste concepte de nivel înalt.

Cadrul de preprocesare a textului


Vom introduce acest cadru conceptual, independent de instrumente. Vom urmări apoi cu o implementare practică a acestor pași data viitoare, pentru a vedea cum ar fi aceștia realizați în ecosistemul Python.


Cadrul de preprocesare a datelor text.

1 - Tokenizarea

Tokenizarea este un pas care împarte șiruri de text mai lungi în bucăți mai mici, sau jetoane. Bucăți de text mai mari pot fi simbolizate în propoziții, propozițiile pot fi simbolizate în cuvinte etc. Prelucrarea ulterioară se efectuează în general după ce o bucată de text a fost tokenizată în mod corespunzător. Tokenizarea este denumită și segmentarea textului sau analiză lexicală. Uneori, segmentarea este utilizată pentru a se referi la defalcarea unei bucăți mari de text în bucăți mai mari decât cuvintele (de exemplu, paragrafe sau propoziții), în timp ce tokenizarea este rezervată procesului de defalcare care are ca rezultat exclusiv cuvinte.

Acest lucru poate suna ca un proces simplu, dar este altceva decât. Cum sunt identificate propozițiile în corpuri mai mari de text? În partea de sus a capului, probabil că spuneți „punctuație de finalizare a propoziției” și puteți chiar, doar pentru o secundă, să credeți că o astfel de afirmație nu este ambiguă.

Sigur, această propoziție este ușor identificată cu câteva reguli de segmentare de bază:

Vulpea brună și rapidă sare peste câinele leneș.

Dar ce zici de acesta:

Dr. Ford nu l-a întrebat pe col. Mustar numele dlui. Câinele lui Smith.

"Despre ce este tot ce-i vorba?" a intrebat dl. Peters.

Și asta sunt doar propoziții. Dar cuvintele? Ușor, nu? Dreapta?

Această studentă cu normă întreagă nu locuiește în locuințe în campus și nu vrea să viziteze Hawai'i.

Ar trebui să fie intuitiv că există diferite strategii nu numai pentru identificarea limitelor segmentelor, ci și ce trebuie făcut atunci când sunt atinse limitele. De exemplu, am putea folosi o strategie de segmentare care identifică (corect) o anumită graniță între jetoanele de cuvinte ca apostrof în cuvânt ea e (o strategie de simbolizare numai pe spațiul alb nu ar fi suficientă pentru a recunoaște acest lucru). Dar am putea alege apoi între strategii concurente, cum ar fi păstrarea punctuației cu o parte a cuvântului sau aruncarea completă. Una dintre aceste abordări pare corectă și nu pare să pună o problemă reală. Dar gândiți-vă la toate celelalte cazuri speciale, doar în limba engleză pe care ar trebui să le luăm în considerare.

Considerație: atunci când segmentăm bucăți de text în propoziții, ar trebui să păstrăm delimitatorii de finalizare a frazelor? Suntem interesați să ne amintim unde s-au încheiat propozițiile?


2 - Normalizare

Înainte de o prelucrare ulterioară, textul trebuie normalizat. Normalizarea se referă, în general, la o serie de sarcini conexe menite să pună tot textul pe un teren de joc egal: convertirea întregului text în același caz (superior sau inferior), eliminarea punctuației, conversia numerelor în echivalentele lor de cuvânt și așa mai departe. Normalizarea pune toate cuvintele pe picior de egalitate și permite procesarea să continue uniform.

Normalizarea textului poate însemna realizarea unui număr de sarcini, dar pentru cadrul nostru vom aborda normalizarea în 3 pași distincti: (1) stemming, (2) lematizare și (3) orice altceva.

Stemming este procesul de eliminare a afixelor (sufixate, prefixe, infixe, circumfixuri) dintr-un cuvânt pentru a obține o stem stem.
alergare → alergare

Lematizarea

Lematizarea este legată de stemming, diferind prin faptul că lematizarea este capabilă să capteze forme canonice bazate pe lema unui cuvânt.

De exemplu, derivarea cuvântului „mai bine” ar eșua să returneze forma de citare (un alt cuvânt pentru lemă); cu toate acestea, lematizarea ar avea ca rezultat următoarele:
mai bine → bine

Ar trebui să fie ușor de văzut de ce implementarea unui stemmer ar fi faza mai puțin dificilă a celor două.

Orice altceva

Un joc inteligent, nu? Stemming-ul și lematizarea sunt părți majore ale efortului de preprocesare a textului și, ca atare, trebuie tratate cu respectul pe care îl merită. Acestea nu sunt simple manipulări de text; se bazează pe înțelegerea detaliată și nuanțată a regulilor și normelor gramaticale.

Există, totuși, numeroși alți pași care pot fi luați pentru a ajuta la plasarea întregului text pe picior de egalitate, dintre care mulți implică idei comparativ simple de substituție sau eliminare. Cu toate acestea, acestea nu sunt mai puțin importante pentru procesul general. Acestea includ:

  • setați toate caracterele la minuscule
  • eliminați numerele (sau convertiți numerele în reprezentări textuale)
  • eliminați punctuația (în general parte a tokenizării, dar totuși merită să aveți în vedere în acest stadiu, chiar și ca confirmare)
  • bandă spațiu alb (de asemenea, în general, face parte din tokenizare)
  • eliminați implicit oprește cuvintele (cuvinte de oprire în engleză generală)

Cuvintele de oprire sunt acele cuvinte care sunt filtrate înainte de prelucrarea ulterioară a textului, deoarece aceste cuvinte contribuie puțin la semnificația generală, dat fiind că acestea sunt în general cele mai frecvente cuvinte într-o limbă. De exemplu, „the”, „și„ și „a", deși toate cuvintele necesare într-un anumit pasaj, nu contribuie în general la înțelegerea conținutului. Ca un exemplu simplu, următoarea panagramă este la fel de lizibilă dacă sunt eliminate cuvintele de oprire:

Vulpea brună și rapidă sare peste câinele leneș.

  • eliminați cuvintele de oprire date (specifice sarcinii)
  • eliminați termenii puțini (totuși, nu întotdeauna este necesar sau util!)

În acest punct, ar trebui să fie clar că preprocesarea textului se bazează în mare măsură pe dicționare, baze de date și reguli pre-construite. Veți fi ușurați să aflați că, atunci când vom întreprinde o sarcină practică de preprocesare a textului în ecosistemul Python în următorul nostru articol, aceste instrumente de asistență pre-construite sunt ușor disponibile pentru utilizarea noastră; nu este nevoie să inventăm propriile noastre roți.


3 - Eliminarea zgomotului

Eliminarea zgomotului continuă sarcinile de substituție ale cadrului. În timp ce primii 2 pași majori ai cadrului nostru (tokenizarea și normalizarea) erau în general aplicabili ca atare pentru aproape orice bucată de text sau proiect (cu excepția deciziei despre care corect implementarea trebuia să fie folosită sau săriți anumiți pași opționali, cum ar fi eliminarea pe termen scurt, care pur și simplu nu se aplică fiecărui proiect), eliminarea zgomotului este o secțiune mult mai specifică sarcinii.

Rețineți din nou că nu avem de-a face cu un proces liniar, ale cărui etape trebuie aplicate exclusiv într-o ordine specificată. Prin urmare, eliminarea zgomotului poate avea loc înainte sau după secțiunile prezentate anterior sau la un moment dat între).

Ce zici de ceva mai concret. Să presupunem că am obținut un corpus de pe web și că acesta este găzduit într-un format web brut. Putem, deci, să presupunem că există șanse mari ca textul nostru să poată fi înfășurat în etichete HTML sau XML. În timp ce această contabilitate pentru metadate poate avea loc ca parte a procesului de colectare sau asamblare a textului (pasul 1 al cadrului nostru de sarcini de date textuale), depinde de modul în care datele au fost achiziționate și asamblate. Această postare anterioară prezintă un proces simplu pentru obținerea datelor brute Wikipedia și construirea unui corpus din acestea. Deoarece avem controlul asupra acestui proces de colectare și asamblare a datelor, tratarea acestui zgomot (într-o manieră reproductibilă) în acest moment are sens.

Dar acest lucru nu este întotdeauna cazul. Dacă corpusul pe care îl folosești întâmplător este zgomotos, trebuie să te descurci cu el. Amintiți-vă că despre sarcinile de analiză se vorbește adesea despre faptul că sunt 80% pregătirea datelor!

Lucrul bun este că potrivirea tiparelor poate fi prietenul tău aici, la fel ca instrumentele software existente construite pentru a face față unor astfel de sarcini de potrivire a tiparelor.

  • eliminați anteturile, subsolurile fișierului text
  • eliminați HTML, XML etc. marcare și metadate
  • extrageți date valoroase din alte formate, cum ar fi JSON sau din baze de date
  • dacă vă temeți de expresii regulate, aceasta ar putea fi partea de preprocesare a textului în care se realizează cele mai grave temeri

După cum vă puteți imagina, granița dintre eliminarea zgomotului și colectarea și asamblarea datelor este neclară și, ca atare, o anumită eliminare a zgomotului trebuie să aibă loc înainte de alte etape de preprocesare. De exemplu, orice text cerut dintr-o structură JSON ar trebui evident eliminat înainte de tokenizare.

În următoarea noastră postare, vom întreprinde o sarcină practică practică de preprocesare a textului, iar prezența zgomotului specific sarcinii va deveni evidentă. și va fi tratat.