Analisis sentimen secara mengejutkan akurat dan Anda dapat membuat aplikasi Tkinter sederhana ini untuk mencobanya.

Analisis sentimen adalah teknik untuk menentukan nada emosional dari sebuah teks. Ini menggunakan pemrosesan bahasa alami, analisis teks, dan linguistik komputasi. Dengan menggunakan ini, Anda dapat mengklasifikasikan nada menjadi positif, netral, atau negatif. Ini membantu bisnis menganalisis umpan balik pelanggan di media sosial, ulasan, dan survei.

Berdasarkan data ini, mereka dapat menyusun strategi produk dan kampanye mereka dengan lebih efektif. Pelajari bagaimana Anda dapat membuat aplikasi yang mendeteksi sentimen menggunakan Python.

Modul Tkinter dan vaderSentiment

Tkinter memungkinkan Anda membuat aplikasi desktop. Ini menawarkan berbagai widget seperti tombol, label, dan kotak teks yang memudahkan pengembangan aplikasi. Anda dapat menggunakan Tkinter untuk membangun aplikasi kamus dengan Python atau untuk buat aplikasi berita Anda sendiri yang memperbarui cerita melalui API.

instagram viewer

Untuk menginstal Tkinter, buka terminal dan jalankan:

pip instal tkinter

VADER (Valence Aware Dictionary and sEntiment Reasoner) adalah leksikon dan alat analisis sentimen berbasis aturan. Ini dibuat sebelumnya dan banyak digunakan di Pemrosesan Bahasa Alami. Algoritme memiliki sekumpulan kata yang telah ditentukan sebelumnya yang mewakili sentimen berbeda. Berdasarkan kata-kata yang ditemukan dalam kalimat, algoritma ini memberikan skor polaritas. Dengan menggunakan skor ini, Anda dapat mengidentifikasi apakah kalimat tersebut positif, negatif, atau netral.

Untuk menginstal paket vaderSentiment dengan Python, jalankan perintah terminal ini:

pip install vaderSentiment

Cara Mendeteksi Sentimen Menggunakan Python

Anda dapat menemukan kode sumber program contoh ini di dalamnya repositori GitHub.

Mulailah dengan mengimpor modul VADER dan tkinter yang diperlukan:

dari vaderSentiment.vaderSentiment impor Penganalisis Intensitas Sentimen
dari tkinter impor *

Kemudian tentukan fungsi, Bersihkan semua(). Tujuannya adalah untuk menghapus kolom input, yang dapat Anda lakukan dengan menggunakan menghapus() metode dari indeks awal 0 ke indeks akhir, AKHIR.

defBersihkan semua():
bidang negatif.hapus(0, AKHIR)
bidangnetral.delete(0, AKHIR)
bidangpositif.hapus(0, AKHIR)
overallField.delete(0, AKHIR)
textArea.hapus(1.0, AKHIR)

Tentukan fungsi, deteksi_sentimen(). Gunakan metode get untuk mengambil kata yang dimasukkan di textArea widget dan buat objek dari Penganalisis Intensitas Sentimen kelas. Menggunakan polarity_scores pada teks yang Anda ambil dan terapkan algoritme analisis sentimen VADER.

defdetect_sentiment():
kalimat = textArea.get("1.0", "akhir")
sentimen_obj = SentimentIntensityAnalyzer()
sentimen_dict = sentimen_obj.polarity_scores (kalimat)

Ekstrak skor sentimen negatif ('neg') dan mengubahnya menjadi persentase. Masukkan nilai yang diperoleh di bidang negatif mulai dari posisi 10. Ulangi proses yang sama untuk skor sentimen netral ('baru') dan skor sentimen positif ('pos').

 string = str (sentiment_dict['neg'] * 100)
bidangnegatif.insert(10, rangkaian)

string = str (sentiment_dict['baru'] * 100)
neutralField.insert(10, rangkaian)

string = str (sentiment_dict['pos'] * 100)
bidangpositif.insert(10, rangkaian)

Ekstrak nilai kunci majemuk yang berisi keseluruhan sentimen kalimat. Jika nilainya lebih besar atau sama dengan 0,05, kalimatnya positif. Jika nilainya kurang dari atau sama dengan -0,05, kalimatnya negatif. Untuk nilai antara -0,05 dan 0,05, itu adalah pernyataan netral.

jika sentimen_dict['menggabungkan'] >= 0.05:
tali = "Positif"
elif sentimen_dict['menggabungkan'] <= - 0.05:
tali = "Negatif"
kalau tidak:
tali = "Netral"

Masukkan hasilnya ke dalam bidang keseluruhan dari posisi 10:

 overallField.insert(10, rangkaian)

Inisialisasi jendela antarmuka pengguna grafis menggunakan Tkinter. Atur warna latar belakang, judul, dan dimensi jendela. Buat lima label. Satu yang meminta pengguna untuk memasukkan kalimat dan empat lainnya untuk sentimen yang berbeda. Tetapkan elemen induk tempat Anda ingin menempatkannya, teks yang harus ditampilkan, dan gaya font yang harus dimiliki bersama dengan warna latar belakang.

