Anda mungkin tertanya -tanya apa istilah
pengedaran zipf bermakna. Untuk memahami istilah ini, kita perlu menentukan undang -undang ZIPF. Jangan risau, saya akan cuba memudahkan arahan. Undang -undang ZIPF
Undang -undang Zipf hanya bermaksud: Dalam korpus bahasa semulajadi yang besar, kata -kata yang paling kerap berlaku muncul kira -kira dua kali lebih kerap sebagai kata -kata yang kerap kedua, tiga kali sebagai kata -kata kerap ketiga, empat kali sebagai kata -kata yang kerap keempat, dan sebagainya."The" akaun kira -kira 7% daripada perbendaharaan kata corpus coklat (69,971 daripada lebih daripada 1 juta perkataan). Dan "daripada" menyumbang kira -kira 3.6% daripada korpus (kira -kira separuh daripada "the"). Oleh itu, kita dapat melihat bahawa undang -undang ZIPF terpakai untuk kes ini.
Oleh itu, undang -undang Zipf cuba memberitahu kita bahawa sebilangan kecil item biasanya menduduki sebahagian besar aktiviti yang kita perhatikan. Sebagai contoh, beberapa penyakit (kanser, penyakit kardiovaskular) menyumbang sebahagian besar kematian. Ini juga terpakai kepada kata -kata yang menduduki kebanyakan kekerapan kata -kata dalam karya sastera, serta banyak contoh lain dalam kehidupan kita.
Penyediaan data
Sebelum meneruskan, izinkan saya memperkenalkan anda kepada data eksperimen yang akan kami gunakan dalam tutorial ini. Data kami datang dari versi teks Dracula yang terdapat di laman web Projek Gutenberg.
Selepas memuat turun data dari bahagian sebelumnya, mari kita mula membina skrip python yang akan mencari pengedaran ZIPF data dalam
dracula.txtLangkah pertama ialah menggunakan fungsi untuk membaca fail.
Oleh kerana kita mencari corak (iaitu kata -kata), ungkapan biasa berguna. Kami akan menggunakan Python untuk menghapuskan sebarang perkataan yang bukan kata -kata dalam erti kata tradisional. Sebagai contoh, ia tidak akan sepadan dengan robotics_89, 40_pie_40, dan Bigmango. "Bigmango" tidak sepadan kerana ia bermula dengan pelbagai huruf besar. read()
b[A-Za-z][a-z]{2,9}b
Di Python, ini boleh dinyatakan sebagai:
Sekarang, kita boleh menjalankan gelung untuk mengira kekerapan setiap kejadian:
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
untuk melintasi nilai -nilai supaya kita juga dapat menjejaki kedudukan indeks kata -kata yang berbeza dan bukannya membuang ralat gelung.
Kekerapan perkataan yang paling kerap dibahagikan dengan kekerapan kata -kata lain untuk mengira nisbah mereka. Ini membolehkan kita melihat bagaimana undang -undang Zipf diikuti.
Setelah memahami blok bangunan yang berlainan dalam program, mari kita lihat bagaimana mereka disatukan:
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
di sini saya akan memaparkan sepuluh perkataan pertama yang dikembalikan oleh program dan kekerapannya:
for word in words: count = frequency.get(word,0) frequency[word] = count + 1
Dari pengedaran ZIPF ini, kita dapat mengesahkan undang -undang ZIPF, iaitu beberapa perkataan (kata -kata frekuensi tinggi) mewakili kebanyakan perkataan, seperti "", "dan", "itu", "adalah" dan "untuk".
Dalam tutorial ini, kita melihat bagaimana Python memudahkan pemprosesan konsep statistik seperti undang -undang ZIPF. Terutama apabila berurusan dengan fail teks besar, Python sangat mudah, dan jika kita secara manual mencari pengagihan ZIPF, ia memerlukan banyak masa dan usaha. Seperti yang dapat kita lihat, kita dapat dengan cepat memuat, menghuraikan dan mencari pengagihan ZIPF fail saiz 28 MB. Dan kerana kamus Python, output menyusun juga mudah.
Artikel ini telah dikemas kini dan mengandungi sumbangan dari Monty Shokeen. Monty adalah pemaju stack penuh yang juga suka menulis tutorial dan mempelajari perpustakaan JavaScript baru.
Atas ialah kandungan terperinci Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!