Cải tiến trọng số kết hợp kỹ thuật rút trích đa đặc điểm trong việc dò tìm những Báo cáo lỗi trùng nhau
Bạn đang xem tài liệu "Cải tiến trọng số kết hợp kỹ thuật rút trích đa đặc điểm trong việc dò tìm những Báo cáo lỗi trùng nhau", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- cai_tien_trong_so_ket_hop_ky_thuat_rut_trich_da_dac_diem_tro.pdf
Nội dung text: Cải tiến trọng số kết hợp kỹ thuật rút trích đa đặc điểm trong việc dò tìm những Báo cáo lỗi trùng nhau
- Kỷ yếu Hội nghị KHCN Quốc gia lần thứ XII về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR); Huế, ngày 07-08/6/2019 DOI: 10.15625/vap.2019.00011 CẢI TIẾN TRỌNG SỐ KẾT HỢP KỸ THUẬT RÚT TRÍCH ĐA ĐẶC ĐIỂM TRONG VIỆC DÒ TÌM NHỮNG BÁO CÁO LỖI TRÙNG NHAU Nhan Minh Phúc1, Nguyễn Hoàng Duy Thiện2, Dƣơng Ngọc Vân Khanh3 1,2,3 Khoa Kỹ thuật và Công nghệ, Trường Đại học Trà Vinh nhanminhphc@tvu.edu.vn, thiennhd@tvu.edu.vn, vankhanh@tvu.edu.vn TÓM TẮT: Đối với các phần mềm mở như Firefox, Eclipse, Subversion, họ thường có hệ thống kho lưu trữ những báo cáo lỗi do người dùng gửi đến. Những báo cáo lỗi này giúp cho hệ thống xác định được những lỗi khác nhau của phần mềm, điều này làm cho việc bảo trì phần mềm tốt hơn. Do số lượng người dùng ngày càng tăng, do đó số lượng báo cáo lỗi được phát hiện cũng ngày càng nhiều. Điều này dẫn đến tình huống có nhiều báo cáo lỗi được gửi đến kho xử lý mà những báo cáo lỗi này đã được những người dùng khác nhau báo cáo trước đó, điều này được gọi là báo cáo lỗi trùng nhau. Để giải quyết vấn đề này, một lập trình viên được phần công phụ trách việc xử lý lỗi cần phải gắn nhãn các báo cáo lỗi này theo cách thủ công dưới dạng các báo cáo lỗi trùng nhau. Tuy nhiên, trong thực tế có quá nhiều báo cáo lỗi trùng được gửi hàng ngày, nếu cứ thực hiện công việc nhận biết thủ công sẽ tốn nhiều thời gian và công sức. Để giải quyết vấn đề này, gần đây, một số kỹ thuật đã được đề xuất để tự động phát hiện các báo cáo lỗi trùng lặp, tuy nhiên kết quả chính xác chỉ chiếm khoảng 36-89 %, lý do vì hai báo cáo của cùng một lỗi có thể được viết theo nhiều cách khác nhau, do đó việc cải tiến về tính chính xác của quá trình phát hiện trùng lặp đang là chủ đề được nhiều sự quan tâm của các nhà nghiên cứu gần đây. Trong bài báo này, chúng tôi giới thiệu một mô hình đa đặc điểm kết hợp với sự cải tiến trọng số từ CFC (Class-Feature-Centroid) để phát hiện các báo cáo lỗi trùng nhau chính xác hơn. Chúng tôi đã tiến hành thực nghiệm trên ba kho phần mềm chứa lỗi lớn từ Firefox, Eclipse và OpenOffice. Kết quả cho thấy rằng kỹ thuật của chúng tôi có thể cải thiện tốt hơn từ 8-11 % khi so với các phương pháp được so sánh. Từ khóa: Duplication detection, bug reports, CFC-27, feature weighting. I. GIỚI THIỆU Do sự phức tạp trong quá trình xây dựng nên hầu hết các phần mềm thường vẫn còn nhiều lỗi sau khi hoàn chỉnh. Những lỗi phần mềm đôi khi dẫn đến thiệt hại nhiều triệu USD [4]. Vì vậy việc xử lý lỗi trở thành một trong những vấn đề quan trọng cần thực hiện thường xuyên trong việc bảo trì phần mềm. Để giúp quản lý lỗi phần mềm và làm cho hệ thống đáng tin cậy hơn, những công cụ quản lý lỗi được xây dựng và ứng dụng vào các hệ thống lớn như Bugzilla, Eclipse, những công cụ này cho phép người dùng sử dụng phần mềm như “tester” và gửi báo cáo lỗi mà họ phát hiện được đến hệ thống quản lý lỗi, thông tin này sau đó được tiếp nhận và xử lý để hoàn thiện độ tin cậy của phần mềm hơn. Mặt dù mang lại nhiều lợi ích trong việc cung cấp hệ thống báo cáo lỗi, nhưng nó cũng gây ra nhiều thách thức. Một trong những thách thức đó là cùng một lỗi được phát hiện bởi nhiều người dùng, khi đó có nhiều người gửi cùng một báo cáo lỗi đến hệ thống, gây nên tình trạng gọi là trùng lặp báo cáo lỗi. Điều này làm mất nhiều thời gian và công sức cho người phân loại, nghĩa là khi một báo cáo mới được gửi đến, họ phải kiểm tra xem báo cáo lỗi này đã được gửi đến trước đó chưa. Theo thống kê [2], [3] mỗi ngày có ít nhất 300 báo cáo lỗi được gửi đến hệ thống quản lý lỗi của Mozilla, số lượng này được xem là quá nhiều cho công việc phân loại. Vì vậy việc xây dựng một hệ thống tự động phân chẳng hay một báo cáo lỗi vừa được gửi đến đã được báo cáo trước đó hay chưa. Đây là chủ đề đang được các nhà nghiên cứu quan tâm hiện nay. Để giải quyết vấn đề những báo cáo lỗi trùng nhau, hiện tại trong cộng đồng nghiên cứu có hai hướng. Hướng thứ nhất khi có một báo cáo lỗi mới được gửi đến, sau đó xây dựng mô hình xử lý và kết quả trả về danh sách những báo cáo lỗi gần giống nhất với báo cáo lỗi được gửi đến trong top K. Phương pháp này được công bố bởi [3], [4], [5], [1]. Hướng thứ hai được công bố bởi Jalbert and Weimer [6] như sau, khi có một báo cáo mới được gửi đến, họ sẽ thực hiện việc phân loại thành hai nhóm, trùng nhau hay không trùng nhau, nghiên cứu này còn được gọi phân loại báo cáo lỗi bằng cách gán nhãn những báo cáo lỗi trùng nhau, và những báo cáo lỗi không trùng nhau. Theo thống kê bởi [9] hướng Hình 1. Một báo cáo lỗi trong dataset Eclipse thứ nhất nhận được nhiều sự quan tâm hơn của các nhà nghiên cứu, ly do ngoài việc trả về kết quả top K danh sách báo cáo lỗi trùng nhau, nó gần như bao gồm luôn hướng thứ hai là phân loại báo cáo lỗi. Trong bài báo này chúng tôi cũng nghiên cứu theo phương pháp thứ nhất. II. BÁO CÁO LỖI TRÙNG NHAU Một báo cáo lỗi thông thường là một tập tin bao gồm vài thuộc tính như tóm tắt lỗi (summary), mô tả lỗi (description), dự án (project), người gửi (submitter), bình luận (comment), Mỗi thuộc tính chứa những thông tin
- Nhan Minh Phúc, Nguyễn Hoàng Duy Thiện, Dương Ngọc Vân Khanh 79 khác nhau. Ví dụ, thuộc tính summary dùng mô tả một cách ngắn gọn nội dung lỗi, trong khi thuộc tính description mô tả một cách chi tiết lý do phát sinh lỗi, các thao tác gây ra lỗi, cả hai thuộc tính này thường đươc mô tả theo dạng ngôn ngữ tự nhiên. Những thuộc tính khác như project, comment, cũng phần nào hỗ trợ cho việc mô tả lỗi thêm rõ hơn. Trong công nghệ phần mềm, nhất là đối với các hệ thống phần mềm mã nguồn mở, hệ thống quản lý lỗi thường được mở cho người dùng thử nghiệm phần mềm, khi đó khó tránh khỏi trường hợp các người dùng khác nhau báo cáo cùng một lỗi giống nhau, này được gọi là những báo cáo lỗi trùng nhau. Hình 1 và hình 2 là một ví dụ về hai báo cáo lỗi trùng nhau trong kho phần mềm Eclipse. Trong đó hình 2 cho thấy mã báo cáo lỗi 009779 được thông báo trùng với báo cáo lỗi có mã số 000002. Thông thường khi một báo cáo lỗi mới vừa được gửi đến mà người phân loại xác định báo cáo lỗi này bị trùng với những báo cáo đã được gửi trước đó thì báo cáo này sẽ được đánh dấu là trùng lặp (duplicate). Khi đó tất cả các báo cáo lỗi có cùng lỗi, chỉ duy nhất báo cáo lỗi đầu tiên trong số này không bị đánh dấu là trùng lặp. Trong bài báo này chúng tôi gọi báo cáo lỗi đó là báo cáo lỗi chính (master) và những báo cáo lỗi được gửi sau trùng với báo cáo lỗi này được gọi là trùng lắp của nó (duplicates). III. NHỮNG NGHIÊN CỨU LIÊN QUAN Một trong những người tiên phong đưa ra phương pháp giải quyết các vấn đề về báo cáo lỗi trùng nhau phải kể đến là Runeson et al. [5]. Trong phương pháp được giới thiệu, họ đã sử dụng phương pháp xử lý ngôn ngữ tự nhiên với kỹ thuật tách từ (tokenization), chuyển một từ về dạng gốc (stemming) và xóa bỏ những từ ít ý nghĩa (stop word removal). Những từ còn lại trong báo cáo lỗi được chuyển sang mô hình không gian vector (vector space), mỗi từ tương ứng một vector và được tính dựa vào trọng số của từ (weight(word)) theo công thức TF (term frequence) như sau: Weight (word) = 1+log2(TF(word)) (3) Phương pháp này cho kết quả đạt khoảng 40% với kho dữ liệu báo cáo lỗi Sony Ericsson Mobile Communications. Trong [6], Wang et al. cải tiến từ phương pháp của Runeson et al. sang hai hướng. Đầu tiên họ xem xét trọng số của từ không chỉ đối với TF mà còn cả IDF (invert document frequence). Khi đó trọng số của từ được họ tính như sau: Weight (word) = TF(word)∗IDF(word) (4) Thứ hai họ xem xét thông tin thực thi của các báo cáo lỗi dẫn đến trùng nhau. Sau đó họ tính độ tương tự giữa hai báo cáo lỗi sử dụng cosine similarity. Kết quả thực nghiệm với dataset Firefox cho thấy kết quả đạt độ chính xác trong dò tìm các báo cáo lỗi trùng nhau từ 67-93%. Alipour et al. [10] đã giới thiệu một kỹ thuật mới sử dụng thuật toán ra quyết định, phương pháp này đưa ra dự đoán dựa vào từng cặp báo cáo lỗi để xem họ có trùng nhau hay không? Trong kỹ thuật này họ sử dụng trọng số BM25F và thông tin văn bản trong file báo cáo lỗi phân loại theo lĩnh vực. Phương pháp này được đánh giá đạt tốt hơn 11.55% so với phương pháp Sun et al. [9] cho tập dữ liệu Android. Năm 2016, Meng-jie Lin at el. [11] đã giới thiệu chiến lược dò tìm dựa vào các đặc điểm tương quan. Trong đó xem xét các yếu tố liên quan dựa vào các đặc điểm khác nhau của báo cáo lỗi. Phương pháp này cho kết quả đạt gần 87 - 90% đối với tập dữ liệu Apache, ArgoUML và SVN. IV. KỸ THUẬT TRÍCH CHỌN ĐẶC ĐIỂM Trong những kỹ thuật phân loại văn bản, hay xác định những văn bản tương tự nhau thì kỹ thuật chọn đặc điểm đóng vai trò quan trọng. Trong trường hợp xác định sự trùng lắp giữa hai báo cáo lỗi trong kho phần mềm mã nguồn mở cũng tương tự như vậy. Việc trích chọn đặc điểm tốt sẽ góp phần rất lớn vào việc xác định các báo cáo lỗi trùng nhau chính xác hơn. Trong phương pháp được giới thiệu, chúng tôi triển khai công thức bên dưới để đánh giá sự giống nhau (sim) giữa hai báo cáo lỗi. Hình 2. Một báo cáo lỗi được xem trùng với báo cáo lỗi hình 1
- 80 CẢI TIẾN TRỌNG SỐ KẾT HỢP KỸ THUẬT RÚT TRÍCH ĐA ĐẶC ĐIỂM TRONG VIỆC DÒ TÌM ( ) ∑ ( ) ( ) Trong (1) ( ) trả về kết quả giống nhau giữa hai túi từ B1 và B2. Sự giống nhau giữa hai báo cáo lỗi này được tính là tổng giá trị trọng số của những từ giống nhau trong IDF. Giá trị trọng số của mỗi từ trong báo cáo lỗi được tính dựa vào tất cả báo cáo lỗi trong kho dữ liệu. Lý do tại sao trong phương pháp của chúng tôi không sử TF*IDF cho việc tính trọng số từ mà sử dụng CFC. Theo [10] TF-IDF còn những hạn chế, trong khi [11] cho thấy những ưu điểm của nó trong việc hỗ trợ phân loại văn bản tốt, điều này giúp cho kết quả xác định độ tương đồng trong việc dò tìm báo cáo lỗi trùng nhau hiệu quả hơn. Ngoài ra chúng tôi cũng đã tiến hành thực nghiệm để kiểm chứng với phương pháp phổ biến đối với việc trích chọn đặc điểm là Fisher score [16] đã cho thấy, với 27 đặc điểm sử dụng CFC, chúng tôi nhận thấy kết quả tốt hơn trong việc xác định độ giống nhau giữa hai báo cáo lỗi so với khi kết hợp 27 đặc điểm với TF*IDF. Vì vậy, chúng tôi đã quyết định chọn CFC-27 cho việc tính trọng số đặc điểm trong phương pháp của chúng tôi. Nói cách khách, mỗi đặc điểm sau khi được trích chọn trong phương pháp của chúng tôi sẽ được tính sự giống nhau dựa vào những từ trong báo cáo lỗi R1, với những từ trong báo cáo lỗi R2. Kết quả là mỗi đặc điểm sau trích chọn thực sự là sự tương tự giữa hai túi từ của hai báo cáo lỗi R1 và R2 được thể hiện công thức bên dưới: ( )= sim (những từ trong báo cáo R1, những từ trong báo cáo R2) (2) Quan sát từ những file báo cáo lỗi có thể thấy rằng một báo cáo lỗi bao gồm hai trường (field) quan trọng là trường tóm tắt (summary) và trường mô tả (description). Khi đó chúng tôi sử dụng ba túi từ từ một file báo cáo lỗi. Trong đó một túi từ sử dụng cho trường tóm tắt, túi thứ hai sử dụng cho trường mô tả và túi thứ ba sử dụng cho cả hai trường (tóm tắt + mô tả). Ví dụ để rút trích một đặc điểm để so sánh từ hai hai báo cáo lỗi, chúng ta có thể tính độ tương tự giữa túi từ trong 푠 푠 9 Feature 1 Túi từ ( ) 푠 푠 báo cáo lỗi thứ nhất của 2 (푤 푖 + 푤 푗 ) ∑ trường tóm tắt với túi từ 푠 2 Túi từ ( ) 푡 trong báo cáo lỗi thứ hai Tóm tắt (sum) 2 trong trường mô tả. 푠 Feature 9 Mô tả (Desc) Túi từ ( ) Tương tự như vậy chúng 2 푠 Feature 10 ta có thể tính sự giống Cả hai (Both) Túi từ ( ) 2 9 푒푠 푒푠 nhau giữa những từ (푤 푖 + 푤 푗 ) Túi từ ( ) ∑ trong báo cáo lỗi từ cả 2 2 푡 hai trường tóm tắt và mô Feature 18 Túi từ ( ) 2 tả của một báo cáo lỗi Tóm tắt (sum) 푠 Feature 19 này với trường tóm tắt Túi từ ( ) Mô tả (Desc) 2 của báo cáo lỗi khác, 9 표푡ℎ 표푡ℎ Túi từ ( ) (푤 푖 + 푤 푗 ) điều này cũng tương tự Cả hai (Both) 2 ∑ 2 với sự kết hợp của những 푡 Feature 27 Túi từ ( ) trường khác đối với cả 2 hai báo cáo lỗi. Ngoài ra chúng tôi cũng tính để Hình 3. 27 đặc điểm dựa vào trọng số TF-IDF-CFC tách ra từ ba loại IDF trong kho báo cáo lỗi. Một là tập hợp từ tất cả trường tóm tắt, loại thứ hai từ tất cả trường mô tả và cuối cùng là từ cả hai trường tóm tắt và mô tả. Chúng tôi thể hiện ba loại IDF này theo quy ước tuần tự như IDFsum, IDFdesc và IDFboth. Kết quả của hàm f được định nghĩa trong Kho báo cáo lỗi (2) phụ thuộc vào lựa chọn túi từ đối với báo cáo Trọng số lỗi R1, lựa chọn Cosine Sắp xếp danh Tiền xử lý báo cáo lỗi CFC-27 túi từ cho báo Similarity sách các báo cáo cáo lỗi R2 và lựa lỗi trùng nhau chọn tính IDF. Chúng tôi xem mỗi sự kết hợp như một đặc Báo cáo lỗi mới điểm khác nhau, Hình 4. Luồng xử lý dò tìm báo cáo lỗi trùng nhau vì vậy tổng số đặc điểm khác nhau được trích chọn là 3x3x3, nghĩa là có 27 đặc điểm có thể được trích chọn. Hình 3 cho thấy cách 27 đặc điểm được trích chọn từ hai báo cáo lỗi.
- Nhan Minh Phúc, Nguyễn Hoàng Duy Thiện, Dương Ngọc Vân Khanh 81 V. PHƢƠNG PHÁP ĐA ĐẶC ĐIỂM Phương pháp dò tìm tự động những báo cáo lỗi trùng nhau có thể được xem như một ứng dụng sử dụng kỹ thuật trích chọn thông tin và phân loại văn bản, mục đích của nó là cải thiện chất lượng phần mềm và giảm thời gian và chi phí cho người phát triển để phân loại cũng như xác định những báo cáo lỗi trùng nhau, nghĩa là những báo cáo lỗi đã được người dùng này gửi rồi, sau đó có người dùng khác gửi lại, trường hợp này gọi là trùng nhau. Trong phương pháp được giới thiệu, chúng tôi có sự thay đổi và cải tiến từ các phương pháp trước đây [5], [6]. Đầu tiên khi một báo cáo lỗi mới được gửi đến, hệ thống xử lý để phân loại báo cáo lỗi này sang hai lớp: trùng lắp và không trùng lắp, khi đó chúng tôi sẽ tính 27 loại đặc điểm khác nhau dựa vào độ tương tự giữa các báo cáo lỗi và sử dụng những đặc điểm này cho việc tính trọng số đặc điểm để giúp xác định độ giống nhau giữa các báo cáo lỗi chính xác hơn. Hình 4 thể hiện luồng dữ liệu chính trong phương pháp dò tìm những báo cáo lỗi trùng nhau. Hình 5 cho thấy thuật toán xử lý tổng quát các bước thực hiện. A. Tiền xử lý Đây là bước đầu tiên cũng là bước quan trọng góp phần xác định độ chính xác của phương pháp dò tìm những báo cáo lỗi trùng nhau. Trong bước này chúng tôi sử dụng kỹ thuật trích chọn đặc điểm như đã giới thiệu phần 3, như hình 3. Đới với xử lý ngôn ngữ tự nhiên, chúng tôi theo Manning and Schütze [6], khi đó việc xử lý ngôn ngữ tự nhiên (NLP) trong một báo cáo lỗi được chia làm các bước sau: Tách từ (tokenization); Chuyển một từ về dạng gốc (Stemming); Xóa bỏ những từ ít ý nghĩa (stop words removal). 1. Tách từ Tách từ là một kỹ thuật nhằm mục đích xác định ranh giới của các từ trong văn bản, cũng có thể hiểu đơn giản rằng tách từ chính là tách một đoạn text (một chuỗi liên tiếp các ký tự) thành những từ (word hay token) riêng lẻ và loại bỏ các dấu trong câu gây nhiễu, ví dụ dấu ngoặc, dấu nháy đơn, dấu nháy kép, dấu gạch nối, 2. Chuyển một từ về dạng gốc Do báo cáo lỗi trong các kho phần mềm mã nguồn mở sử dụng ngôn ngữ tiếng anh, vì vậy mỗi từ trong báo cáo lỗi có thể được viết theo những dạng ngữ pháp khác nhau nhưng vẫn chứa cùng một thông tin. Do đó việc xử dụng stemming mục đích là để xử lý mỗi từ ở những dạng ngữ pháp khác nhau trở về từ gốc của nó, điều này giúp dễ dàng hơn trong việc tính toán và xác định những báo cáo lỗi trùng nhau. Ví dụ như từ worded và working sẽ được chuyển thành từ gốc là work. Những động từ cũng được chuyển trở lại nguyên mẫu của nó. Ví dụ was và being sẽ trở thành be. 3. Xóa những từ không có nghĩa Thông thường trong một file báo cáo lỗi thường những từ hay thông tin dư thừa, hay nói chính xác hơn là chứa những từ mà bản thân nó không có nghĩa, hay những từ nối giống như the, that, when, and, or những từ này không chứa thông tin cụ thể có ích cho việc xử lý tự động những báo cáo lỗi trùng nhau. Những từ này có nhiều trong các file báo cáo lỗi và nó hầu như không liên quan đến nội dung cụ thể nếu không loại bỏ nó sẽ ảnh hưởng rất nhiều đến việc xác định sự giống nhau giữa các file báo cáo lỗi. Thông thường việc xử lý những từ này bằng cách liệt kê một danh sách những từ không có nghĩa hay còn gọi là không có ích cho việc xử lý. Danh sách này thường gọi là danh sách “stop words”, khi đó những báo cáo lỗi có chứa những từ trong danh sách này sẽ bị loại bỏ. B. Tính trọng số của từ CFC-27 Phương pháp phổ biến nhất trong việc tính trọng số của từ là chuyển đổi văn bản sang mô hình không gian vector và tính TF-IDF (Term Frequency- Inverse Document Frequency). Nó là một phương pháp thống kê để đánh giá tầm quan trọng của một từ trong văn bản và được định nghĩa như sau: ( ) ( ) (1) Hình 5. Thuật toán tổng quát quá trình xử lý Trong (1), Dall là số báo cáo lỗi trong kho báo báo lỗi, Dterm là số báo cáo lỗi có chứa từ đó trong báo cáo lỗi. Nghĩa là đối với một từ trong báo cáo lỗi, nếu nó càng ít xuất hiện trong các báo cáo lỗi, thì nó càng có ý nghĩa quan trọng trong việc phân loại các báo cáo lỗi.
- 82 CẢI TIẾN TRỌNG SỐ KẾT HỢP KỸ THUẬT RÚT TRÍCH ĐA ĐẶC ĐIỂM TRONG VIỆC DÒ TÌM Tuy nhiên theo [12] TF-IDF còn nhiều hạn chế và dựa vào đã cho thấy được ưu điểm của CFC [12] trong việc phân loại văn bản. Chúng tôi đã quyết định điều chỉnh cách tính trọng số trong phương pháp này với thực nghiệm TF- IDF, IDF-IDF-27 và CFC-27. Trong CFC, trọng lượng của từ wij được tính như sau: ( ) ) Trong đó t là từ (term) trong báo cáo lỗi, là số báo cáo lỗi chứa t của lớp C ,|C là số báo cáo lỗi trong lớp C , C i i j j j là tổng số lớp, là số lớp chứa ti, và b là tham số lớn hơn một, dùng để điều chỉnh cho trọng lượng wij. Trong CFC, xem xét đến số báo cáo lỗi chứa mức độ xuất hiện thường xuyên của một từ bên trong lớp. Công thức log xem xét mức độ giống như IDF truyền thống. C. Tính độ tương đồng giữa hai báo cáo lỗi Trong bước này sẽ tiến hành xác định sự tương đồng giữa các báo cáo lỗi, khi có một báo cáo lỗi mới được gửi đến. Độ tương đồng của hai báo cáo lỗi BRi và BRj được tính dựa vào việc trích chọn từ 27 đặc trưng cùng với sự cải tiến trong cách tính trọng số CFC-27 như sau: ⃗⃗⃗⃗ ⃗ ⃗⃗⃗⃗ ⃗ ( ⃗⃗⃗⃗ ⃗ ⃗⃗⃗⃗ ⃗ ) ( ) | ⃗⃗⃗⃗ ⃗ | ⃗⃗⃗⃗ ⃗ VI. KẾT QUẢ THỰC NGHIỆM A. Môi trường thực nghiệm Chúng tôi đã tiến hành thực nghiệm với ba kho báo cáo lỗi của những dự án phần mềm mở là Mozilla, OpenOffice, và Eclipse. Thống kê chi tiết về 3 kho phần mềm này được mô tả trong bảng 6.1. Bảng 6.1. Thông tin về datasets Kho báo cáo lỗi Thời gian Số lƣợng báo cáo lỗi Số lƣợng trùng Mozilla 01/2010-12/2010 75.653 6.925 OpenOffice 01/2008-12/2010 31.138 3.171 Eclipse 01/2008-12/2008 45.234 3.080 B. Phương pháp đánh giá Để đánh giá phương pháp dò tìm, chúng tôi sử dụng đơn vị đo lường gọi là Recall rate, phương pháp này được những công bố trước sử dụng cho phương pháp dò tìm báo cáo lỗi trùng nhau, nó được tính dựa trên bao nhiêu báo cáo lỗi có thể được dò tìm đúng trong danh sách những báo cáo lỗi trùng nhau và nó được định nghĩa như sau: Recal rate = C. Nghiên cứu kết quả thực nghiệm Để thấy sự hiệu quả của phương pháp được giới thiệu dựa vào trọng số CFC kết hợp với rút trích 27 đặc điểm (CFC-27), chúng tôi tiến hành so sánh nó với phương pháp truyền thống tính trọng số dựa vào TF-IDF và với sự kết hợp của TF-IDF với rút trích 27 đặc điểm (TF-IDF-27). Chúng tôi cũng so sánh với phương pháp của Alipour và Meng-jie Lin. Kết quả thực nghiệm cho thấy phương pháp được giới thiệu cải tiến rõ rệt trong tất cả ba dự án. Hình 6 chỉ ra sự cải thiện đáng kể của CFC-27 so với các phương pháp được so sánh. a) Kết quả thực nghiệm với kho báo cáo lỗi Mozilla b) Kết quả thực nghiệm với kho báo cáo lỗi Mozilla Eclipse
- Nhan Minh Phúc, Nguyễn Hoàng Duy Thiện, Dương Ngọc Vân Khanh 83 b) Kết quả thực nghiệm với kho báo cáo lỗi Mozilla OpenOffice Hình 6. Kết quả so sánh CFC-27 với các phương pháp khác VII. KẾT LUẬN Việc dò tìm trùng nhau của những báo cáo lỗi là một trong những vấn đề quan trọng trong việc bảo trì phần mềm trong những năm gần đây. Trong bài báo này chúng tôi giới thiệu một phương pháp dò tìm dựa vào trọng số mở rộng và rút trích đa đặc điểm (CFC-27) để cải tiến việc thực thi dò tìm những báo cáo lỗi trùng nhau. Kết quả thực nghiệm từ ba dự án mã nguồn mở cho thấy phương pháp này mang lại hiệu quả cao trong việc dò tìm các báo cáo lỗi trùng nhau, đặc biệt là khi so sánh với các phương pháp được giới thiệu trước đây, phương pháp CFC-27 đã cho kết quả tốt hơn và hiệu quả hơn trong việc dò tìm những báo cáo lỗi trùng nhau khoảng 8-12% so với các phương pháp trước đó. VIII. TÀI LIỆU THAM KHẢO [1] D. D. H. Z. Y. F. C. Z. Y. Chao-Yuan Lee, "Mining Temporal Information to Improve Duplication Detection on Bug Reports," in Advanced Applied Informatics (IIAI-AAI) 2015 IIAI 4th International Congress on 2015, pp. 551-555, Taiwan, 2015. [2] L. Hiew, "Assisted Detection of Duplicate Bug Reports," in Master Thesis, The University of British Columbia, May 2006, The University of British Columbia, 2006. [3] M. A. a. O. N. Runeson, "Detection of Duplicate Defect Reports using Natural Language Processing," in in Proceedings of the 29th International Conference on Software Engineering (ICSE 2007),ACM, pp. 499–510., 2007. [4] L. Z. T. X. J. A. J. S. Xiaoyin Wang, "An approach to detecting duplicate bug reports using natural language and execution information,IEEE, ACM," in In Proceedings of the 30th international conference on Software engineering, pp. 461-470, 2008. [5] C. Sun, D. Lo, X. Wang, J. Jiang and S. C. Khoo, "A discriminative model approach for accurate duplicate bug report retrieval," in in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, ACM, pp. 45-54. , 2010. [6] W. W. Nicholas Jalbert, "AutomatedDuplicateDetectionforBugTrackingSystems," in 2008 IEEE International Conference on Dependable Systems and Networks With FTCS and DCC (DSN) , Anchorage, AK, USA, 2008. [7] J. y. Z. a. M. y. G. Hu Guan, "A Class-Feature-Centroid Classifier for Text Categorization," in in Proceedings of the18th International Conference on World Wide Web,IEEE, Marid, 2009. [8] A. H. a. E. S. Alipour, "A contextual approach towards more accurate duplicate bug report detection," in 10th Working Conference on Mining Software Repositories (MSR), San Francisco, CA,, pp. 183-192., 2013. [9] T. T. N., T. N. N., D. L., C. S. Anh Tuan Nguyen, "Duplicate bug report detection with a combination of information retrieval and topic modeling," in ASE 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering , Essen, Germany , 2017. [10] Meng-JieLinCheng-ZenYangChao-YuanLeeChun-ChangChen, "Enhancements for duplication detection in bug reports with manifold correlation features," Journal of Systems and Software, Elservier, vol. 121, pp. Pages 223- 233, 2016. [11] J. G. B. X. TaoZhang, "Towards more accurate severity prediction and fixer recommendation of software bugs," Journal of Systems and Software, Elservier, vol. 117, no. July 2016, pp. Pages 166-184, 2016. [12] L. Z. Y. C. Y. C. Meng-Jie, "Enhancements for duplication detection in bug reports with manifold correlation features," Journal of Systems and Software, Elservier, vol. Volume 121, no. November, pp. Pages 223-233, 2016.
- 84 CẢI TIẾN TRỌNG SỐ KẾT HỢP KỸ THUẬT RÚT TRÍCH ĐA ĐẶC ĐIỂM TRONG VIỆC DÒ TÌM [13] Z. J. M. K. B. SeanBanerjee, "Automated triaging of very large bug repositories," Information and Software Technology Elservier, vol. Volume 89, no. September, pp. Pages 1-13, 2017. [14] L. H. a. G. C. M. John Anvik, "Coping with an Open Bug Repository," in Proceedings of the OOPSLA workshop on Eclipse technology eXchange, LA, USA, 2005. IMPROVED WEIGHTING USING EXTRACTION TECHNOLOGY MULTI-FEATURES IN DETECTING DUPLICATE BUG REPORTS Nhan Minh Phuc, Nguyen Hoang Duy Thien, Duong Ngoc Van Khanh ABSTRACT: For open source software such as Firefox, Eclipse, Subversion, etc. They usually have a repository system for bug management that sent by users. These bug reports help the system identify various software bugs which makes software maintenance better. More and more users, so the number of bug reports is increasing. A situation is that have multiple bug reports are sent to repository where these bug reports have been previously reported by different users, this is called duplicate bug reports. To solve this problem, a developer assigned a work for manually label as duplicate bug reports. However, in fact there are too many duplicate bug reports being sent daily, this wastes time and effort [1], [2], [3]. To solve this problem, recently a number of techniques have been proposed to automatically detect duplicate bug reports, but the exact results only about 36-85%, the reason is that the two reports of the same bug can be written in many different ways, so improving the accuracy of the duplicate detection process is the subject of much concern by recent researchers. In this paper, we proposed a multi-feature model combined with weighting improvements from CFC (Class-Feature-Centroid) to detect more accurate duplicate bug reports. We have experimented on three open source software from Mozilla, Eclipse and Open Office. The results show that our method can improve 8-11% better when compared to previous methods.