Bigram

Bigram hay còn gọi là digram là một dãy bao gồm hai phần tử liền kề nhau từ một chuỗi các token, chẳng hạn như các ký tự, các âm tiết hoặc các từ. Một bigram là một n-gram với n bằng 2. Phân phối tần số của mỗi bigram trong một chuỗi thường dùng cho phân tích thống kê văn bản đơn giản trong nhiều ứng dụng, bao gồm ngôn ngữ học tính toán, mật mã học, nhận dạng tiếng nói và nhiều ứng dụng khác.

Các gappy bigram hoặc các skipping bigram là các cặp từ cho phép khoảng cách (có lẽ để tránh việc nối từ, hoặc cho phép các mô phỏng phụ thuộc, dạng như trong một văn phạm phụ thuộc).

Ứng dụng

[sửa | sửa mã nguồn]

Bigram được sử dụng thành công nhất cho các mô hình ngôn ngữ để Nhận dạng tiếng nói.[1] Các kỹ thuật tấn công tần số dạng bigram có thể dùng trong mật mã học để phá các mật mã (cryptogram). Tần số bigram cũng là một trong cách tiếp cận với nhận dạng ngôn ngữ.

Từ một câu mẫu: "I go to school." sẽ cho ra nhiều dạng bigram khác nhau.

Các dạng bigram

[sửa | sửa mã nguồn]
Bigram từ
("I", "go"), ("go", "to"), ("to", "school")
Bigram ký tự với _ thay cho khoảng trắng
("I","_"), ("_","g"), ("g","o"), ("o","_"),...,("l",".")
Bigram token
("I", "go"), ("go", "to"), ("to", "school"), ("school", ".")

Mã Python

[sửa | sửa mã nguồn]

Mã python dành cho trường hợp bigram theo từ vựng với việc sử dụng thư viện NLTK.

import nltk

word_data = "I go to school."
nltk_tokens = nltk.word_tokenize(word_data)  	

print(list(nltk.bigrams(nltk_tokens)))

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ Collins, Michael John (ngày 24 tháng 6 năm 1996). “A new statistical parser based on bigram lexical dependencies”. Proceedings of the 34th annual meeting on Association for Computational Linguistics -. Association for Computational Linguistics. tr. 184–191. arXiv:cmp-lg/9605012. doi:10.3115/981863.981888. Truy cập ngày 9 tháng 10 năm 2018.