Linux TF-IDF berkomitmen
Saya penasaran apa yang dikerjakan oleh berbagai orang di Linux, jadi saya mencoba mengambil data dari repositori git saat ini untuk melihat apakah saya dapat menariknya dari data pesan komit. Ini tidak termasuk riwayat sebelum mereka beralih ke git, jadi ini hanya dimulai pada tahun 2005, tapi itu masih merupakan bagian sejarah yang layak.
Berikut daftar kata-kata yang paling sering digunakan (dalam pesan penerapan), berdasarkan empat kata yang paling sering melakukan penerapan, dengan pengguna diurutkan berdasarkan jumlah penerapan.
| Pengguna | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| seorang pria | ke | di dalam | dari | Dan | itu |
| tiwai | juga | itu | – | untuk | ke |
| brownies | itu | ke | asoc | untuk | A |
| oleh orang banyak | itu | ke | di dalam | Dan | sparc64 |
Baiklah, jadi kata-kata yang paling sering mereka gunakan adalah to, alsa, theDan the. Ternyata Takashi Iwai (tiwai) sering mengerjakan audio (alsa), dan dengan melihat daftarnya kita dapat melihat bahwa istilah kelima yang paling sering digunakan oleh David Miller (davem) adalah sparc64yang merupakan indikator yang cukup bagus bahwa dia melakukan banyak pekerjaan sparc. Tapi mejanya kebanyakan berisik. Tentu saja orang menggunakannya to, indan kata-kata umum lainnya sepanjang waktu! Memasukkannya ke dalam tabel tidak memberikan informasi apa pun.
Ada sejumlah teknik standar untuk mengatasi hal ini. Salah satunya adalah dengan secara eksplisit menyaring “kata-kata penghenti”, kata-kata umum yang tidak kita pedulikan. Sayangnya, hal tersebut tidak akan berfungsi dengan baik pada kumpulan data ini tanpa intervensi manual. Daftar stop-word standar akan melewatkan hal-hal seperti Signed-off-by Dan ccyang sangat tidak menarik. Kita dapat membuat daftar kata-kata berhenti khusus menggunakan beberapa ambang batas untuk kata-kata umum dalam pesan penerapan, namun ambang batas apa pun yang cukup tinggi untuk menangkap semua gangguan juga akan menangkap istilah-istilah yang umum digunakan namun menarik seperti null Dan driver.
Untungnya, hanya perlu waktu sekitar satu menit untuk melakukannya dengan tangan. Setelah melakukan itu, hasilnya adalah banyak kata teratas yang sama untuk pelaku yang berbeda. Saya tidak akan mereproduksi tabel kata-kata teratas berdasarkan pengimplementasi karena hanya banyak kata yang sama yang diulang berkali-kali. Sebagai gantinya, berikut adalah tabel kata-kata teratas (diberi peringkat berdasarkan jumlah pesan komit yang menggunakan kata tersebut, bukan jumlah mentah), dengan kata-kata berhenti dihapus, yang memiliki data yang sama tanpa gangguan ekstra karena dipecah oleh pengalih.
| Kata | Menghitung |
|---|---|
| pengemudi | 49442 |
| mendukung | 43540 |
| fungsi | 43116 |
| perangkat | 32915 |
| lengan | 28548 |
| kesalahan | 28297 |
| inti | 23132 |
| struktur | 18667 |
| peringatan | 17053 |
| ingatan | 16753 |
| memperbarui | 16088 |
| sedikit | 15793 |
| usb | 14906 |
| serangga | 14873 |
| daftar | 14547 |
| menghindari | 14302 |
| penunjuk | 13440 |
| masalah | 13201 |
| x86 | 12717 |
| alamat | 12095 |
| batal | 11555 |
| CPU | 11545 |
| inti | 11038 |
| pengguna | 11038 |
| media | 10857 |
| membangun | 10830 |
| hilang | 10508 |
| jalur | 10334 |
| perangkat keras | 10316 |
Oke, jadi ada banyak pekerjaan yang harus dilakukan armbanyak hal yang berhubungan dengan memory, null, pointerdll. Namun jika ingin melihat apa yang dikerjakan individu, kita memerlukan sesuatu yang lain.
Ada hal lain yang dapat menghukum kata-kata yang lebih umum tanpa menghilangkannya sepenuhnya. Metrik standar untuk dinormalisasi adalah frekuensi dokumen terbalik (IDF), log(# of messages / # of messages with word). Jadi, daripada mengurutkan berdasarkan jumlah istilah atau frekuensi istilah, mari kita coba mengurutkan berdasarkan (term frequency) * log(# of messages / # of messages with word)yang biasa disebut TF-IDF. Ini memberi kita kata-kata yang digunakan seseorang namun tidak umum digunakan oleh orang lain.
Berikut daftar 40 commiter linux teratas dan kata-kata yang paling umum digunakan, menurut TF-IDF.
| Pengguna | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| seorang pria | mengalihkan | anotasi | tambalan | dari | sifat endian |
| tiwai | juga | hda | kodek | codec | hda-codec |
| brownies | asoc | peta peraturan | mfd | pengatur | wm8994 |
| oleh orang banyak | sparc64 | perdebatan | Kami | membunuh | memperbaiki |
| Gregkh | cc | memanggungkan | usb | menghapus | gulungan |
| homo | v4l/dvb | media | pada | adalah | em28xx |
| tglx | x86 | genirq | irq | mempersiapkan | dibagikan |
| mempermanis | komedi | memanggungkan | rapi | menghapus | subperangkat |
| mingo | x86 | dijadwalkan | jalan samping | melodi | Petrus |
| joe | tidak perlu | tambalan pemeriksaan | mengubah | pr_ | menggunakan |
| tj | grup c | tidak | yang | dia | antrian kerja |
| letal | sh | ke atas | mati | sh64 | membunuh |
| bahu.lin | pengatur | asoc | mengubah | dengan demikian | menggunakan |
| hch | xfs | sgi-pv | sgi-modid | menghapus | Kami |
| sachin.kamat | berulang | menghapus | lebih sederhana | batal | of_match_ptr |
| bzolnier | ide | shtylyov | sergei | disetujui oleh | disebabkan |
| alan | tty | gma500 | Kami | ke atas | dan131x |
| ralf | mips | memperbaiki | membangun | ip27 | dari |
| johannes.berg | mac80211 | iwlwifi | dia | cfg80211 | sayawlagn |
| trond.myklebust | nfs | nfsv4 | sunrpc | nfsv41 | memastikan |
| shemminger | langit2 | net_device_ops | skge | mengubah | menjembatani |
| tempat tidur | statis | sia-sia | global | tambalan | membuat |
| keluarga Hartley | komedi | memanggungkan | menghapus | subperangkat | pengemudi |
| jg1. Dia | lebih sederhana | rilis_perangkat | tidak perlu | membersihkan | dengan demikian |
| KMA | cc | peringatan | memperbaiki | fungsi | tambalan |
| rmk+kernel | lengan | disetujui oleh | lebih tepatnya | diuji oleh | Kami |
| daniel.vetter | drm/i915 | ditinjau oleh | v2 | Wilson | dokter hewan |
| bskeggs | drm/baru | drm/nv50 | drm/nvd0/disp | pada | chipset |
| puncak | galbraith | kinerja | Weisbecker | eranian | Stephane |
| khali | manusia | i2c | pengemudi | pengemudi | Jadi |
| Torvald | linux | melakukan | hanya | kembali | cc |
| kris | drm/i915 | Kami | gpu | Dengan Bugz | sementara |
| neilb | md | susunan | Jadi | itu | Kami |
| Lars | asoc | pengemudi | iio | jelek | dari |
| kaber | filter bersih | koneksi | jadwal_net | nf_conntrack | memperbaiki |
| rumah tinggal | kunci | lebih tepatnya | kunci | itu | uapi |
| heiko.carstens | s390 | sejak | panggilan | dari | memperbaiki |
| epidermis | ruang nama | pengguna | hallyn | sersan | sistem |
| setiap | v4l/dvb | ivtv | media | v4l2 | mengubah |
Itu lebih seperti itu. Beberapa kata umum masih muncul — ini akan ditingkatkan dengan kata-kata berhenti manual untuk menghapus kata-kata seperti itu cc Dan of. Namun secara umum, kita dapat melihat siapa yang mengerjakan apa. Takashi Iwai (tiwai) menghabiskan banyak waktu di hda land dan mengerjakan codec, David S. Miller (davem) menghabiskan banyak waktu di sparc64, Ralf Baechle (ralf) banyak bekerja dengan mips, dll. Dan sekali lagi, mungkin menarik bahwa beberapa, tapi tidak semua, orang cc orang lain begitu banyak sehingga muncul di daftar 5 teratas mereka bahkan setelah mendapat penalti IDF.
Kita juga dapat menggunakan ini untuk melihat distribusi dari apa yang dibicarakan orang dalam pesan commit mereka vs. seberapa sering mereka melakukan commit.

Grafik ini menampilkan orang-orang pada sumbu x dan penggunaan kata relatif (diberi peringkat berdasarkan TF-IDF) pada sumbu y. Pada sumbu x, pelaku yang paling sering ada di sebelah kiri dan yang paling jarang ada di sebelah kanan. Pada sumbu y, poin akan lebih tinggi jika pelaku tersebut menggunakan kata tersebut null lebih sering, dan lebih rendah jika orang tersebut menggunakan kata tersebut null lebih jarang.

Relatif, hampir tidak ada yang mengerjakan POSIX kepatuhan. Anda sebenarnya dapat menghitung masing-masing orang yang menyebutkannya POSIX dalam pesan komit.
Ini adalah inti postingan blog di mana Anda mungkin mengharapkan semacam ringkasan, atau setidaknya poin yang tidak jelas. Maaf. Tidak beruntung. Saya melakukan ini karena TF-IDF adalah salah satu dari jutaan konsep yang disajikan dalam kursus Penambangan Kumpulan Data Masif yang sedang berjalan, dan saya tahu konsep ini tidak akan bertahan kecuali saya menulis beberapa kode.
Jika Anda benar-benar harus mengambil kesimpulan, TF-IDF terkadang berguna dan sangat mudah diterapkan. Anda harus menggunakannya ketika Anda harus menggunakannya (ketika Anda ingin melihat kata-kata apa yang membedakan dokumen/orang yang berbeda satu sama lain) dan Anda tidak boleh menggunakannya ketika Anda tidak boleh menggunakannya (ketika Anda ingin melihat apa yang umum pada dokumen/orang). Akhir.
Saya lebih banyak bereksperimen dengan blogging dengan menghabiskan lebih sedikit waktu per posting dan hanya mengeluarkan banyak hal dalam waktu 30-90 menit. Silakan beri tahu saya jika ada sesuatu yang tidak jelas atau sekadar salah. Dengan serius. Saya membahas hal ini dari waktu ke waktu, tapi itu sebagian besar karena data, tabel, dan bug di Julia, bukan karena koreksi. Saya yakin ada bug!
Terima kasih kepada Leah Hanson karena telah menemukan banyak bug penulisan di postingan ini dan kepada Zack Maril atas percakapannya tentang cara menampilkan perubahan seiring waktu di masa mendatang.
