Word embedding

word2vectors.gif
NLP là một trong những bài toán khó và phức tạp trong ngành Khoa học máy tính và Trí tuệ nhân tạo. Do đòi hỏi phải dạy cho máy tính không chỉ hiểu được cú pháp của một ngôn ngữ mà còn ngữ nghĩa của các câu sử dụng trong từng ngữ cảnh đặc biệt mà không mắc phải nhập nhằng (ambiguity).

Để đi đến đích, đó là xây dựng được một hệ thống AI hoàn thiện, ta còn cách tương lai quá xa. Trong khi đó, word vector (hay còn gọi là distributed representations) là một công cụ khá thú vị có thể xoá bỏ một vài khoảng cách tri thức về ngôn ngữ giữa máy tính và con người. Trong bài viết này, tôi sẽ tóm tắt lại khái niệm và ý nghĩa của việc sử dụng word vector trong NLP.

Ví dụ kinh điển khi nói đến word vector là “king – man + woman =?”, bạn có nghĩ rằng máy tính sẽ trả lời là “queen” không? Thật vậy, Google đã làm được điều này trong dự án nghiên cứu word2vec của mình (biến đổi một từ thành một vector). Bạn có thể tham khảo thêmword2vec implementation Google Code.

Xem tiếp

Topic Modeling là gì

Latent Dirichlet Allocation
Latent Dirichlet Allocation

Topic Modeling là gì? Tại sao chúng ta cần nó?

Trong thế giới Big Data, dữ liệu luôn luôn tăng dần mỗi ngày khiến cho việc tìm kiếm những thông tin cần thiết đối với từng cá nhân ngày càng khó khăn. Để giải quyết vấn đề này, ta cần có các công cụ và kĩ thuật để tổ chức, tìm kiếm và hiểu được ý nghĩa của thông tin lộn xộn đó. Topic modeling là một trong các công cụ giúp ta thực hiện được việc này:

  • Khám phá các pattern topics xuất hiện trong tập văn bản.
  • Phân loại và gán nhãn các văn bản dựa vào các topic đã được định nghĩa.
  • Sử dụng các nhãn này để tổ chức, tìm kiếm và tổng hợp văn bản.

Có nhiều kĩ thuật được sử dụng để thu được topic models như LDA và TextRank. Bài viết này tập trung giải thích Latent Dirichlet Allocation (LDA), một phương pháp thông dụng trong topic modeling.

Xem tiếp

Long short-term memory (LSTM)

Short term vs Long term memory
Short term vs Long term memory
Deep learning là một kĩ thuật Machine Learning mạnh mẽ đang được nhiều người trong ngành biết đến và nghiên cứu. Kĩ thuật này nổi trội là do chúng thực hiện được hai việc cùng lúc: biểu diễn thông tin (represent problem/feature engineering) và học (learning). Do đó, kĩ thuật này còn được gọi là representation learning.

Bên cạnh các lĩnh vực đã gặt hái được nhiều thành công như Xử lý ảnh số và video số, hay Xử lý tiếng nói, Deep Learning cũng được áp dụng vào Xử lý ngôn ngữ tự nhiên. Cụ thể trong bài viết này, Long short-term memory (LSTM) là mô hình cải tiến từ RNN cũng thuộc họ Deep Learning mà ta cần quan tâm.

Xem tiếp

Gán nhãn từ loại (Part-of-Speech tagging POS)

Tagging problem
Tagging problem

Trong nhiều tác vụ của Xử lý ngôn ngữ tự nhiên (XLNNTN), ta mong muốn xây dựng được một mô hình mà chuỗi các quan sát đầu vào (từ, ngữ, câu,…) đi kèm với chuỗi các nhãn đầu ra (từ loại, ranh giới ngữ, tên thực thể,…) gọi là pairs of sequences.

Gán nhãn từ loại (Part-of-speech tagging – POS) có lẽ là bài toán sớm nhất được nghiên cứu và được mọi người biết đến khi nhập môn chuyên ngành XLNNTN. Trong bài viết này, ta sẽ tìm hiểu về bài toán gán nhãn từ loại, các hướng tiếp cận và thuật toán cơ bản để giải quyết vấn đề này.

Xem tiếp

Language Modeling là gì

Language model
Language model

Trong bài viết này, ta sẽ tìm hiểu thế nào là một mô hình ngôn ngữ (language modeling). Làm sao để xây dựng được một mô hình ngôn ngữ từ tập các mẫu câu của một ngôn ngữ bất kỳ (Anh, Việt, Nhật, …). Mô hình ngôn ngữ ban đầu được ứng dụng trong nhận dạng tiếng nói (speech recognition) và đã được áp dụng vào trong những tác vụ khác liên quan trong lĩnh vực Xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP) như gán nhãn từ loại (tagging), phân tích cây cú pháp (parsing), dịch máy (machine translation), …

