Sunteți pe pagina 1din 13

Ministerul Educației și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor

RAPORT
Lucrare de laborator nr.3
la cursul „Procesarea Informației”
Tema:„ Extragerea Informației”

A efectuat : st. gr. MI-202


A verificat: asis. univ. Toma Olga

Chișinău 2021
Cuprins
Introducere............................................................................................................................................2
1 Sarcina................................................................................................................................................3
Concluzie...............................................................................................................................................7
Bibliografie...........................................................................................................................................8
Anexa 1.................................................................................................................................................9
Anexa 2.................................................................................................................................................9
Anexa 3.................................................................................................................................................9
Anexa 4...............................................................................................................................................10

1
INTRODUCERE

Domeniul de studiu al acestei lucrări este extragerea informației (IE).


Extragerea informațiilor (IE) este sarcina de a extrage automat informații structurate din
documente nestructurate și/sau semistructurate care pot fi citite de mașină și din alte surse
reprezentate electronic. În majoritatea cazurilor, această activitate se referă la procesarea textelor în
limbajul uman prin intermediul procesării limbajului natural (NLP). Activitățile recente în
procesarea documentelor multimedia, cum ar fi adnotarea automată și extragerea conținutului din
imagini/audio/video/documente ar putea fi văzute ca extragerea de informații.
Extragerea informațiilor este o parte a unui puzzle mai mare care se ocupă de problema
conceperii metodelor automate de gestionare a textului, dincolo de transmiterea, stocarea și afișarea
acestuia. Disciplina de regăsire a informațiilor a dezvoltat metode automate, de obicei cu aromă
statistică, pentru indexarea colecțiilor mari de documente și clasificarea documentelor. O altă
abordare complementară este cea a procesării limbajului natural (NLP) care a rezolvat problema
modelării procesării limbajului uman cu un succes considerabil atunci când se ține cont de
amploarea sarcinii. În ceea ce privește atât dificultatea, cât și accentul, IE se ocupă de sarcini între
atât IR(Recuperarea Informației), cât și NLP. În ceea ce privește intrarea, IE presupune existența
unui set de documente în care fiecare document urmează un șablon, adică descrie una sau mai multe
entități sau evenimente într-o manieră care este similară cu cele din alte documente, dar diferă în
detalii.
Scopul lucrării este de a extrage unele elemente dintr-un fragment de text cu ajutorul unui
script, analizarea elementelor, crearea concluziilor, cât și propunerea spre rezolvare a
problemelor/erorilor întâlnite.

2
1 Sarcina

1. De extras toate elementele textului care pot fi Entități Numite (Named Entities) cu ajutorul unui
script mic cu expresii regulate. Candidații posibili sunt: cuvintele ce se încep cu majuscula;
câteva cuvinte la rând care se încep cu majusculă, abrevieri din câteva majuscule, cifre, etc.
2. De clasificat fragmentele extrase utilizând resursele care puteți găsi: listele localităților,
organizațiilor, numelor persoanelor, etc. O resursă posibilă ar fi
https://ec.europa.eu/jrc/en/language-technologies/jrc-names
3. De analizat cuvintele ce au rămas neclasificate în baza resurselor disponibile.
4. De extras și de analizat cuvintele învecinate cu entitățile numite. Care din cuvintele acestea pot
fi utilizate ca indicatori pentru clasificarea entităților numite?
5. De creat un script în care de încadrat extragerea entităților numite, clasificarea lor cu ajutorul
listelor speciale și cuvintelor indicatoare.
6. De evaluat rezultatele extragerii calculând Precision și Recall.
7. De analizat rezultatul obținut de script și de gândit ce se mai poate de făcut pentru a mări
Precision și Recall.
8. De scris concluzia în care :
a. De prezentat rezultatele obținute (Precision, Recall)
b. De analizat erorile extragerii și clasificării.
c. De propus căile de rezolvare a problemelor evidențiate.

3
1. În figura 1.1 sunt reprezentate o parte din elementele textului ce sunt Entități Numite cu ajutorul
unui script Python. Entitățile selectate sunt cuvintele ce se încep cu majusculă. Pentru a vizualiza
codul, vezi Anexa 1.

Figura 1. 1 Entitățile selectate

