Có thể bạn đã nghe rất nhiều về Trí tuệ nhân tạo (AI), Học máy (Machine Learning), hay Xử lý ngôn ngữ tự nhiên (NLP). Và rất muốn được tiếp cận nhưng chưa biết phải bắt đầu từ đâu và cách tiếp cận như thế nào ? Bài viết này cũng là bài đầu tiên mà tôi muốn tìm hiểu tổng quan nhất về các lý thuyết, thuật toán và các ứng dụng cụ thể trong một domain nhỏ của AI, đó chính là NLP. Làm thế nào để máy tính có thể hiểu được ngôn ngữ tự nhiên ? Làm thế nào để máy tính có trí thông minh như con người ?
Tôi đã từng nghe rằng: Nếu bạn phải trả lời lần 2 cho cùng một câu hỏi, thì có lẽ 1 ý tưởng hay là đưa nó vào blog. Theo nguyên tắc này, tôi cũng muốn ghi chép lại các bước, trả lời cho câu hỏi: Tôi có kiến thức khoa học trong ngành X, và tôi muốn học NLP. Vậy tôi nên bắt đầu từ đâu?
.
Sau đây là các phương pháp mà tôi dự định tiếp cận theo cách của @Melanie Tosik và chia sẻ với các bạn, mà tôi nghĩ chúng ta có thể bắt đầu ngay bằng 1 khóa học căn bản, sau đó tự mình trải nghiệm và cài đặt lại các phương pháp để hiểu hơn về bản chất. Đây có thể đây là kim chỉ nam giúp tôi không bị lệch hướng và cũng hi vọng nó có ích cho những người mới như bạn và tôi:
Trước khi bắt đầu, chúng ta cần nhận thức được danh sách dưới đây thực sự là một điểm bắt đầu rất chung
, cơ bản và có thể không đầy đủ. Để tránh tình huống bị ngập tràn trong một núi thông tin, tôi cố gắng thêm các chú thích bằng các mô tả ngắn gọn và ước lượng các mức độ khó khăn trong ngoặc đơn (sẽ được cập nhật chi tiết hơn khi tôi được trải nghiệm hết). Bằng cách tiếp cận từ trên xuống (Top-Down) và các kỹ thuật thực hành ngay bằng các ví dụ được cài đặt bằng Python có thể giúp chúng ta nắm được một cách tổng quát nhất. Hiểu từ thực tế đến (quay trở về) lý thuyết!
Khóa học Online
- Dan Jurafsky & Chris Manning: Natural Language Processing [video giới thiệu căn bản]
- Stanford CS224d: Deep Learning for Natural Language Processing [Các thuật toán ML nâng cao: Deep learning, NN for NLP]
- Coursera: Introduction to Natural Language Processing [Khóa học giới thiệu NLP của trường ĐH Michigan]
Các thư viện và mã nguồn mở
- spaCy blog [Thư viện python mới nổi với những ví dụ tuyệt vời, các hướng dẫn và demo trực quan]
- NLTK book [Thường được sử dụng cho việc giảng dạy, nghiên cứu học thuật]
- Stanford CoreNLP [Bộ công cụ phân tích chất lượng cao, bằng Java]
Blog tiếng Anh
- natural language processing blog (Hal Daumé)
- Google research blog
- Language log (Mark Liberman)
Blog tiếng Việt
- Machine Learning cơ bản cho người mới bắt đầu - Vũ Hữu Tiệp PSU - Blog
- Machine Learning trong Xử Lý Ngôn Ngữ Tự Nhiên - Nhóm Đông Du Nhật Bản
- Machine Learning cho người mới bắt đầu - Ông Xuân Hồng JAIST
- Machine Learning book for Vietnamese - Nguyễn Xuân Khánh University of Maryland Blog, Tutorials
Books
- Speech and Language Processing (Daniel Jurafsky and James H. Martin) - sách bao gồm những lý thuyết cơ bản
- Foundations of Statistical Natural Language Processing (Chris Manning and Hinrich Schütze) - các phương pháp thống kê
- Introduction to Information Retrieval (Chris Manning, Prabhakar Raghavan and Hinrich Schütze) - sách hay về xếp hạng và tìm kiếm ngữ nghĩa
- Neural Network Methods in Natural Language Processing (Yoav Goldberg) - giới thiệu chi tiết hướng tiếp cận NN, phiên bản primer (pdf)
Kỹ thuật khác
- How to build a word2vec model in TensorFlow - tutorial
- Deep Learning for NLP resources - dữ liệu mới nhất cho Deep learning, được tổ chức theo các topic
- Last Words: Computational Linguistics and Deep Learning — A look at the importance of Natural Language Processing - (Chris Manning) article
- Natural Language Understanding with Distributed Representation (Kyunghyun Cho) các ghi chú về ML/NN tiếp cận bài toán Natural Language Understanding (NLU)
- Quora: How do I learn Natural Language Processing?
DIY - Dữ liệu và các dự án (Do it yourself)
Với tập dữ liệu được tạo và public bởi Nicolas Iderhoff. Chúng ta là những người mới cần phải nhúng tay để thực sự bắt đầu làm việc trong lĩnh vực NLP. Dưới đây là danh sách các bài toán NLP cần giải được đề xuất bởi Melanie Tosik:
- Xây dựng bộ gán nhãn từ loại POS (Part-of-Speech) dựa trên mô hình Markov ẩn (HMM)
- Cài đặt thuật toán CYK để phân tích bài toán phân tích văn phạm phi ngữ cảnh (Context-free grammars)
- Xây dựng bộ phân lớp Naive Bayes cho bài toán lọc Spam
- Xây dựng bộ kiểm tra chính tả spell checker dựa trên kỹ thuật [edit distances] giữa các từ vựng với nhau.
- Xây dựng bộ sinh văn bản dựa vào chuỗi Markov
- Xây dựng một mô hình thống kê Topic model sử dụng mô hình sinh latent Dirichlet allocation (LDA)
- Sử dụng [word2vec] để sinh ra word embeddings từ tập ngữ liệu lớn (large text corpus), từ: Wikipedia.
Chủ đề NLP trên mạng xã hội
- Twitter: #nlproc, list of NLPers (by Jason Baldrige)
- Reddit: r/LanguageTechnology
- Medium: Nlp
Acknowledgment
- Original Source: How to get started in NLP