ChatGPT : Code interpreter กับงาน corpus analysis. Part 1
Code interpreter ทำให้เราสามารถ upload ไฟล์ให้ ChatGPT ช่วยวิเคราะห์ได้ ปกติมักเป็นข้อมูลตาราง Excel แต่สำหรับข้อมูลที่เป็นตัวบท ChatGPT ก็สามารถวิเคราะห์ให้ได้ ในที่นี้จึงทดลองใช้ Code interpreter เพื่อช่วยทำงาน corpus analysis โดย upload ไฟล์นิยายของ Jane Austen จำนวน 8 เล่มเข้าไปพร้อมกัน แล้วให้รายงานว่าแต่ละไฟล์มีค่าสถิติพื้นฐานอะไร ก็ได้ขนาดไฟล์ จำนวนคำ จำนวนตัวอักษร จำนวนบรรทัด ของนิยายแต่ละเรื่องออกมา
จากนั้นบอกว่าข้อมูลทั้งหมดเป็น corpus ของงาน Jane Austen อยากให้ช่วยนับความถี่คำและ save เป็นไฟล์ของคำที่พบมากสุด 200 คำแรกใน corpus นี้ออกมา Code interpreter ก็เขียนโปรแกรมทำงานนี้มาให้
ซึ่งเมื่อ download ไฟล์ออกมาก็ได้ผลเป็นไฟล์ของคำพร้อมความถี่ตามนี้
ขั้นตอนไป เราบอกว่าสิ่งที่ต้องการคือ concordance ของคำค้น โดยเป็นคำที่มีบริบทซ้ายขวา ซึ่งเราต้องการบริบท 50 คำหน้าหลังด้วย และให้ลองค้นคำว่า happy มาแบบสุ่มให้หน่อย
ซึ่ง ChatGPT ก็สร้างไฟล์แสดงผลของ concordance line มาให้ได้ แต่เนื่องจากคำค้น happy อยู่ปนกับบริบททำให้อ่านยาก เราจึงสั่งใหม่ให้ใส่เครื่องหมาย | ครอบหน้าหลังคำค้น และให้ใส่ชื่อไฟล์ที่ดึงตัวอย่างมาด้วย มี | คั่นหน้าชื่อไฟล์ด้วย
เมื่อเอาไฟล์ที่ได้นี้ไปเปิดใน Excel โดยที่ใช้ | เป็น delimiter เพื่อแยกข้อมูลก็จะได้ผลแสดงเหมือน concordance ที่มีคำค้นอยู่กึ่งกลางให้ดูง่าย มีชื่อไฟล์ของข้อมูลนั้นอยู่ข้างหลัง
ต่อจาก concordance, เราลองให้หา collocation โดยอธิบายว่า collocate คือคำที่ปรากฏในบริบทหน้าหลังของคำค้นในขอบเขตที่กำหนด ให้ลองหา collocate ของคำ happy ใน window span 3 คำหน้าหลัง และใช้สถิติ mutual information เพื่อคำนวณค่าของ collocate แล้วเรียงตัวสูงสุด 100 คำแรกมาให้. ChatGPT ก็จะทวนขั้นตอน 1–2–3–4 ว่าต้องทำอะไรและลงมือทำตามนั้น ในระหว่างทำก็อธิบายสิ่งที่ทำหรือคำนวณไปด้วย เช่น ใช้สูตร MI อย่างไร
เมื่อเปิดไฟล์ดูผลที่ได้ก็ได้ข้อมูลคำที่ปรากฏร่วมกับ happy และมีค่า MI สูงสุดตามแบบที่ต้องการ
หลังจากนั้นลองสั่งให้แสดงผล collocation เป็นรูปภาพ network แทน ซึ่งก็ได้ภาพออกมา แต่เนื่องจากค่า MI ของ top 100 collocates มีค่าเท่ากันหมดในภาพจึงไม่แสดงความต่างระหว่างคำต่าง ๆ
เมื่อสั่งให้ลองสร้างภาพนิทัศน์แบบอื่นดู ChatGPT ก็สร้าง wordcloud ให้ แต่เอาค่าความถี่ของคำมาใช้แทนจึงได้ภาพที่ collocate มีขนาดใหญ่เล็กไม่เท่ากันได้ตามความถี่ของ collocate นั้น
แต่เราอยากเห็นความต่างของ collocate ตามค่าทางสถิติมากกว่า จึงลองสั่งให้คำนวณ collocate ใหม่โดยใช้สถิติ Chi-square แทนและดึง top 100 collocate ตามค่า Chi-square ออกมา. ซึ่งก็ได้ผลตามที่แสดง
เมื่อได้ collocate ที่มีค่า Chi-square แตกต่างกันแล้วจึงให้สร้าง network graphใหม่ คราวนี้ให้แสดงขนาดที่ต่างกันตามค่า Chi-square ที่คำนวณได้ด้วย. (ในระหว่างการทำงาน บางครั้งเราจะเห็นว่าโปรแกรมที่ Code interpreter ทำงานไม่สำเร็จ Code interpreter ก็จะวิเคราะห์ว่าผิดเพราะอะไรและแก้ไขใหม่. บ่อยครั้งที่เป็นเพราะเราเองทำงานไม่ต่อเนื่อง เพราะทิ้ง Chat ไปทำงานอื่น พอกลับมาใหม่ ค่าตัวแปรหรือข้อมูลที่เคยทำไว้หายไปแล้ว โปรแกรมก็ต้องเริ่มใหม่ บางครั้งเราก็ต้อง upload ข้อมูลไปให้ใหม่ด้วย. ทางที่ดีเมื่อจะใช้ Code interpreter คือให้แน่ใจว่าเรามีเวลาต่อเนื่องที่จะพิมพ์สั่งงานไปจนเสร็จ)
เมื่อลองสั่งให้สร้างภาพใหม่เป็นกราฟแท่ง Code interpreter ก็ทำให้ได้ไม่มีปัญหาอย่างไร
เมื่อลองเทียบผลที่ได้จากการใช้โปรแกรม Concordance อื่น ๆ คือ AntConc [1] และ LancsBox [2] โดยให้วิเคราะห์คลังข้อมูลเดียวกันนี้ เมื่อดูการนับคำและความถี่ ก็จะเห็นว่าวิธีการนับคำนั้นแตกต่างได้ ความถี่ของคำที่ได้จึงต่างกัน แต่ลำดับคำส่วนใหญ่จากทั้ง AntConc, LancsBox และ Code interpreter จะใกล้เคียงกัน.
ปกติเมื่อเราใช้โปรแกรมไหนก็ใช้ผลจากโปรแกรมนั้นเป็นหลักในการวิเคราะห์ผล ซึ่งโปรแกรมที่ใช้อย่างไรก็จะให้ผลแบบเดิมกับข้อมูลเดิมเสมอ แต่การใช้ Code interpreter เป็นการเขียนโปรแกรมขึ้นมา ณ เวลานั้น หากวิเคราะห์ข้อมูลเดิมใน chat ใหม่ก็ไม่แน่ว่าจะได้ผลเหมือนเดิม. ดังนั้น หากเราต้องการใช้งาน Code interpreter ในงาน corpus จริงก็ควร copy code ที่ได้ตอนนั้นเก็บไว้ใช้เองในภายหลังด้วย เพื่อให้การวิเคราะห์ข้อมูลเดิมจะยังคงเหมือนเดิม
ตัวอย่างที่ยกมานี้เป็นการใช้ Code interpreter เพื่อใช้งาน corpus analysis ซึ่งในที่นี้เป็นงานพื้นฐานที่โปรแกรม Concordance ส่วนใหญ่ช่วยทำให้ได้อยู่แล้ว ที่จะเป็นประโยชน์เพิ่มเติมคือการใช้ Code interpreter แสดงผลภาพนิทัศน์แบบต่าง ๆ ที่โปรแกรม Concordance อาจทำให้ไม่ได้. และที่เป็นประโยชน์จริงคือการใช้ Code interpretr ทำงาน corpus analysis ในส่วนที่ซับซ้อนหรือโปรแกรม Concordance ทั่วไปไม่สามารถทำได้ เพราะ Code interpreter เป็นการเขียนโปรแกรม Python เพื่อทำงานกับข้อมูล จึงเหมาะกับการใช้งานที่เราต้องการประมวลผลเป็นการเฉพาะกับข้อมูลและโปรแกรมสำเร็จรูปอื่นทำให้ไม่ได้
อ้างอิง
[1] Anthony, L. Laurence Anthony’s AntConc. Retrieved from https://www.laurenceanthony.net/software/antconc
[2] #LancsBox: Lancaster University corpus toolbox. Retrieved from http://corpora.lancs.ac.uk/lancsbox