Chuyển đến nội dung chính

FastText Word Embedding: Cách biểu diễn từ bằng subword

FastText Word Embedding: Biểu diễn từ bằng các mảnh ký tự

FastText là phương pháp biểu diễn nhúng từ mở rộng từ Word2Vec bằng cách không xem mỗi từ như một đơn vị hoàn toàn độc lập. Thay vào đó, mô hình còn học các đơn vị con của từ (subword), thường là các chuỗi n ký tự liên tiếp.

Cơ chế này đặc biệt hữu ích với từ hiếm, từ có biến thể hình thái và cả những từ chưa xuất hiện trong dữ liệu huấn luyện. Điểm cốt lõi cần hiểu là vector của một từ trong FastText không chỉ đến từ chính từ đó mà còn được tổng hợp từ các n-gram ký tự cấu thành nó.

Tóm tắt nội dung
FastText học vector của từ và các n-gram ký tự bên trong từ.
Các từ có chung cấu trúc ký tự có thể chia sẻ thông tin, giúp xử lý từ hiếm và từ ngoài từ điển tốt hơn Word2Vec truyền thống.
FastText vẫn dùng mục tiêu huấn luyện như CBOW hoặc Skip-gram; điểm khác biệt chính nằm ở cách biểu diễn từ đầu vào.
FastText: từ → n-gram ký tự → vector Ví dụ minh họa cố định với n = 3 và từ . playing từ đầu vào 3-gram của pla lay ayi yin ing ng> Vector FastText Σ vector n-gram + vector của từ Các từ có chung n-gram có thể chia sẻ một phần tham số đã học.
Với n = 3, <playing> sinh đúng bảy 3-gram: <pl, pla, lay, ayi, yin, ing và ng>.

1. FastText khác Word2Vec ở điểm nào?

Trong Word2Vec truyền thống, mỗi từ thường tương ứng với một vector độc lập. Nếu playing và played đều xuất hiện trong từ điển, mô hình học hai vector riêng và không trực tiếp tận dụng việc chúng có chung nhiều đoạn ký tự.

FastText bổ sung thông tin ở mức ký tự. Để minh họa nhất quán, giả sử ta chỉ xét n = 3. Trước hết thêm ký hiệu biên vào từ:

playing → <playing>

Sau đó trượt cửa sổ ba ký tự từ trái sang phải:

<pl
pla
lay
ayi
yin
ing
ng>

Đây là toàn bộ các 3-gram của <playing>. Ký hiệu < và > đánh dấu biên đầu và cuối từ, giúp mô hình phân biệt chuỗi ký tự nằm ở biên với chuỗi giống nhau nằm bên trong từ.

Trong FastText thực tế, mô hình thường không chỉ dùng n = 3. Ta có thể cấu hình một khoảng như n từ 3 đến 6; khi đó một từ sẽ đồng thời tạo ra 3-gram, 4-gram, 5-gram và 6-gram. Ví dụ n = 3 ở đây chỉ nhằm làm rõ cơ chế.

Điểm cốt lõi: Word2Vec chủ yếu học một vector riêng cho mỗi từ, còn FastText bổ sung các vector của n-gram ký tự để nhiều từ có thể chia sẻ thông tin ở mức cấu tạo từ.

2. Vector của một từ trong FastText được tạo ra như thế nào?

Gọi G(w) là tập các n-gram ký tự của từ w. Mỗi n-gram g có một vector zg. Từ w cũng có một biểu diễn riêng. Có thể mô tả trực quan vector của từ bằng:

vw = zw + Σg ∈ G(w) zg

Với ví dụ n = 3 ở trên:

v(playing)
= z(playing)
+ z(<pl)
+ z(pla)
+ z(lay)
+ z(ayi)
+ z(yin)
+ z(ing)
+ z(ng>)

Nếu từ played xuất hiện trong dữ liệu, nó cũng có thể chứa các 3-gram như pla và lay. Hai từ vì thế chia sẻ một phần tham số thay vì được học hoàn toàn độc lập.

Điều cần lưu ý là ví dụ trên đang cố định n = 3 để dễ quan sát. Khi huấn luyện với khoảng n = 3 đến 6, tập G(w) sẽ lớn hơn vì chứa đồng thời nhiều độ dài n-gram.

3. FastText học embedding bằng cách nào?

FastText không thay thế hoàn toàn cơ chế học của Word2Vec. Nó vẫn có thể sử dụng CBOW hoặc Skip-gram. Điểm khác biệt chủ yếu nằm ở cách tạo biểu diễn cho từ trước khi thực hiện nhiệm vụ dự đoán.

