Tokenization là gì? Các kỹ thuật tách từ trong Xử lý ngôn ngữ tự nhiên – VinBigdata Product

Xử lý ngôn từ tự nhiên ( NLP ) là một nhánh của Trí tuệ tự tạo ( AI ) phân phối cho máy tính năng lực hiểu ngôn từ viết và nói của con người. Dễ dàng kể đến một số ít ứng dụng của NLP trong kiểm tra chính tả, tự động hóa điền, phát hiện thư rác, trợ lý ảo trên điện thoại thông minh và xe hơi. Tuy nhiên, ít ai biết rằng máy móc hoạt động giải trí với những số lượng chứ không phải những vần âm / từ / câu. Vì vậy, để thao tác với một lượng lớn tài liệu văn bản có sẵn, tiền giải quyết và xử lý văn bản ( text pre-processing ) là quy trình thiết yếu giúp làm sạch văn bản. Bản thân tiền giải quyết và xử lý văn bản gồm có nhiều tiến trình, và một trong số đó là tách từ ( hay còn gọi là Tokenization ) .

Tokenization là gì?

Tokenization ( tách từ ) là một trong những bước quan trọng nhất trong quy trình tiền giải quyết và xử lý văn bản. Cho dù bạn đang thao tác với những kỹ thuật NLP truyền thống cuội nguồn hay sử dụng những kỹ thuật học sâu nâng cao thì vẫn không hề bỏ lỡ bước này. Nói một cách đơn thuần, tokenization là quy trình tách một cụm từ, câu, đoạn văn, một hoặc nhiều tài liệu văn bản thành những đơn vị chức năng nhỏ hơn. Mỗi đơn vị chức năng nhỏ hơn này được gọi là Tokens .Có thể coi tokens là những khối thiết kế xây dựng của NLP và tổng thể những quy mô NLP đều giải quyết và xử lý văn bản thô ở Lever những Tokens. Chúng được sử dụng để tạo từ vựng trong một kho ngữ liệu ( một tập tài liệu trong NLP ). Từ vựng này sau đó được chuyển thành số ( ID ) và giúp tất cả chúng ta lập quy mô. Tokens hoàn toàn có thể là bất kể thứ gì – một từ ( word ), một từ phụ ( sub-word ) hoặc thậm chí còn là một ký tự ( character ). Các thuật toán khác nhau tuân theo những quy trình tiến độ khác nhau trong việc triển khai mã hóa và sự độc lạ giữa ba loại tokens này sẽ được chỉ ra dưới đây .

Ví dụ: Câu gốc là “Let us learn tokenization.”

Phân loại các kỹ thuật tách từ dựa trên ví dụ cụ thểPhân loại các kỹ thuật tách từ dựa trên ví dụ cụ thể

Thuật toán mã hóa dựa trên từ (word-based tokenization algorithm) sẽ chia câu thành các từ: [“Let”, “us”, “learn”, “tokenization.”]

Thuật toán mã hóa dựa trên từ phụ (subword-based tokenization algorithm) sẽ chia câu thành các từ khóa phụ: [“Let”, “us”, “learn”, “token”, “ization.”]

Thuật toán mã hóa dựa trên ký tự (character-based tokenization algorithm) sẽ chia câu thành các ký tự, ở đây là từng chữ cái một.

Ba kỹ thuật mã hóa này hoạt động giải trí khác nhau và có những ưu điểm và điểm yếu kém riêng sẽ được nghiên cứu và phân tích đơn cử bên dưới .

Word-based tokenization

Đây là kĩ thuật tokenization được sử dụng phổ cập trong nghiên cứu và phân tích văn bản. Nó chia một đoạn văn bản thành những từ ( ví dụ tiếng Anh ) hoặc âm tiết ( ví dụ tiếng Việt ) dựa trên dấu ngăn cách. Dấu ngăn cách hay được dùng chính là dấu cách trắng. Tuy nhiên, cũng hoàn toàn có thể tách văn bản không theo dấu phân làn. Ví dụ tách từ trong tiếng Việt vì một từ trong tiếng Việt hoàn toàn có thể chứa 2 hoặc 3 âm tiết được nối với nhau bởi dấu cách trắng .Tách từ hoàn toàn có thể được thực thi thuận tiện bằng cách sử dụng phương pháp split ( ) của RegEx hoặc Python. Ngoài ra, có rất nhiều thư viện Python – NLTK, spaCy, Keras, Gensim, hoàn toàn có thể giúp bạn thực thi việc này một cách thuận tiện .

Thực tế, các mô hình NLP sử dụng các phương pháp tách từ phù hợp theo từng ngôn ngữ. Tuỳ thuộc vào từng bài toán, mà cùng một văn bản có thể được xử lý dưới các loại tokens khác nhau. Mỗi token thường có tính duy nhất và được biểu diễn bằng một ID, các ID này là một cách mã hoá hay cách định danh token trên không gian số.

