URL Copied

Nhận diện tên riêng (NER) với Bidirectional Long Short-Term Memory và Conditional Random Field09 Sep 2019 | Thang Luong

Với mục tiêu nhận dạng các cụm danh từ trong văn bản và phân loại chúng vào trong các nhóm đã được định trước, NER có thể cung cấp thông tin hữu ích cho các ứng dụng xử lý ngôn ngữ.

Hầu hết các hệ thống NER tập trung vào việc áp dụng các phương pháp máy học và không đòi hỏi nhiều kiến thức chuyên sâu về mặt ngôn ngữ. Chúng ta có thể gom nhóm các phương pháp máy học trong NER thành 2 nhóm lớn. Các phương pháp trong nhóm đầu tiên áp dụng các kỹ thuật trích xuất đặc trưng bằng tay và kết hợp với thuật toán gán nhãn theo chuỗi như Conditional Random Field (CRF), Hidden Markov Model (HMM), hoặc Maximum Entropy Markov Model (MEMM). Các phương pháp này đã nghiên cứu kỹ lượng trong thời gian dài và đặc biệt thích hợp với các ngôn ngữ có nguồn dữ liệu ít như Tiếng Việt. Tuy nhiên, điểm yếu của nhóm phương pháp này chính là độ chính xác phụ thuộc rất lớn vào việc lựa chọn chuẩn xác các đặc trưng bằng tay.

Trong vài năm trở lại đây, cùng với quá trình phát triển của Deep Learning một vài kiến trúc Neural Network đã được đề xuất để giải quyết các bài toán gán nhãn chuỗi. Các phương pháp này hình thành nên nhóm phương pháp thứ 2 cho bài toán NER. Ưu điểm vượt trội của các kiến trúc Deep Neural Network là khả năng End-to-end Learning, tức là khả năng học được các quy luật gán nhãn chuỗi từ tập dữ liệu gán nhãn trước mà không cần có bất cứ sự can thiệp của con người. Điều này đã loại bỏ đi nhược điểm của nhóm phương pháp 1 phải dựa trên kiến thức ngôn ngữ để lựa chọn các đặc trưng. Tuy nhiên, nhóm phương pháp 2 cũng tồn tại nhược điểm liên quan đến kích cỡ tập dữ liệu huấn luyện. Thông thường, các kiến trúc Deep Neural Network yêu cầu tập dữ liệu khá lớn để có thể đạt được độ chính xác cao. Đối với ngôn ngữ có ít dữ liệu có nhãn như Tiếng Việt, giải pháp hữu hiệu nhất chính là sử dụng một ma trận Word Embedding tốt đã được huấn luyện từ một tập dữ liệu không nhãn lớn (vd, tin tức online, diễn đàn, …).
 

Trong blog này, chúng tôi sẽ trình bày kiến trúc Neural Network phù hợp nhất cho bài toán NER. Kiến trúc này dựa trên sự kết hợp giữa Bidirectional Long Short-Term Memory (Bi-LSTM) và Conditional Random Field (CRF) trong một hệ thống End-to-end Learning. Ngoài ra, chúng tôi cũng tìm cách kết hợp các tri thức đạt được từ cấp độ ký tự để tạo nên một ma trận Word Embedding phù hợp cho bài toán NER. Hệ thống của chúng tôi đã đạt được F1 tổng quát 89.20% và 74 % lần lượt trên tập dữ liệu Development và Test, xếp thứ 2 chung cuộc của cuộc thi VLSP 2018 NER Shared Task [1]. 

Recurrent Neural Network (RNN) là một loại Neural Network trong đó mỗi node trong các lớp ẩn có một kết nối với chính bản thân. Chính kết nối này tạo ra các trạng thái nội tại của kiến trúc mạng cho phép mô hình hoá các chuỗi với độ dài bất kỳ. 

Hình 1: Recurrent Neural Network (nguồn: Colah’s blog) 

