Tunneanalyysi on yllättävän tarkka, ja voit rakentaa tämän yksinkertaisen Tkinter-sovelluksen kokeillaksesi sitä.
Tunneanalyysi on tekniikka tekstin emotionaalisen sävyn määrittämiseksi. Se käyttää luonnollisen kielen käsittelyä, tekstianalyysiä ja laskennallista lingvistiikkaa. Tämän avulla voit luokitella sävyn positiiviseen, neutraaliin tai negatiiviseen. Tämä auttaa yrityksiä analysoimaan asiakkaiden palautetta sosiaalisessa mediassa, arvosteluissa ja kyselyissä.
Näiden tietojen perusteella he voivat strategoida tuotteitaan ja kampanjoitaan tehokkaammin. Opi rakentamaan sovelluksen, joka tunnistaa tunteet Pythonin avulla.
Tkinter ja vaderSentiment -moduuli
Tkinterin avulla voit luoda työpöytäsovelluksia. Se tarjoaa erilaisia widgetejä, kuten painikkeita, tarroja ja tekstiruutuja, jotka helpottavat sovellusten kehittämistä. Voit käyttää Tkinteriä rakentaa sanakirjasovellus Pythonissa tai siihen Luo oma uutissovellus, joka päivittää tarinoita API: n kautta.
Asenna Tkinter avaamalla pääte ja suorittamalla:
pip asennus tkinter
VADER (Valence Aware Dictionary and sEntiment Reasoner) on sanasto- ja sääntöpohjainen mielialan analysointityökalu. Se on valmiiksi rakennettu ja sitä käytetään laajasti Luonnollisen kielen käsittely. Algoritmissa on joukko ennalta määritettyjä sanoja, jotka edustavat erilaisia tunteita. Lauseesta löytyneiden sanojen perusteella tämä algoritmi antaa napaisuuspisteet. Tämän pistemäärän avulla voit tunnistaa, onko lause positiivinen, negatiivinen vai neutraali.
Asenna vaderSentiment-paketti Pythonissa suorittamalla tämä päätekomento:
pip install vaderSentiment
Kuinka tunnistaa tunteita Pythonilla
Löydät tämän malliohjelman lähdekoodin siitä GitHub-arkisto.
Aloita tuomalla tarvittavat VADER- ja tkinter-moduulit:
alkaen vaderSentiment.vaderSentiment tuonti SentimentIntensityAnalyzer
alkaen tkinter tuonti *
Määritä sitten funktio, Tyhjennä(). Sen tarkoitus on tyhjentää syöttökentät, jonka voit tehdä käyttämällä poistaa() menetelmä aloitusindeksistä 0 lopulliseen indeksiin, LOPPU.
defTyhjennä():
negatiivinenField.delete(0, END)
neutraaliField.delete(0, END)
positiivinenField.delete(0, END)
overallField.delete(0, END)
textArea.delete(1.0, END)
Määritä funktio, detect_sentiment(). Käytä get-menetelmää hakeaksesi sanaan kirjoitetun sanan tekstialue widget ja luo objekti SentimentIntensityAnalyzer luokkaa. Käytä polarity_scores menetelmää hakemaasi tekstiin ja käytä VADER-tunneanalyysialgoritmia.
defdetect_sentiment():
lause = textArea.get("1.0", "loppu")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (lause)
Poimi negatiivinen mielipidepiste ('neg') ja muunna se prosentteiksi. Syötä saatu arvo kohtaan negatiivinen kenttä alkaen paikasta 10. Toista sama prosessi neutraalille tunteelle ('neu') ja positiivinen mielialapiste ("pos").
merkkijono = str (sentiment_dict['neg'] * 100)
negatiivinenField.insert(10, merkkijono)merkkijono = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, merkkijono)
merkkijono = str (sentiment_dict["pos"] * 100)
positiivinenField.insert(10, merkkijono)
Pura sen yhdistelmäavaimen arvo, joka sisältää lauseen yleisen tunnelman. Jos arvo on suurempi tai yhtä suuri kuin 0,05, lause on positiivinen. Jos arvo on pienempi tai yhtä suuri kuin -0,05, lause on negatiivinen. Arvoille -0,05 ja 0,05 välillä se on neutraali lauseke.
jos sentiment_dict['yhdiste'] >= 0.05:
merkkijono = "positiivinen"
elif sentiment_dict['yhdiste'] <= - 0.05:
merkkijono = "Negatiivinen"
muu:
merkkijono = "Neutraali"
Syötä tulos kohtaan kokonaiskenttä sijoituksesta 10:
overallField.insert(10, merkkijono)
Alusta graafinen käyttöliittymäikkuna Tkinterin avulla. Aseta ikkunan taustaväri, otsikko ja mitat. Luo viisi etikettiä. Yksi, joka pyytää käyttäjää syöttämään lauseen ja muut neljä eri tunteita varten. Aseta pääelementti, johon haluat sijoittaa sen, teksti, jonka sen tulee näyttää, ja fontityylit sekä taustaväri.
Määritä teksti-widget vastaanottaaksesi lauseen käyttäjältä. Aseta pääelementti, johon haluat sijoittaa sen, sen korkeus, leveys, kirjasintyylit ja taustaväri, jonka sillä pitäisi olla. Määritä kolme painiketta. Yksi suorittaa mielialan analyysin, yksi tyhjentääksesi sisällön käytön jälkeen ja yksi sulkeaksesi sovelluksen. Aseta sen pääikkuna, teksti, jonka sen tulee näyttää, sen taustaväri, kirjasintyylit ja komento, jonka haluat suorittaa napsautettaessa.
jos __nimi__ == "__main__":
gui = Tk()
gui.config (tausta="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Label (gui, text="Syötä lauseesi:",font="arial 15 lihavoitu",bg="#A020f0")
negatiivinen = Label (gui, text="Negatiivinen prosenttiosuus: ", font="Arial 15",bg="#A020f0")
neutraali = Label (gui, text="Nuetral Percentage:", font="Arial 15",bg="#A020f0")
positiivinen = Label (gui, text="Positiivinen prosenttiosuus: ", font="Arial 15",bg="#A020f0")
yleinen = Label (gui, text="Yleinen lause on:", font="Arial 15",bg="#A020f0")
textArea = Teksti (gui, korkeus=5, leveys=25, font="Arial 15", bg="#cf9fff")
check = Painike (gui, teksti="Tarkista mieliala", bg="#e7305b", font =("arial", 12, "lihavoitu"), komento=detect_sentiment)
clear = Painike (gui, teksti="Asia selvä", bg="#e7305b", font =("arial", 12, "lihavoitu"), komento=clearAll)
Exit = Painike (gui, text="Poistu", bg="#e7305b", font =("arial", 12, "lihavoitu"), komento=exit)
Määritä neljä syöttökenttää eri tunteille ja aseta niiden ylätason ikkuna ja kirjasintyylit.
negatiivinenField = Syöte (gui, font="Arial 15")
neutralField = Syöte (gui, font="Arial 15")
pozitívField = Syöte (gui, font="Arial 15")
overallField = Syöte (gui, font="Arial 15")
Käytä ruudukkoa, joka koostuu 13 rivistä ja kolmesta sarakkeesta yleiseen asetteluun. Sijoita eri elementit, kuten tarrat, tekstinsyöttökentät ja painikkeet eri riveihin ja sarakkeisiin kuvan mukaisesti. Lisää tarvittava pehmuste tarvittaessa. Aseta tahmea vaihtoehto "W" tasaa tekstit sen solussa vasemmalle.
enterText.grid (rivi=0, sarake=2, pady=15)
textArea.grid (rivi=1, sarake=2, padx=60, pady=10, tahmea=W)
check.grid (rivi=2, sarake=2, pady=10)
negatiivinen.grid (rivi=3, sarake=2, pady=10)
neutraali.grid (rivi=5, sarake=2, pady=10)
positiivinen.ruudukko (rivi=7, sarake=2, pady=10)
overall.grid (rivi=9, sarake=2, pady=5)
negatiivinenField.grid (rivi=4, sarake=2)
neutraaliField.grid (rivi=6, sarake=2)
positiivinenField.grid (rivi=8, sarake=2)
overallField.grid (rivi=10, sarake=2, pady=10)
clear.grid (rivi=11, sarake=2, pady=10)
Exit.grid (rivi=12, sarake=2, pady=10)
The mainloop() -toiminto käskee Pythonia suorittamaan Tkinterin tapahtumasilmukan ja kuuntelemaan tapahtumia, kunnes suljet ikkunan.
gui.mainloop()
Laita kaikki koodi yhteen ja voit käyttää tuloksena olevaa lyhyttä ohjelmaa tunteiden havaitsemiseen.
Tunteiden havaitsemisen tulos Pythonilla
Kun tämä ohjelma suoritetaan, VADER Sentiment Analyzer -ikkuna tulee näkyviin. Kun testasimme ohjelmaa positiivisella lauseella, se havaitsi sen 79% tarkkuudella. Kun kokeiltiin neutraalia ja negatiivista lausetta, ohjelma pystyi havaitsemaan 100 %:n ja 64,3 %:n tarkkuudella.
Vaihtoehtoja tunneanalyysille Pythonilla
Voit käyttää Textblobia tunteiden analysointiin, puhetunnisteiden merkitsemiseen ja tekstin luokitteluun. Siinä on johdonmukainen API ja sisäänrakennettu tunteiden polariteettiluokitus. NLTK on kattava NLP-kirjasto, joka sisältää laajan valikoiman työkaluja tekstianalyysiin, mutta jolla on jyrkkä oppimiskäyrä aloittelijoille.
Yksi suosituimmista työkaluista on IBM Watson NLU. Se on pilvipohjainen, tukee useita kieliä, ja siinä on ominaisuuksia, kuten kokonaisuuden tunnistus ja avainten purkaminen. GPT: n käyttöönoton myötä voit käyttää OpenAI API: ta ja integroida sen sovelluksiisi saadaksesi tarkat ja luotettavat asiakkaiden tunteet reaaliajassa.