Với Skip-gram, từ trung tâm được dùng để dự đoán các từ xung quanh. Nếu từ trung tâm là playing, FastText tổng hợp vector của từ với vector của các n-gram rồi dùng biểu diễn đó để tính điểm cho các từ ngữ cảnh.

Từ đầu vào → Tạo n-gram → Tra vector subword → Tổng hợp vector → Dự đoán ngữ cảnh → Tính lỗi → Cập nhật vector


Gọi c là một từ ngữ cảnh. Điểm số có thể được biểu diễn khái quát:

s(w,c) = vwTuc

Trong đó vw là biểu diễn FastText của từ trung tâm và uc là vector phía đầu ra của từ ngữ cảnh. Sai số dự đoán được truyền ngược để cập nhật các thành phần tham gia tạo vw.

Ví dụ, n-gram ing có thể xuất hiện trong playing, walking và running. Khi những từ này tham gia huấn luyện, vector của ing nhận tín hiệu học từ nhiều ngữ cảnh khác nhau.

4. Vì sao FastText xử lý được từ chưa từng xuất hiện?

Với Word2Vec thông thường, một từ không có trong từ điển huấn luyện thường không có vector riêng để truy xuất. FastText có thể linh hoạt hơn vì vector của từ còn phụ thuộc vào các n-gram ký tự.

Giả sử mô hình chưa từng thấy từ playings. Khi xử lý từ này, hệ thống vẫn có thể tạo các n-gram ký tự và sử dụng những thành phần đã được học để tổng hợp một vector.

v(playings) ≈ tổng các vector subword tương ứng

Khả năng này giúp FastText xử lý từ ngoài từ điển (out-of-vocabulary) tốt hơn mô hình chỉ lưu vector theo từ.

Không nên diễn giải quá mức: FastText có thể tạo vector cho từ mới từ cấu trúc ký tự, nhưng điều đó không bảo đảm mô hình hiểu chính xác nghĩa của từ. Hình thức giống nhau không đồng nghĩa với ngữ nghĩa giống nhau.

5. Huấn luyện FastText bằng Python

Thư viện gensim cung cấp một cách ngắn gọn để thử FastText. Trong ví dụ thực tế dưới đây, ta không còn giới hạn ở n = 3 mà dùng min_n=3 và max_n=6, nghĩa là mô hình khai thác các n-gram có độ dài từ 3 đến 6.

Python · Huấn luyện FastText
from gensim.models import FastText

sentences = [
["cat", "eats", "fish"],
["dog", "eats", "meat"],
["cat", "likes", "fish"],
["dog", "likes", "meat"]
]

model = FastText(
sentences=sentences,
vector_size=50,
window=3,
min_count=1,
sg=1,
min_n=3,
max_n=6,
epochs=100
)

cat_vector = model.wv["cat"]

print(cat_vector.shape) print(cat_vector[:5])

vector_size=50 quy định số chiều embedding. min_n=3 và max_n=6 cho biết mô hình dùng nhiều độ dài n-gram từ 3 đến 6, khác với ví dụ minh họa trước đó vốn cố định n = 3 để dễ quan sát.

Tham số sg=1 chọn Skip-gram; nếu đặt sg=0, gensim sử dụng CBOW.

Python · Kiểm tra từ ngoài từ điển
# "cats" không xuất hiện trong dữ liệu huấn luyện
unknown_vector = model.wv["cats"]

print(unknown_vector.shape) print(unknown_vector[:5])

FastText có thể tạo vector cho cats bằng các subword của chính chuỗi ký tự này. Các tham số subword đã được học trong quá trình huấn luyện được sử dụng để tổng hợp biểu diễn mới.

6. FastText phù hợp khi nào?

Tiêu chí Word2Vec FastText
Đơn vị họcTừTừ + n-gram ký tự
Từ hiếmThường yếu hơnCó thể tận dụng subword
Từ ngoài từ điểnKhông có vector trực tiếpCó thể tạo từ subword
Thông tin hình tháiKhông khai thác trực tiếpKhai thác ở mức ký tự
Chi phíĐơn giản hơnCần thêm tham số subword

FastText phù hợp khi dữ liệu có nhiều từ hiếm, biến thể chính tả hoặc cấu trúc từ phức tạp. Với tiếng Việt, lợi ích của n-gram ký tự vẫn tồn tại, nhưng cần chú ý cách tách từ vì một từ tiếng Việt có thể gồm nhiều tiếng.