Một RNN có thể nhận vào một chuỗi có chiều dài bất kỳ và tạo ra một chuỗi nhãn có chiều dài tương ứng nên kiến trúc này rất phù hợp với bài toán NER. Như mô tả trong Hình 1 bên trên, tại mỗi thời điểm t một RNN điển hình A sẽ tạo ra một vector h_t chứa toàn bộ thông tin của các dữ liệu đầu vào từ X_0 tới X_t. Tuy nhiên, kiến trúc RNN cổ điển rất khó để áp dụng trong thực tế vì vấn đề liên quan đến việc mất mát hoặc bùng nổ giá trị được dùng để cập nhật các trọng số của mạng thông qua quá trình học khi phải mô hình hoá các chuỗi rất dài (vanishing and exploding gradient).

Long Short-Term Memory (LSTM), một biến thể nổi tiếng của RNN, được đề xuất như là một giải pháp cho vấn đề vừa được nêu trên. Điểm chính trong kiến trúc mạng của LSTM chính là các memory cell với các cổng cho phép lưu trữ hoặc truy xuất thông tin. Các cổng này cho phép ghi đè (input gate), loại bỏ dư thừa (forget gate) và truy xuất (output gate) các thông tin được lưu trữ bên trong các memory cell.

Hình 2: Long Short-Term Memory (nguồn: Colah’s blog)

Chi tiết về Long Short-Term Memory và cách thức hoạt động, bạn đọc có thể ghé thăm blog “Understanding LSTMs” của tác giả Colah tại link sau: http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 

Việc nhận dạng chính xác tên riêng trong một đoạn văn bản phụ thuộc không chỉ vào các thông tin phía trước của từ đang xét mà còn cả các thông tin phía sau. Tuy nhiên, một kiến trúc LSTM truyền thống với một lớp duy nhất chỉ có thể dự đoán nhãn của từ hiện tại dựa trên thông tin có được từ các từ nằm trước đó. Bidirectional LSTM (BiLSTM) đã được tạo ra để khắc phục điểm yếu trên. Một kiến trúc BiLSTM thường chứa 2 mạng LSTM đơn được sử dụng đồng thời và độc lập để mô hình hoá chuỗi đầu vào theo 2 hướng: từ trái sang phải (forward LSTM) và từ phải sang trái (backward LSTM) — Hình 3. 

Hình 3: Bidirectional LSTM = forward LSTM + backward LSTM

 
Conditional Random Field (CRF) là một mô hình xác suất cho các bài toán dự đoán có cấu trúc và đã được áp dụng rất thành công trong rất nhiều lĩnh vực như thị giác máy tính, xử lý ngôn ngữ tự nhiên, sinh-tin học, … Trong mô hình CRF, các node chứa dữ liệu đầu vào và các node chứa dữ liệu đầu ra được kết nối trực tiếp với nhau, đối nghịch với kiến trúc của LSTM hoặc BiLSTM trong đó các đầu vào và đầu ra được kết nối gián tiếp qua các memory cell. CRF có thể được sử dụng để gán nhãn tên riêng với đầu vào là các đặc trưng của một từ được rút trích bằng tay như:

  • Chữ cái đầu có được viết hoa hay không?
  • Viết hoa toàn bộ?
  • Là số?
  • Từ đứng trước là từ hoa?
  • Từ đang xét
  • Từ đứng trước và từ đang xét
  •  

Chi tiết về CRF, bạn đọc có thể tìm hiểu thêm từ link sau: Overview of CRF của ml2vec.

Hình 4: Kết hợp BiLSTM và CRF cho NER 

Kiến trúc kết hợp BiLSTM và CRF được mô tả như Hình 4. Kiến trúc BiLSTM+CRF hoạt động theo các bước:

  • Word embedding của từng từ (vd: ngư dân) được đưa vào lớp mô hình BiLSTM để rút trích các thông tin hữu ích về ngữ nghĩa và hình thái của từ và ngữ cảnh xung quanh từ đó.
  • Tiếp theo, lớp CRF sẽ xử lý các thông tin trên như là các đặc trưng để đưa ra các dự đoán về nhãn NER cho mỗi từ. Ngoài thông tin nhận được từ lớp BiLSTM, CRF còn dựa trên thông tin từ nhãn đã được dự đoán trước đó. Ví dụ, nếu nhãn trước đó là B-LOC (begin LOCATION — bắt đầu của cụm từ chỉ vị trí địa lý) thì khả năng cao là từ đang xét sẽ có nhãn là I-LOC (inside LOCATION — nằm trong cụm từ chỉ vị trí).

