Natural Language Processing (P1)

Mở đầu

Lâu lắm mới viết blog, hầu hết những trang blog đều là những kiến thức mình có được trong qua trình được giảng dạy và có một chút tự tìm hiểu. Sau mỗi lần cảm thấy mình tích luỹ được kiến thức gì đó, mình đều muốn chia sẻ một vài kiến thức ít ỏi của mình lên các trang blog, vừa để tự ôn lại kiến thức mình được học và cũng một phần để cho những bạn có cùng niềm đam mê trao đổi và bình luận.

Trong thời đại mà mọi ứng dụng đều có những dấu chân của học máy thì rõ ràng con người luôn mong muốn chinh phục những bài toán khó hơn bằng trí tuệ nhân tạo. Từ những bài toán về xử lý hình ảnh, âm thanh, văn bản … đó là nơi mà học máy có thể áp dụng mạnh mẽ nhất, vì đó là những mảng mà con người muốn khai thác và chắt lọc thông tin nhiều nhất.

Trong blog này, mình sẽ chia sẻ một chút về NLP hay “xử lý ngôn ngữ tự nhiên”, một mảng mà mình cảm thấy rất khó, nhưng đồng thời cũng rất hay, vì tính ứng dụng của nó trong cuộc sống khá cao. Ngôn ngữ luôn là đỉnh cao nhất trong các phương pháp giao tiếp con người với nhau, nhưng con người cũng muốn máy móc có thể học được điều đó như con người, nhưng ngôn ngữ thì phức tạp, thế nên việc xử lý được ngôn ngữ cũng phức tạp theo.

Ứng dụng

Xử lý ngôn ngữ tự nhiên được áp dụng để xử lý rất nhiều các bài toán khác nhau ví dụ như:

  • Dịch máy
  • Tóm tắt văn bản
  • Rà soát lỗi chính tả
  • Tìm kiếm và truy xuất thông tin
  • Trả lời câu hỏi

Định nghĩa về ngôn ngữ

a. Ngôn ngữ

Để xử lý được ngôn ngữ, đầu tiên ta cần hiểu, ngôn ngữ là gì đã.

  • Là hệ thống các ký hiệu (chữ cái) được kết hợp tuân theo các quy tắc (ngữ pháp) để truyền tải ngữ nghĩa
  • Là phương tiện để giao tiếp

Nói theo kiểu dân IT một chút thì ngôn ngữ có thể hiểu là ngôn ngữ là ” Tập các xâu (string) tuân theo các quy tắc (rule, grammar) nhất định “

Ngôn ngữ được con người giao tiếp hàng ngày ta được hiểu đấy là “Ngôn ngữ tự nhiên”

b. Xử lý ngôn ngữ

  • Là một lĩnh vực nghiên cứu của trí tuệ nhân tạo
  • Nghiên cứu các phương pháp cho phép xử lý ngôn ngữ tự nhiên bằng máy tính
  • Xây dựng các chương trình để xử lý ngôn ngữ tự nhiên

b.  Trình tự xử lý ngôn ngữ

  • Hiểu ngôn ngữ tự nhiên: Trước hết ta cần hiểu được văn bản đang đề cập vấn đề gì, cụ thể là ta cần tìm những từ khoá, hiểu cấu trúc câu, hiểu nội dung ngữ nghĩa của câu.
  • Sinh ra ngôn ngữ tự nhiên: Sinh ra các ngôn ngữ được dịch trong dịch máy, trả lời được câu hỏi, đưa ra được văn bản tóm tắt, …

 Hiểu ngôn ngữ tự nhiên

a. Phân tích hình vị

Hình vị là đơn vị ngữ pháp nhỏ nhất có nghĩa của một ngôn ngữ. Tiếng việt là một ngôn ngữ cách thể (ngôn ngữ đơn lập), một hình vị là một từ, một từ có thể có một hoặc nhiều âm tiết. Ví dụ: sinh_viên không giống như tiếng anh, một từ luôn có khả năng đứng độc lập student.

Để phân tích hình vị ta thường có những công đoạn gồm tách từ, gán nhãn từ loại.

Ví dụ:

Do dịch bệnh, nên sinh viên được nghỉ thêm một tuần

Tách từ:

vn_sentences = word_tokenize('Do dịch bệnh, nên sinh viên được nghỉ thêm một tuần', format='text')

Output: Do dịch_bệnh , nên sinh_viên được nghỉ thêm một tuần

Gán nhãn từ loại:

vn_sentences_pos_tag = pos_tag(vn_sentences)
Output: [('Do', 'E'), ('dịch_bệnh', 'N'), (',', 'CH'), ('nên', 'C'), ('sinh_viên', 'V'), ('được', 'R'), ('nghỉ', 'V'), ('thêm', 'V'), ('một', 'M'), ('tuần', 'N')]

b. Phân tích cú pháp

Ở công đoạn này, ta thường xác dịnh cấu trúc ngữ pháp của câu, kết quả phân tích cú pháp thường biểu diễn dưới dạng cây cú pháp.

c. Phân tích ngữ nghĩa

Ở công đoạn này ta thường phân tích ngữ nghĩa của câu sang dạng mà máy tính có thể xử lý được. Xác định mối quan hệ giữa các từ trong câu, đồng thời đối với từ nhiều nghĩa, ta xác định nghĩa của từ đó trong câu là gì. Ví dụ: từ book

This book is very interesting.
They book that hotel for the vacation.

d. Phân tích mức văn bản

Ngữ nghĩa của câu thường phụ thuộc nhiều vào ngữ cảnh của nó. Khi phân tích  bản, ta thường không phân tích câu mà sẽ phân tích toàn bộ văn bản, phân tích mở đầu, các ý chính, kết luận => phân tích cấu trúc văn bản: Ví dụ:

– Hôm nay, nó nghỉ làm do bị ốm => Ta không thể hiểu “nó” trong câu đang nói đến ai

– Hôm qua trời mưa tầm tã, con bé Hoa bàn bên cạnh đi chơi với người yêu mới đến tận khuya mới về. Hôm nay, nó nghỉ làm do bị ốm

=> Ta có thể hiểu “nó” ở trong câu được nhắc đến là “Hoa”

Quy tình thông thường

Quy trình để phân tích văn bản thường gồm 4 bước trên, đầu ra của bước trước sẽ làm đầu vào cho bước sau. Hiện nay đối với các ngôn ngữ phổ biến như Java, python, … đều có các thư viện có thể hỗ trợ tốt để xử lý những phần “tiền xử lý” cơ bản nhất với độ chính xác khá cao > 95 %. Nhưng ta vẫn cần nắm rõ những khái niệm để có một base vững chắc cho những kiến thức mới hơn.

(continue)

Trích dẫn tham khảo :

  • Python 3 Text Processing with NLTK 3 Cookbook
  • Bing Liu. Sentiment Analysis and Opinion Mining, Morgan & Claypool Publishers, May 2012.

  • Natural Language Processing-NLP TS. Ngô Xuân Bách

Add a Comment

Scroll Up