การเขียนโปรแกรมเพื่อการประมวลผลภาษาธรรมชาติ

2209671 & 2209261 Programming for Natural Language Processing (Semester 1 2019)

  • ภาควิชาภาษาศาสตร์ คณะอักษรศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย
  • Linguistics Department - Faculty of Arts Chulalongkorn University

เรียนแล้วจะทำอะไรได้บ้าง


จุดมุ่งหมายโดยรวมคือเรียนเขียนคำสั่งให้คอมพิวเตอร์ทำโน่นทำนี่ให้กับเรา โดยจะเรียนไปถึงระดับที่ทำให้สามารถเขียนโปรแกรมด้วยภาษา Python ที่ช่วยทำประมวลข้อมูลทางภาษาในรูปแบบต่างๆ ที่สำคัญๆ เรียนเสร็จควรจะทำพวกนี้ได้

  • นับจำนวนคำและความถี่ของคำ
  • หา concordance และ collocation ของคำในคลังข้อมูล
  • แปลงรูปแบบของข้อมูลจาก text เป็น json ให้เหมาะสมกับการใช้
  • เขียนโปรแกรมดาวน์โหลดหรือขูดข้อมูลจากแหล่งต่างๆ เช่น บัญชี facebook ของตัวเอง wikipedia ทวิตเตอร์ หรือเว็บไซต์แหล่งข่าว และแปลงเป็นรูปแบบที่ง่ายต่อการวิเคราะห์ทางภาษาศาสตร์
  • ใช้ชุดเครื่องมือ (toolkit) ในการวิเคราะห์คำและประโยคโดยอัตโนมัติ

ผู้สอน
(ภาคต้น ปีการศึกษา 2562)

Attapol Thamrongrattanarit x Chaya Hiruncharoenvate

อาจารย์ ดร.อรรถพล ธำรงรัตนฤทธิ์ x อาจารย์ ดร.ชญา หิรัญเจริญเวช

attapol.t@chula.ac.th x chaya.hirun@gmail.com


Course Material

Video lectures in Thai: ภาษาศาสตร์คอมพิวเตอร์ Youtube channel ของอาจารย์อรรถพล | playlist ของวิชานี้

Textbook: Python ๑๐๑ โดยกิตติภณ พละการ, กิตติภพ พละการ, สมชาย ประสิทธิ์จูตระกูล และ สุกรี สินธุภิญโญ ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย | ดาวน์โหลดฟรี

Slides: จากการบรรยายทั้งหมดเก็บอยู่ใน Google Drive (ยืมมาจาก cs106ap.stanford.edu)


Course Schedule

PA = Programming assignment

The schedule will be adjusted based on students' needs.

เฉลย Lab exercise

เฉลย Lab exercise (extra)

แบบฝึกหัด ไม่มีผลต่อคะแนน

สัปดาห์ หัวข้อ ต้องทำอะไรบ้าง
1
Intro to Computational Thinking
  • while, if statement
  • Decomposition

Before class: Install Anaconda (tutorial)

Slides: Intro | Karel basics | Function, if, while | not

In-class: Lab1

Homework: PA1 Karel

2
variables, modules, functions

Before class: work on PA1

Slides: Intro | Decomposition | Style, elif, and, or | Variables | Functions

In-class: Lab2

3
Types, strings, methods, iterations

Before class: ดูวิดีโอและทำ quiz บน google classroom

Slides: IDE | String

In-class: ทบทวนเนื้อหาจากวิดีโอ และทำ Lab3

Homework: PA2 Simple Python programs part 1

4
Unicode, memory tracing, ทบทวน

Before class: ดูวิดีโอ

Slides: Unicode | Memory Tracing | Review

In-class: Lab4

Homework: PA3 Simple Python programs part 2

5
List and iterations

Before class: ดูวิดีโอ

Slide: Data structure: List | List programming patterns

In-class: Exam 1 (เนื้อหา week 1-3), Lab5

6
Tuple; Nested list: List of lists, list of tuples

Before class: ดูวิดีโอและทำ quiz บน google classroom

In-class: เฉลย Exam 1 | Lab6

Homework: ตัวอย่างโจทย์ Exam 2

7
File IO; Dictionaries

Before class: ดูวิดีโอและทำ quiz บน google classroom

Slides: File IO | Dictionary

In-class: Lab7

Homework: PA4 Jane

8
Regular expression + UNIX

ไม่มีเรียน พิธีรับปริญญา

Homework:

Regular expression and UNIX exercises (Lab 8 - 9)

Python RegEx Exercise

9
Midterm week

Exam 2 (เนื้อหา week 4-6)

สถานที่: BRK302

วัน: October 10th, 2019

เวลา: 10:00 - 11:00

Homework: PA5 Chatbot | Demo Website

10
Set, Regex in Python, Console program

Slides: Command Line | RegEx | Set

In-class: Lab 10

11
Nested data structures: dictionaries of tuples, lists, dictionaries

Before class: ดูวิดีโอและทำ quiz บน google classroom

Slides: Nested data structures

In-class: Lab 11

Homework: ตัวอย่างโจทย์ Exam3

12
Web technology, Serialization, and API

Before class: ดูวิดีโอและทำ quiz บน google classroom

Slides: Web Technology | Demo

In-class: Lab 12

13
Introduction to NLP

Before class:

Slides: Intro to NLP

In-class: Exam 3 (เนื้อหา week 7-11), Lab13

14
Object-oriented Programming

Before class: ดูวิดีโอและทำ quiz บน google classroom

Slides: Object-Oriented Programming

In-class: เฉลย Exam 3, แนวข้อสอบ Exam 4, Lab14

Homework: PA6

15
Lambdas, list comprehension, and sorting

Slides: Comprehensions | Lambdas and sort

In-class: Lab 15

16
Wrap up

Slides: Conclusions

In-class: Exam 4