Các tham số học của kiến trúc BiLSTM+CRF bao gồm: ma trận word embedding, ma trận trọng số của lớp BiLSTM, ma trận chuyển vị của lớp CRF. Toàn bộ các tham số này được cập nhật trong quá trình huấn luyện trên tập dữ liệu có nhãn thông qua thuật toán Back-propagation với Stochastic Gradient Descent (SGD). 

Trong quá trình huấn luyện, chúng tôi áp dụng kỹ thuật Dropout để tránh việc bị over-fitting, tức là kiến trúc mất đi tính tổng quát khi nhận diện tên riêng trên các đoạn văn bản mới ngoài tập huấn luyện. Dropout là kỹ thuật xét giá trị 0 cho ngẫu nhiên r phần trăm các node trong mỗi lớp của kiến trúc. Điều này tạo ra một lượng nhiễu (noise) ngẫu nhiên nhỏ trong quá trình học và làm cho kiến trúc trở nên linh động hơn khi xử lý các câu trong văn bản.

Cách kết hợp 2 mô hình BiLSTM và CRF này tận dụng được điểm mạnh của cả 2: khả năng rút trích đặc trưng thông minh của LSTM và khả năng dự đoán chuỗi nhãn mạnh mẽ của CRF. Điều này đưa đến việc kiến trúc BiLSTM+CRF đạt độ chính xác cao trong bài toán NER trên Tiếng Anh.

Dựa trên các minh chứng về mô hình toán học và kết quả đạt được trên các ngôn ngữ khác, chúng tôi mong đợi việc áp dụng kiến trúc BiLSTM+CRF vào bài toán NER trên Tiếng Việt sẽ đạt được độ chính xác cao. 

Các phương pháp máy học đều luôn yêu cầu đầu vào là một tập các giá trị số được thể hiện dưới dạng vector. Tuy nhiên, với các bài toán xử lý ngôn ngữ tự nhiên, dữ liệu đầu vào luôn là các chuỗi ký tự. Để áp dụng được các mô hình máy học, chúng ta cần phải chuyển đổi các chuỗi ký tự này thành dạng số mà vẫn giữ được các yếu tố về hình thái (hoa thường, nguyên âm, hợp âm, …), ngữ nghĩa và ngữ pháp.

Đối với các thuật toán máy học dự đoán chuỗi như CRF, chúng ta làm bước chuyển đổi này bằng cách rút ra các đặc trưng và hiển hiện bằng các giá trị nhị phân — 0 thể hiện chuỗi đang xét không có tính chất f_i 1 trong trường hợp ngược lại — hoặc các giá trị số thực bằng cách tính tần số xuất hiện (Tf-idf).

Với các kiến trúc Neural Network, chúng ta sử dụng ma trận Word Embedding để ánh xạ các từ thành các vector số thực. Ma trận word embedding có số cột tương đương với số từ nằm trong bộ từ điển từ vựng, số dòng là số chiều của vector đại diện cho từ. Như vậy, khi chuyển đổi một từ thành vector số thực, chúng ta chỉ cần truy cập vào ma trận word embedding và lấy ra cột tương ứng. Các giá trị trong ma trận đạt được bằng cách áp dụng các thuật toán như word2vec (CBOW, Skip-gram), GloVe hoặc FastText trên tập dữ liệu văn bản không có nhãn như tin tức online. Ngoài ra, chúng ta cũng có thể khởi tạo các giá trị này ngẫu nhiên và được cập nhật chung trong quá trình huấn luyện mô hình gán nhãn. Bạn đọc xem thêm bài blog: Word Embeding của Data Science Group, IITR. 

Tuy ma trận word embedding có thể chứa đựng ngữ nghĩa của một từ ở một vài cấp độ, nhưng vẫn có thể gặp phải vấn đề về dữ liệu thưa (data sparity problem). Ví dụ, các từ có tần số xuất hiện rất thấp được đại diện bởi vector có đa số thành phần có giá trị gần 0, các từ không có trong danh sách từ điển, từ sai lỗi chính tả. Chúng tôi giải quyết vấn đề này bằng cách gia tăng các thông tin cho word embedding từ cấp độ ký tự. Như đã nói ở trên, BiLSTM phù hợp với việc mô hình hoá chuỗi các từ, nên chúng tôi sẽ áp dụng một BiLSTM thứ 2 (C-BiLSTM) để mô hình hoá chuỗi các ký tự của mỗi từ để tạo nên một vector đại diện cho từ đó. Sau đó kết hợp vector này với vector từ ma trận word embedding để tạo nên một vector duy nhất đại diện cho một từ. Hình 5 mô tả quá trình tạo ra vector word embedding cho mỗi từ trong từ điển. 