Nếu tập từ ổn định và hầu như không gặp từ ngoài từ điển, Word2Vec có thể đã đủ. Nếu cần tăng khả năng tổng quát hóa sang từ hiếm hoặc từ mới, FastText thường là lựa chọn phù hợp hơn.

7. Hạn chế cần hiểu đúng

FastText mạnh ở việc chia sẻ thông tin hình thức giữa các từ, nhưng không tự giải quyết mọi vấn đề ngữ nghĩa. Hai từ có cấu trúc ký tự gần nhau vẫn có thể mang nghĩa rất khác.

FastText cũng vẫn tạo ra embedding tĩnh: một từ về cơ bản có cùng biểu diễn bất kể xuất hiện trong câu nào. Vì vậy nó không trực tiếp phân biệt các nghĩa phụ thuộc ngữ cảnh như các mô hình biểu diễn theo ngữ cảnh hiện đại.

Ngoài ra, số lượng n-gram có thể rất lớn. Trong triển khai thực tế, FastText sử dụng cơ chế băm để ánh xạ các subword vào một số lượng bucket hữu hạn, giúp kiểm soát bộ nhớ nhưng cũng có thể tạo va chạm băm.

Cách hiểu FastText ngắn gọn
Từ → n-gram ký tự → vector subword → tổng hợp → vector từ → dự đoán ngữ cảnh → cập nhật tham số
Kết luận: FastText mở rộng Word2Vec bằng cách học thêm biểu diễn của các n-gram ký tự. Với ví dụ n = 3, từ <playing> được phân rã nhất quán thành <pl, pla, lay, ayi, yin, ing và ng>; trong huấn luyện thực tế có thể sử dụng đồng thời nhiều độ dài n-gram. Nhờ cơ chế chia sẻ subword, FastText đặc biệt hữu ích với từ hiếm, biến thể từ và từ ngoài từ điển.
© The CS Note · THE CS NOTE

Nội dung gốc thuộc tác giả. Vui lòng không đăng lại toàn văn khi chưa được phép, trừ trường hợp pháp luật hoặc giấy phép áp dụng cho phép. Nội dung của bên thứ ba tuân theo quyền và giấy phép tương ứng.

Nguồn gốc: FastText Word Embedding: Cách biểu diễn từ bằng subword

Về trang chủ Về đầu bài

Bài Đăng Phổ Biến

Bài toán tháp Hà nội

Trải nghiệm Tháp Hà Nội Kéo thả đĩa hoặc chạm vào các nút bên dưới để di chuyển. Bạn phải chuyển toàn bộ đĩa sang cột ngoài cùng bên phải (Cột 3) mà không đặt đĩa to lên đĩa nhỏ. Cột 1 Cột 2 Cột 3 Điều khiển & Chế độ Số lượng đĩa 4 Tốc độ máy giải ↪ Undo ↻ Chơi lại 🤖 Máy tự giải Thống kê ván chơi Nước đã đi 0 Thời gian 00:00 Tối thiểu cần 15 Kỷ lục của bạn - Lịch sử và Nguồn gốc Truyền thuyết Bài toán Tháp Hà Nội (hay Tháp Brahma) là một trò chơi xếp hình toán học kinh điển được giới thiệu lần đầu vào năm 1883 bởi nhà toán học người Pháp Édouard L...

Bài toán phân tích cảm xúc trong văn bản

Bài toán phân tích cảm xúc (sentiment analysis) là một bài toán NLP nhằm xác định thái độ hoặc cảm xúc được thể hiện trong văn bản. Ví dụ, từ một đánh giá như “Điện thoại đẹp, chạy nhanh nhưng pin hơi yếu”, hệ thống có thể nhận biết rằng người dùng có cả nhận xét tích cực và tiêu cực. Điểm thú vị của bài toán nằm ở khoảng cách giữa cách con người hiểu ngôn ngữ và cách máy tính xử lý dữ liệu. Một hệ thống phân tích cảm xúc cần biến văn bản tự nhiên thành dữ liệu có cấu trúc, học được các mẫu ngôn ngữ từ dữ liệu huấn luyện và đưa ra dự đoán hợp lý trên những câu chưa từng gặp. 1. Bài toán phân tích cảm xúc bắt đầu từ đâu? Hãy tưởng tượng một cửa hàng trực tuyến có hàng nghìn đánh giá mỗi ngày. Con người có thể đọc từng đánh giá để biết khách hàng hài lòng hay không, nhưng việc này nhanh chóng trở nên tốn thời gian khi dữ liệu tăng lên. NLP có thể biến bài toán đó thành một bài toán phân loại. Với mỗi văn bản, hệ thống nhận vào một chuỗi ký...

