Đặt vấn đề
Thông qua việc áp dụng mô hình ngôn ngữ thống kê n-gram từ vựng các nghiên cứu gần đây đã chỉ ra rằng mã nguồn biểu lộ một mức độ khá cao sự lặp lại (các mẫu mã – code pattern). Mô hình n-gram từ vựng do đó cũng đồng thời tỏ ra có khả năng dự đoán tốt các sự lặp lại này nhằm hỗ trợ việc gợi ý và hoàn thành mã (code suggestion and automatic code completion). Tuy nhiên, cách tiếp cận của mô hình n- gram từ vựng ghi nhận các sự lặp lại dựa trên duy nhất thông tin từ vựng trong ngữ cảnh cục bộ của đơn vị mã, trong khi còn nhiều yếu tố khác cũng có thể ảnh hưởng đến độ chính xác của gợi ý và hoàn thành mã. Để nâng cấp khả năng dự đoán, một nghiên cứu mới về mô hình ngôn ngữ ngữ nghĩa thống kê cho mã nguồn (Statistical Semantic LAnguage Model for Source Code — SLAMC) đã được giới thiệu. SLAMC đã tích hợp thêm vào mô hình n-gram thông tin ngữ nghĩa bên trong các từ tố, đồng thời kết hợp ngữ cảnh cục bộ với các mối quan tâm kỹ thuật toàn cục thể hiện bởi khái niệm chủ đề, và cuối cùng, xem xét thêm cả sự kết hợp cặp giá trị của các phần tử trong chương trình.
Với những đóng góp đã được thừa nhận, SLAMC đã được sử dụng để xây dựng các ứng dụng có tính thực tiễn như phương thức gợi ý mã, chuyển đổi mã nguồn. Đối với ngành công nghệ phần mềm, một trong những lợi ích to lớn mà SLAMC mang lại là giúp chúng ta đưa ra một sự gợi ý chính xác và rút ngắn thời gian trong việc đưa ra các token (từ tố) tiếp theo trong mã nguồn.
Ngày nay, có rất nhiều chương trình, ứng dụng hệ thống được lập trình sử dụng ngôn ngữ C bởi vì C được đánh giá là ngôn ngữ có hiệu quả. Ngoài ra, đây còn là một trong những ngôn ngữ phổ biến được đưa vào giảng dạy trong khoa học máy tính. Vì vậy, áp dụng SLAMC cho ngôn ngữ C là một nhiệm vụ cần được nghiên cứu. Nhận thấy ý tưởng này có tính khả thi, dưới sự hướng dẫn của tiến sĩ Nguyễn Thị Huyền Châu, tôi đã quyết định tìm hiểu áp dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong gợi ý mã cho ngôn ngữ C.
Mục tiêu và phương pháp luận
Luận văn sẽ xây dựng một chương trình mô phỏng mô hình ngôn ngữ ngữ nghĩa thống kê trong gợi ý mã cho ngôn ngữ C, tích hợp chương trình mô phỏng vào Eclipse và đánh giá độ chính xác sự gợi ý dựa trên chương trình mô phỏng này. Để cài đặt chương trình, luận văn sẽ thực hiện các bước như xây dựng bảng chuyển đổi nghĩa vị, phương pháp lưu trữ phạm vi, chuyển đổi mã nguồn C sang cây cú pháp trừu tượng, duyệt cây cú pháp trừu tượng này nhằm lấy các thông tin cần thiết để huấn luyện và tính toán sự kết hợp của các yếu tố (ngữ nghĩa, chủ đề, cặp giá trị) để đưa ra danh sách các gợi ý phù hợp nhất. Sau khi chương trình được hoàn tất, việc đánh giá tính chính xác sẽ được thực hiện thông qua phương pháp đo lường độ chính xác top-k để chỉ ra rằng SLAMC có độ chính xác tốt hơn so với mô hình n-gram từ vựng khi áp dụng cho ngôn ngữ C.
Bố cục của luận văn
Luận văn được trình bày theo bố cục gồm 5 chương:
- Chương 1: Mở đầu. Giới thiệu khái quát vấn đề nghiên cứu, phương pháp luận và bố cục của luận văn.
- Chương 2: Cơ sở lý thuyết. Trình bày các khái niệm, định lý, thuật toán cần được hiểu rõ để áp dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong gợi ý mã cho ngôn ngữ C.
- Chương 3: Áp dụng mô hình ngôn ngữ ngữ nghĩa thống kê trong gợi ý mã cho ngôn ngữ C. Trong phần này luận văn sẽ trình bày các bước để cài đặt SLAMC cho ngôn ngữ C. Đầu tiên, luận văn sẽ đưa ra bảng nguyên tắc xây dựng nghĩa vị và phương pháp lưu trữ phạm vi cho ngôn ngữ C. Bên cạnh đó, cách thức chuyển đổi từ tệp mã nguồn C sang cây cú pháp trừu tượng được trình bày. Tiếp theo, các công việc cần cho gợi ý mã được chỉ ra như duyệt cây cú pháp, huấn luyện mô hình n-gram chủ đề, kết hợp cặp giá trị và cách thức đưa ra danh sách các gợi ý phù hợp nhất. Cuối cùng, các sơ đồ thuật toán chính trong chương trình mô phỏng được đưa ra với mục đích làm rõ hướng cài đặt chương trình.
- Chương 4: Thực nghiệm. Trong chương này luận văn trình bày các thực nghiệm liên quan đến gợi ý mã và đánh giá độ chính xác khi áp dụng SLAMC cho ngôn ngữ C. Thứ nhất, xem xét gợi ý mã đối với các tệp mã nguồn chưa đầy đủ nhằm thấy được bước đầu chương trình mô phỏng đã đưa ra những gợi ý chính xác. Sau đó, phương pháp đo lường độ chính xác theo top-k [7] được áp dụng để thể hiện mức độ tốt hơn của SLAMC so với mô hình n-gram từ vựng.
- Chương 5: Kết luận. Tóm tắt những kết quả thu được và hướng phát triển trong tương lai.
Link tải tài liệu: https://tii.la/DI4b23bA
Lưu ý: Link tải có chứa quảng cáo được rút gọn bằng Shrinkearn.com
Mật khẩu mở tệp PDF: sharetailieu.net