Numărarea frecvenței cuvântului într-un fișier utilizând Python

V-ați întrebat vreodată despre o modalitate rapidă de a spune la ce se concentrează un document? Care este subiectul principal? Permiteți-mi să vă dau acest truc simplu. Listează cuvintele unice menționate în document, apoi verifică de câte ori a fost menționat fiecare cuvânt (frecvență). În acest fel, vă puteți da indicații despre ceea ce se referă în principal la document. Dar asta nu ar funcționa cu ușurință manual, așa că avem nevoie de un proces automat, nu-i așa??

Da, un proces automatizat va face acest lucru mult mai ușor. Să vedem cum putem lista diferitele cuvinte unice într-un fișier text și să verificăm frecvența fiecărui cuvânt folosind Python.

Fișier de test

În acest tutorial, vom folosi test.txt ca fișier de testare. Continuați și descărcați-o, dar nu o deschideți! Să facem un mic joc. Textul din interiorul acestui fișier de testare este unul din tutorialele mele de la Envato Tuts +. Pe baza frecvenței cuvintelor, să ghicim care dintre tutorialele mele textul a fost extras.

Sa inceapa jocul!

Expresii obisnuite

Deoarece vom aplica un model în jocul nostru, trebuie să folosim expresii regulate (regex). Dacă "expresii regulate" este un termen nou pentru tine, aceasta este o definiție frumoasă de la Wikipedia:

O secvență de caractere care definesc un model de căutare, în principal pentru a fi utilizate în potrivirea modelului cu șiruri de caractere sau potrivirea șirului, adică operațiuni de tipul "găsi și înlocui". Conceptul a apărut în anii 1950, când matematicianul american Stephen Kleene a formalizat descrierea unei limbi obișnuite și a intrat în uz comun cu utilitarele de procesare a textului Unix ed, editor și grep, un filtru

Dacă doriți să aflați mai multe despre expresiile regulate înainte de a vă deplasa înainte în acest tutorial, puteți să vedeți celelalte expresii regulate ale tutorialului meu în Python și reveniți din nou pentru a continua acest tutorial.

Construirea programului

Să lucrăm pas cu pas la construirea acestui joc. Primul lucru pe care dorim să-l facem este să stocăm fișierul text într-o variabilă de șir.

document_text = deschide ('test.txt', 'r') text_string = document_text.read ()

Acum, pentru a face ca aplicarea expresiei noastre regulate să fie mai ușoară, să transformăm toate literele din documentul nostru în litere mici, utilizând funcția lower (), după cum urmează:

text_string = document_text.read () mai mic ()

Să scriem expresia noastră regulată care să returneze toate cuvintele cu numărul de caractere din interval [3-15]. Începând de la 3 va ajuta la evitarea cuvintelor pe care nu le putem interesa în numărarea frecvenței lor dacă, de, în, etc., și cuvinte care au o lungime mai mare decât 15 ar putea să nu fie cuvinte corecte. Expresia regulată pentru un astfel de model arată după cum urmează:

\ B [a-z]  3,15 \ b

\ b Seamana cu cuvânt limită. Pentru mai multe informații despre limita cuvântului, puteți verifica acest tutorial.

Expresia regulată de mai sus poate fi scrisă după cum urmează:

match_pattern = re.search (r '\ b [a-z] 3,15 \ b', text_string) 

Deoarece vrem să mergem prin mai multe cuvinte din document, putem folosi Găsiți toate funcţie:

Returnează toate meciurile care nu se suprapun model în şir, ca o listă de șiruri de caractere. şir este scanat de la stânga la dreapta și meciurile sunt returnate în ordinea găsită. Dacă unul sau mai multe grupuri sunt prezente în model, returnați o listă de grupuri; aceasta va fi o listă de tupluri dacă modelul are mai multe grupuri. Meciurile goale sunt incluse în rezultat, cu excepția cazului în care atinge începutul unui alt meci.

În acest moment, vrem să găsim frecvența fiecărui cuvânt din document. Conceptul potrivit de utilizat aici este dicționarul Python, deoarece avem nevoie valoare cheie perechi, unde cheie este cuvânt, si valoare reprezintă frecvență au apărut în document.

Presupunând că am declarat un dicționar gol frecvență = , paragraful de mai sus ar arăta după cum urmează:

pentru cuvânt în match_pattern: count = frequency.get (word, 0) frecvență [word] = count + 1

Acum putem vedea cheile folosind:

frequency_list = frequency.key ()

În cele din urmă, pentru a obține cuvântul și frecvența sa (de câte ori a apărut în fișierul text), putem face următoarele:

pentru cuvinte în frequency_list: cuvinte de imprimare, frecvență [cuvinte]

Să punem programul împreună în secțiunea următoare și să vedem cum arată ieșirea.

Punându-le pe toți împreună

După ce am discutat programul pas cu pas, să vedem cum arată programul:

import (re) importare frecvență șir =  document_text = deschis ('test.txt', 'r') text_string = document_text.read ()  cuvânt în cuvântul match_pattern: count = frequency.get (cuvânt, 0) frecvență [word] = count + 1 frequency_list = frequency.key () pentru cuvinte în frequency_list:

Dacă rulați programul, ar trebui să obțineți ceva de genul:

Să ne întoarcem la jocul nostru. Trecând prin frecvențele cuvântului, ce credeți că este vorba despre fișierul de testare (cu conținut din tutorialul meu Python) despre? 

(Sugestie: verificați cuvântul cu frecvența maximă).

Cod