PDA

View Full Version : Cho hỏi về việc đọc dữ liệu từ điển định dạng chuẩn dict.org



not_victory
09-04-2010, 22:38
Cho mình hỏi về việc đọc 2 file dữ liệu anhviet.dict và anhviet.index trong kiểu định dạng dữ liệu cho từ điển dict.org




Định dạng DICT được mô tả như sau: toàn bộ CSDL được chứa trong 2 tập tin,
một tập tin chứa nghĩa của từ (ví dụ: anhviet.dict) và một tập tin chỉ mục (ví dụ:
anhviet.index). Các tập tin dữ liệu này được sử dụng lại từ kết quả của dự án FEV.
Tập tin chỉ mục
Tập tin chỉ mục bao gồm tên từ, vị trí bắt đầu nghĩa của từ trong tập tin chứa
nghĩa và độ dài của nghĩa. Mỗi dòng trong tập tin chỉ mục chứa dữ liệu của một từ. Các
dòng phân cách nhau bởi ký tự xuống dòng.
Cấu trúc của tập tin chỉ mục:
từ1 {tab} offset1 {tab} len1
từ2 {tab} offset2 {tab} len2
Trong đó:
4
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 2(31).2009
- offset1 là vị trí bắt đầu nghĩa của từ 1 trong tập tin chứa nghĩa.
- len1 là độ dài nghĩa của từ 1 trong tập tin chứa nghĩa.
Tập tin chứa nghĩa
Cấu trúc của tập tin chứa nghĩa gồm các phần như sau:
@từ
* từ loại (danh từ, động từ...)
- định nghĩa 1= câu ví dụ cho định nghĩa 1 + nghĩa của câu đó
- định nghĩa 2= câu ví dụ cho định nghĩa 2 + nghĩa của câu đó
* từ loại
- định nghĩa 3
Nghĩa của mỗi từ gồm một phần như trên, các nghĩa của mỗi từ nối tiếp nhau liên
tục.
Cách đọc dữ liệu
Đầu tiên đọc tập tin anhviet.index từng hàng một để lấy vị trí (offset) và chiều
dài (len) của từ cần tìm nghĩa.
Sau đó chuyển offset và len đã mã hóa trong cơ số 64 bằng 64 ký tự tương ứng
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz012345
6789+/) qua số trong hệ thập phân.
Ví dụ: đọc dòng “advance kbpP D3”
thì offset = kbpP = 9550415 và len = D3 = 247
Sau khi có offset và len (theo cơ số 10), ta đọc tập tin anhviet.dict để lấy nghĩa
của từ.
Lưu ý cách chuyển đổi: ta có k (ở cơ số 64) = 36 (ở cơ số 10), b=27, p = 41, P = 15. Như
vậy, chuyển sang cơ số 10, mã kbpP có giá trị là: 36*643 + 27*642 + 41*641 + 15*640 =
9550415. Đối với độ dài nghĩa: D3. Ta có D = 3, 3 = 55. Như vậy, chuyển sang cơ số
10, mã D3 ở cơ số 64 có giá trị là: 3*641 + 55*640 = 247.


Khi đã đọc được cái offset (vị trí của từ trong file anhviet.index) thì sẽ tra từ tương ứng trong anhviet.dict như thế nảo vậy? tức là sẽ đọc file anhviet.dict như thế nào để tra ra vị trí của từ đã có offset?Thank much.

[=========> Bổ sung bài viết <=========]

Có ai đó giúp mình với.Thank for care.