ניתוח סנטימנטים מדויק באופן מפתיע ואתה יכול לבנות את אפליקציית Tkinter הפשוטה הזו כדי לנסות אותה.

ניתוח סנטימנטים הוא טכניקה לקביעת הטון הרגשי של קטע טקסט. הוא משתמש בעיבוד שפה טבעית, ניתוח טקסט ובלשנות חישובית. באמצעות זה אתה יכול לסווג את הטון לחיובי, ניטרלי או שלילי. זה עוזר לעסקים לנתח משוב לקוחות על מדיה חברתית, ביקורות וסקרים.

בהתבסס על נתונים אלה, הם יכולים ליצור אסטרטגיה של המוצרים והקמפיינים שלהם בצורה יעילה יותר. למד כיצד אתה יכול לבנות יישום שמזהה סנטימנטים באמצעות Python.

מודול Tkinter and vaderSentiment

Tkinter מאפשר לך ליצור יישומי שולחן עבודה. הוא מציע מגוון של ווידג'טים כמו לחצנים, תוויות ותיבות טקסט שמקלים על פיתוח אפליקציות. אתה יכול להשתמש ב-Tkinter כדי לבנות אפליקציית מילון ב-Python או ל צור אפליקציית חדשות משלך שמעדכנת כתבות באמצעות ממשק API.

כדי להתקין את Tkinter, פתח מסוף והפעל:

pip להתקין tkinter

VADER (Valence Aware Dictionary and SEntiment Reasoner) הוא כלי ניתוח סנטימנטים מבוסס לקסיקון וכללים. זה בנוי מראש ובשימוש נרחב ב עיבוד שפה טבעית. לאלגוריתם יש קבוצה של מילים מוגדרות מראש המייצגות סנטימנטים שונים. בהתבסס על המילים שנמצאו במשפט, אלגוריתם זה נותן ציון קוטביות. באמצעות ציון זה, תוכל לזהות אם המשפט חיובי, שלילי או ניטרלי.

instagram viewer

כדי להתקין את חבילת vaderSentiment ב-Python, הפעל את פקודת הטרמינל הזו:

pip להתקין vaderSentiment

כיצד לזהות סנטימנטים באמצעות Python

אתה יכול למצוא את קוד המקור של תוכנית לדוגמה זו בה מאגר GitHub.

התחל על ידי ייבוא ​​מודולי VADER ו-tkinter הדרושים:

מ vaderSentiment.vaderSentiment יְבוּא SentimentIntensity Analyzer
מ tkinter יְבוּא *

לאחר מכן הגדר פונקציה, clearAll(). מטרתו היא לנקות את שדות הקלט, מה שאתה יכול לעשות באמצעות לִמְחוֹק() שיטה ממדד התחלתי של 0 למדד הסופי, סוֹף.

defברורהכל():
negativeField.delete(0, END)
neutralField.delete(0, END)
positiveField.delete(0, END)
overallField.delete(0, END)
textArea.delete(1.0, END)

הגדר פונקציה, detect_sentiment(). השתמש בשיטת get כדי להביא את המילה שהוזנה ב- textArea יישומון וצור אובייקט של SentimentIntensity Analyzer מעמד. להשתמש ב ציוני_קוטביות שיטה על הטקסט שהבאת והחל את אלגוריתם ניתוח הסנטימנטים של VADER.

defלזהות_סנטימנט():
משפט = textArea.get("1.0", "סוֹף")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (משפט)

חלץ את ציון הסנטימנט השלילי ('שלילה') והמיר אותו לאחוז. הכנס את הערך שהתקבל ב- שדה שלילי החל מעמדה 10. חזור על אותו תהליך עבור ציון הסנטימנט הנייטרלי ('נוי') וציון הסנטימנט החיובי('פוזי').

 string = str (sentiment_dict['שלילה'] * 100)
negativeField.insert(10, מחרוזת)

string = str (sentiment_dict['נוי'] * 100)
neutralField.insert(10, מחרוזת)

string = str (sentiment_dict['פוזי'] * 100)
positiveField.insert(10, מחרוזת)

חלץ את הערך של המפתח המורכב המכיל את הסנטימנט הכולל של המשפט. אם הערך גדול או שווה ל-0.05, המשפט חיובי. אם הערך קטן או שווה ל-0.05, המשפט שלילי. עבור ערכים בין -0.05 ל-0.05, זוהי אמירה ניטרלית.

אם סנטימנט_dict['מתחם'] >= 0.05:
מחרוזת = "חִיוּבִי"
אליף סנטימנט_dict['מתחם'] <= - 0.05:
מחרוזת = "שלילי"
אַחֵר:
מחרוזת = "ניטראלי"

הכנס את התוצאה ב- שדה כללי מהמקום העשירי:

 overallField.insert(10, מחרוזת)

אתחול חלון ממשק משתמש גרפי באמצעות Tkinter. הגדר את צבע הרקע, הכותרת ומידות החלון. צור חמש תוויות. אחד שמבקש מהמשתמש להזין משפט וארבעה האחרים עבור הסנטימנטים השונים. הגדר את רכיב האב שאתה רוצה למקם אותו, את הטקסט שהוא צריך להציג, ואת סגנונות הגופן שהוא צריך להיות יחד עם צבע הרקע.

