Satu masalah di situs web seperti ini adalah Anda sering tidak tahu apakah Anda berbicara dengan pria atau wanita. Namun, Anda telah menemukan teknik NLP sederhana yang dapat Anda gunakan untuk menentukan jenis kelamin penulis sebuah teks.
Teori
Sekitar 38,1% huruf yang digunakan dalam bahasa Inggris adalah vokal [a, e, i, o, u] (lihat Referensi di bawah ini, y
BUKAN vokal dalam hal ini). Oleh karena itu, kami akan mendefinisikan kata apa saja yang setidaknya 40% vokal sebagai kata feminin , dan kata apa pun yang kurang dari 40% vokal sebagai kata maskulin .
Di luar definisi ini kita juga dapat menemukan maskulinitas atau feminitas suatu kata. Biarkan C menjadi jumlah konsonan dalam kata, dan V menjadi jumlah vokal:
- Jika sebuah kata itu feminin, itu feminininya
1.5*V/(C+1)
. - Jika sebuah kata adalah maskulin, itu adalah maskulinitas
C/(1.5*V+1)
.
Misalnya, kata catch
itu maskulin. Maskulinitasnya adalah 4/(1.5*1+1) = 1.6
. Kata phone
itu feminin. Kewanitaannya adalah 1.5*2/(3+1) = .75
.
Algoritma
Untuk mengetahui jenis kelamin penulis dari sebuah teks, kita mengambil jumlah maskulinitas dari semua kata maskulin (Σ M ), dan jumlah feminitas dari semua kata feminin (Σ F ). Jika Σ M > Σ F , kami telah menentukan bahwa penulisnya adalah laki-laki. Kalau tidak, kami telah menentukan bahwa penulisnya adalah perempuan.
Tingkat kepercayaan diri
Akhirnya, kita membutuhkan tingkat kepercayaan. Jika Anda telah menentukan bahwa penulisnya adalah wanita, tingkat kepercayaan diri Anda adalah . Jika Anda telah menentukan bahwa penulisnya adalah laki-laki, tingkat kepercayaannya adalah .2*ΣF/(ΣF+ΣM)-1
2*ΣM/(ΣF+ΣM)-1
Memasukkan
Input adalah bagian dari teks bahasa Inggris termasuk tanda baca. Semua kata dipisahkan oleh spasi (Anda tidak perlu khawatir tentang baris baru atau spasi tambahan). Beberapa kata memiliki karakter non-huruf di dalamnya, yang perlu Anda abaikan (seperti "Anda"). Jika Anda menemukan kata yang semuanya non-huruf (seperti "5" atau "!!!") abaikan saja. Setiap input akan mengandung setidaknya satu kata yang dapat digunakan.
Keluaran
Anda perlu menghasilkan M atau F tergantung pada jenis kelamin yang Anda pikir penulis, diikuti oleh tingkat kepercayaan diri Anda.
Contohnya
There's a snake in my boot.
- Jenis kelamin + maskulinitas / feminitas setiap kata:
[M1.0,F1.5,F.75,F.75,M2.0,F1.0]
- Σ M = 3.0, Σ F = 4.0
- CL:
2*4.0/(4.0+3.0)-1
= .143 - Keluaran:
F .143
- Jenis kelamin + maskulinitas / feminitas setiap kata:
Frankly, I don't give a ^$*.
[M2.4,F1.5,M1.2,F1.0,F1.5]
, Σ M = 3.6, Σ F = 4.0, CL:2*4.0/(4.0+3.6)-1
= .053, Output:F .053
I'm 50 dollars from my goal!
[F.75,M1.25,M1.2,M2.0,F1.0]
, Σ M = 4.45, Σ F = 1.75, CL:2*4.45/(4.45+1.75)-1
= .435, Output:M .435
Referensi
sumber
Jawaban:
Python 3 ,
320317307286253189 byteCobalah online!
Tidak Disatukan :
sumber
map(e,s.split())
alih-alih[e(x)for x in s.split()]
return'FM'[h>S],2*max(S,h)/(S+h)-1
di akhirsum(map(s.count,chars))
, menurunkan jumlah Anda hingga 253 byteRubi , 154 + 1 = 155 byte
Menggunakan
-n
bendera.Cobalah online!
sumber
Python 3 ,
205 201 197192 byte-Terima kasih @ Nilai Tinta untuk 4 byte:
lower()
sebelumnya-Terima kasih @Coty Johnathan Saxman untuk 9 byte: Kondisi terbalik
.4*(v+c)>v
dan-~c
untuk(c+1)
cek konsonan berbasis bithift bukan literal.Python 3 , 192 byte
Cobalah online!
sumber
for i in input().lower().split():
sehingga Anda hanya perlu mencari'aeiou'
jumlah vokal dan memotonglower
panggilan dalam jumlah konsonan.C (gcc) ,
237229222216 byteBoy I meskipun saya bisa melakukan ini dalam BANYAK KURANG BYTES ...
Cobalah online!
sumber
Gangguan Umum, 404 byte
Baik verbose lisp tua!
Cobalah online!
Versi tidak disatukan:
sumber