החלטתי לכתוב סדרת מאמרים המסבירים את כל המושגים הבסיסיים והמתקדמים של NLP באמצעות פיתון. אז אם אתה רוצה ללמוד NLP על ידי קריאתו וקידוד, זו תהיה סדרת מאמרים מושלמת עבורך.
כל אחד חדש או אפס ב-NLP יכול להתחיל איתנו ולעקוב אחר סדרת המאמרים הזו.
ספריות בשימוש: Keras, Tensorflow, Scikit learn, NLTK, Glove וכו'.
כל הנושאים יוסברו באמצעות קודים של python ומסגרות למידה עמוקה ולמידת מכונה פופולריות, כגון Sci-kit learning, Keras ו-TensorFlow.
מה זה NLP?
עיבוד שפה טבעית הוא חלק ממדעי המחשב המאפשר למחשבים להבין שפה באופן טבעי, כפי שעושה אדם. זה אומר שהמחשב הנייד יבין רגשות, דיבור, יענה על שאלות, סיכום טקסט וכו'. לא נדבר הרבה על ההיסטוריה וההתפתחות שלו. אם אתה מעוניין, העדיפו את זה קישור.
שלב 1 ניקוי נתונים
נתוני הטקסט הגולמיים מגיעים ישירות לאחר שלא מנקים את המקורות השונים. אנו מיישמים מספר שלבים כדי להפוך את הנתונים לנקים. נתוני טקסט לא מנוקים מכילים מידע חסר תועלת החורג מהתוצאות, כך שזה תמיד הצעד הראשון לנקות את הנתונים. יש ליישם כמה טכניקות עיבוד מקדים סטנדרטיות כדי להפוך את הנתונים לנקות יותר. נתונים מנוקים גם מונעים מדגמים להתאים יתר על המידה.
במאמר זה, נראה את הנושאים הבאים תחת עיבוד טקסט וניתוח נתונים חקרניים.
אני ממיר את נתוני הטקסט הגולמיים למסגרת נתונים של פנדה ומבצע טכניקות שונות לניקוי נתונים.
import pandas as pd text = ['זהו מאמר ה-NLP TASKS שנכתב על ידי ABhishek Jaiswal** ','במאמר זה אני אסביר טכניקות שונות לניקוי נתונים', 'אז הישארו מעודכנים לעוד &&','לא אני לא חושב שהוא הולך ל-usf, הוא גר בסביבה'] df = pd.DataFrame({'text':text})
פלט:
צמצום נמוך יותר
השיטה lower()
ממירה את כל התווים הגדולים לאותיות קטנות ומחזירה.
מריחה lower()
שיטה באמצעות פונקציית למבדה
df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() עבור x ב-x.split()))
הסרת סימני פיסוק
מסיר סימני פיסוק(*,&,%#@#()
) הוא שלב מכריע מכיוון שסימני פיסוק אינם מוסיפים מידע או ערך נוסף לנתונים שלנו. לפיכך, הסרת סימני פיסוק מקטינה את גודל הנתונים; לכן, זה משפר את היעילות החישובית.
שלב זה יכול להיעשות באמצעות שיטת Regex או Replace.
string.punctuation
מחזירה מחרוזת המכילה את כל סימני הפיסוק.
הסרת סימני פיסוק באמצעות ביטויים רגילים:
עצור הסרת מילים
מילים המופיעות לעתים קרובות במשפטים ואין להן משמעות משמעותית במשפטים. אלה אינם חשובים לחיזוי, לכן אנו מסירים מילות עצור כדי להקטין את גודל הנתונים ולמנוע התאמה יתר. הערה: לפני סינון מילות עצירה, הקפד לאותות את הנתונים מכיוון שמילות העצירה שלנו הן באותיות קטנות.
באמצעות ספריית NLTK, אנו יכולים לסנן את מילות העצירה שלנו ממערך הנתונים.
# !pip install nltk import nltk nltk.download('stopwords') from nltk.corpus import stopwords allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x .split() אם אני לא ב-allstopwords))
תיקון איות
לרוב נתוני הטקסט שחולצו בביקורות לקוחות, בלוגים או ציוצים יש סיכוי מסוים לשגיאות כתיב.
תיקון שגיאות כתיב משפר את דיוק המודל.
ישנן ספריות שונות לתיקון שגיאות כתיב, אך השיטה הנוחה ביותר היא להשתמש בכתמת טקסט.
השיטה correct()
עובד על אובייקטים של כתמי טקסט ומתקן את שגיאות הכתיב.
#התקן ספריית textblob !pip התקן textblob מ-textblob ייבוא TextBlob
טוקניזציה
טוקניזציה פירושה פיצול טקסט למילות יחידה בעלות משמעות. ישנם אסימוני משפטים כמו גם מסירי מילים.
Tokenizer למשפטים מפצל פסקה למשפטים בעלי משמעות, בעוד ש-Tokenizer למילים מפצל משפט למילים בעלות משמעות ליחידה. ספריות רבות יכולות לבצע טוקניזציה כמו SpaCy, NLTK ו-TextBlob.
ניתן להבין פיצול משפט על רווח כדי לקבל מילים יחידות בודדות כאסימון.
import nltk mystring = "החיה האהובה עליי היא חתול" nltk.word_tokenize(mystring)
mystring.split(" ")
תְפוּקָה:
['שלי', 'מועדף', 'חיה', 'הוא', 'חתול']
נובע
גזע הוא המרת מילים למילת השורש שלהן תוך שימוש בקבוצת כללים כלשהי ללא קשר למשמעות. כְּלוֹמַר,
- "דגים", "דגים" ו"דיג" נגרמים ל"דגים".
- "משחק", "שיחק", מחזות" מקורם ב"משחק".
- הגזע עוזר להפחית את אוצר המילים ובכך משפר את הדיוק.
הדרך הפשוטה ביותר לביצוע הסכמה היא להשתמש ב-NLTK או בספריית TextBlob.
NLTK מספקת טכניקות שונות, כגון Snowball, PorterStemmer; טכניקה שונה עוקבת אחר סטים שונים של כללים כדי להמיר מילים למילת השורש שלהן.
ייבוא nltk מ-nltk.stem ייבוא PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(word) עבור מילה ב-x.split()]))
"מאמר" מקורו ב"articl
","lives
" - -> "live
לימטיזציה
Lematization היא המרת מילים למילת השורש שלהן באמצעות מיפוי אוצר מילים. הלמטיזציה נעשית בעזרת חלק מהדיבור ומשמעותו; מכאן שהוא לא מייצר מילות שורש חסרות משמעות. אבל הלמטיזציה איטית יותר מהנובעת.
- "טוב, "מוטב, "או"הטוב ביותר"מולבש ל"טוב
- Lematization תמיר את כל המילים הנרדפות למילת שורש אחת. כלומר "מכונית","מכונית", משאית", כלי רכב" משולבים ל"רכב".
- למטיזציה בדרך כלל משיגה תוצאות טובות יותר.
כְּלוֹמַר. leafs
נבע ל. עלים נבעו ל leav
בזמן leafs
, leaves
lemmatized ל leaf
ניתן לבצע Lematization באמצעות NLTK, ספריית TextBlob.
הפוך את כל מערך הנתונים.
שלב 2 ניתוח נתונים חקרני
עד כה ראינו את הטכניקות השונות של עיבוד מוקדם של טקסט שיש לבצע לאחר קבלת הנתונים הגולמיים. לאחר ניקוי הנתונים שלנו, כעת נוכל לבצע ניתוח נתונים חקרני ולחקור ולהבין את נתוני הטקסט.
תדירות מילים בנתונים
ספירת המילים הייחודיות בנתונים שלנו נותנת מושג לגבי המונחים השכיחים והפחות שכיחים של הנתונים שלנו. לעתים קרובות אנו מפילים את ההערות הפחות תכופות כדי להפוך את אימון המודלים שלנו לכלל יותר.
nltk
מספק Freq_dist
כיתה כדי לחשב את תדירות המילים, וזה לוקח שקית של מילים כקלט.
all_words = [] למשפט ב-df['processed']: all_words.extend(sentence.split())
all_words
מכיל את כל המילים הזמינות במערך הנתונים שלנו. לעתים קרובות אנו קוראים לזה אוצר מילים.
ייבוא nltk nltk.Freq_dist(all_words)
זה מציג את המילה כמפתח ואת מספר ההתרחשויות בנתונים שלנו כערך.
ענן Word
Wordcloud הוא הייצוג הציורי של תדירות המילים של מערך הנתונים. WordCloud קל יותר להבנה ונותן מושג טוב יותר לגבי הנתונים הטקסטואליים שלנו.
השמיים
ספריה wordcloud
תנו לנו ליצור ענן מילים בכמה שורות קוד.
ייבוא ספריות:
מ-wordcloud ייבוא WordCloud מ-wordcloud ייבוא STOPWORDS ייבוא matplotlib.pyplot כ-plt
אנו יכולים לצייר ענן מילים באמצעות טקסט המכיל את כל המילים של הנתונים שלנו.
words = [] להודעה ב-df['processed']: words.extend([מילה למילה ב-message.split() אם מילה לא ב-STOPWORDS]) wordcloud = WordCloud(width = 1000, גובה = 500).generate( " ".join(words)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
background_color = 'white'
באמצעות פרמטר זה, נוכל לשנות את צבע הרקע של ענן המילים.collocations = False
שמירה על זה כ-false תתעלם ממילות ה-colocation. קולוקציות הן אותן מילים שנוצרות על ידי אותן מילים המתרחשות יחד. כלומר שימו לב, עבודות בית וכו'.- אנו יכולים להתאים את הגובה והרוחב באמצעות הפרמטרים.
הערות : לפני יצירת ענן המילים תמיד הסר את מילות העצירה.
EndNotes
במאמר זה ראינו טכניקות הכרחיות שונות לעיבוד מוקדם של נתונים טקסטואליים. לאחר ניקוי הנתונים, ביצענו ניתוח נתונים חקרני באמצעות ענן מילים ויצרנו תדר מילים.
במאמר השני בסדרה זו נלמד את הנושאים הבאים:
מקור: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/
- "
- &
- אודות
- תעשיות
- אנליזה
- סביב
- מאמר
- מאמרים
- זמין
- תיק מילים
- יסודות
- בלוגים
- שיחה
- סיכויים
- שינוי
- ניקוי
- ענן
- קוד
- סִמוּל
- הערות
- מדעי מחשב
- מחשבים
- נתונים
- ניתוח נתונים
- למידה עמוקה
- אחר
- לא
- ירידה
- יְעִילוּת
- אנגלית
- וכו '
- אבולוציה
- ראשון
- לסדר
- לעקוב
- ליצור
- מקבל
- לעזור
- עוזר
- היסטוריה
- עמוד הבית
- HTTPS
- רעיון
- חשוב
- שיפור
- בנפרד
- מידע
- IT
- שמירה
- keras
- מפתח
- שפה
- מחשב נייד
- לִלמוֹד
- למידה
- הלמטיזציה
- סִפְרִיָה
- למידת מכונה
- עשייה
- בינוני
- מודל
- יותר
- NLP
- תשלום
- פופולרי
- נבואה
- מספק
- פיתון
- חי
- נתונים גולמיים
- קריאה
- להפחית
- להחליף
- תוצאות
- החזרות
- חוות דעת של לקוחותינו
- כללי
- מדע
- סדרה
- סט
- מידה
- So
- מֶרחָב
- התחלה
- להשאר
- גֶזַע
- מדבר
- טכניקות
- tensorflow
- יַחַד
- טוקניזציה
- נושאים
- הדרכה
- הדרכות
- us
- בְּדֶרֶך כְּלַל
- ערך
- מילים
- עובד
- X
- אפס