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

Tổng quan về xử lý ngôn ngữ tự nhiên
Tổng quan về xử lý ngôn ngữ tự nhiên
4 Tháng Chín 2024 - 12:53 sáng
155
155
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.

<div style=”margin:20px;”>

<p>User: I am unhappy.</p>

<p>ELIZA: DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE UNHAPPY</p>

<p>User: I need some help, that much seems certain.</p>

<p>ELIZA: WHAT WOULD IT MEAN TO YOU IF YOU GOT SOME HELP</p>

<p>User: Perhaps I could learn to get along with my mother.</p>

<p>ELIZA: TELL ME MORE ABOUT YOUR FAMILY</p>

<p>User: My mother takes care of me.</p>

<p>ELIZA: WHO ELSE IN YOU FAMILY TAKES CARE OF YOU</p>

<p>User: My father.</p>

<p>ELIZA: YOUR FATHER</p>

<p>User: You are like my father in some ways.</p>

</div>

<p>Đoạn đối thoại tr&ecirc;n được tr&iacute;ch từ ELIZA, một hệ thống xử l&yacute; ng&ocirc;n ngữ tự nhi&ecirc;n sơ khai nhất của nh&acirc;n loại. N&oacute; c&oacute; thể tr&ograve; chuyện đơn giản với con người bằng c&aacute;ch bắt chước c&aacute;ch n&oacute;i chuyện của nh&agrave; trị liệu t&acirc;m l&yacute; Rogerian. Cơ chế hoạt động của ELIZA kh&aacute; đơn giản, n&oacute; t&igrave;m c&aacute;c chuổi đầu v&agrave;o khớp từ điển v&agrave; t&igrave;m đầu ra tương ứng đ&atilde; được huấn luyện&nbsp; (v&iacute; dụ: I need X -&nbsp; Bạn sẽ được g&igrave; khi c&oacute; X?).</p>

<p>Giải thuật n&agrave;y th&agrave;nh c&ocirc;ng bởi v&igrave; ELIZA kh&ocirc;ng cần thiết phải c&oacute; c&ocirc;ng phu th&acirc;m hậu, hiểu hết mọi t&acirc;m tư s&acirc;u k&iacute;n của b&aacute;c sĩ Rogerian. N&oacute; chỉ cần bắt chước một đoạn đối thoại (phi ngữ cảnh) đ&atilde; được đ&agrave;o tạo trước đ&oacute;. Theo tiết lộ của&nbsp; Kỹ sư lập tr&igrave;nh Weizenbaum, c&oacute; những đoạn đối thoại m&agrave; cả người n&oacute;i v&agrave; người nghe t&aacute;ch biệt c&acirc;u chuyện với c&aacute;c sự kiện b&ecirc;n ngo&agrave;i. V&agrave; nếu khi đặt người thật v&agrave;o cuộc tương t&aacute;c với ELIZA, họ đ&atilde; lu&ocirc;n khăn khăn nhận định rằng họ vừa trải qua một cuộc tr&ograve; chuyện với một người n&agrave;o đ&oacute;.</p>

<p>Chatbot ng&agrave;y nay đ&atilde; vượt qua vai tr&ograve; l&agrave; c&ocirc;ng cụ ti&ecirc;u khiển, n&oacute; th&ocirc;ng minh hơn, hiểu biết nhiều vấn đề hơn, biết lập tr&igrave;nh v&agrave; biết xử l&yacute; cả t&igrave;nh huống&hellip;. V&agrave; để c&oacute; được th&agrave;nh tựu như h&ocirc;m nay, chatbot đ&atilde; khởi đầu bằng c&ocirc;ng nghệ kiểu như robot ELIZA.</p>

<h2>Biểu thức ch&iacute;nh quy (the regular expression)</h2>

<p>Ch&uacute;ng ta sẽ bắt đầu với c&ocirc;ng cụ quan trọng nhất trong xử l&yacute; ng&ocirc;n ngữ tự nhi&ecirc;n, biểu thức ch&iacute;nh quy (the regular expression).</p>

