Importanța „calitate versus cantitate” a datelor în analitica și scanarea rețelelor sociale este mare (adică, gunoi intră, gunoi iese). De fapt, multe detalii ale modelelor de analitica sunt definite de tipurile și calitatea datelor. Natura datelor va influența, de asemenea, baza de date și hardware-ul utilizat.
Desigur, datele textuale nestructurate pot fi foarte zgomotoase (adică, murdare). Prin urmare, curățarea datelor este un domeniu important în analitica rețelelor sociale. Procesul de curățare a datelor poate implica eliminarea erorilor tipografice sau validarea și corectarea valorilor în raport cu o listă cunoscută de entități. Mai exact, textul poate conține cuvinte scrise greșit, citate, coduri de program, spații suplimentare, întreruperi de linie suplimentare, caractere speciale, cuvinte străine etc. Așadar, pentru a obține un minerit de text de înaltă calitate, este necesar să se efectueze curățarea datelor la primul pas: verificarea ortografică, eliminarea dublurilor, găsirea și înlocuirea textului, schimbarea majusculei textului, eliminarea spațiilor și caracterele care nu se imprimă din text, fixarea numerelor, a semnelor numerice și a valorilor anormale, fixarea datelor și orelor, transformarea și rearanjarea coloanelor, rândurilor și a datelor din tabel, etc.
După ce am examinat tipurile și sursele de date brute, acum trecem la „curățarea” datelor pentru a elimina informațiile incorecte, inconsecvente sau lipsă. Înainte de a discuta despre strategiile de curățare a datelor, este esențial să identificăm posibilele probleme de date (Narang 2009):
- Date lipsă — când o informație există, dar nu a fost inclusă din orice motiv în datele brute furnizate. Probleme apar cu: a) date numerice atunci când „golul” sau o valoare lipsă este înlocuită în mod eronat cu „zero”, care este apoi luat (de exemplu) drept preț actual; și b) date textuale atunci când un cuvânt lipsă (cum ar fi „nu”) poate schimba întregul sens al unei propoziții.
- Date incorecte — atunci când o informație este indicată incorect (cum ar fi erori zecimale în datele numerice sau cuvântul greșit în datele textuale) sau este interpretată incorect (cum ar fi un sistem care presupune că valoarea unei monede este în $ când de fapt este în £ sau presupunând că textul este în engleză SUA, nu în engleza britanică).
- Date inconsecvente — atunci când o informație este specificată în mod inconsecvent. De exemplu, în cazul datelor numerice, aceasta ar putea folosi un amestec de formate pentru date: 2012/10/14, 14/10/2012 sau 10/14/2012. Pentru datele text, ar putea fi la fel de simplu ca: folosirea aceluiași cuvânt într-un amestec de cazuri, amestecarea de engleză și franceză într-un mesaj text sau plasarea de ghilimele latine într-un text altfel în engleză.
Curățirea datelor
O abordare tradițională a curățării datelor text este de a „trage” datele într-o foaie de calcul sau tabel asemănător unei foi de calcul și apoi reformatați textul. De exemplu, Google Refine este o aplicație desktop autonomă pentru curățarea și transformarea datelor în diferite formate. Expresiile de transformare sunt scrise în limbajul proprietar Google Refine Expression (GREL) sau JYTHON (o implementare a limbajului de programare Python scris în Java). Figura 11 ilustrează curățarea textului.
cleanseText(blogPost) {
// Remove any links from the blog post:
blogPost[‘text’] = handleLinks(blogPost[‘text’])
// Remove unwanted ads inserted by Google Ads etc. within the main text body:
blogPost[‘text’] = removeAds(blogPost[‘text’])
// Normalize contracted forms, e.g. isn’t becomes is not (so that negation words
are explicitly specified).
blogPost[‘text’] = normalizeContractedForms(blogPost[‘text’])
// Remove punctuation; different logic rules should be specified for each
punctuation mark
// You might not want to remove a hyphen surrounded by alphanumeric characters.
// However you might want to remove a hyphen surrounded by at least one white
space.
blogPost[‘text’] = handlePunctuation(blogPost[‘text’])
// Tokenize the text on white space, i.e. create an array of words from the
original text.
tokenizedText = tokenizeStatusOnWhiteSpace(blogPost[‘text’])
// For each word, attempt to normalize it if it doesn’t belong to the WordNet
lexical database.
for word in tokenizedStatus:
if word not in WordNet dictionary:
word = normalizeAcronym(word)
// Further Natural Language Processing, POS Tagging
...
return tokenizedText
}
(Pseudo-cod de curățare text)
Referințe
- Narang RK (2009) Inside the black box. Hoboken, New Jersey Nuti G, Mirghaemi M, Treleaven P, Yingsaeree C (2011) Algorithmic trading. IEEE Comput 44(11):61-69 Pang B, Lee L (2008) Opinion mining and sentiment analysis. Found Trends Inf Retr 2(1-2):1-135
Sursa: Bogdan Batrinca, Philip C. Treleaven, „Social media analytics: a survey of techniques, tools and platforms„, AI & Soc (2015) 30:89-116 DOI 10.1007/s00146-014-0549-4, Creative Commons Attribution License. Traducere și adaptare Nicolae Sfetcu
Lasă un răspuns