Hình 5: Quá trình xây dựng vector word embedding 

Dữ liệu

  1. Dữ liệu VLSP NER 2018: Dữ liệu này gồm 3 tập con: Training dùng để huấn luyện, Development dùng để đánh giá tính tổng quát của mô hình trong quá trình huấn luyện, và Testing dùng để đánh giá độ chính xác của mô hình sau quá trình huấn luyện. Dữ liệu này bao gồm 4 nhãn tên riêng:
    - LOC — LOCATION: tên riêng về vị trí (vd: tỉnh Bình Định)
    - PER — PERSON: tên riêng chỉ người (vd: Nguyễn Xuân Phúc)
    - ORG — ORGANIZATION: tên riêng chỉ tổ chức (vd: Uỷ ban nhân dân tỉnh Đồng Nai)
    - MISC — MISCELLANEOUS: tên riêng khác không thuộc 3 nhãn trên (vd: tiếng Việt)
    Ngoài ra, các nhãn này có thể được gán lồng vào nhau, ví dụ: Uỷ ban nhân dân tỉnh Đồng Nai bao gồm cả nhãn ORG cho cả cụm và nhãn LOC cho cụm ‘tỉnh Đồng Nai’. Trong cuộc thi VLSP 2018 NER, chúng tôi chỉ tạo ra hệ thống gán nhãn ở cấp ngoài cùng và không xử lý các nhãn lồng bên trong. Các thông số thống kê về tên riêng ở cấp độ ngoài cùng của bộ dữ liệu này được thể hiện trong Bảng 1.
  2. Dữ liệu Báo Mới không chứa nhãn tên riêng được sử dụng để tạo ra ma trận word embedding. Dữ liệu này chứa 720,000 bài báo tin tức online từ cổng tin tức Báo Mới. Dữ liệu này có khoảng 0.5 tỉ từ và được xử lý tách từ bằng công cụ Vitk. Chúng tôi tạo ra 2 ma trận word embedding từ 2 giải thuật khác nhau là GloVe và FastText để đánh giá giải thuật nào phù hợp với bài toán NER trên Tiếng Việt. Đối với những từ không xuất hiện trong ma trận word embedding, chúng tôi khởi tạo các vector ngẫu nhiên sử dụng giải thuật khởi tạo Xavier. 
+--------------+-------+-------------+------+-------+
| | Train | Development | Test | TOTAL |
+--------------+-------+-------------+------+-------+
| LOC | 6289 | 795 | 2377 | 9461 |
| MISC | 743 | 63 | 178 | 984 |
| ORG | 5587 | 723 | 2126 | 8436 |
| PER | 4600 | 492 | 1883 | 6975 |
| #total of NE | 17219 | 2073 | 6564 | 25856 |
| #sentence | 14467 | 1601 | 5381 | 21499 |
+--------------+-------+-------------+------+-------+ 

Bảng 1: Thống kê dữ liệu VLSP 2018 NER Shared Task 

Tiền xử lý dữ liệu

Vì dữ liệu VLSP NER 2018 được lưu dưới dạng XML nên chúng tôi tiến hành tiền xử lý và chuyển về dạng chuẩn CoNLL — mỗi dòng là một từ cùng với nhãn của từ đó, các câu phân tách nhau bởi dòng trống. Quá trình tiền xử lý như sau:

  • Chúng tôi dùng một vài luật đơn giản để tách các đoạn văn thành các câu riêng biệt
  • Tiếp theo là quá trình chuẩn hoá các dấu câu ở các dạng unicode về cùng một chuẩn
  • Sử dụng công cụ Vitk để tách từ
  • Cuối cùng là chuyển về định dạng CoNLL.

Chúng tôi sử dụng bộ nhãn BIO cho việc gán nhãn cho từng từ. Ví dụ: 