2. În continuare se vor clasifica fragmentele extrase utilizând o resursă în engleză și alta în română.

Figura 1. 2 Resursa în engleză cu entitățile selectate[]

În figura 1.2 sunt evidențiate elementele selectate. S-au evidențiat entități ca organizații, date,
numere ordinale și cardinale. Pentru realizarea acestui task a fost folosită biblioteca open-source
spaCy, care a fost importată la începutul scriptului. Pentru a vizualiza textul se rulează codul
(scriptul din Anexa 2) și se deschide în browser localhost:5000.

4
Figura 2. 2 Resursa în română cu entitățile selectate

Următoarea resursă este deja în română după câte se observă în figura 1.3. Aici pe lângă
entitatea Organizații, întâlnită în textul anterior, sunt prezente și altele, cum ar fi: persoane, entități
geo-politice (GPE). Pentru ca scriptul să detecteze în ce limbă e textul au fost folosite diferite
visualizers pentru entități. Pentru limba engleză s-a folosit următoarea linie de cod -
spacy.load("en_core_web_sm") și pentru limba română - spacy.load("ro_core_news_sm"). Codul
corespunzător fiind atașat în Anexa 3.

3. Resursa în limba engleză nu conține elemente care nu au fost neclasificate conform entităților
disponibile, pe când în cea română s-a omis de câteva ori selectarea elementului ”Gusinski” și
”Putin” pentru entitatea Persoană.
4. Unele cuvinte învecinate cu entitățile din textul englez sunt: the, of, by, to, identifies, names, for.
Consider că pentru determinarea numerelor ordinare din text, identificatorul a fost prepoziția
”the”, iar pentru determinarea datei ”March 2016” prepoziția ”by”.
Cuvintele învecinate pentru resursa română sunt: la, arestat, în, din, al lui, din, al. În cazul dat
ca indetificatori pentru determinarea entității GPE au fost prepozițiile ”la, din, al”, iar pentru
persoane ”al lui”.
5. Scriptul din Anexa 4 generează listă cu entități extrase din resursa în engleză, acestea pot fi
vizualizate în figura următoare.

Figura 5. 1 Lista cu entități clasificate


Iar pentru română se pot vizualiza în figura 5.2.

Figura 5. 2 Lista cu entități clasificate

5
6. Calcularea Precision și Recall pentru entitatea Date în resursa engleză:

True positive – 2 (September 2011, March 2016)


False positive – 2 (every day, daily )
False negative – 0

True positive 2 1
Precision= = = =0.5
(True positive+ False positive) (2+2) 2

True positive 2 2
Recall= = = =1
(True positive+ Falsenegative) (2+ 0) 2

Calcularea Precision și Recall pentru entitatea Persoană în resursa română:

True positive – 2 (Vladimir Gusinski, Vladimir Putin )


False positive – 2 (proprietarul, apropiat)
False negative – 3 (Gusinski, Gusinski, Putin)

True positive 2 1
Precision= = = =0.5
(True positive+ False positive) (2+2) 2

True positive 2 1
Recall= = = =0,33
(True positive+ False negative) (2+3) 3

7. Precision și Recall sunt în compromis. În mod obișnuit, creșterea preciziei pentru un anumit
model implică scăderea recall-ului. Dacă se va crește precizia, s-ar putea ajunge la prețul scăderii
recall-ului și invers. Va trebui să se găsească echilibrul care funcționează pentru cazuri
individuale de utilizare. Îmbunătățirea recall-ului implică adăugarea de date text etichetate mai
precis la eticheta în cauză. În acest caz, trebuie de căutat textele care ar trebui să fie în această
etichetă, dar care nu sunt sau au fost prezise incorect (False Negative). Cel mai bun mod de a
găsi aceste tipuri de texte este să fie căutate folosind cuvinte cheie.

6
Concluzie

