Từ sự làm rõ của bạn -
Theo cơ sở dữ liệu, hãy nói rằng có một danh sách rất lớn mô hình ngram đại diện cho tài liệu
Bạn sẽ làm tốt để làm một cái gì đó có cấu trúc hơn một chút và đưa dữ liệu vào cơ sở dữ liệu quan hệ. Điều này sẽ cho phép bạn thực hiện phân tích chi tiết hơn nhiều dễ dàng và nhanh chóng hơn.
Tôi đoán khi bạn nói "ngram", bạn có nghĩa là "1 gram". Bạn có thể mở rộng phân tích để bao gồm 2 gram, 3 gram, v.v., nếu bạn muốn.
Tôi sẽ có một cấu trúc bảng trông giống như thế này -
Giá trị
ID 1Gram
Tài liệu
ID
DocTitle
DocAuthor,
v.v.
Docs1Grams
1GramID
DocID
1GramCount
Vì vậy, trong bản ghi trong bảng Docs1Grams khi 1GramID trỏ đến 1gram "the" và DocID trỏ đến tài liệu "Chiến tranh và Hòa bình" thì 1GramCount sẽ giữ số lần 1 gram "the" xuất hiện trong Chiến tranh và Hòa bình.
Nếu DocID cho 'Chiến tranh và Hòa bình "là 1 và DocId cho" Chúa tể của những chiếc nhẫn "là 2 thì để tính điểm tương tự 1gram cho hai tài liệu này, bạn sẽ truy vấn này -
Select count(*) from Docs1Grams D1, Docs1Grams D2
where D1.DocID = 1 and
D2.DocID = 2 and
D1.1GramID = D2.1GramID and
D1.1GramCount > 0 and
D2.1GramCount > 0
Bằng cách khái quát hóa và mở rộng truy vấn, điều này có thể dễ dàng thay đổi để tự động chọn điểm / số cao nhất như vậy so sánh tài liệu bạn đã chọn với tất cả các tài liệu khác.
D1.1GramCount > 0 and D2.1GramCount > 0
Ví dụ, bằng cách sửa đổi / mở rộng một phần của truy vấn, bạn có thể dễ dàng làm cho phép so sánh trở nên phức tạp hơn bằng cách thêm 2Gram, 3Grams, v.v. hoặc sửa đổi kết quả khớp đơn giản để ghi điểm theo tỷ lệ phần trăm trên mỗi ngram.
Vì vậy, nếu tài liệu chủ đề của bạn có 0,0009% trong số 1 gram là "the", tài liệu 1 có 0,001% và tài liệu 2 có 0,0015% thì tài liệu 1 sẽ đạt điểm cao hơn về "the" bởi vì mô đun của sự khác biệt (hoặc bất kỳ biện pháp nào khác bạn chọn để sử dụng) nhỏ hơn.