Bàn về xử lý ngôn ngữ tiếng Việt

Tiếng nói và chữ viết là hai yếu tố cơ bản của ngôn ngữ. Trên thế giới có rất nhiều các công trình nghiên cứu về xử lý ngôn ngữ, tuy nhiên, ở Việt Nam, lĩnh vực này đang gặp trở ngại rất lớn. Hôm nay chúng ta sẽ cùng bàn về những vấn đề trong xử lý ngôn ngữ tiếng Việt nhé.

Xử Lý Ngôn Ngữ

Xử lý ngôn ngữ là một phạm trù trong xử lý thông tin với đầu vào là dữ liệu ngôn ngữ, hay nói cách khác, đó là văn bản hoặc tiếng nói, Các dữ liệu này đang trở thành kiểu dữ liệu chính của con người, và lưu dưới dạng điện tử. Đặc điểm chung của chúng là không có cấu trúc (non-structured ), hoặc nửa câu trúc (semi-structured) và không thẻ lưu lại dưới dạng bảng biểu. Vì vậy chúng ta cần phải xử lý chúng để có thể chuyển từ dạng chưa hiểu thành dạng có thể hiểu.

Một số bài toán về xử lý ngôn ngữ tiêu biểu như:

  1. Nhận dạng tiếng nói, (Speech recognization) phổ biến trong các hệ thống trợ ý ảo
  2. Tổng hợp tiếng nói (speech synthesis) từ dữ liệu vẫn bản, phân tích và chuyển thành tiếng nói
  3. Nhận dạng chữ viết (optical character recognition) Từ một văn bản in trên giấy, hoặc các baner, ... bạn có thể chuyển thành một tệp văn bản lưu trên máy tính
  4. Dịch tự động (machine translate) Cái này có lẽ phổ biến hơn cả, không ai là chưa biết đến Google translate
  5. Tóm tắt văn bản (text summarization) Từ một văn bản dài, máy tóm tắt thành một văn bản ngắn hơn với các nội dung chính cơ bản
  6. Tìm kiếm thông tin (information retrieval) từ một nguồn có rất nhiều tệp thông tin, tìm ra những tệp có liên quan đến câu hỏi cần tìm. Tiêu biểu như Google search.
  7. Trích chọn thông tin (infomation extraction) tìm ra những đoạn bên trong của một tệp thông tin chứa nội dung ta cần biết.
  8. Phát hiện tri thức và khai phá dữ liệu văn bản (knowledge discovery and text data mining), từ rất nhiều nguồn văn bản khác nhau, có thể không liên quan với nhau, tìm ra những tri thức chưa ai biết. ........................... Ngoài ra còn có rất nhiều công nghệ về xử lý ngôn ngữ khác như các hệ chuyên gia, hệ hỏi đáp, hệ sinh ngôn ngữ, ...

Các bài toán trên có phân thành 3 loại sau:

  • 1-3 thuộc lĩnh vực xử lý tiếng nói và xử lý ảnh,
  • 4-5 thuộc xử lý văn bản,
  • 6-8 thuộc lĩnh vực khai phá văn bản Web.

Đối với các bài toán về xử lý văn bản, chúng ta cần xử lý thyeo các tầng cơ bản sau:

  1. Tầng ngữ âm (phonetic and phonological layer), nghiên cứu về ngữ âm, mô hinh hóa các từ, cách phát âm, thanh điệu, ngữ điệu, trường độ âm tiết, độ nhấn, biến thanh, ....
  2. Tầng hình thái (morphological layer), nghiên cứu về thành phần có nghĩa của từ, cấu tạo của từ, hay nó được tách ra trong một câu như thế nào. VD đối với bài toán word segmentation trong tiếng Việt, bạn có thể thấy một ví dụ quen thuộc "Ông già đi nhanh quá", và bạn có thể hiểu theo 2 nghĩa: (Ông già) (đi) (nhanh quá) hoặc (Ông) (già đi) (nhanh quá). Điều này có thể dẫn đến nhập nhằng ngữ nghĩa, và làm ảnh hưởng rất lớn đến quá trình dạy máy hiểu được ngôn ngữ con người.
  3. Tầng ngữ pháp(morphological layer), nghiên cứu về các quan hệ cấu trúc giữa các từ trong câu để tạo ra câu đúng. Các bài toán giải quyết tầng này như:
    • Part-Of-Speach tagging: xác định loại từ trong câu (danh từ, động từ, giới từ, trợ từ ,....)
    • Chungking: xác định cụm từ, ( cụm danh từ, cụm động từ, cụm trạng từ, ...) VD "học sinh" là cụm danh từ, "học" là cụm động từ, "sinh học" là cụm trạng từ.
    • Parsing: Phân tích cú pháp. VD (Học sinh) (học) (sinh học) là quan hệ chủ ngữ - vị ngữ. Một số loại parsing bạn có thể tham khảo như: phân tích cú pháp từ trên xuống (Top-Down Parsing), phân tích cú pháp dự đoán (Predictive Parsing)....
  4. Tầng ngữ nghĩa (semantic layer), nghiên cứu xác định nghĩa của từ và tổ hợp của chúng. VD với từ "đi" người ta có hiểu "đi" là động tác "bước đi" hoặc "đi" cũng có thể là "qua đời". Do đó để hiểu được ý nghĩa của từ, chúng ta cần đặt nó trong văn cảnh của câu văn.
  5. Tầng ngữ dụng (pragmatic layer): nghiên cứu mối quan hệ giữa ngôn ngữ và ngữ cảnh sử dụng ngôn ngữ.

