Các bước xử lý NLP bao gồm những gì? Trong phần 1, chúng ta đã có những hiểu biết cơ bản về NLP . Trong bài này, hãy cùng tìm hiểu các bước xử lý bài toán xử lý ngôn ngữ tự nhiên .
Chúng ta hãy xem xét một ví dụ về đoạn text trên Wikipedia như sau:
London is the capital and most populous city of England and the United Kingdom. Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia. It was founded by the Romans, who named it Londinium.
Liệu máy tính có thể thực sự hiểu được từ “London” là tên một thành phố, “London” nằm ở Anh, “London” đã từng là nơi người La Mã định cư,… Nhưng để đath được điều đó, chúng ta cần phải dạy máy tính hiểu được những khái niệm cơ bản nhất về ngôn ngữ viết và từ đó, ta sẽ phát triển dần.
Bước 1: Tách câu
Bước đầu tiên trong Các bước xử lý NLP là ta cần phải tách đoạn văn thành những câu nhỏ. Kết quả đầu ra như sau:
- “London is the capital and most populous city of England and the United Kingdom.”
- “Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia.”
- “It was founded by the Romans, who named it Londinium.”
Giả định rằng mỗi câu ở trên có một ý nghĩa riêng biệt. Vì chúng có có thể dễ dàng viết chương trình để hiểu một câu hơn là một đoạn văn.
Xây dưng chương trình tách câu rất đơn giản. Cứ khi nào ta thấy dấu chấm câu, khi đoa một câu được coi là kết thúc. Tuy nhiên, chương trình NLP phức tạp hơn một chút. Và đánh giá cả về định dạng của văn bản.
Bước 2: Tách từ
Sau khi tách câu, chúng ta hãy cùng tách các từ. Giai đoạn này được gọi là Tokenization. Sử dụng câu đầu tiên trong ví dụ trên, ta thấy:
“London is the capital and most populous city of England and the United Kingdom.”
“London”, “is”, “ the”, “capital”, “and”, “most”, “populous”, “city”, “of”, “England”, “and”, “the”, “United”, “Kingdom”, “.”
Việc Tokenization rất đơn giản trong tiếng Anh. Chúng ta chỉ cần tách từ mỗi khi gặp khoảng trống. Khi đó, các dấu câu cũng được coi là một mã thông báo riêng biệt vì dấu này cũng có ý nghĩa. Với những với những ngôn ngữ khác (ví dụ như tiếng Việt) thì việc Tokenization sẽ phức tạp hơn.
Bước 3: Gắn nhãn loại từ cho mỗi từ – POS
Bây giờ, ta hãy xem xét từng từ một và bắt đầu gắn nhãn cho từ. Các nhãn đơn giản nhất là Động từ, Danh từ, Tính từ, Trạng từ,… Việc xác định được loại từ của mỗi từ trong câu sẽ giúp ta có thể hiểu được ý nghĩa của câu.
Để làm được điều này, ta cần xây dựng một mô hình gắn nhãn từ. Trong đó, từ được dự đoán gắn nhãn và những từ trước đó đã được gắn nhãn sẽ được đưa vào làm thuôc tính mô hình.
Mô hình gẵn nhãn từ vựng được đào tạo bằng cách cung cấp dữ liệu đầu vào gồm hàng triệu những câu tiếng Anh với mỗi từ của bài viết đều đã được gắn nhãn trước.
Lưu ý rằng, mô hình này được thực hiện trên phương pháp thống kê. Nó chưa thực sự hiểu được ý nghĩa từ ngữ như con người. Mô hình chỉ có thể xác định được nhãn từ giống với những từ trước đó thuật toán đã nhìn qua.
Sau khi chạy trên câu văn trên, chúng ta có kết quả như sau:
Với bước này, chúng ta đã có được một số thông tin có ích. Ví dụ, các danh từ trong câu là “London” và “capital”. Như vậy, máy có thể xác định chủ thể trong câu là “London”.
Bước 4: Lemmatization
Bước 4 trong Các bước xử lý NLP là Lemmatization, bước này đặc biệt quan trọng trong tiếng Anh. Cụ thể, một từ có thể có những hình dạng khác nhau. Ví dụ:
- I had a pony.
- I had two ponies.
Cả hai câu trên đều nói về “Pony”, nhưng cách thức biểu diễn lại khác nhau. Do vậy, việc hiểu được định dạng gốc của từ sẽ giúp ích trong việc xử lý văn bản. Nếu không, với hai chuỗi kí tự “pony” và “ponies”, máy tính sẽ hiểu đây là hai vấn đề khác nhau.
Trong NLP , quá trình trên được gọi là quy trình Lemmatization.
Tương tự đối với Động từ. Chúng ta có thể chuyển đổi các dạng động từ thành những định dạng gốc. Do vậy, ta có thể viết: “I had two ponies” thành “I [have] two [pony].”
Để Lemmatization, ta thường thực hiện bằng cách dựa theo một bảng tra cứu các dạng từ cùng một số các quy tắc khác.
Áp dụng với câu văn trên, ta có:
Sự thay đổi duy nhất ở đây là động từ “is” chuyển thành “be”.
Bước 5: Xác định Stop Words
Bước tiếp theo, ta cần xác định được độ quan trọng của mỗi từ trong câu. Trong tiếng Anh có rất nhiều từ xuất hiện thường xuyên như: “and”, “the”, hay “a”. Khi thực hiện thống kê text, những từ này sẽ làm nhiễu và ta khó xác định được những từ có độ quan trọng. Những từ đó được gọi là Stop Word – những từ chúng ta cần loại bỏ khi thực hiện thống kê text.
Dưới đây lầ kết quả sau khi chúng ta loại bỏ Stop Words với câu văn trên:
Các từ Stop Words thường được xác định bằng cách kiểm tra theo kho từ vựng với những từ đã biết. Tuy nhiên, ta không có một tiêu chuẩn cụ thể nào cho các kho dữ liệu thu thập đó. Và những Stop Words có thể tùy thuộc vào bài toán của bạn.
Ví dụ: trong trường hợp bạn muốn tổng hợp những ban nhạc Rock trên thế giới, bạn chắc chắn sẽ không nên bỏ từ “The” vào Stop Words vì những năm 1980, thế giới có một ban nhạc rất nổi tiếng mang tên “The”.
Bước 6: Phân tích cú pháp
Bước tiếp theo, ta sẽ tìm hiểu mối quan hệ của các từ trong câu. Qúa trình này được gọi là phân tích cú pháp.
Mục tiêu là chúng ta sẽ xây dựng một cây cú pháp. Mà ở đó, nút gốc sẽ thể hiện động từ chính trong câu. Áp dụng với câu trên, ta sẽ có:
Chúng ta có thể dự đoán mối quan hệ giữa hai từ đó như sau:
Cây cú pháp này cho chúng ta thấy chủ đề của câu văn trên là “London” và nó có mối quan hệ “be” với từ “capital”. Do vậy, máy tính có thể hiểu được “London is a capital”. Và tiếp tục phát triển theo cây cú pháp, ta có thể lần ra được: London là thủ đô của nước Anh.
Giống như việc dự đoán POS, Cây cú pháp cũng được xây dựng bằng cách đưa các từ vào mô hình học máy và đưa kết quả dự đoán. Tuy nhiên, việc phân tích cú pháp phức tạp hơn và sẽ yêu cầu đầu vào là toàn bộ đoạn văn để xác định tổng quát nhất. Bạn có thể tham khảo tại đây.
Bước 6b: Xác định cụm danh từ
Qua các bước trên chúng ta đã xử lý các từ trong câu. Tuy nhiên, trên thực tế, một từ có nghĩa thực sự không chỉ được tạo bằng một tiếng. Chúng ta còn có những cụm danh từ, cụm động từ, hay đơn giản trong tiếng anh, chúng ta có những từ đi với nhau để tạo nên một nghĩa.
Hãy cùng xét vị dự sau:
Chúng ta có thể chuyển thành
Bước này có thể không cần thiết trong một số bài toán. Nhưng đây lại là cách đơn giản để ta có thể hiểu được một câu hơn. Với phương pháp này, ta không cần xác định chi tiết từ nào là tihs từ mà thay vào đó, ta hoàn thành các ideas hơn.
Bước 7 : Named Entity Recognition (NER)
NER là bước xác định danh từ thực thể. Sau khi hoàn thành xác định các chủ thể của mỗi câu đơn, ta sẽ xác định chủ thể cho toàn câu ghép. Hay nói các khác, chúng ta xác định cây sau có phải vẫn nói về chủ thể của câu trước không?
Nhìn vào ví dụ sau đây:
Xác định thực thể là bước ta xác định được các nhãn màu xanh trên trong thế giới thực. Kết quả ta được:
Nhưng mô hình NER không chỉ đơn giản dừng ở đây. Đầu ra của mô hình còn dự đoán được danh từ mà câu đại diện theo bối cảnh trong câu. Một mô hình NER tốt sẽ giúp ta xác định được “Brooklyn Decker” chỉ người khác biệt với “Brooklyn” chỉ địa danh teo ngữ cảnh văn bản.
Dưới đây là một số thực thể mà mô hình NER sẽ xác định:
- Tên người
- Tên công ty
- Tên địa danh
- Tên sản phẩm
- Ngày/tháng/năm :Thời gian
- Chỉ số tiền tệ
- Tên sự kiện
Bạn có thể tham khảo demo NER trên thu viện Spacy qua đây.
Bước 8: Kết hợp đoạn văn
Phần trên chúng ta đã có những nền tảng có bản cho bài toán NLP . Giờ chúng ta cần nối các xác định những cách gọi khác nhau có thuộc về một chủ thể không.
Ví dụ, bạn thấy trong tiếng anh có nhứng từ như “He”, “she”, “it”,… được sử dụng để thay thế những đại từ trong câu. Con người thì có thể xác định những chủ thể này theo bối cảnh. Những máy tính thì chưa. Do vậy, đây chính là vấn đề chúng ta cần giải quyết.
“It was founded by the Romans, who named it Londinium.”
Như câu trên, chúng ta có thể hiểu “it” “was founded by Romans”. Nhưng sẽ tuyệt vời hơn nếu máy tính có thể hiểu “It” trong bối cảnh này chỉ “London”.
Đó chính là mục tiêu của bước này. Chúng ta cùng xem xét trên cả đoạn văn như sau:
Sự kết hợp thông tin dựa trên cây cú pháp và việc xác định thực thể.
Đây là một vấn đề phức tạp. Deep Learning đã hỗ trợ rất nhiều trong phần này, tuy nhiên chưa thực sự là hoàn hảo. Bạn có thể tìm hiểu thêm về cách thức hoạt động tại đây.
Hi vọng thông qua bài này, các bạn đã hiểu thêm về Các bước xử lý NLP . Mời các bạn đọc tiếp phần 3 tại đây.