KAN cho phân đoạn khối u não với bộ BraTS 2020

Kolmogorov-Arnold Network (KAN) mở ra một hướng khác với MLP truyền thống: thay vì chỉ học các trọng số vô hướng trên mỗi kết nối, KAN có thể học những hàm phi tuyến một biến trên các cạnh . Khi đưa ý tưởng này vào kiến trúc encoder-decoder như U-Net, ta có thể sử dụng convolution để giữ cấu trúc không gian của ảnh MRI và dùng KAN để thực hiện các phép biến đổi phi tuyến mạnh hơn trên representation trung gian. Một bài toán phù hợp để nghiên cứu hướng này là phân đoạn u thần kinh đệm trên BraTS 2020 . Dataset cung cấp MRI đa mô thức và yêu cầu xác định các vùng Whole Tumor (WT), Tumor Core (TC) và Enhancing Tumor (ET). Đây là bài toán 3D có sự mất cân bằng voxel lớn, hình dạng khối u rất đa dạng và ranh giới giữa các mô bệnh lý không đơn giản. Lưu ý học thuật quan trọng: U-KAN gốc được công bố cho nhiều benchmark phân đoạn ảnh y tế nhưng không báo cáo kết quả BraTS 2020. Một công trình sau đó đã mở rộng U-KAN sang 3D MRI brain tumor segmentation , nhưng đánh giá trên BraTS 2...

Tách từ trong tiếng Việt Word Segmentation

Tách từ tiếng Việt là bài toán xác định ranh giới giữa các từ trong một chuỗi văn bản. Khó khăn nằm ở chỗ khoảng trắng trong tiếng Việt thường phân cách các âm tiết , nhưng một từ hoàn chỉnh có thể gồm nhiều âm tiết như “sinh viên” , “đại học” , “công nghệ” hay “tự nhiên” . Tách từ đúng giúp các hệ thống NLP dựa trên từ biểu diễn văn bản hợp lý hơn, đặc biệt trong tìm kiếm, TF-IDF, phân loại văn bản, gán nhãn từ loại và một số mô hình ngôn ngữ tiếng Việt. Tuy nhiên, với các Transformer sử dụng tokenizer dưới mức từ như subword hoặc SentencePiece, tách từ thủ công không phải lúc nào cũng là bước bắt buộc . Việc có cần tách từ trước hay không phụ thuộc vào mô hình và pipeline cụ thể. Tóm tắt nội dung Khoảng trắng trong tiếng Việt không phải lúc nào cũng là ranh giới từ ; nhiều từ gồm hai hoặc nhiều âm tiết. Word segmentation và tokenization có liên quan nhưng không hoàn toàn đồng nghĩa. Ba hướng chính gồm dựa trên từ điển, mô hình thống kê và mô hình học sâu . Tron...

KAN là gì? Mạng Kolmogorov-Arnold khác MLP thế nào?

Kolmogorov-Arnold Network (KAN) là một kiến trúc mạng nơ-ron trong đó mỗi cạnh không chỉ chứa một trọng số vô hướng mà mang một hàm một biến có thể học được . Đây là khác biệt cốt lõi so với Multi-Layer Perceptron (MLP), nơi các cạnh chủ yếu thực hiện phép nhân với trọng số còn hàm kích hoạt thường được áp dụng tại các node. KAN được lấy cảm hứng từ định lý biểu diễn Kolmogorov-Arnold và đặc biệt đáng chú ý trong các bài toán xấp xỉ hàm, mô hình hóa khoa học và symbolic regression. Tuy nhiên, KAN không nên được hiểu là kiến trúc đã thay thế MLP trong mọi bài toán Deep Learning; khả năng biểu diễn, chi phí tính toán và mức độ phù hợp của hai kiến trúc khác nhau theo từng nhiệm vụ. Tóm tắt nội dung MLP học chủ yếu trọng số trên các cạnh , còn KAN đặt hàm một biến học được trên từng cạnh . Một KAN layer cộng kết quả của nhiều hàm cạnh để tạo activation của node tiếp theo. KAN gốc sử dụng B-spline để tham số hóa các hàm phi tuyến trên cạnh. KAN có lợi thế đáng chú ý về trực...