NLP – Stemming và Lemmatization

Danh sách những bài viết về NLP :

Trong quá trình xử lý ngôn ngữ tự nhiên, chúng ta sẽ có nhu cầu so sánh các từ (token) với nhau. Việc so sánh này tưởng chừng như đơn giản là lấy 2 chuỗi ký tự và dùng phép “==” để kiểm tra, nhưng thực tế thì không phải là như vậy. Đối với một số ngôn ngữ, tiêu biểu là tiếng Anh, mỗi từ có thể có nhiều biến thể khác nhau. Điều này làm cho việc so sánh giữa các từ là không thể mặc dù về mặc ý nghĩa cơ bản là như nhau. Ví dụ các từ “walks“, “walking“, “walked” đều là các biến thể của từ “walk” và đều mang ý nghĩa là “đi bộ”. Vậy làm sao để so sánh các từ như thế với nhau? Lemmatization và Stemming chính là 2 kỹ thuật thường được dùng cho việc này.

Stemming

Stemming là kỹ thuật dùng để biến đổi 1 từ về dạng gốc (được gọi là stem hoặc root form) bằng cách cực kỳ đơn giản là loại bỏ 1 số ký tự nằm ở cuối từ mà nó nghĩ rằng là biến thể của từ. Ví dụ như chúng ta thấy các từ như walked, walking, walks chỉ khác nhau là ở những ký tự cuối cùng, bằng cách bỏ đi các hậu tố -ed, -ing hoặc -s, chúng ta sẽ được từ nguyên gốc là walk. Người ta gọi các bộ xử lý stemming là Stemmer.

Bởi vì nguyên tắc hoạt động của stemmer rất là đơn giản như vậy cho nên tốc độ xử lý của nó rất là nhanh, và kết quả stem đôi khi không được như chúng ta mong muốn. Chẳng hạn như từ goes sẽ được stem thành từ goe (bỏ chữ s cuối từ) trong khi đó stem của từ go vẫn là go, kết quả là 2 từ “goes” và “go” sau khi được stem thì vẫn không giống nhau. Một nhược điểm khác là nếu các từ dạng bất quy tắt như went hay spoke thì stemmer sẽ không thể đưa các từ này về dạng gốc là go hay speak.

Tuy có những điểm yếu kém như trên nhưng trong thực tiễn Stemming vẫn được sử dụng khá phổ cập trong NLP vì nó có vận tốc giải quyết và xử lý nhanh và tác dụng ở đầu cuối nhìn chung không hề tệ khi so với Lemmatization .

Lemmatization

Khác với Stemming là xử lý bằng cách loại bỏ các ký tự cuối từ một cách rất heuristic, Lemmatization sẽ xử lý thông minh hơn bằng một bộ từ điển hoặc một bộ ontology nào đó. Điều này sẽ đảm bảo rằng các từ như “goes“, “went” và “go” sẽ chắc chắn có kết quả trả về là như nhau. Kể các từ danh từ như mouse, mice cũng đều được đưa về cùng một dạng như nhau. Người ta gọi bộ xử lý lemmatization là lemmatizer

Nhược điểm của lemmatization là vận tốc giải quyết và xử lý khá chậm vì phải triển khai tra cứu từ trong cơ sở tài liệu. Trong những ứng dụng giải quyết và xử lý NLP mà cần độ đúng chuẩn cao hơn và thời hạn không quan trọng, người ta hoàn toàn có thể sử dụng Lemmatization .

Trong tiếng Việt

Một tin vui là so với tiếng Việt thì tất cả chúng ta không cần phải dùng 2 kỹ thuật này vì mỗi từ tiếng Việt nó không có những biến thể khác nhau ( dựa trên hiểu biết của bản thân mình ). Vì thế nếu bạn đang làm một ứng dụng NLP cho tiếng Việt thì cũng đừng lo về việc này, chỉ khi nào giải quyết và xử lý ngôn từ như tiếng Anh thì chắc như đinh tất cả chúng ta sẽ phải chăm sóc đến chúng .

Nếu muốn tìm hiểu thêm về Stemming và Lemmatization, các bạn có thể đọc bài viết này: http://textminingonline.com/dive-into-nltk-part-iv-stemming-and-lemmatization. Bộ NLTK của Python cũng đã có sẵn các thư viện thực hiện stemming và lemmatization cho tiếng Anh nên việc tích hợp vào các ứng dụng khá dễ dàng.

Chia sẻ:

Thích bài này:

Thích

Đang tải …

Source: https://ta-ogilvy.vn
Category: Hỏi Đáp