Tại sao chúng ta cần mô hình ngôn ngữ? Lý do thứ nhất, mô hình này cung cấp cho bạn thông tin về phân bố xác suất tiền nghiệm (prior distribution) p(x_1...x_n) để xét xem câu gồm các từ đầu vào có phù hợp hay không với ngôn ngữ xác định. Ví dụ, ta sẽ có xác suất của câu p(toi \ nay \ duoc \ di \ choi \ roi \ vui \ qua) > p(qua \ roi \ vui \ di \ choi \ toi \ nay \ duoc) nhờ vậy mà ta xác định được câu “tối nay được đi chơi rồi vui quá” sẽ phù hợp hơn với ngôn ngữ tiếng Việt hơn câu hai “quá rồi vui đi chơi tối”. Thứ hai, các kĩ thuật liên quan đến ước lượng tham số cho mô hình thông qua tập dữ liệu huấn luyện cho trước được sử dụng trong các mô hình khác như Hidden Markov Model, Natural Language Parsing. Và cuối cùng, đây là một trong những cơ sở kiến thức để các bạn đọc hiểu được các bài viết liên quan đến Long short-term memory (LSTM).

Xem tiếp

Giới thiệu các công cụ Xử lý ngôn ngữ tự nhiên

NLP tools
NLP tools

Nếu bạn đang làm việc và nghiên cứu trên ngôn ngữ tiếng Anh thì ta có thể sử dụng các thư viện/module NLP của Python được liệt kê bên dưới. Mục đích của bài viết này được dùng để liệt kê những thư viện/module và những chức năng hữu ích trong NLP. Các bạn có thể tham khảo danh sách các thuật ngữ liên quan đến các chức năng ở bài viết này.

Xem tiếp

Các thuật ngữ trong Xử lý ngôn ngữ tự nhiên

Natural Language Processing
Natural Language Processing

Vai trò của Xử lý ngôn ngữ tự nhiên-XLNNTN (Natural Language Processing-NLP) trong khai thác Big Data là không thể phủ nhận trong bối cảnh phát triển của doanh nghiệp hiện nay. Đối với ngôn ngữ tiếng Anh, ta đã được kế thừa nhiều tri thức cũng như nhiều công cụ có sẵn để áp dụng ngay vào thực tiễn. Tuy nhiên, đối với ngôn ngữ tiếng Việt, ta vẫn còn gặp nhiều khó khăn (nhân sự có chuyên môn còn hạn chế, ngữ liệu để huấn luyện chưa đủ lớn) bên cạnh những cơ hội rất lớn (thị trường Việt Nam chưa được khai thác) cho những ai đam mê lĩnh vực này.

Vì vậy, trong bài viết này, tôi xin lập ra danh sách các thuật ngữ thường gặp trong NLP để tiện tham khảo cũng như giúp cho những bạn mới bắt đầu có thể nhanh chóng tra cứu sơ để tiến hành nghiên cứu ngay các tài liệu khoa học. Bài viết sẽ luôn được cập nhật. Nếu có các thuật ngữ chưa rõ, các bạn có thể comment để chúng ta tiếp tục mở rộng thêm danh sách này.

Xem tiếp

Áp dụng Convolutional Neural Networks cho Xử lý ngôn ngữ tự nhiên

Illustration of a Convolutional Neural Network (CNN)
Illustration of a Convolutional Neural Network (CNN)

bài viết trước, ta đã tìm hiểu về mô hình Convolutional Neural Networks (CNNs) ứng dụng như thế nào trong Thị giác máy tính (Computer Vision). Trong phần này, tôi xin tiếp tục bài viết của mình về cách làm thế nào để ứng dụng CNNs vào xử lý ngôn ngữ tự nhiên (Natural Language Processing).

Xem tiếp

Recurrent Neural Networks là gì

A recurrent neural network and the unfolding in time of the computation involved in its forward computation
A recurrent neural network and the unfolding in time of the computation involved in its forward computation

Recurrent Neural Networks (RNNs) là một trong những mô hình Deep learning được đánh giá có nhiều ưu điểm trong các tác vụ xử lý ngôn ngữ tự nhiên (NLP). Tuy nhiên để nắm bắt ngay mô hình này không phải là điều đơn giản, ta cần có background thật vững về Neural Network, khảo sát rất nhiều tài liệu cũng như tự cài đặt một vài chương trình minh hoạ đơn giản để có thể hiểu được cơ chế hoạt động của mô hình này.

Do đó, trong bài viết này, tôi sẽ trình bày các khái niệm, các đặc điểm cũng như những ứng dụng của RNNs (tạm dịch là mạng nơ-ron tái phát) trong các bài toán thực tế.

Xem tiếp