Word stemming trong xử lý ngôn ngữ tự nhiên: Từ khái niệm đến thuật toán

Tạo gốc từ (Word Stemming) là một trong những thao tác tiền xử lý dữ liệu phổ biến nhất được thực hiện trong hầu hết các dự án Xử lý ngôn ngữ tự nhiên (NLP). Vậy cụ thể stemming là làm gì? Đâu là những lỗi phổ biến nhất khi giải quyết bài toán tạo gốc từ? Những thuật toán nào có thể được ứng dụng? FriData tuần này sẽ cung cấp cái nhìn tổng quan về word stemming.

Word stemming là gì?

Nói một cách đơn giản, tạo gốc (stemming) là quá trình loại bỏ một phần của từ, hoặc tối giản một từ thành gốc của nó. Điều này không nhất thiết phải là rút gọn từ thành gốc từ điển. Một số thuật toán được sử dụng để quyết định cách cắt từ. Phần lớn, điều này khác với lemmatization, tức là rút gọn một từ thành gốc từ điển của nó, vốn phức tạp hơn và cần một lượng kiến ​​thức rất cao về một ngôn ngữ. 

Giả sử chúng ta có một tập hợp các từ – send và sending. Cả hai từ đều là các thì khác nhau của cùng một từ gốc “send”. Vì vậy, sau khi thực hiện stemming, ta chỉ có một từ duy nhất là “send”. 

Các lỗi trong word stemming

  • Over stemming

Overstemming là quá trình mà một phần lớn hơn của từ bị cắt bỏ nhiều hơn so với yêu cầu, do đó dẫn đến hai hoặc nhiều từ bị rút gọn thành cùng một từ gốc hoặc từ gốc không chính xác. Ví dụ, “university” và “universe”. Một số thuật toán gốc có thể giảm cả hai từ thành “univers”, tức là cả hai từ đều có nghĩa giống nhau và điều đó rõ ràng là sai. Vì vậy, việc chọn một thuật toán gốc phải và tối ưu hóa mô hình phải được thực hiện cẩn thận. 

  • Under stemming

Trong under stemming, hai hoặc nhiều từ có thể bị giảm sai thành nhiều hơn một từ gốc, trong khi chúng thực sự chỉ xuất phát từ cùng một từ. Ví dụ: hãy xem xét các từ “data” và “datum”. Một số thuật toán có thể giảm các từ này thành “dat” và “datu” tương ứng, điều này rõ ràng là sai. Cả hai điều này phải được giảm xuống cùng một giá trị gốc. 

Một số thuật toán Stemming

Porter’s Stemmer

Đây là một trong những phương pháp tạo gốc phổ biến nhất được đề xuất vào năm 1980. Nó dựa trên ý tưởng rằng các hậu tố trong tiếng Anh được tạo thành từ sự kết hợp của các hậu tố nhỏ hơn và đơn giản hơn. Thuật toán này được biết đến rộng rãi nhờ tốc độ và sự đơn giản của nó. Các ứng dụng chính của Porter Stemmer bao gồm khai thác dữ liệu và truy xuất thông tin. Tuy nhiên, các ứng dụng của nó chỉ giới hạn trong các từ tiếng Anh. Ngoài ra, gốc đầu ra từ thuật toán này không nhất thiết phải là một từ có nghĩa. Các thuật toán có bản chất khá dài và được biết đến là thuật toán gốc lâu đời nhất.

  • Ưu điểm: Hiệu suất cao và tỷ lệ lỗi thấp.
  • Hạn chế: Các biến thể hình thái được tạo ra không phải lúc nào cũng là từ có nghĩa.

Lovins Stemmer

Nó được đề xuất bởi Lovins vào năm 1968, loại bỏ hậu tố dài nhất khỏi một từ và từ đó được ghi lại để chuyển gốc này thành các từ hợp lệ.

Ví dụ: sitting -> sitt -> sit

  • Ưu điểm: Khả năng xử lý các từ số nhiều bất quy tắc như “teeth” và “tooth”, v.v.
  • Hạn chế: Tốn thời gian và tỷ lệ lỗi cao.

