ฉันได้ตัดสินใจที่จะเขียนชุดบทความที่อธิบายพื้นฐานทั้งหมดจนถึงแนวคิดขั้นสูงของ NLP โดยใช้ python ดังนั้น หากคุณต้องการเรียนรู้ NLP โดยการอ่านและเขียนโค้ด นี่จะเป็นบทความชุดที่สมบูรณ์แบบสำหรับคุณ
ใครก็ตามที่เป็นมือใหม่หรือศูนย์ใน NLP สามารถเริ่มต้นกับเราและติดตามบทความชุดนี้
ห้องสมุดที่ใช้: Keras, Tensorflow, Scikit เรียนรู้, NLTK, ถุงมือ ฯลฯ
หัวข้อทั้งหมดจะได้รับการอธิบายโดยใช้โค้ดของ python และเฟรมเวิร์กการเรียนรู้เชิงลึกและการเรียนรู้ของเครื่องที่ได้รับความนิยม เช่น sci-kit learn, Keras และ TensorFlow
NLP คืออะไร
การประมวลผลภาษาธรรมชาติเป็นส่วนหนึ่งของวิทยาการคอมพิวเตอร์ที่ช่วยให้คอมพิวเตอร์เข้าใจภาษาอย่างเป็นธรรมชาติเหมือนที่บุคคลทำ ซึ่งหมายความว่าแล็ปท็อปจะเข้าใจความรู้สึก คำพูด ตอบคำถาม สรุปข้อความ ฯลฯ เราจะไม่พูดถึงประวัติศาสตร์และวิวัฒนาการของมันมากนัก หากสนใจ เชิญทางนี้ ลิงค์
ขั้นตอนที่ 1 การล้างข้อมูล
ข้อมูลข้อความดิบมาโดยตรงหลังจากไม่ได้ล้างแหล่งที่มาต่างๆ เราใช้หลายขั้นตอนเพื่อทำให้ข้อมูลสะอาด ข้อมูลข้อความที่ไม่ได้ล้างมีข้อมูลที่ไม่มีประโยชน์ซึ่งเบี่ยงเบนผลลัพธ์ ดังนั้นจึงเป็นขั้นตอนแรกในการล้างข้อมูลเสมอ ควรใช้เทคนิคการประมวลผลล่วงหน้ามาตรฐานบางอย่างเพื่อทำให้ข้อมูลสะอาดขึ้น ข้อมูลที่สะอาดยังช่วยป้องกันไม่ให้แบบจำลองมากเกินไป
ในบทความนี้ เราจะเห็นหัวข้อต่อไปนี้ภายใต้การประมวลผลข้อความและการวิเคราะห์ข้อมูลเชิงสำรวจ
ฉันกำลังแปลงข้อมูลข้อความดิบเป็น data frame ของ pandas และใช้เทคนิคการล้างข้อมูลต่างๆ
นำเข้าแพนด้าเป็นข้อความ pd = ['นี่คือบทความ NLP TASKS ที่เขียนโดย ABhishek Jaiswal** ','ในบทความนี้ ฉันจะอธิบายเทคนิคต่างๆ ในการทำความสะอาดข้อมูล', 'โปรดคอยติดตามข้อมูลเพิ่มเติม &&','ไม่ ฉันไม่คิดว่าเขาจะไปที่ usf เขาอาศัยอยู่รอบ ๆ '] df = pd.DataFrame({'text':text})
Output:
ตัวพิมพ์เล็ก
วิธีการ lower()
แปลงอักขระตัวพิมพ์ใหญ่ทั้งหมดเป็นตัวพิมพ์เล็กและส่งคืน
การประยุกต์ใช้ lower()
วิธีการใช้ฟังก์ชันแลมบ์ดา
df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() สำหรับ x ใน x.split()))
การลบเครื่องหมายวรรคตอน
การลบเครื่องหมายวรรคตอน (*,&,%#@#()
) เป็นขั้นตอนสำคัญเนื่องจากเครื่องหมายวรรคตอนไม่ได้เพิ่มข้อมูลหรือคุณค่าเพิ่มเติมให้กับข้อมูลของเรา ดังนั้นการลบเครื่องหมายวรรคตอนจะลดขนาดข้อมูล ดังนั้นจึงช่วยเพิ่มประสิทธิภาพในการคำนวณ
ขั้นตอนนี้สามารถทำได้โดยใช้วิธี Regex หรือ Replace
string.punctuation
ส่งคืนสตริงที่มีเครื่องหมายวรรคตอนทั้งหมด
การลบเครื่องหมายวรรคตอนโดยใช้ นิพจน์ทั่วไป:
หยุดการลบคำ
คำที่มักเกิดขึ้นในประโยคและไม่มีความหมายที่สำคัญในประโยค สิ่งเหล่านี้ไม่สำคัญสำหรับการคาดคะเน เราจึงลบคำหยุดเพื่อลดขนาดข้อมูลและป้องกันการใส่มากเกินไป หมายเหตุ: ก่อนกรองคำหยุด ตรวจสอบให้แน่ใจว่าคุณได้พิมพ์เล็กข้อมูลเนื่องจากคำหยุดของเราเป็นตัวพิมพ์เล็ก
การใช้ไลบรารี NLTK ทำให้เรากรองคำหยุดของเราออกจากชุดข้อมูลได้
# !pip ติดตั้ง nltk นำเข้า nltk nltk.download('stopwords') จาก nltk.corpus นำเข้าคำหยุด allstopwords = stopwords.words('english') df.lower.apply(lambda x: " ".join(i for i in x) .split() ถ้าฉันไม่ได้อยู่ใน allstopwords))
การแก้ไขตัวสะกด
ข้อมูลข้อความส่วนใหญ่ที่ดึงมาจากบทวิจารณ์ของลูกค้า บล็อก หรือทวีตมีโอกาสสะกดคำผิด
การแก้ไขข้อผิดพลาดในการสะกดคำช่วยปรับปรุงความถูกต้องของแบบจำลอง
มีไลบรารี่ต่างๆ เพื่อแก้ไขข้อผิดพลาดในการสะกดคำ แต่วิธีที่สะดวกที่สุดคือการใช้ text blob
วิธีการ correct()
ทำงานบนวัตถุหยดข้อความและแก้ไขข้อผิดพลาดในการสะกดคำ
#Install ไลบรารี textblob !pip ติดตั้ง textblob จาก textblob นำเข้า TextBlob
tokenization
Tokenization หมายถึงการแยกข้อความออกเป็นหน่วยคำที่มีความหมาย มีตัวสร้างประโยคและตัวสร้างคำ
ประโยค tokenizer แบ่งย่อหน้าเป็นประโยคที่มีความหมาย ในขณะที่ tokenizer ของคำจะแยกประโยคออกเป็นคำที่มีความหมายเป็นหน่วย ห้องสมุดหลายแห่งสามารถทำโทเค็นได้ เช่น SpaCy, NLTK และ TextBlob
การแยกประโยคในช่องว่างเพื่อให้ได้คำแต่ละหน่วยสามารถเข้าใจได้ว่าเป็นโทเค็น
import nltk mystring = "สัตว์ที่ฉันชอบคือแมว" nltk.word_tokenize(mystring)
mystring.split(" ")
เอาท์พุท:
['ของฉัน', 'รายการโปรด', 'สัตว์', 'คือ', 'แมว']
อารมณ์
Stemming คือการแปลงคำเป็นคำรากศัพท์โดยใช้กฎบางชุดโดยไม่คำนึงถึงความหมาย เช่น,
- "ปลา" "ปลา" และ "การตกปลา" ถูกเรียกว่า "ปลา"
- "เล่น", "เล่น", "เล่น" กลายเป็น "เล่น"
- Stemming ช่วยลดคำศัพท์ซึ่งจะช่วยเพิ่มความแม่นยำ
วิธีที่ง่ายที่สุดในการดำเนินการแยกจากกันคือการใช้ NLTK หรือไลบรารี TextBlob
NLTK มีเทคนิคการแยกส่วนต่างๆ เช่น Snowball, PorterStemmer; เทคนิคต่าง ๆ ใช้กฎเกณฑ์ต่าง ๆ เพื่อแปลงคำเป็นคำรูท
นำเข้า nltk จาก nltk.stem นำเข้า PorterStemmer st = PorterStemmer() df['text'].apply(lambda x:" ".join([st.stem(word) for word in x.split()]))
“บทความ” มีต้นกำเนิดมาจาก “articl
","lives
“ — -> “live
"
เล็มมาไลเซชั่น
Lemmatization คือการแปลงคำเป็นคำรากศัพท์โดยใช้การทำแผนที่คำศัพท์ Lemmatization ทำได้โดยใช้ส่วนหนึ่งของคำพูดและความหมาย จึงไม่สร้างรากศัพท์ที่ไม่มีความหมาย แต่การให้เล็มมาไลเซชันช้ากว่าการโค่นล้ม
- "ดี, ""ดีกว่า," หรือ "ดีที่สุด” ถูกย่อเป็น “ดี"
- Lemmatization จะแปลงคำพ้องความหมายทั้งหมดเป็นคำรากศัพท์เดียว เช่น "รถยนต์","รถ"" รถบรรทุก"" ยานพาหนะ” ถูกย่อเป็น “รถยนต์”
- Lemmatization มักจะได้ผลลัพธ์ที่ดีกว่า
เช่น. leafs
มีต้นกำเนิดมาจาก ใบมีก้านถึง leav
ในขณะที่ leafs
, leaves
lemmatized เพื่อ leaf
Lemmatization สามารถทำได้โดยใช้ NLTK, ไลบรารี TextBlob
เล็มมาทั้งชุดข้อมูล
ขั้นตอนที่ 2 การวิเคราะห์ข้อมูลเชิงสำรวจ
จนถึงตอนนี้ เราได้เห็นเทคนิคการประมวลผลข้อความล่วงหน้าต่างๆ ที่ต้องทำหลังจากได้รับข้อมูลดิบแล้ว หลังจากล้างข้อมูลแล้ว ตอนนี้เราสามารถวิเคราะห์ข้อมูลเชิงสำรวจ สำรวจและทำความเข้าใจข้อมูลที่เป็นข้อความได้
ความถี่ของคำในข้อมูล
การนับคำที่ไม่ซ้ำในข้อมูลของเราช่วยให้เข้าใจถึงคำศัพท์ที่ใช้บ่อยที่สุดและน้อยที่สุดในข้อมูลของเรา บ่อยครั้งเราทิ้งความคิดเห็นที่บ่อยน้อยที่สุดเพื่อทำให้การฝึกโมเดลของเรามีความเป็นกว้างขึ้น
nltk
ให้ Freq_dist
เพื่อคำนวณความถี่ของคำ และใช้ถุงคำเป็นอินพุต
all_words = [] สำหรับประโยคใน df['processed']: all_words.extend(sentence.split())
all_words
มีคำทั้งหมดที่มีอยู่ในชุดข้อมูลของเรา เรามักเรียกมันว่าคำศัพท์
นำเข้า nltk nltk.Freq_dist (all_words)
ซึ่งแสดงคำที่เป็นคีย์และจำนวนครั้งในข้อมูลของเราเป็นค่า
โปรแกรม Word Cloud
Wordcloud คือการแสดงรูปภาพของความถี่ของคำของชุดข้อมูล WordCloud นั้นง่ายต่อการเข้าใจและให้แนวคิดที่ดีขึ้นเกี่ยวกับข้อมูลที่เป็นข้อความของเรา
พื้นที่
ห้องสมุด wordcloud
ให้เราสร้าง word cloud ในโค้ดสองสามบรรทัด
นำเข้าไลบรารี:
จากการนำเข้า wordcloud WordCloud จากการนำเข้า wordcloud STOPWORDS นำเข้า matplotlib.pyplot เป็น plt
เราสามารถวาด word cloud โดยใช้ข้อความที่มีคำทั้งหมดในข้อมูลของเรา
คำ = [] สำหรับข้อความใน df['processed']: words.extend([word for word in message.split() ถ้าคำไม่อยู่ใน STOPWORDS]) wordcloud = WordCloud (ความกว้าง = 1000 ความสูง = 500). สร้าง ( " ".join(คำ)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show()
background_color = 'white'
โดยใช้พารามิเตอร์นี้ เราสามารถเปลี่ยนสีพื้นหลังของ word cloudcollocations = False
เก็บไว้เป็นเท็จจะละเว้นคำจัดระเบียบ Collocations คือคำที่เกิดขึ้นจากคำเหล่านั้นซึ่งเกิดขึ้นพร้อมกัน เช่น การเอาใจใส่ การบ้าน เป็นต้น- เราสามารถปรับความสูงและความกว้างได้โดยใช้พารามิเตอร์
หมายเหตุ : ก่อนสร้าง word cloud ให้เอาคำหยุดออกเสมอ
หมายเหตุท้ายเรื่อง
ในบทความนี้ เราได้เห็นเทคนิคต่างๆ ที่จำเป็นในการประมวลผลข้อมูลข้อความล่วงหน้า หลังจากล้างข้อมูล เราได้ทำการวิเคราะห์ข้อมูลเชิงสำรวจโดยใช้คลาวด์คำ และสร้างความถี่ของคำ
ในบทความที่สองของชุดนี้ เราจะเรียนรู้หัวข้อต่อไปนี้:
ที่มา: https://www.analyticsvidhya.com/blog/2022/01/nlp-tutorials-part-i-from-basics-to-advance/
- "
- &
- เกี่ยวกับเรา
- ทั้งหมด
- การวิเคราะห์
- รอบ
- บทความ
- บทความ
- ใช้ได้
- กระเป๋าคำ
- ข้อมูลพื้นฐานเกี่ยวกับ
- Blog
- โทรศัพท์
- โอกาส
- เปลี่ยนแปลง
- การทำความสะอาด
- เมฆ
- รหัส
- การเข้ารหัส
- ความคิดเห็น
- วิทยาการคอมพิวเตอร์
- คอมพิวเตอร์
- ข้อมูล
- การวิเคราะห์ข้อมูล
- การเรียนรู้ลึก ๆ
- ต่าง
- ไม่
- หล่น
- อย่างมีประสิทธิภาพ
- ภาษาอังกฤษ
- ฯลฯ
- วิวัฒนาการ
- ชื่อจริง
- แก้ไขปัญหา
- ปฏิบัติตาม
- สร้าง
- ได้รับ
- ช่วย
- จะช่วยให้
- ประวัติ
- หน้าแรก
- HTTPS
- ความคิด
- สำคัญ
- การปรับปรุง
- เป็นรายบุคคล
- ข้อมูล
- IT
- การเก็บรักษา
- Keras
- คีย์
- ภาษา
- แล็ปท็อป
- เรียนรู้
- การเรียนรู้
- เล็มมาไลเซชัน
- ห้องสมุด
- เรียนรู้เครื่อง
- การทำ
- กลาง
- แบบ
- ข้อมูลเพิ่มเติม
- NLP
- ชำระ
- ยอดนิยม
- คำทำนาย
- ให้
- หลาม
- ดิบ
- ข้อมูลดิบ
- การอ่าน
- ลด
- แทนที่
- ผลสอบ
- รับคืน
- รีวิว
- กฎระเบียบ
- วิทยาศาสตร์
- ชุด
- ชุด
- ขนาด
- So
- ช่องว่าง
- เริ่มต้น
- เข้าพัก
- ก้านดอก
- การพูดคุย
- เทคนิค
- tensorflow
- ร่วมกัน
- tokenization
- หัวข้อ
- การฝึกอบรม
- บทเรียน
- us
- มักจะ
- ความคุ้มค่า
- คำ
- โรงงาน
- X
- เป็นศูนย์