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

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

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

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

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

ข้อมูลรายวิชา (ภาคต้น ปีการศึกษา 2561)

ผู้สอน: Attapol Thamrongrattanarit - อาจารย์ ดร.อรรถพล ธำรงรัตนฤทธิ์

Email address: attapol.t@chula.ac.th

เวลาและสถานที่: วันอังคาร 9:30AM - 12:30PM อาคารบรมราชกุมารี ห้อง 411

Course website: attapol.github.io/programming

Website สำหรับส่งงาน:

  1. สมัคร Google app account ใช้ Chula id (Instructions)
  2. ไปที่ classroom.google.com ใช้ Chula google account
  3. คลิกเครื่องหมาย + เพื่อเข้าร่วมคลาส code 9iaiyj

Course Material

Video lectures and quizzes: Learn to Program: The Fundamentals by Campbell and Gries on Coursera

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

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

The "lecture" material for the first half of the course will be based on coursera.org online course: Learn to Program: The Fundamentals by Jennifer Campbell and Paul Gries from University of Toronto. Students must watch the lectures and complete the quiz on Coursera or my videos on Youtube and come to class to work on more exercises and get help from your classmates and me for the topics that you don't understand from the video.

Course Schedule

LP = Learn to Program course on Coursera

PA = Programming assignment

The schedule will be adjusted based on students' needs

สัปดาห์ หัวข้อ ต้องทำอะไรบ้าง
1 Variables and Functions

Before class: -

In-class: intro slides, install Anaconda, join Google classroom site, sign up on coursera, ipynb exercise 1 (html version)

2 Strings and Designing Functions

Before class: watch LP week 2 videos, complete week2 quiz on coursera

In-class: review the quiz, exercise 2 (ipynb, html)

3 Booleans, import, Namespaces, if statements, for loop on string, string manipulation

Before class: watch LP week 3, complete the quiz 3

In-class: review the quiz, exercise 3 (ipynb|html), start PA1

4 while loops, list, range, loop over indices

Before class: watch LP week 4, complete the quiz 4

In-class: review the quiz, exercise 4 and programming assignment 2 (ipynb|html)

5 Reading and writing files, dictionary, tuples

Before class: watch LP week 7, complete the quiz, finish PA2 (NOT the coursera version)

In-class: review the quiz, exercise 5 (ipynb|html|data)

6 Parallel and nested lists, enumerate, nested dictionaries

Before class: watch LP week 6, complete quiz 6

In-class: exercise 6 (ipynb|html|data), start PA3 Text Generator

7 Python NLP libraries

Before class: watch LP week 5, complete quiz 5

In-class: review, Spacy package (วิธีลงโปรแกรม), NLTK package

8 Set, regular expression, list & dictionary comprehension

Before class: watch videos

In-class: review, exercise 8 (ipynb|html|data|วิธีใช้ spacy เบื้องต้น)

PA4 Dictionary-based Machine Translation | Starter code

9 Midterm (no midterm)

PA4 due October 14th at 9:00

10 การส่งผ่านข้อมูลให้คนอื่นผ่าน Internet ด้วย API HTML JSON

Before class: watch video, complete the quiz

In-class: review the quiz, complete extra programming exercises

11 หยุดวันปิยมหาราช

แบบฝึกหัดขูดข้อมูลจากหน้า HTML ด้วย BeautifulSoup

12 Object-Oriented Programming

Before class: watch video, complete the quiz

In-class: review the quiz, complete extra programming exercises, คิดเรื่อง final project

13 Machine Learning

Before class: watch video | slides

In-class: quiz, extra programming exercise | dataset, PA5 Wikipedia API Wrapper

14 (Supervised) Machine Learning: Maximum Entropy Model

Before class: watch video, complete the quiz

In-class: review the quiz, git workshop (creating project repo and pushing to repo), แบบฝึกหัดเรียน UNIX Tools ด้วยตัวเอง | UNIX utilities by Ken Church | New York Times data | นิราศเมืองแกลง

15 (Unsupervised) Machine Learning: Latent Dirichlet Allocation - Topic Model

In-class: MALLET Topic modeling workshop | LDA Slides

After class: PA6 (Sentiment Analyzer)

16 เขียนเว็บไซต์

In-class: เขียนเว็บไซต์โดยใช้ bootstrap

Final project

Project repositories

เกณฑ์การให้เกรดประเมินผล

  • สัดส่วนคะแนน รายการ
    24% ความมีส่วนร่วมในชั้นเรียน และแบบฝึกหัดในชั้นเรียน (2 x 13 weeks ลบ week ที่คะแนนน้อยที่สุด หรือ week ที่ขาดเรียนออกไป)
    60% Quizzes, Homework and programming assignments
    16% Final project
    คะแนน เกรด
    90-100 A
    85-89 B+
    80-84 B
    75-79 C+
    70-74 C
    65-69 D+
    60-64 D
    <64 F