-
-
Notifications
You must be signed in to change notification settings - Fork 273
Học NLP nên bắt đầu từ đâu?
Trang này tổng hợp các tài liệu và giáo trình hữu ích cho việc tìm hiểu về xử lý ngôn ngữ tự nhiên. Rất hi vọng những thông tin này sẽ hữu ích cho bạn.
- Nền tảng
- Các khoá học
- Sách giáo khoa
- Các trang web hữu ích
- Phần mềm
- Thông tin xử lý tiếng Việt
- Thực hành với các dự án của underthesea
- Phụ lục A - Các tài liệu tiếng Việt
Đầu tiên, hãy trang bị cho mình một nền tảng thật tốt.
Đừng choáng ngợp bởi danh sách này! Bạn vẫn có thể xây dựng ứng dụng NLP mà không cần phải là một siêu nhân về toán học hay lập trình. Nhưng hãy dành thời gian tích lũy dần dần các kiến thức này theo năm tháng, chúng sẽ hữu ích cho quá trình phát triển của bạn sau này.
- Toán học
- Xác suất thống kê: CS109
- Giải tích: MIT 18.01, MIT 18.02
- Đại số: MIT 18.06 Linear Algebra
- Lập trình cơ bản:
- Python: Python for Everybody
- Java (tùy chọn): Complete Java Masterclass
- Học máy cơ bản - Machine Learning
- Khóa học Machine Learning (Andrew Ng): coursera
- Học sâu - Deep Learning
Gợi ý 1: Nếu bạn thấy phần toán quá rộng, cần một "phương pháp" học nhanh, thì có thể đọc luôn phần 1 "Toán ứng dụng và học máy cơ bản" trong quyển Deep Learning Book
Gợi ý 2: Bạn có thể tạm thời bỏ qua phần này nếu lựa chọn một trong những khóa học về NLP ở dưới. Hầu hết các khóa học về NLP đều có những nội dung giới thiệu tổng quan về các kiến thức cơ bản kể trên.
Gợi ý 3: CS41 và CS106A cũng là hai nguồn hữu ích cho những bạn muốn lập trình Python và Java
Tiếp theo, hãy chọn cho mình một khóa học phù hợp với trình độ và nhu cầu của bản thân
- Dan Jurafsky & Chris Manning: Natural Language Processing - Khóa học cơ bản về NLP, được giới thiệu bởi hai chuyên gia hàng đầu là Dan Jurafsky và Chris Manning
- CS224n: Natural Language Processing with Deep Learning - Khóa học nâng cao về NLP của trường Stanford, tập trung về các phương pháp xử lý ngôn ngữ dựa vào học sâu.
- CS224u: Natural Language Understanding - Khoá học về chủ đề hiểu ngôn ngữ của trường Stanford, tập trung vào các bài toán ở mức cao trong xử lý ngôn ngữ như sentiment analysis, relation extraction, natural language inference, semantic parsing, grounded language understanding.
- CS224S / LINGUIST285 - Spoken Language Processing - Khóa học về xử lý ngôn ngữ tiếng nói của trường Stanford.
Nếu bạn quan tâm đến việc nghiên cứu xử lý ngôn ngữ tự nhiên, hãy trang bị cho mình các kiến thức cơ bản và nâng cao trong hai quyển sách kinh điển sau:
- Speech and Language Processing 2nd edition - Phiên bản 2 của quyển sách kinh điển Speech Language Processing được xuất bản năm 2008 bởi Daniel Jurafsky và James H. Martin. Chứa các kiến thức cơ bản và nền tảng trong gần như mọi vấn đề của xử lý ngôn ngữ tự nhiên. Từ cơ bản như phân tích cú pháp, phân tích phụ thuộc đến các ứng dụng như trích rút thông tin, tổng hợp và nhận dạng tiếng nói tự động, dịch máy, chatbot.
- Speech and Language Processing 3rd edition - Phiên bản 3 của quyển sách kinh điển Speech Language Processing (đang tiến hành). Cập nhật các phương pháp mới nhất trong xử lý ngôn ngữ tự nhiên.
Bước tiếp theo là việc cập nhật kiến thức mới từ các trang web hữu ích và các hội nghị hàng đầu
- sebastianruder/NLP-progress - tổng hợp các kết quả tốt nhất trong xử lý ngôn ngữ tự nhiên
- Stanford NLP Reading Group Schedule - chứa các nghiên cứu mới đáng chú ý, được tổng hợp bởi nhóm NLP ở trường Stanford
Các hội nghị hàng đầu về lĩnh vực xử lý ngôn ngữ tự nhiên
- ACL - Hội nghị hàng đầu về xử lý ngôn ngữ tự nhiên, được bắt đầu từ năm 1962!
- EMNLP - Hội nghị hàng đầu về xử lý ngôn ngữ tự nhiên, bắt đầu từ năm 1996
- NAACL - Hội nghị về xử lý ngôn ngữ tự nhiên ở Bắc Mỹ
Nếu các bạn quan tâm đến việc xây dựng các ứng dụng liên quan đến xử lý ngôn ngữ tự nhiên. Danh sách sau tổng hợp các phần mềm và công cụ phổ biến nhất
- spaCy (website, blog) Phần mềm nguồn mở về xử lý ngôn ngữ tự nhiên, được viết bằng ngôn ngữ Python. Được sử dụng nhiều trong các ứng dụng công nghiệp với độ chính xác và tốc độ cao.
- Natural Language Toolkit (NLTK) (website, book) - Phần mềm về xử lý ngôn ngữ, được viết bằng Python. Thường được sử dụng cho mục đích giảng dạy.
- Stanford CoreNLP (website) - Công cụ xử lý ngôn ngữ chất lượng cao, được phát triển bởi nhóm xử lý ngôn ngữ tự nhiên từ trường Stanford.
- AllenNLP (website) - Công cụ xử lý ngôn ngữ tự nhiên với bằng Pytorch, tập trung vào các bài toán mức cao như máy đọc, gán vai nghĩa, phân giải đồng tham chiếu, suy diễn văn bản
- fastText (website) - Công cụ xử lý ngôn ngữ tự nhiên tiện dụng, tốc độ cao, thích hợp cho bài toán phân loại, được phát triển bởi Facebook
- gensim (website) - Công cụ chuyên về lĩnh vực Topic Modelling
Dưới đây là các liên kết hữu ích dành cho các bạn quan tâm đến bài toán xử lý tiếng Việt
- Cộng đồng xử lý ngôn ngữ tiếng Việt - Group tập trung các chuyên gia hàng đầu trong lĩnh vực xử lý ngôn ngữ tự nhiên tiếng Việt
- undertheseanlp/NLP-Vietnamese-progress - Cập nhật thông tin các nghiên cứu, các tập dữ liệu và các sản phẩm tốt nhất trong lĩnh vực xử lý ngôn ngữ tự nhiên tiếng Việt.
Chú ý: Phần này dành riêng cho các underthesea fan :D
Khi đã tích lũy các kiến thức cơ bản, là lúc tiến vào giai đoạn thực hành. Các dự án của underthesea đều open source, các bạn có thể học bằng cách tìm hiểu source code từ các dự án này, sau đó tự mình thu thập dữ liệu, tùy biến mô hình trên dữ liệu của các bạn hay cải tiến các mô hình sẵn có được đề xuất bởi underthesea.
Hiện nay, underthesea đã open source các dự án
- Dự án về tách từ tiếng Việt - undertheseanlp/word_tokenize
- Dự án về gán nhãn từ loại tiếng Việt - undertheseanlp/pos_tag
- Dự án về chunking tiếng Việt - undertheseanlp/chunking
- Dự án về nhận diện thực thể tên riêng tiếng Việt - undertheseanlp/ner
- Dự án về phân loại văn bản - underthesea/classification
- Dự án về phân tích cảm xúc trên văn bản - underthesea/sentiment
- Dự án về chatbot tiếng Việt cơ bản - undertheseanlp/chatbot
Việc tìm hiểu, tùy biến và cải tiến những phần mềm mã nguồn mở có sẵn sẽ giúp bạn đưa những kiến thức của mình vào thực tế, vừa giúp bạn nâng cao trình độ của mình, vừa đóng góp cho cộng đồng.
Gợi ý: Nếu các bạn quan tâm đến các công cụ xử lý tiếng Việt ngoài underthesea, hãy tham khảo trong dự án NLP-Vietnamese-progress đã được giới thiệu ở trên. Rất nhiều công cụ được tổng hợp trong dự án NLP-Vietnamese-progress cũng là những sản phẩm open source.
Chúc các bạn học thật vui. Rất hi vọng được thấy sản phẩm về NLP của các bạn trong tương lai.
Ở phần nền tảng, các khóa học và phần mềm, mình đã trình bày các tài liệu tiếng Anh cho việc tìm hiểu và nghiên cứu xử lý ngôn ngữ tự nhiên. Ở phần này, mình tổng hợp thêm các tài liệu tiếng Việt cho các bạn chưa thành thạo tiếng Anh.
- Toán học: Đại số (Python cho đại số tuyến tính)
- Học máy cơ bản (website machine learning cơ bản)