Hạn chế của kỹ thuật này là nó dẫn đến một kho ngữ liệu khổng lồ và một lượng từ vựng lớn, khiến quy mô cồng kềnh hơn và yên cầu nhiều tài nguyên đo lường và thống kê hơn. Bên cạnh đó, một hạn chế nữa là tương quan đến những từ sai chính tả. Nếu kho ngữ liệu có từ “ knowledge ” viết sai chính tả thành “ knowldge ”, quy mô sẽ gán token OOV cho từ sau đó. Do đó, để xử lý tổng thể những yếu tố này, những nhà nghiên cứu đã đưa ra kỹ thuật mã hóa dựa trên ký tự .

Character-based tokenization

Mã hóa dựa trên ký tự chia văn bản thô thành những ký tự riêng không liên quan gì đến nhau. Logic đằng sau mã hóa này là một ngôn từ có nhiều từ khác nhau nhưng có 1 số ít ký tự cố định và thắt chặt. Điều này dẫn đến một lượng từ vựng rất nhỏ. Ví dụ tiếng Anh có 256 ký tự khác nhau ( vần âm, số, ký tự đặc biệt quan trọng ) trong khi chứa gần 170.000 từ trong vốn từ vựng. Do đó, mã hóa dựa trên ký tự sẽ sử dụng ít token hơn so với mã hóa dựa trên từ .Một trong những lợi thế chính của mã hóa dựa trên ký tự là sẽ không có hoặc rất ít từ không xác lập hoặc OOV. Do đó, nó hoàn toàn có thể trình diễn những từ chưa biết ( những từ không được nhìn thấy trong quy trình giảng dạy ) bằng cách màn biểu diễn cho mỗi ký tự. Một ưu điểm khác là những từ sai chính tả hoàn toàn có thể được viết đúng chính tả lại, thay vì hoàn toàn có thể ghi lại chúng là mã thông tin OOV và làm mất thông tin .Loại mã hóa này khá đơn thuần và hoàn toàn có thể làm giảm độ phức tạp của bộ nhớ và thời hạn. Vì vậy, liệu nó có phải thuật toán tốt nhất hay tuyệt đối để tách từ ? Câu vấn đáp là không ( tối thiểu là so với Ngôn ngữ tiếng Anh ) ! Một ký tự thường không mang bất kể ý nghĩa hoặc thông tin nào như một từ. Ngoài ra, tuy kỹ thuật này giúp giảm size từ vựng nhưng lại làm tăng độ dài chuỗi trong mã hóa dựa trên ký tự. Mỗi từ được chia thành từng ký tự và do đó, chuỗi mã hóa dài hơn nhiều so với văn bản thô bắt đầu. Vì vậy, hoàn toàn có thể thấy, dù đã xử lý được rất nhiều thử thách mà mã hóa dựa trên từ gặp phải, mã hóa dựa trên ký tự vẫn có một số ít yếu tố nhất định .

Subword-based tokenization

Một kỹ thuật phổ cập khác là mã hóa dựa trên từ khóa phụ. Đây là một giải pháp nằm giữa mã hóa dựa trên từ và ký tự. Ý tưởng chính là xử lý đồng thời những yếu tố của mã hóa dựa trên từ ( size từ vựng rất lớn, có nhiều tokens OOV, sự độc lạ trong ý nghĩa của những từ rất giống nhau ) và mã hóa dựa trên ký tự ( chuỗi rất dài và token riêng không liên quan gì đến nhau ít ý nghĩa hơn ) .Các thuật toán mã hóa dựa trên từ khóa phụ sử dụng những nguyên tắc sau .

  • Không chia các từ thường dùng thành các từ phụ nhỏ hơn.
  • Chia các từ hiếm thành các từ phụ có ý nghĩa.

Hầu hết các mô hình tiếng Anh đều sử dụng các dạng thuật toán của mã hóa từ phụ, trong đó, phổ biến là WordPeces được sử dụng bởi BERT và DistilBERT, Unigram của XLNet và ALBERT, và Bye-Pair Encoding của GPT-2 và RoBERTa.

Mã hóa dựa trên từ khóa phụ được cho phép quy mô có size từ vựng tương thích và cũng hoàn toàn có thể học những màn biểu diễn độc lập theo ngữ cảnh có ý nghĩa. Mô hình thậm chí còn hoàn toàn có thể giải quyết và xử lý một từ mà nó chưa từng thấy trước đây vì sự phân tách hoàn toàn có thể dẫn đến những từ phụ đã biết .Như vậy, trên đây là cách những chiêu thức mã hóa tăng trưởng theo thời hạn để phân phối nhu yếu ngày càng tăng của NLP và đưa ra những giải pháp tốt hơn cho những yếu tố .

Các kỹ thuật kể trên cũng đang được VinBigdata ứng dụng trực tiếp trong quá trình nghiên cứu, phân tích dữ liệu tiếng nói và chữ viết, từ đó, giải quyết các bài toán về nhận dạng/tổng hợp tiếng nói, dịch máy, hỏi đáp tự động,…. Đây là cơ sở để phát triển nhiều giải pháp mang tính ứng dụng cao như chatbot, voicebot, trợ lý ảo đa năng,…, phục vụ mục tiêu gia tăng trải nghiệm người dùng và tối ưu hóa hiệu quả sản xuất, kinh doanh.

( Nguồn tìm hiểu thêm : Towards Data Science )