În cadrul laboratorului respectiv s-a lucrat cu extragerea informației din două resurse paralel,
una în română și alta în limba engleză. Cu ajutorul diferitor scripturi și în special al bibliotecii
spaCy, s-au clasificat diferite entități, precum Persoane, Organizații, Locații, Date. S-au efectuat
calcule pe baza la calitatea extragerii automate a acestor elemente și anume s-a calculat Precision și
Recall. În cele din urmă, concluzionez că Precision are valoarea 0.5/0.5 (valorile calculelor ambelor
resurse), iar Recall-ul – 1/0.33. Sa observat careva erori la entitatea Person, selectând și elemente
abstracte, precum ”proprietarul”, dar acest element a fost clasificat incorect, deoarece nu semnifică o
persoană exactă. De asemenea, au fost elemente neclasificate, dar care ar fi trebuit.
Spre rezolvarea acestor probleme aș propune ca pentru selectarea persoanelor spre exemplu,
să se ia în considerație litera majusculă de la începutul cuvântului. La fel, pentru determinarea
datelor să se ia în considerare prezența cifrelor. Cuvintele cheie tot au un rol deosebit în clasificarea
entităților, de aceea ele nu trebuie evitate.
Concluzionez că lucrul în cadrul laboratorului a fost unul eficient și interesant.

7
Bibliografie
1. https://en.wikipedia.org/wiki/Information_extraction
2. https://ec.europa.eu/jrc/en/language-technologies/jrc-names
3. https://help.monkeylearn.com/en/articles/2173839-improving-recall-and-precision

8
Anexa 1:
def count_capital_words(filename):                                              
    count = 0                                                                    
    with open(filename, 'r') as fp:                                              
        for line in fp:                                                          
            for word in line.split():                                            
                if word.istitle():                                              
                    print(word)                                                  
                    count += 1                                                  
    return count

print(count_capital_words('16Jun2000baniafaceri.txt'))

9
Anexa 2
import spacy
from spacy import displacy

text = "The first release of JRC-Names (September 2011) contained the names of about 205,000
distinct known entities, plus about the same amount of variant spellings for these entities.
Additionally, it contains a number of morphologically inflected variants of these names. By March
2016, the resource has grown to 307,000 distinct entities plus 333,000 variants. EMM identifies new
names every day, and a file including also the most recently found names and name spellings is
available for daily download from the JRC's web pages. "

nlp = spacy.load("en_core_web_sm")
doc = nlp(text)
displacy.serve(doc, style="ent")

Anexa 3
import spacy

from spacy import displacy

text = " Nu rideti cind bate crivatul! Marti, la Moscova, a fost arestat Vladimir Gusinski. Numele
sau e prea putin cunoscut in Romania. Gusinski este proprietarul celebrului post de televiziune NTV
din Rusia si al altor citorva canale media. Gusinski nu era un apropiat al lui Vladimir Putin.
Dimpotriva. A criticat mereu razboiul din Cecenia, care l-a adus pe Putin in fotoliul de presedinte
al Rusiei, si nu s-a sfiit sa-i puna probleme de cite ori a avut ocazia. "

nlp = spacy.load("ro_core_news_sm")

doc = nlp(text)

displacy.serve(doc, style="ent")

Anexa 4
import spacy
10
from spacy import displacy

from collections import Counter

import en_core_web_sm

nlp = en_core_web_sm.load()

doc = nlp("The first release of JRC-Names (September 2011) contained the names of about 205,000
distinct known entities, plus about the same amount of variant spellings for these entities.
Additionally, it contains a number of morphologically inflected variants of these names. By March
2016, the resource has grown to 307,000 distinct entities plus 333,000 variants. EMM identifies new
names every day, and a file including also the most recently found names and name spellings is
available for daily download from the JRC's web pages.")

print([(X.text, X.label_) for X in doc.ents])

import spacy

from spacy import displacy

from collections import Counter

import en_core_web_sm

nlp = en_core_web_sm.load()

doc = nlp("Nu rideti cind bate crivatul! Marti, la Moscova, a fost arestat Vladimir Gusinski. Numele
sau e prea putin cunoscut in Romania. Gusinski este proprietarul celebrului post de televiziune NTV
din Rusia si al altor citorva canale media. Gusinski nu era un apropiat al lui Vladimir Putin.
Dimpotriva. A criticat mereu razboiul din Cecenia, care l-a adus pe Putin in fotoliul de presedinte
al Rusiei, si nu s-a sfiit sa-i puna probleme de cite ori a avut ocazia.")

print([(X.text, X.label_) for X in doc.ents])

11
12

S-ar putea să vă placă și