Tổng quan về xử lý ngôn ngữ tự nhiên

Chatbot ngày nay đã vượt qua vai trò là công cụ tiêu khiển, nó thông minh hơn, hiểu biết nhiều vấn đề hơn, biết lập trình và biết xử lý cả tình huống…. Và để có được thành tựu như hôm nay, chatbot đã khởi đầu bằng công nghệ kiểu như robot ELIZA.
Tổng quan về xử lý ngôn ngữ tự nhiên
Tổng quan về xử lý ngôn ngữ tự nhiên
Nguyễn Văn Hiến
17:05 ngày 12/10/2023
0
0

User: I am unhappy.

ELIZA: DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE UNHAPPY

User: I need some help, that much seems certain.

ELIZA: WHAT WOULD IT MEAN TO YOU IF YOU GOT SOME HELP

User: Perhaps I could learn to get along with my mother.

ELIZA: TELL ME MORE ABOUT YOUR FAMILY

User: My mother takes care of me.

ELIZA: WHO ELSE IN YOU FAMILY TAKES CARE OF YOU

User: My father.

ELIZA: YOUR FATHER

User: You are like my father in some ways.

Đoạn đối thoại trên được trích từ ELIZA, một hệ thống xử lý ngôn ngữ tự nhiên sơ khai nhất của nhân loại. Nó có thể trò chuyện đơn giản với con người bằng cách bắt chước cách nói chuyện của nhà trị liệu tâm lý Rogerian. Cơ chế hoạt động của ELIZA khá đơn giản, nó tìm các chuổi đầu vào khớp từ điển và tìm đầu ra tương ứng đã được huấn luyện  (ví dụ: I need X -  Bạn sẽ được gì khi có X?).

Giải thuật này thành công bởi vì ELIZA không cần thiết phải có công phu thâm hậu, hiểu hết mọi tâm tư sâu kín của bác sĩ Rogerian. Nó chỉ cần bắt chước một đoạn đối thoại (phi ngữ cảnh) đã được đào tạo trước đó. Theo tiết lộ của  Kỹ sư lập trình Weizenbaum, có những đoạn đối thoại mà cả người nói và người nghe tách biệt câu chuyện với các sự kiện bên ngoài. Và nếu khi đặt người thật vào cuộc tương tác với ELIZA, họ đã luôn khăn khăn nhận định rằng họ vừa trải qua một cuộc trò chuyện với một người nào đó.

Chatbot ngày nay đã vượt qua vai trò là công cụ tiêu khiển, nó thông minh hơn, hiểu biết nhiều vấn đề hơn, biết lập trình và biết xử lý cả tình huống…. Và để có được thành tựu như hôm nay, chatbot đã khởi đầu bằng công nghệ kiểu như robot ELIZA.

Biểu thức chính quy (the regular expression)

Chúng ta sẽ bắt đầu với công cụ quan trọng nhất trong xử lý ngôn ngữ tự nhiên, biểu thức chính quy (the regular expression).

Biểu thức chính quy được sử dụng để chỉ định các chuổi mà chúng ta muốn trích xuất từ một tài liệu. Bao gồm việc trích xuất chuỗi (I need X) trong ví dụ ở trên, đến việc xác định các chuổi như $199 hoặc $24,99 dùng để trích xuất giá tiền từ một bảng báo cáo.

Định nghĩa rõ ràng và dễ hiểu về regular expression bạn có thể xem tại đây: regular expression

Sau khi trích xuất chuỗi, chúng ta sẽ chuyển sang một nhiệm vụ khác gọi là chuẩn hóa văn bản (text normalization). Chuẩn hóa văn bản có nghĩa là chuyển đổi nó sang dạng thống nhất, nhằm thuận tiện để cho máy tính xử lý. Việc tách văn bản hoặc token hóa (tokenization) đóng vai trò quan trọng mang tính tiên đề trong chuỗi xử lý ngôn ngữ tự nhiên.

Chẳng hạn, các từ tiếng Anh cách nhau bằng khoản trắng, nhưng khoản trắng không phải lúc nào cũng đủ. Ví dụ New York và rock ’n’ roll được coi như từ dài nhưng sự thật là nó chứa khá nhiều dấu space. Hoặc để xử lý các tweets hay văn bản, chúng ta cần token hóa (tokenization) các emoticons giống như like thành :) hoặc các hashtags như #nlproc. Một số ngôn ngữ khác như tiếng Trung, tiếng Nhật thì việc token hóa cũng trở nên khó khăn hơn.