Dawson Stemmer

Đây là một phần mở rộng của phần mềm gốc Lovins, trong đó các hậu tố được lưu trữ theo thứ tự đảo ngược dựa trên chỉ mục theo độ dài và chữ cái cuối cùng của chúng.

  • Ưu điểm: thực hiện nhanh chóng và khả năng ứng dụng rộng hơn
  • Hạn chế: thực hiện phức tạp

Krovetz Stemmer

Thuật toán được đề xuất vào năm 1993 bởi Robert Krovetz, bao gồm các bước:

1) Chuyển dạng số nhiều của một từ sang dạng số ít.

2) Chuyển thì quá khứ của một từ thành thì hiện tại của nó và loại bỏ hậu tố ‘ing’.

Ví dụ: ‘children’ -> ‘child’

  • Ưu điểm: đơn giản, có thể được sử dụng để xử lý trước khi sử dụng các thuật toán tạo gốc khác.
  • Hạn chế: không hiệu quả trong trường hợp dữ liệu lớn.

Xerox Stemmer 

Ví dụ: ‘children’ -> ‘child’; ‘understood’ -> ‘understand’; ‘whom’ -> ‘who’; ‘best’ -> ‘good’

N-Gram Stemmer

N-gram là một tập hợp n ký tự liên tiếp được chiết xuất từ ​​một từ trong đó các từ tương tự sẽ có tỷ lệ n-gram chung cao.

Ví dụ: ‘INTRODUCTIONS’ cho n = 2 trở thành: * I, IN, NT, TR, RO, OD, DU, UC, CT, TI, IO, ON, NS, S *

  • Ưu điểm: nó dựa trên so sánh chuỗi và phụ thuộc vào ngôn ngữ.
  • Hạn chế: yêu cầu nguồn lực để tạo và lập chỉ mục n-gram, đồng thời không hiệu quả về thời gian

Snowball Stemmer

Khi so sánh với Porter Stemmer, Snowball Stemmer cũng có thể xử lý các từ không phải tiếng Anh. Snowball Stemmers có thể được gọi là trình tạo gốc đa ngôn ngữ. Thuật toán này được phát triển từ gói nltk, dựa trên ngôn ngữ lập trình có tên là ‘Snowball’ xử lý các chuỗi nhỏ và là trình tạo gốc được sử dụng rộng rãi nhất. Thuật toán Snowball mạnh hơn Porter Stemmer và còn được gọi là Porter2 Stemmer. Do những cải tiến được bổ sung, Snowball Stemmer đang có tốc độ tính toán cao hơn Porter Stemmer.

Lancaster Stemmer

Lancaster Stemmer có tốc độ tạo gốc nhanh hơn, nhưng gặp thách thức khi xử lý các từ nhỏ. Có thể nói, thuật toán này không hiệu quả bằng Snowball Stemmers. Trình tạo gốc Lancaster lưu các quy tắc ra bên ngoài và về cơ bản sử dụng thuật toán lặp (iterative algorithm).

Bình luận

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu

Bài viết liên quan

    Cảm ơn bạn đã quan tâm và ủng hộ.

    File hiện tại không thể tải xuống
    Vui lòng liên hệ hỗ trợ.

    VinOCR eKYC
    Chọn ảnh từ máy của bạn

    Chọn ảnh demo dưới đây hoặc tải ảnh lên từ máy của bạn

    Tải lên ảnh CMND/CCCD/Hộ chiếu,...

    your image
    Chọn ảnh khác
    Tiến hành xử lý
    Thông tin đã được xử lý
    Mức độ tin cậy: 0%
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    Xác thực thông tin thẻ CMND/CCCD

    Vui lòng sử dụng giấy tờ thật. Hãy đảm bảo ảnh chụp không bị mờ hoặc bóng, thông tin hiển thị rõ ràng, dễ đọc.

    your image
    Chọn ảnh khác

    Ảnh mặt trước CMND/CCCD

    your image
    Chọn ảnh khác

    Ảnh mặt sau CMND/CCCD

    your image
    Chọn ảnh khác

    Ảnh chân dung

    This site is registered on wpml.org as a development site.