Tentukan widget Teks untuk menerima kalimat dari pengguna. Tetapkan elemen induk tempat Anda ingin meletakkannya, tinggi, lebar, gaya font, dan warna latar belakang yang harus dimiliki. Tentukan tiga tombol. Satu untuk melakukan analisis sentimen, satu untuk menghapus konten setelah digunakan, dan satu lagi untuk keluar dari aplikasi. Atur jendela induknya, teks yang harus ditampilkan, warna latar belakangnya, gaya font, dan perintah yang ingin Anda jalankan saat diklik.

jika __nama__ == "__utama__":
gui = Tk()
gui.config (latar belakang="#A020f0")
gui.judul("Penganalisis Sentimen VADER")
gui.geometri("400x700")
enterText = Label (gui, teks="Masukkan Kalimat Anda:",font="arial 15 tebal",bg="#A020f0")
negatif = Label (gui, teks="Persentase Negatif:", jenis huruf="arial 15",bg="#A020f0")
netral = Label (gui, teks="Persentase Nuetral:", jenis huruf="arial 15",bg="#A020f0")
positif = Label (gui, teks="Persentase Positif:", jenis huruf="arial 15",bg="#A020f0")
keseluruhan = Label (gui, teks="Keseluruhan Kalimatnya adalah:", jenis huruf="arial 15",bg="#A020f0")
textArea = Teks (gui, tinggi=5, lebar=25, jenis huruf="arial 15", bg="#cf9fff")
centang = Tombol (gui, teks="Periksa Sentimen", bg="#e7305b", jenis huruf=("Arial", 12, "berani"), perintah=deteksi_sentimen)
clear = Tombol (gui, teks="Jernih", bg="#e7305b", jenis huruf=("Arial", 12, "berani"), perintah=clearAll)
Keluar = Tombol (gui, teks="KELUAR", bg="#e7305b", jenis huruf=("Arial", 12, "berani"), perintah=keluar)

Tentukan empat bidang Entri untuk sentimen yang berbeda dan atur jendela induk dan gaya fontnya.

 negativeField = Entri (gui, font="arial 15")
neutralField = Entri (gui, font="arial 15")
positiveField = Entri (gui, font="arial 15")
overallField = Entri (gui, font="arial 15")

Gunakan kisi yang terdiri dari 13 baris dan tiga kolom untuk tata letak keseluruhan. Tempatkan berbagai elemen seperti label, bidang entri teks, dan tombol di berbagai baris dan kolom seperti yang digambarkan. Tambahkan bantalan yang diperlukan di mana pun diperlukan. Mengatur lengket pilihan untuk "W" untuk menyelaraskan teks di dalam selnya.

 enterText.grid (baris=0, kolom=2, padi=15)
textArea.grid (baris=1, kolom=2, padx=60, padi=10, lengket=W)
check.grid (baris=2, kolom=2, padi=10)
negatif.grid (baris=3, kolom=2, padi=10)
neutral.grid (baris=5, kolom=2, padi=10)
positive.grid (baris=7, kolom=2, padi=10)
overall.grid (baris=9, kolom=2, padi=5)
negativeField.grid (baris=4, kolom=2)
neutralField.grid (baris=6, kolom=2)
positiveField.grid (baris=8, kolom=2)
overallField.grid (baris=10, kolom=2, padi=10)
clear.grid (baris=11, kolom=2, padi=10)
Keluar.grid (baris=12, kolom=2, padi=10)

Itu mainloop() fungsi memberi tahu Python untuk menjalankan loop acara Tkinter dan mendengarkan acara sampai Anda menutup jendela.

 gui.mainloop()

Gabungkan semua kode dan Anda dapat menggunakan program pendek yang dihasilkan untuk mendeteksi sentimen.

Output Mendeteksi Sentimen Menggunakan Python

Saat menjalankan program ini, jendela VADER Sentiment Analyzer akan muncul. Saat kami menguji program pada kalimat positif, ia mendeteksinya dengan akurasi 79%. Saat mencoba pernyataan netral dan pernyataan negatif, program mampu mendeteksi dengan akurasi masing-masing 100% dan 64,3%.

Alternatif Analisis Sentimen Menggunakan Python

Anda dapat menggunakan Textblob untuk analisis sentimen, penandaan ucapan, dan klasifikasi teks. Ini memiliki API yang konsisten dan pengklasifikasi polaritas sentimen bawaan. NLTK adalah perpustakaan NLP komprehensif yang berisi berbagai alat untuk analisis teks tetapi memiliki kurva belajar yang curam untuk pemula.

Salah satu alat yang paling populer adalah IBM Watson NLU. Ini berbasis cloud, mendukung beberapa bahasa, dan memiliki fitur seperti pengenalan entitas dan ekstraksi kunci. Dengan diperkenalkannya GPT, Anda dapat menggunakan OpenAI API dan mengintegrasikannya ke dalam aplikasi Anda untuk mendapatkan sentimen pelanggan yang akurat dan andal secara real time.