<p>Biểu thức ch&iacute;nh quy được sử dụng để chỉ định c&aacute;c chuổi m&agrave; ch&uacute;ng ta muốn tr&iacute;ch xuất từ một t&agrave;i liệu. Bao gồm việc tr&iacute;ch xuất chuỗi (I need X) trong v&iacute; dụ ở tr&ecirc;n, đến việc x&aacute;c định c&aacute;c chuổi như $199 hoặc $24,99 d&ugrave;ng để tr&iacute;ch xuất gi&aacute; tiền từ một bảng b&aacute;o c&aacute;o.</p>

<p>Định nghĩa r&otilde; r&agrave;ng v&agrave; dễ hiểu về regular expression bạn c&oacute; thể xem tại đ&acirc;y: <a href=”https://vi.wikipedia.org/wiki/Bi%E1%BB%83u_th%E1%BB%A9c_ch%C3%ADnh_quy”>regular expression</a></p>

<p>Sau khi tr&iacute;ch xuất chuỗi, ch&uacute;ng ta sẽ chuyển sang một nhiệm vụ kh&aacute;c gọi l&agrave; chuẩn h&oacute;a văn bản (text normalization). Chuẩn h&oacute;a văn bản c&oacute; nghĩa l&agrave; chuyển đổi n&oacute; sang dạng thống nhất, nhằm thuận tiện để cho m&aacute;y t&iacute;nh xử l&yacute;. Việc t&aacute;ch văn bản hoặc token h&oacute;a (tokenization) đ&oacute;ng vai tr&ograve; quan trọng mang t&iacute;nh ti&ecirc;n đề trong chuỗi xử l&yacute; ng&ocirc;n ngữ tự nhi&ecirc;n.</p>

<p>Chẳng hạn, c&aacute;c từ tiếng Anh c&aacute;ch nhau bằng khoản trắng, nhưng khoản trắng kh&ocirc;ng phải l&uacute;c n&agrave;o cũng đủ. V&iacute; dụ New York v&agrave; rock &rsquo;n&rsquo; roll được coi như từ d&agrave;i nhưng sự thật l&agrave; n&oacute; chứa kh&aacute; nhiều dấu space. Hoặc để xử l&yacute; c&aacute;c tweets hay văn bản, ch&uacute;ng ta cần token h&oacute;a (tokenization) c&aacute;c emoticons giống như like th&agrave;nh 🙂 hoặc c&aacute;c hashtags như #nlproc. Một số ng&ocirc;n ngữ kh&aacute;c như tiếng Trung, tiếng Nhật th&igrave; việc token h&oacute;a cũng trở n&ecirc;n kh&oacute; khăn hơn.</p>

<p>Một phần kh&aacute;c của c&ocirc;ng t&aacute;c chuẩn h&oacute;a văn bản l&agrave; l&agrave; xử l&yacute; hai từ kh&aacute;c nhau nhưng c&oacute; c&ugrave;ng &yacute; nghĩa v&agrave; nguồn gốc, v&iacute; dụ như: sang, sung v&agrave; sings. Từ sing l&agrave; bổ đề (lemma) của những từ n&agrave;y, v&agrave; tập hợp của c&aacute;c từ chung c&oacute; c&ugrave;ng nguồn gốc (lemmatizer maps) l&agrave; sing. Việc đưa c&aacute;c từ về nguồn gốc của ch&uacute;ng (lemmatization) l&agrave; rất cần thiết để xử l&yacute; những ng&ocirc;n ngữ tương đối phức tạp về mặt h&igrave;nh th&aacute;i như tiếng Ả Rập. Hoặc n&oacute;i đơn giản hơn, Stemming l&agrave; việc t&aacute;ch tiền tố v&agrave; hậu tố của một từ. Việc chuẩn h&oacute;a văn bản c&ograve;n bao gồm việc t&aacute;ch đoạn, chia văn bản th&agrave;nh c&aacute;c c&acirc;u đơn lẻ, bằng c&aacute;ch sử dụng c&aacute;c yếu tố nhận dạng như dấu chấm (.), chấm than (!)…</p>

<h2>Lemmatizer maps l&agrave; g&igrave;?</h2>