Một phần khác của công tác chuẩn hóa văn bản là là xử lý hai từ khác nhau nhưng có cùng ý nghĩa và nguồn gốc, ví dụ như: sang, sung và sings. Từ sing là bổ đề (lemma) của những từ này, và tập hợp của các từ chung có cùng nguồn gốc (lemmatizer maps) là sing. Việc đưa các từ về nguồn gốc của chúng (lemmatization) là rất cần thiết để xử lý những ngôn ngữ tương đối phức tạp về mặt hình thái như tiếng Ả Rập. Hoặc nói đơn giản hơn, Stemming là việc tách tiền tố và hậu tố của một từ. Việc chuẩn hóa văn bản còn bao gồm việc tách đoạn, chia văn bản thành các câu đơn lẻ, bằng cách sử dụng các yếu tố nhận dạng như dấu chấm (.), chấm than (!)...

Lemmatizer maps là gì?

Lemmatizer maps là một tập hợp các cặp từ và lemma của chúng. Lemma là dạng gốc của một từ, không phụ thuộc vào dạng biến thể của nó. Ví dụ, "cats" và "cat" là hai dạng biến thể của cùng một từ, có lemma là "cat".

Lemmatizer maps được sử dụng trong quá trình lemmatization, một quá trình chuyển đổi các từ biến thể thành dạng gốc của chúng. Quá trình này thường được sử dụng trong các ứng dụng xử lý ngôn ngữ tự nhiên (NLP), chẳng hạn như phân tích cảm xúc, phân loại văn bản và tìm kiếm.

Có hai loại lemmatizer maps chính:

- Rule-based lemmatizer maps: Các map này sử dụng các quy tắc ngữ pháp để chuyển đổi các từ biến thể thành dạng gốc của chúng.

- Statistical lemmatizer maps: Các map này sử dụng các mô hình thống kê để học các mối quan hệ giữa các từ biến thể và lemma của chúng.

Lemmatizer maps có thể được sử dụng trong nhiều ngôn ngữ khác nhau. Ví dụ, WordNet là một từ điển bách khoa toàn thư của các từ tiếng Anh, bao gồm các lemma cho các từ tiếng Anh.

Dưới đây là một số ví dụ về lemmatizer maps:

Ví dụ 1:

Từ

Lemma

Cats

Cat

Running

Run

Lemmatizer maps là một công cụ quan trọng trong NLP. Chúng có thể được sử dụng để cải thiện độ chính xác và hiệu quả của các ứng dụng NLP.

Cuối cùng, chúng ta cần so sánh các từ với các từ khác bằng thuật toán chỉnh sửa khoản cách (edit distance), đo lường mức độ giống nhau của hai chuổi dựa trên số lần chỉnh sửa (chèn, xóa, thay thế) để thay đổi chuổi này thành chuỗi khác. Edit distance là thuật toán có phạm vi ứng dụng rộng trong quá trình xử lý ngôn ngữ, từ việc sửa lỗi chính tả, nhận dạng giọng nói cho đến coreference resolution.

Coreference resolution là gì?

Coreference resolution là một nhiệm vụ xử lý ngôn ngữ tự nhiên (NLP) liên quan đến việc xác định các danh từ cùng đề cập đến cùng một thực thể trong một văn bản. Ví dụ, trong câu "John saw Mary and she smiled at him", danh từ "she" và "Mary" đều đề cập đến cùng một người phụ nữ.

Coreference resolution là một nhiệm vụ quan trọng trong NLP vì nó có thể giúp cải thiện độ chính xác và hiệu quả của nhiều ứng dụng, chẳng hạn như:

Tìm kiếm thông tin: Coreference resolution có thể được sử dụng để cải thiện kết quả tìm kiếm bằng cách đảm bảo rằng các kết quả liên quan đến cùng một thực thể được nhóm lại với nhau.

Phân tích ngôn ngữ tự nhiên: Coreference resolution có thể được sử dụng để hiểu ý nghĩa của văn bản bằng cách xác định các mối quan hệ giữa các thực thể trong văn bản.

