ไม้ยมก (ๆ) เป็นตัวที่แสดงถึงการซ้ำคำ หรือ กลุ่มคำ/วลี เนื่องจากไม้ยมกถูกใช้ซ้ำเพียงแค่คำเดียวเป็นส่วนใหญ่ในชีวิตประจำวัน ทำให้คนที่นำข้อมูลไปประมวลผลมักเข้าใจผิดว่า ไม้ยมกใช้ซ้ำแค่คำ แต่ที่จริงแล้วสามารถใช้ซ้ำกลุ่มคำหรือวลีได้ด้วย
ตัวอย่างเช่น
ผมไปเรียนในแต่ละวัน ๆ เจอเรื่องแปลก ๆ มาให้ประหลาดใจอยู่เสมออ่านได้เป็น
ผมไปเรียนในแต่ละวันแต่ละวัน เจอเรื่องแปลกแปลก มาให้ประหลาดใจอยู่เสมอดังนั้น เราจะต้องจัดการกับกลุ่มคำที่ใช้ไม้ยมกในการซ้ำด้วย
มาลงมือโค้ดกัน ก่อนอื่นให้ทำเรียกใช้ PyThaiNLP , re ก่อน (หากไม่มี pythainlp ให้ทำการติดตั้งด้วยคำสั่ง pip install pythainlp ) โดยใช้คำสั่ง
from pythainlp.tokenize import word_tokenizeเสร็จแล้ว ทำการสร้างรายการเก็บกลุ่มคำที่ถูกซ้ำขึ้นมา แล้วทำการแปลงให้เป็น list
import re
list_phrase="""ไฟไหม้สร้างกฎสำหรับ re โดยใช้ | หรือ ในการซ้ำกลุ่มคำ
ในแต่ละวัน
ในชั่วพริบตา
เวรกรรม
กรรมเวร
วันหนึ่ง
อ่านหนังสือ
กินข้าว
ดีแต่พูด
กล้วยไม้ป่า
ออกดอกสะพรั่ง
สนุกสนาน
ร่ำรวย
ก้องกังวาน
ทำมาหากิน
มากมาย""".splitlines() # รายการวลีที่ต้องซ้ำทั้งวลี
rule="|".join(list_phrase)เสร็จแล้วเขียนฟังก์ชั่นสำหรับจัดการไม้ยมกขึ้นมา
def maiyamok(t):การเรียกใช้งาน
if "ๆ" in t:
t=re.sub("([ก-ฮ่้๊๋็๋ เแ ิ ื ์ ี ู ุ า ๅ ำ ฯ ะ])ๆ","\\1 ๆ",t) # กรณีที่ ๆ ติดกับคำให้เว้นก่อน
while "ๆๆ" in t: # ถ้ามี ๆ ติดกันหลายอัน
t=t.replace("ๆๆ","ๆ ๆ") # ให้เว้น ๆ
if re.search(rule,t): # ถ้าข้อความที่รับเข้ามามีวลีที่กำหนด
for i in list_phrase:
while i+" ๆ" in t:
t=t.replace(i+" ๆ",i+i)#"""
if "ๆ" in t:
tt=word_tokenize(t)
while "ๆ" in tt:
indext=tt.index("ๆ")
tt[indext-1]=tt[indext-2] # ซ้ำคำ
del tt[indext]
t="".join(tt)
del tt
return t
text="ในวันหนึ่งๆพวกเขาเล่นเกมกันอย่างสนุกสนานๆโดยมีเด็กมาเล่นด้วยอย่างมากมายๆจึงเป็นเรื่องที่ดีมากๆเลยอยากให้ทุกเป็นวันที่ดีๆแบบนี้เสมอไป"ผลลัพธ์
print(maiyamok(text))
ในวันหนึ่งวันหนึ่งพวกเขาเล่นเกมกันอย่างสนุกสนานสนุกสนานโดยมีเด็กมาเล่นด้วยอย่างมากมายมากมายจึงเป็นเรื่องที่ดีมากดีมากเลยอยากให้ทุกเป็นวันที่ดีดีแบบนี้เสมอไป
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)