Tekstiliste andmete töötlemine Pythonis TF-IDF abil

Arvutid on numbritega head, tekstiliste andmete puhul mitte nii väga. Üks kõige sagedamini kasutatud tehnilisi andmeid andmete töötlemiseks on TF-IDF. Selles artiklis saame teada, kuidas see töötab ja millised on selle omadused.

Meie intuitsioonist lähtudes arvame, et sagedamini esinevatel sõnadel peaks olema tekstiliste andmete analüüsimisel suurem kaal, kuid see pole alati nii. Sõnad nagu “see”, “tahe” ja “sina” - mida nimetatakse stoppsõnadeks - ilmuvad tekstikorpuses kõige rohkem, kuid neil pole väga tähtsust. Selle asemel aitavad haruldased sõnad tegelikult andmeid eristada ja annavad kaalu juurde.

TF-IDF-i sissejuhatus

TF-IDF tähistab termini sagedust - pöördvõrdelist andmete sagedust. Esiteks saame teada, mida see mõiste matemaatiliselt tähendab.

Term Frequency (tf): annab meile sõnade sageduse igas korpuse dokumendis. See on suhe, mitu korda sõna dokumendis ilmub, võrreldes selle dokumendi sõnade koguarvuga. See suureneb, kui selle sõna esinemiste arv dokumendis suureneb. Igal dokumendil on oma tf.

Andmete pöördsagedus (idf): kasutatakse haruldaste sõnade kaalu arvutamiseks kõigis korpus sisalduvates dokumentides. Korpuses harva esinevate sõnade IDF-skoor on kõrge. Selle annab järgmine võrrand.

Neid kahte kombineerides saame korpuses asuvas dokumendis sõna TF-IDF skoori (w). See on tf ja idf tulemus:

Võtame näite selgema arusaamise saamiseks.

1. lause: autoga sõidetakse maanteel.

2. lause: veoauto sõidetakse maanteel.

Selles näites on iga lause eraldi dokument.

Nüüd arvutame TF-IDF kahe eespool nimetatud dokumendi jaoks, mis esindavad meie korpust.

Ülaltoodud tabelist näeme, et tavaliste sõnade TF-IDF oli null, mis näitab, et need pole olulised. Teisest küljest ei ole „auto”, „veoauto”, „maantee” ja „maantee” TF-IDF null. Nendel sõnadel on suurem tähendus.

Pythoni kasutamine TF-IDF arvutamiseks

Võimaldab nüüd koodil TF-IDF Pythonis nullist koodi. Pärast seda näeme, kuidas saaksime sklearni protsessi automatiseerimiseks kasutada.

Funktsioon computeTF arvutab TF-skoori iga korpuses oleva sõna kohta dokumendi alusel.

Funktsioon computeIDF arvutab korpuse iga sõna IDF-skoori.

Allpool toodud funktsioon computeTFIDF arvutab TF-IDF skoori iga sõna kohta, korrutades TF ja IDF skoori.

Ülaltoodud koodiga dokumentide D1 ja D2 jaoks toodetud väljund on sama, mida me eespool tabelis käsitsi arvutasime.

Selle täieliku juurutamise leiate sellel lingil.

sklearn

Nüüd näeme, kuidas saame seda sklearn abil Pythonis rakendada.

Esiteks impordi TfidfVectorizer sklearn.feature_extraction.text:

Nüüd lähtestame vektoriseerija ja kutsume siis sobivuse ja teisendame selle üle, et arvutada teksti TF-IDF-skoor.

Kapoti all täidab sklearn fit_transform järgmisi funktsioone fit ja transformeerimine. Need leiate GitHubi ametlikust sklearni raamatukogust.

Üks asi, mida ülaltoodud koodis tähele tuleb, on see, et ID-skoori arvutamiseks on n_samples logi asemel 1 lisatud vaid n_samples. See tagab, et sõnu, mille IDF-skoor on null, ei suruta täielikult alla.

Saadud väljund on viltune maatriks, mis normaliseeritakse järgmise tulemuse saamiseks.

Nii nägime, kuidas saame sklearni abil hõlpsalt kodeerida TF-IDF-i ainult 4 reas. Nüüd mõistame, kui võimas TF-IDF on vahend, mille abil töödelda tekstide andmeid korpusest välja. Sklearn TF-IDF kohta lisateabe saamiseks võite kasutada seda linki.

Head kodeerimist!

Täname, et lugesite seda artiklit. Plaksutage kindlasti ja soovitage seda artiklit, kui leiate, et see on kasulik.

Programmeerimise kohta lisateabe saamiseks võite mind jälgida, nii et teid teavitatakse iga kord, kui ma uue postituse tulen.

Terviseks!

Samuti ühendatakse end Twitterites, Linkedinis, Githubis ja Facebookis.