Các thư viện thông dụng trong Python để tokenize một câu

Tokennize là gì?

Tokenize (tách từ) là quá trình chia một chuỗi văn bản thành các đơn vị nhỏ hơn, được gọi là tokens. Tokens có thể là từ, cụm từ, hoặc ký hiệu, tùy thuộc vào cách thức tokenize.

Tại sao cần tokenize?

Tokenize là một bước quan trọng trong xử lý ngôn ngữ tự nhiên (NLP) vì máy tính không thể hiểu trực tiếp văn bản thô. Bằng cách chia nhỏ văn bản, tokenize giúp máy tính có thể phân tích và xử lý dữ liệu một cách hiệu quả hơn.

Một số lý do chính cần tokenize:

  • Phân tích cú pháp: Tokenize giúp xác định cấu trúc ngữ pháp và cú pháp của câu, từ đó máy tính có thể hiểu được mối quan hệ giữa các từ.
  • Tìm kiếm thông tin: Khi bạn tìm kiếm một từ khóa, công cụ tìm kiếm sẽ tokenize truy vấn của bạn và so sánh các tokens đó với các tokens trong các tài liệu đã được lập chỉ mục.
  • Phân tích dữ liệu: Tokenize giúp chuẩn hóa dữ liệu văn bản để có thể thực hiện các phân tích thống kê, chẳng hạn như đếm tần suất xuất hiện của từ hoặc xây dựng từ điển.
  • Đầu vào cho các mô hình học máy: Hầu hết các mô hình học máy trong NLP đều yêu cầu đầu vào là các tokens, không phải là văn bản thô.

Ví dụ: Với câu: “Tôi đi học hôm nay.

  • Tokenize theo từ: [“Tôi”, “đi”, “học”, “hôm”, “nay”]
  • Tokenize theo ký tự: [“T”, “ô”, “i”, ” “, “đ”, “i”, ” “, “h”, “ọ”, “c”, ” “, “h”, “ô”, “m”, ” “, “n”, “a”, “y”]

Có nhiều thư viện trong Python giúp tokenize (tách câu thành các tokens). Một số phổ biến gồm:

1. NLTK (Natural Language Toolkit)

  • Ưu điểm: Hỗ trợ nhiều kiểu tokenize (word, sentence, regexp…)
  • Nhược: Cần tải dữ liệu kèm theo (punkt).

Cách dùng:

from nltk.tokenize import word_tokenize
sentence = "I love learning NLP."
tokens = word_tokenize(sentence)
print(tokens)

2. spaCy

  • Ưu điểm: Nhanh, hỗ trợ nhiều ngôn ngữ, kèm POS tagging, NER.
  • Nhược: Kích thước model khá lớn.

Cách dùng:

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("I love learning NLP.")
tokens = [token.text for token in doc]
print(tokens)

3. Keras / TensorFlow

  • Ưu điểm: Dễ tích hợp với deep learning.
  • Nhược: Tokenize khá đơn giản, không xử lý ngữ pháp.

Cách dùng:

from tensorflow.keras.preprocessing.text import text_to_word_sequence
sentence = "I love learning NLP."
tokens = text_to_word_sequence(sentence)
print(tokens)

4. HuggingFace Tokenizers

  • Ưu điểm: Hỗ trợ tokenization theo subword (BPE, WordPiece) cho mô hình BERT, GPT…
  • Nhược: Phức tạp hơn nếu chỉ cần tách từ cơ bản.

Cách dùng:

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
tokens = tokenizer.tokenize("I love learning NLP.")
print(tokens)

5. gensim.utils.simple_preprocess

  • Ưu điểm: Loại bỏ ký tự đặc biệt, lowercase sẵn.
  • Nhược: Không giữ nguyên định dạng gốc câu.

Cách dùng:

from gensim.utils import simple_preprocess
tokens = simple_preprocess("I love learning NLP.")
print(tokens)

Leave a comment

Up ↑