ngư_dân tỉnh Bình_Định tham_gia ...
O B-LOC I_LOC O 

Trong đó, O — Outside: nhãn bên ngoài cụm tên riêng, B-xxx — Begin: nhãn bắt đầu cụm tên riêng loại xxx và I-xxx — Inside: nhãn bên trong cụm tên riêng loại xxx.

Độ đo đánh giá chất lượng hệ thống

Bài toán Nhận dạng tên riêng thường sử dụng độ đo Precision (P), Recall (R) F1. Precision là tỷ lệ tên riêng được xác định chính xác trên toàn bộ tên riêng mà hệ thống nhận dạng được. Recall là tỷ lệ tên riêng mà hệ thống nhận diện được trên tổng số tên riêng có trong tập Testing. F1 được tính bằng công thức 2*P*R /(P+R). 

Cài đặt thực nghiệm các biến thể kiến trúc BiLSTM+CRF trong thực nghiệm

  1. Các thông số chung: Chúng tôi xét số chiều cho word embedding và character embedding lần lượt là 100 và 25. Hai lớp BiLSTM có cùng số chiều với vector đầu vào. Quá trình huấn luyện dựa trên thuật toán Back-propagation và cập nhật toàn bộ tham số của kiến trúc sử dụng Stochastic Gradient Descent với tỷ lệ học (alpha=0.005). Tỷ lệ Dropout r được gán bằng 0.5. Sau 100 epoch, chúng tôi chọn ra mô hình đạt được độ chính xác tốt nhất trên tập Development. Trong quá trình kiểm tra chất lượng trên bộ dữ liệu Testing, chúng tôi sử dụng thuật toán Viterbi Decoding để chọn ra chuỗi nhãn tên riêng tốt nhất.
  2. Hệ thống Baseline: Kiến trúc BiLSTM và CRF — Chúng tôi sử dụng BiLSTM để trích xuất các thông tin hữu ích của các từ và ngữ cảnh, sau đó đưa vào CRF để dự đoán nhãn NER. Ma trận word embedding được khởi tạo ngẫu nhiên và cập nhật trong quá trình học. Các văn bản đầu vào của hệ thống Baseline không được tách từ.
  3. Hệ thống 1 (Sys.1): Thêm Character BiLSTM — Tương tự hệ thống Baseline, chúng tôi sử dụng kiến trúc BiLSTM+CRF để dự đoán nhãn NER. Tuy nhiên, chúng tôi sử dụng thêm lớp Character BiLSTM để tích hợp thêm thông tin ở cấp độ ký tự vào vector word embedding của mỗi từ. Ma trận word embedding và character embedding đều được khởi tạo ngẫu nhiên.
  4. Hệ thống 2 (Sys.2): Ảnh hưởng của tách từ — Với kiến trúc tương tự như Sys.1, ở hệ thống 2 này chúng tôi tiến hành tách từ ở các văn bản đầu vào để đánh giá sự ảnh hưởng của việc tách từ đến độ chính xác khi gán nhãn của hệ thống. 
  5. Hệ thống 3 (Sys.3): FastText Word Embedding — Ở hệ thống này, chúng tôi giữ nguyên các cấu hình như hệ thống 2. Tuy nhiên, chúng tôi sử dụng ma trận word embedding được tạo ra bởi thuật toán FastText trên tập dữ liệu tin tức Báo Mới. Ma trận character embedding vẫn được khởi tạo ngẫu nhiên.
  6. Hệ thống 4 (Sys.4): GloVe Word Embedding — Chúng tôi thay thế ma trận word embedding trong hệ thống 3 bằng ma trận word embedding tạo ra bởi thuật toán GloVe trên cùng tập dữ liệu tin tức Báo Mới.

Bảng 2 tóm tắt lại sự khác biệt quan trọng giữa các biến thể của kiến trúc BiLSTM+CRF được dùng trong thực nghiệm 

+----------+---------+------------------+---------------------+
| Model | Tách Từ | Character BiLSTM | Word Embedding |
+----------+---------+------------------+---------------------+
| Baseline | Không | Không | Khởi tạo ngẫu nhiên |
| Sys.1 | Không | Có | Khởi tạo ngẫu nhiên |
| Sys.2 | Có | Có | Khởi tạo ngẫu nhiên |
| Sys.3 | Có | Có | FastText |
| Sys.4 | Có | Có | GloVe |
+----------+---------+------------------+---------------------+ 

