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 

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. 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ữ.

Ví dụ
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 
 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 
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)))

Xem thêm 
 N-gram

Tham khảo 

Ngôn ngữ hình thức
Mật mã học cổ điển
Xử lý ngôn ngữ tự nhiên