อักขระที่ซ้ำกันหลายครั้ง
กลับมาที่งาน sentiment analysis กันอีกครั้ง ภารกิจต่อไปคือการแทนที่คำที่มีการยืดเสียงซึ่งปรากฏในทวีต เราจะนิยาม "คำที่ยืดเสียง" ว่าเป็นคำที่มีอักขระซ้ำติดกันตั้งแต่ 2 ครั้งขึ้นไป เช่น "Awesoooome"
การแทนที่คำเหล่านี้มีความสำคัญมาก เนื่องจาก classifier จะมองว่าคำเหล่านี้เป็นคนละคำกับคำต้นฉบับ ส่งผลให้ความถี่ของคำลดลง
ในการค้นหาคำเหล่านี้ จะใช้ capturing groups และอ้างอิงกลับด้วยตัวเลข เช่น \4
หากต้องการจับคู่กับ Awesoooome ให้เริ่มด้วยการจับกลุ่ม Awes จากนั้นจับคู่ o แล้วอ้างอิงกลับไปยังอักขระเดิม แล้วจึงจับคู่ me
รายการ sentiment_analysis ซึ่งเก็บข้อความของทวีตสามรายการ และโมดูล re ถูกโหลดไว้ในเซสชันแล้ว สามารถใช้ print() เพื่อดูข้อมูลใน IPython Shell ได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Regular Expressions ใน Python
คำแนะนำการฝึกหัด
- เติม regular expression ให้สมบูรณ์เพื่อจับคู่กับคำที่ยืดเสียงตามที่อธิบายไว้
- ค้นหาองค์ประกอบในรายการ
sentiment_analysisเพื่อตรวจสอบว่ามีคำที่ยืดเสียงหรือไม่ แล้วกำหนดผลลัพธ์ให้กับmatch_elongated - กำหนด captured group หมายเลขศูนย์ให้กับตัวแปร
elongated_word - แสดงผลลัพธ์ที่เก็บไว้ในตัวแปร
elongated_word
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Complete the regex to match an elongated word
regex_elongated = r"____(____)____\w*"
for tweet in sentiment_analysis:
# Find if there is a match in each tweet
match_elongated = re.____(____, ____)
if match_elongated:
# Assign the captured group zero
elongated_word = match_elongated.____(____)
# Complete the format method to print the word
print("Elongated word found: {____}".format(word=____))
else:
print("No elongated word found")