Tự động hóa: Coreference resolution có thể được sử dụng để tự động hóa các tác vụ như tóm tắt văn bản và tạo văn bản.

Có nhiều phương pháp khác nhau để giải quyết coreference. Một số phương pháp phổ biến bao gồm:

Rule-based coreference resolution: Các phương pháp này sử dụng các quy tắc ngữ pháp và ngữ nghĩa để xác định các danh từ cùng đề cập.

Statistical coreference resolution: Các phương pháp này sử dụng các mô hình thống kê để học các mối quan hệ giữa các danh từ.

Deep learning coreference resolution: Các phương pháp này sử dụng các mô hình học máy sâu để giải quyết coreference.

Coreference resolution là một nhiệm vụ khó khăn vì ngôn ngữ con người có thể mơ hồ và phức tạp. Tuy nhiên, các phương pháp coreference resolution đã được cải thiện đáng kể trong những năm gần đây.

Dưới đây là một số ví dụ về coreference resolution:

Ví dụ 1:

John saw Mary and she smiled at him.

Trong ví dụ này, danh từ "she" đề cập đến danh từ "Mary".

Ví dụ 2:

The cat sat on the mat and it purred.

Trong ví dụ này, danh từ "it" đề cập đến danh từ "cat".

Ví dụ 3:

The man who was wearing a hat walked into the store.

Trong ví dụ này, danh từ "man" đề cập đến danh từ "he".

Tác giả

Nguyễn Văn Hiến

Tôi là Nguyễn Văn Hiến, Founder của Tummosoft. Tôi có hơn 20 năm lập trình, vào thời điểm máy vi tính còn là tài sản quý giá của người giàu. Nhưng sức đam mê công nghệ của tôi đã giúp tôi vượt qua những khó khăn và theo đuổi nghề lập trình. Đối với tôi, sáng tạo các sản phẩm công nghệ bằng ngôn ngữ cũng giống như người nghệ sĩ sáng tác những họa phẩm.

Tổng quan về xử lý ngôn ngữ tự nhiên

Chatbot ngày nay đã vượt qua vai trò là công cụ tiêu khiển, nó thông minh hơn, hiểu biết nhiều vấn đề hơn, biết lập trình và biết xử lý cả tình huống…. Và để có được thành tựu như hôm nay, chatbot đã khởi đầu bằng công nghệ kiểu như robot ELIZA.

Hệ thống lý luận Bayesian

Từ những năm 1960, việc sử dụng kho ngữ liệu lớn để xử lý ngôn ngữ tự nhiên bắt đầu được định hình. Bộ sưu tập Ameriacan English đã tổng hợp được hơn một triệu văn bản từ các tạp chí, báo, tiểu thuyết...

Mô hình xác xuất The Noisy Channel, giải pháp xử lý tín hiệu bị nhiễu sau truyền dẫn

Giai đoạn thứ 3 (1970-1983) chứng kiến sự phát triển mạnh mẽ của ngành xử lý ngôn ngữ tự nhiên và nhận dạng tiếng nói và đồng thời các thuật toán và mô hình đã được phát triển đó vẫn được duy trì phát triển.

Mô hình ẩn Hidden Markov Model (HMM), bước tiến lớn trong lĩnh vực trí tuệ nhân tạo

Mô hình ẩn Hidden Markov Model (HMM) được phát triển trên lý thuyết xác xuất thông kê, giả định rằng: Có 2 nguồn thông tin: (1) Một nguồn thì có thể thu thập được; và nguồn thứ (2) thì không thu thập được (bị ẩn). Và chúng ta có thể giải mã nguồn thông tin thứ 2 qua xác xuất và suy luận.

Xác suất có điều kiện (conditional probability) và ví dụ bằng Java

Xác suất có điều kiện là bài toán dùng để tính một sự kiện B có (hoặc không) khả năng xảy ra khi biết rằng sự kiện A đã xảy ra. Công thức dùng để tính xác xuất có điều kiện là P(B|A).

Automata không có gì khó hiểu!

Khi nhắc đến Lý thuyết tính toán (Theory of Computation) nghĩa là chúng ta đang bàn đến một nhánh của Khoa học máy tính (Coputer Science), lĩnh vực có thể giải quyết các vấn đề tính toán bằng cách sử dụng thuật toán (algorithm) và các mô hình tính toán (model of computation).