Trong một bài toán về xử lý ngôn ngữ, khi phân tích ở các tầng ngữ âm (1) đến các tầng ngữ pháp (3) chúng ta gọi là phân tích sơ bộ (shallow parsing), thường được áp dụng trong các bài toán như tìm kiếm thông tin, phân tích văn bản cho tổng hợp tiếng nói ..v..v. Tuy nhiên với một số bài toán đi sâu vào ngữ nghĩa như dịch tự động, thì việc phân tích sơ bộ là chưa đủ, Khi đó, ít nhất chúng ta phải thực hiện đến tầng ngữ nghĩa (4) ta sẽ có phân tích đầy đủ (fully parsing).

Tình hình xử lý tiếng Việt tại Việt Nam

Xử lý ngôn ngữ cũng đóng một vai trò quan trọng trong việc đẩy mạnh sự phát triển của CNTT Việt Nam đến với thế giới. Tuy nhiên, ông ta ta xưa nay vẫn nói: Phong ba bão táp không bằng ngữ pháp Việt Nam. Người Việt Nam đôi khi còn gặp khó khăn khi sử dụng tiếng Việt, ấy thế mà, giờ chúng ta cần phải dạy cho máy có thể dùng tiếng Việt như con người. Điều này quả thật rất khó khăn.

Ở Việt Nam cũng đã có một số nhóm bắt đầu nghiên cứu về xử lý ngôn ngữ, bước đầu đã có những kết quả nhất định, như: các nhóm nghiên cứu đến từ các trường đại học, đại học Bách Khoa, đại học Công Nghệ, đại học Khoa Học Tự Nhiên, Viện Nghiên Cứu Công Nghệ Thông Tin, .... Nhóm Nghiên Cứu VLNP, Bên ngoài Việt Nam cũng có các nghiên cứu đến từ các nghiên cứu sinh Việt Nam tại JAIST. Phần lớn các sản phẩm hiện nay đang tập trung vào lĩnh vực dịch máy, một sản phẩm khó, và yêu cầu làm dài hạn. Ngoài ra còn có các bài toán phân loại chia nhóm văn bản.... Và đa phần chỉ dừng lại ở đề tài tiến sĩ, thạc sĩ, mang tính chất tìm hiểu, chưa hệ thống và định hướng rõ ràng.

Bên cạnh những thành quả ban đầu, các công trình nghiên cứu xử lý ngôn ngữ ở Việt Nam vẫn đang gặp rất nhiều những khó khăn.

  • Ít các nghiên cứu nền tảng, những công cụ và tài nguyên. Các bộ dữ liệu chưa hoàn chỉnh, không được public hay thương mại hóa. Dữ liệu thường hay bị spam, sai chính tả, ngữ pháp không rõ ràng.
  • Phần lớn là các nghiên cứu ngắn hạn, đơn lẻ như đề tài thạc sĩ, tiến sĩ, với nhiều hạn chế về mô hình, thời gian, điều kiện phát triển.
  • Nhiều nhóm bắt đầu nghiên cứu khi còn thiếu kiến thức, dẫn đến nhiều sản phẩm vẫn chưa thể đưa ra được kết quả.
  • Và điều quan trọng hơn hết là người Việt Nam mình mắc căn bệnh thiếu chia sẻ, liên kết, hợp tác làm việc theo đúng quy trình, và không có tính kế thừa, khiến cho người mới khi gặp vấn đề không biết phải xử lý sao, hỏi ai để có thể giải quyết.

Một số công cụ hỗ trợ xử lý tiếng Việt

Spelling Correction

  • vietnamese-accent-model - A simple deep learning model to add accent to Vietnamese text (2016)
  • vntk - Vietnamese language toolkit for Node (2016)

Word segmentation

  • vnTokenizer - an automatic tokenizer for segmenting Vietnamese texts into lexical units by Lê Hồng Phương (2008)
  • DongDu - A Vietnamese word segmentation tool by Luu Tuan Anh (2014)
  • UETsegmenter - a toolkit for Vietnamese word segmentation by Nguyen Tuan Phong (2016)
  • Vitk - A Vietnamese Text Processing Toolkit by Le Hong Phuong (2016)
  • pyvi - Python Vietnamese Toolkit by Tran Viet Trung (2016)

Part-Of-Speech Tagging

  • vnTagger - an automatic part-of-speech tagger for tagging Vietnamese texts by Le Hong Phuong (2010)
  • pyvi - Tran Viet Trung (2016)
  • vitk - Le Hong Phuong (2016)
  • VnCoreNLP - A Vietnamese natural language process toolkit by NQ Dat (2018)
  • vTools - Vietnamese NLP toolkit: Tokenizer, Sentence detector, POS tagger, Phrase chunker by TM Vu et al. (2015)

Chunking

  • VieyChunker - Vietnamese chunking tool by VLSP (2010)
  • vTools - Phrase chunker by TM Vu (2015)
  • NNVLP - A Neural Network-Based Vietnamese Language Processing Toolkit by Pham Thai Hoang (2017)

Parsing

  • Vitk - Le Hong Phuong (2016)
  • VnDP - A Vietnamese dependency parsing toolkit by Nguyen Quoc Dat and Nguyen Quoc Dai

Tài liệu tham khảo