4.3 Đánh giá độ chính xác
Độ chính xác gợi ý được đo lường như sau. Xét một tệp mã nguồn đầy đủ (chuỗi s sẽ đại diện cho tệp mã nguồn này), công cụ đánh giá duyệt tuần tự chuỗi s. Tại vị trí i, chúng ta xác định được k từ tố đầu tiên có khả năng nhất x1, x2, …, xk cho vị trí tiếp theo. So sánh nếu vị trí i + 1 thuộc k từ tố được gợi ý (x1, x2, …, xk), chúng ta xem xét như một lần thành công. Độ chính xác top-k [7] cho một chuỗi mã là tỷ lệ của tổng số lần thành công so với độ dài của chuỗi mã. Ví dụ, nếu chúng ta có 40 lần thành công trên một chuỗi mã gồm 100 từ tố, độ chính xác là 40%. Luận văn tiến hành thực nghiệm với từng dự án cụ thể và sau đó là một tập các dự án (hợp lệ chéo). Khi xét một dự án cụ thể, công cụ đánh giá sẽ tìm kiếm và duyệt tất các tệp mã nguồn. Một số lượng tệp mã nguồn nhất định sẽ đóng vai trò là tệp được đánh giá, các tệp còn lại sẽ được sử dụng để huấn luyện. Độ chính xác là trung bình cộng của tất cả các lần đánh giá. Liên quan đến tiến trình hợp lệ chéo, tổng số lần chính xác cho một dự án được tính trên tất cả các vị trí của các tệp mã nguồn thuộc dự án đó, và toàn bộ các tệp mã nguồn của các dự án khác sẽ được sử dụng để huấn luyện.
4.3.1 Phân tích sự ảnh hưởng của các yếu tố
4.3.1.1 Mục tiêu
Một số yếu tố ảnh hưởng đến việc gợi ý mã trong SLAMC như ngữ nghĩa, cache, sự phụ thuộc dữ liệu, kết hợp cặp giá trị, mô hình n-gram chủ đề. Hiện tại, luận văn chỉ xét các yếu tố ngữ nghĩa, kết hợp cặp giá trị và mô hình n-gram chủ đề trong việc phân tích nhằm đưa ra các sự so sánh và thấy được mức độ ảnh hưởng của các yếu tố đến độ chính xác của gợi ý mã.
4.3.1.2 Thiết kế thực nghiệm
Luận văn lựa chọn dự án có số dòng lệnh lớn nhất trong số các dự án sử dụng cho thực nghiệm là Bash để đánh giá. Chương trình mô phỏng sử dụng một số lượng tệp nhất định của dự án Bash để thực hiện kiểm thử, và các tệp còn lại sẽ được sử dụng cho mục đích huấn luyện.
4.3.1.3 Kết quả
Bảng 4.2 chỉ ra độ chính xác với các sự kết hợp khác nhau của các yếu tố đối với dự án Bash. Dòng đầu tiên tương ứng mô hình n-gram từ vựng. Dòng thứ hai tương ứng với mô hình ngữ nghĩa. Dòng thứ ba là sự kết hợp của mô hình ngữ nghĩa với cặp giá trị. Dòng thứ tư là sự kết hợp của mô hình ngữ nghĩa với n-gram chủ đề. Dòng cuối là sự kết hợp của cả ba yếu tố (ngữ nghĩa, cặp giá trị, n-gram chủ đề).
Bảng 4. 2. Phân tích sự ảnh hưởng của các yếu tố cho dự án Bash Mô hình Top 1 Top 3 Top 5 Top 10
N-gram từ vựng 13,5 % 18,7 % 21,2 % 24,7 %
Ngữ nghĩa 25,8 % 37,5 % 44,6 % 50,4 %
Ngữ nghĩa + cặp giá trị 25,9 % 38,5 % 45 % 51 %
Ngữ nghĩa + n-gram chủ đề 54,7 % 56,2 % 56,2 % 56,2 %
Ngữ nghĩa + cặp giá trị + n-gram chủ đề 57,1 % 58,7 % 58,7 % 58,7 %
Như đã thấy, mô hình dựa trên duy nhất ngữ nghĩa có độ chính xác ở mức trung bình từ 25,8% đến 50,4% nhưng vẫn vượt trội so với mô hình n-gram từ vựng (từ 13,5% đến 24,7%). Sự kết hợp ngữ nghĩa và n-gram chủ đề có độ chính xác tốt hơn so với sự kết hợp ngữ nghĩa và cặp giá trị. Nhưng độ chính xác đạt được tốt nhất khi kết hợp cả ba yếu tố (ngữ nghĩa, cặp giá trị, n-gram chủ đề).
Dựa vào dòng 2 và 3, ta thấy được yếu tố cặp giá trị có tác động không đáng kể đến độ chính xác khi kết hợp với yếu tố ngữ nghĩa với mức tăng 0.1% tại top-1, và cũng chỉ tăng nhẹ khi xét ở top-3, top-5 và top-10. Ở chiều hướng tích cực hơn, yếu tố
n-gram chủ đề đã ảnh hưởng mạnh đến độ chính xác khi kết hợp với yếu tố ngữ nghĩa
với mức tăng lớn nhất tại top-1 là 28,9%. Qua bảng 4.2, ta thấy được sự kết hợp của ba yếu tố hay chính là SLAMC có sự khác biệt rõ ràng khi so sánh với mô hình n-gram từ vựng với sự chênh lệch top-1, top-3, top-5, top-10 tương ứng là 43,6%, 40%, 37,5%, 34%. Trong các hệ thống gợi ý hoặc tìm kiếm hầu hết người sử dụng xem xét hoặc cân nhắc duy nhất k phần tử ở gần tốp đầu và đặc biệt là phần tử đầu tiên. Tại thực nghiệm
này, độ chính xác top-1 của SLAMC là 57,1%, trong khi con số của n-gram từ vựng
cho top-1 là 13,5%. Từ đây, ta có thể thấy SLAMC là hữu ích trong gợi ý mã cho ngôn ngữ C với độ chính xác tương đối cao.
4.3.2 So sánh độ chính xác
4.3.2.1 Mục tiêu
Thực nghiệm tiếp theo của luận văn là so sánh SLAMC với mô hình n-gram từ vựng khi thực thi với các tập dữ liệu giống nhau nhằm thấy được mô hình nào có độ chính xác tốt hơn trong gợi ý mã cho ngôn ngữ C.
4.3.2.2 Thiết kế thực nghiệm
Trong thực nghiệm này, tất cả các dự án trong bảng 4.1 đều được sử dụng để làm đầu vào cho các mô hình n-gram từ vựng cũng như SLAMC. Đầu ra là sự đo lường độ chính xác top-1 và top-5 của cả hai mô hình.
4.3.2.3 Kết quả
Bảng 4. 3. Độ chính xác gợi ý mã
Tên dự án Top k N-gram từ
vựng
SLAMC Nâng cấp Tỷ lệ nâng cấp CUnit Top 1 Top 5 47,4 % 56,1 % 65,6 % 67,8 % 18,2 % 11,7 % 38 % 21 % Log4C Top 1 Top 5 24,2 % 35,8 % 49 % 50 % 24,8 % 14,2 % 102 % 40 % GCC Top 1 Top 5 11,5 % 20,5 % 53,7 % 54,8 % 42,2 %