<p>Lemmatizer maps l&agrave; một tập hợp c&aacute;c cặp từ v&agrave; lemma của ch&uacute;ng. Lemma l&agrave; dạng gốc của một từ, kh&ocirc;ng phụ thuộc v&agrave;o dạng biến thể của n&oacute;. V&iacute; dụ, “cats” v&agrave; “cat” l&agrave; hai dạng biến thể của c&ugrave;ng một từ, c&oacute; lemma l&agrave; “cat”.</p>

<p>Lemmatizer maps được sử dụng trong qu&aacute; tr&igrave;nh lemmatization, một qu&aacute; tr&igrave;nh chuyển đổi c&aacute;c từ biến thể th&agrave;nh dạng gốc của ch&uacute;ng. Qu&aacute; tr&igrave;nh n&agrave;y thường được sử dụng trong c&aacute;c ứng dụng xử l&yacute; ng&ocirc;n ngữ tự nhi&ecirc;n (NLP), chẳng hạn như ph&acirc;n t&iacute;ch cảm x&uacute;c, ph&acirc;n loại văn bản v&agrave; t&igrave;m kiếm.</p>

<h3>C&oacute; hai loại lemmatizer maps ch&iacute;nh:</h3>

<p><strong>- Rule-based lemmatizer maps:</strong> C&aacute;c map n&agrave;y sử dụng c&aacute;c quy tắc ngữ ph&aacute;p để chuyển đổi c&aacute;c từ biến thể th&agrave;nh dạng gốc của ch&uacute;ng.</p>

<p><strong>- Statistical lemmatizer maps:</strong> C&aacute;c map n&agrave;y sử dụng c&aacute;c m&ocirc; h&igrave;nh thống k&ecirc; để học c&aacute;c mối quan hệ giữa c&aacute;c từ biến thể v&agrave; lemma của ch&uacute;ng.</p>

<p>Lemmatizer maps c&oacute; thể được sử dụng trong nhiều ng&ocirc;n ngữ kh&aacute;c nhau. V&iacute; dụ, WordNet l&agrave; một từ điển b&aacute;ch khoa to&agrave;n thư của c&aacute;c từ tiếng Anh, bao gồm c&aacute;c lemma cho c&aacute;c từ tiếng Anh.</p>

<h3>Dưới đ&acirc;y l&agrave; một số v&iacute; dụ về lemmatizer maps:</h3>

<p>V&iacute; dụ 1:</p>

<table>

<tbody>

<tr>

<td width=”312″>

<p>Từ</p>

</td>

<td width=”312″>

<p>Lemma</p>

</td>

</tr>

<tr>

<td width=”312″>

<p><strong>Cats</strong></p>

</td>

<td width=”312″>

<p>Cat</p>

</td>

</tr>

<tr>

<td width=”312″>

<p><strong>Running</strong></p>

</td>

<td width=”312″>

<p>Run</p>

</td>

</tr>

</tbody>

</table>

<p>Lemmatizer maps l&agrave; một c&ocirc;ng cụ quan trọng trong NLP. Ch&uacute;ng c&oacute; thể được sử dụng để cải thiện độ ch&iacute;nh x&aacute;c v&agrave; hiệu quả của c&aacute;c ứng dụng NLP.</p>

<p>Cuối c&ugrave;ng, ch&uacute;ng ta cần so s&aacute;nh c&aacute;c từ với c&aacute;c từ kh&aacute;c bằng thuật to&aacute;n chỉnh sửa khoản c&aacute;ch (edit distance), đo lường mức độ giống nhau của hai chuổi dựa tr&ecirc;n số lần chỉnh sửa (ch&egrave;n, x&oacute;a, thay thế) để thay đổi chuổi n&agrave;y th&agrave;nh chuỗi kh&aacute;c. Edit distance l&agrave; thuật to&aacute;n c&oacute; phạm vi ứng dụng rộng trong qu&aacute; tr&igrave;nh xử l&yacute; ng&ocirc;n ngữ, từ việc sửa lỗi ch&iacute;nh tả, nhận dạng giọng n&oacute;i cho đến coreference resolution.</p>

<h2>Coreference resolution l&agrave; g&igrave;?</h2>