Bảng 2: Danh sách các hệ thống thực nghiệm 

Kết quả thực nghiệm

Bảng 3 thể hiện kết quả thực nghiệm của toàn bộ các hệ thống trên cả 3 độ đo Precision, Recall và F1. Cả 4 hệ thống biến thể (Sys.1–4) đạt được độ chính xác cao hơn hệ thống Baseline ở cả 3 độ đo. Điểm F1 và Recall của hệ thống 1 tăng vượt bậc so với baseline. Điều này chỉ ra các thông tin từ cấp độ ký tự của mỗi từ là cực kỳ hữu ích cho bài toán NER. Hơn thế nữa, khi áp dụng việc tách từ ở giai đoạn tiền xử lý cũng giúp cho hệ thống 2 tạo ra kết quả tốt hơn ở cả 3 độ đo so với hệ thống 1. Khi sử dụng ma trận word embedding (Sys.3–4) đạt được từ tập dữ liệu tin tức Báo Mới cũng giúp hệ thống đạt được độ chính xác vượt trội hơn trên cả 3 độ đo. 

+----------+-----------+--------+-------+
| Model | Precision | Recall | F1 |
+----------+-----------+--------+-------+
| Baseline | 81.14 | 73.03 | 76.98 |
| Sys.1 | 81.98 | 79.49 | 80.72 |
| Sys.2 | 82.49 | 80.15 | 81.30 |
| Sys.3 | 89.02 | 89.38 | 89.20 |
| Sys.4 | 88.19 | 89.08 | 88.63 |
+----------+-----------+--------+-------+ 

Bảng 3: Kết quả đạt được của các hệ thống trên tập Development 

Kết quả chính thức của BTC VLSP 2018

Dựa trên các kết quả thực nghiệm ở trên, chúng tôi quyết định gửi 2 hệ thống 3 và 4 đến BTC VLSP 2018 để đánh giá độ chính xác trên bộ dữ liệu Test. Bảng 4 thể hiện kết quả đạt được trên 2 cấp độ nhãn: Top-level — nhãn ngoài cùng và Nested Level — nhãn ở tất cả cấp độ. 

+-------+-------------------------+---------------------------+
| | Top-level Evaluation | Nested Level Evaluation |
+ Model +-----------+--------+----+-------------+--------+----+
| | Precision | Recall | F1 | Precision | Recall | F1 |
+-------+-----------+--------+----+-------------+--------+----+
| Sys.3 | 77 | 70 | 74 | 71 | 65 | 68 |
| Sys.4 | 76 | 72 | 74 | 70 | 66 | 68 |
+-------+-----------+--------+----+-------------+--------+----+ 

Bảng 4: Kết quả chính thức của BTC VLSP 2018 

Trong blog này, chúng tôi đã trình bày phương pháp áp dụng kiến trúc kết hợp Bidirectional Long Short-Term Memory và Conditional Random Field để giải quyết bài toán Nhận dạng tên riêng trong văn bản Tiếng Việt. Ngoài ra, chúng tôi cũng đã tích hợp thêm kiến trúc BiLSTM ở cấp độ ký tự để giúp hệ thống BiLSTM+CRF có được ma trận word embedding tốt hơn.

Với hệ thống nêu trên, chúng tôi đã đạt được độ chính xác F1 tổng quát 74% (Level 1) và 68% (Nested Level) trên tập dữ liệu Test của cuộc thi VLSP NER Shared Task, xếp vị trí thứ 2 chung cuộc.

Điểm yếu trong mô hình của chúng tôi là không có khả năng xử lý các trường hợp nhãn lồng nhau. Để xử lý được vấn đề này, chúng tôi sẽ xem xét bài toán nhận dạng tên riêng như bài toán phân tích cây (tree parsing) như vậy sẽ thể hiện được các cấp độ khác nhau của nhãn tên riêng. Đây sẽ là hướng đi trong thời gian sắp tới của nhóm nghiên cứu.

[1] VLSP 2018 http://vlsp.org.vn/vlsp2018

#Crf #Neutralnetworks #Ner