הגדר ווידג'ט טקסט כדי לקבל את המשפט מהמשתמש. הגדר את רכיב האב שאתה רוצה למקם אותו, הגובה, הרוחב, סגנונות הגופן וצבע הרקע שהוא צריך להחזיק. הגדר שלושה כפתורים. אחד לביצוע ניתוח הסנטימנט, אחד לניקוי התוכן לאחר השימוש, ואחד ליציאה מהאפליקציה. הגדר את חלון האב שלו, את הטקסט שהוא אמור להציג, את צבע הרקע שלו, סגנונות הגופן והפקודה שברצונך לבצע בעת לחיצה.

אם __שם__ == "__רָאשִׁי__":
gui = Tk()
gui.config (רקע="#A020f0")
gui.title("מנתח סנטימנטים של VADER")
gui.geometry("400x700")
enterText = תווית (gui, text="הזן את המשפט שלך:",גופן="אריאל 15 מודגש",bg="#A020f0")
שלילי = תווית (gui, text="אחוז שלילי:", גופן="אריאל 15",bg="#A020f0")
neutral = תווית (gui, text="אחוז ניטרלי: ", גופן="אריאל 15",bg="#A020f0")
חיובי = תווית (gui, text="אחוז חיובי:", גופן="אריאל 15",bg="#A020f0")
overall = Label (gui, text="המשפט הכולל הוא:", גופן="אריאל 15",bg="#A020f0")
textArea = טקסט (gui, גובה=5, רוחב=25, גופן="אריאל 15", bg="#cf9fff")
check = Button (gui, text="בדוק סנטימנט", bg="#e7305b", גופן=("אריאל", 12, "נוֹעָז"), command=detect_sentiment)
clear = לחצן (gui, text="ברור", bg="#e7305b", גופן=("אריאל", 12, "נוֹעָז"), command=clearAll)
יציאה = כפתור (gui, טקסט="יְצִיאָה", bg="#e7305b", גופן=("אריאל", 12, "נוֹעָז"), פקודה=יציאה)

הגדר ארבעה שדות כניסה עבור הסנטימנטים השונים וקבע את סגנונות החלון והגופן שלהם.

 negativeField = Entry (gui, font="אריאל 15")
neutralField = כניסה (gui, font="אריאל 15")
positiveField = כניסה (gui, font="אריאל 15")
overallField = Entry (gui, font="אריאל 15")

השתמש ברשת המורכבת מ-13 שורות ושלוש עמודות עבור הפריסה הכוללת. מקם את האלמנטים השונים כגון תוויות, שדות הזנת טקסט וכפתורים בשורות ובעמודות שונות כפי שמתואר. הוסף ריפוד נחוץ בכל מקום שנדרש. הגדר את דָבִיק אפשרות ל "W" ליישר לשמאל את הטקסטים בתוך התא שלו.

 enterText.grid (שורה=0, עמודה=2, פאדי=15)
textArea.grid (שורה=1, עמודה=2, padx=60, פאדי=10, דביק=W)
check.grid (שורה=2, עמודה=2, פאדי=10)
negative.grid (שורה=3, עמודה=2, פאדי=10)
neutral.grid (שורה=5, עמודה=2, פאדי=10)
positive.grid (שורה=7, עמודה=2, פאדי=10)
overall.grid (שורה=9, עמודה=2, פאדי=5)
negativeField.grid (שורה=4, עמודה=2)
neutralField.grid (שורה=6, עמודה=2)
positiveField.grid (שורה=8, עמודה=2)
overallField.grid (שורה=10, עמודה=2, פאדי=10)
clear.grid (שורה=11, עמודה=2, פאדי=10)
Exit.grid (שורה=12, עמודה=2, פאדי=10)

ה mainloop() הפונקציה אומרת לפייתון להפעיל את לולאת האירועים של Tkinter ולהקשיב לאירועים עד שתסגור את החלון.

 gui.mainloop()

חבר את כל הקוד יחד ותוכל להשתמש בתוכנית הקצרה שהתקבלה כדי לזהות סנטימנטים.

הפלט של זיהוי סנטימנטים באמצעות Python

בעת הפעלת תוכנית זו, מופיע חלון VADER Sentiment Analyzer. כשבדקנו את התוכנית על משפט חיובי, היא זיהתה אותו בדיוק של 79%. בניסיון של אמירה ניטרלית ושלילי, התוכנית הצליחה לזהות בדיוק של 100% ו-64.3% בהתאמה.

חלופות לניתוח סנטימנטים באמצעות Python

אתה יכול להשתמש ב-Textblob לניתוח סנטימנטים, תיוג דיבור וסיווג טקסט. יש לו API עקבי ומסווג קוטביות סנטימנט מובנה. NLTK היא ספריית NLP מקיפה המכילה מגוון רחב של כלים לניתוח טקסט אך בעלת עקומת למידה תלולה למתחילים.

אחד הכלים הפופולריים ביותר הוא IBM Watson NLU. הוא מבוסס ענן, תומך במספר שפות ויש לו תכונות כמו זיהוי ישויות וחילוץ מפתחות. עם הצגת GPT, אתה יכול להשתמש ב- OpenAI API ולשלב אותו באפליקציות שלך כדי לקבל סנטימנטים מדויקים ואמינים של לקוחות בזמן אמת.