<p>Coreference resolution l&agrave; một nhiệm vụ xử l&yacute; ng&ocirc;n ngữ tự nhi&ecirc;n (NLP) li&ecirc;n quan đến việc x&aacute;c định c&aacute;c danh từ c&ugrave;ng đề cập đến c&ugrave;ng một thực thể trong một văn bản. V&iacute; dụ, trong c&acirc;u “John saw Mary and she smiled at him”, danh từ “she” v&agrave; “Mary” đều đề cập đến c&ugrave;ng một người phụ nữ.</p>

<p>Coreference resolution l&agrave; một nhiệm vụ quan trọng trong NLP v&igrave; n&oacute; c&oacute; thể gi&uacute;p cải thiện độ ch&iacute;nh x&aacute;c v&agrave; hiệu quả của nhiều ứng dụng, chẳng hạn như:</p>

<p>T&igrave;m kiếm th&ocirc;ng tin: Coreference resolution c&oacute; thể được sử dụng để cải thiện kết quả t&igrave;m kiếm bằng c&aacute;ch đảm bảo rằng c&aacute;c kết quả li&ecirc;n quan đến c&ugrave;ng một thực thể được nh&oacute;m lại với nhau.</p>

<p><strong><em>Ph&acirc;n t&iacute;ch ng&ocirc;n ngữ tự nhi&ecirc;n:</em></strong> Coreference resolution c&oacute; thể được sử dụng để hiểu &yacute; nghĩa của văn bản bằng c&aacute;ch x&aacute;c định c&aacute;c mối quan hệ giữa c&aacute;c thực thể trong văn bản.</p>

<p><strong><em>Tự động h&oacute;a:</em></strong> Coreference resolution c&oacute; thể được sử dụng để tự động h&oacute;a c&aacute;c t&aacute;c vụ như t&oacute;m tắt văn bản v&agrave; tạo văn bản.</p>

<p>C&oacute; nhiều phương ph&aacute;p kh&aacute;c nhau để giải quyết coreference. Một số phương ph&aacute;p phổ biến bao gồm:</p>

<p><strong><em>Rule-based coreference resolution:</em></strong> C&aacute;c phương ph&aacute;p n&agrave;y sử dụng c&aacute;c quy tắc ngữ ph&aacute;p v&agrave; ngữ nghĩa để x&aacute;c định c&aacute;c danh từ c&ugrave;ng đề cập.</p>

<p><strong><em>Statistical coreference resolution:</em></strong> C&aacute;c phương ph&aacute;p n&agrave;y sử dụng c&aacute;c m&ocirc; h&igrave;nh thống k&ecirc; để học c&aacute;c mối quan hệ giữa c&aacute;c danh từ.</p>

<p><strong><em>Deep learning coreference resolution:</em></strong> C&aacute;c phương ph&aacute;p n&agrave;y sử dụng c&aacute;c m&ocirc; h&igrave;nh học m&aacute;y s&acirc;u để giải quyết coreference.</p>

<p>Coreference resolution l&agrave; một nhiệm vụ kh&oacute; khăn v&igrave; ng&ocirc;n ngữ con người c&oacute; thể mơ hồ v&agrave; phức tạp. Tuy nhi&ecirc;n, c&aacute;c phương ph&aacute;p coreference resolution đ&atilde; được cải thiện đ&aacute;ng kể trong những năm gần đ&acirc;y.</p>

<h3>Dưới đ&acirc;y l&agrave; một số v&iacute; dụ về coreference resolution:</h3>

<p>V&iacute; dụ 1:</p>

<p>John saw Mary and she smiled at him.</p>

<p>Trong v&iacute; dụ n&agrave;y, danh từ “she” đề cập đến danh từ “Mary”.</p>

<p>V&iacute; dụ 2:</p>

<p>The cat sat on the mat and it purred.</p>

<p>Trong v&iacute; dụ n&agrave;y, danh từ “it” đề cập đến danh từ “cat”.</p>

<p>V&iacute; dụ 3:</p>

<p>The man who was wearing a hat walked into the store.</p>

<p>Trong v&iacute; dụ n&agrave;y, danh từ “man” đề cập đến danh từ “he”.</p>

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.

Bài viết liên quan

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