Python söz dizimi hatalarının derin öğrenme yöntemleri ile onarılması
Fixing python syntax errors with deep learning methods
Yazar: SENA DİKİCİ
Danışman: PROF. DR. TURGAY TUGAY BİLGİN
Bursa Teknik Üniversitesi / Lisansüstü Eğitim Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2024
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control

Özet:
Otomatik program onarımı (APR), yazılım geliştirme süreçlerinde karşılaşılan hataları tespit etmek ve onarmak için otomatik teknikler kullanan bir araştırma alanıdır. Bu alanda yapılan çalışmalar, hata düzeltme sürecini hızlandırmayı, yazılım kalitesini artırmayı ve geliştiricilerin üzerindeki yükü azaltmayı hedefler. Bu alandaki son yenilikler, derin öğrenme ve makine öğrenimi tekniklerinin yanı sıra geleneksel algoritmik yaklaşımları içermekte ve kod analizi, hata türü tahmini, hatalı kod segmentlerinin lokalizasyonu ve onarım önerileri sunma gibi aşamaları otomatize etmekte büyük ilerlemeler kaydetmektedir. 
Bu tez çalışması, Python programlama dilinde yazılmış kodların otomatik olarak onarılmasını hedefleyen ve yapay zeka teknolojilerini kullanan bir sistem üzerine odaklanmaktadır. Çalışma, BiLSTM ve LSTM ağları kullanılarak geliştirilen özel modeller ile hatalı kodların tespit edilip onarılması sürecini içermektedir. Çalışmanın ilk aşamasında, farklı hata türlerine sahip hatalı Python kodları üzerinde eğitim gerçekleştirilmiştir. BiLSTM hata türü tahmin modeli, %98'lik bir doğruluk değeri elde ederek hata türlerini etkin bir şekilde tespit edebildiğini kanıtlamıştır. Python dilinde yazılmış ve doğru biçimde işlev gösteren kod örnekleri üzerinden, bu kodların tokenize edilerek temel yapı taşlarına ayrılması ve her bir tokenin benzersiz tanımlayıcılar ile eşleştirilmesi işlemi gerçekleştirilmiştir. Bu işlem sonucunda oluşturulan veri seti, LSTM tabanlı bir token tahmin modelinin eğitimi için kullanılmıştır. Model, eğitim sonucunda %98,44'lük bir doğruluk oranı ve %98,91'lik F1 skoruna ulaşarak yüksek düzeyde başarı sergilemiştir.
Sistemin performansı, mutasyon testiyle oluşturulmuş 925 adet hatalı kod örneği üzerinde deneyimlenmiş ve bu kodların 794'ü (%85,84) başarılı bir şekilde onarılmıştır. Bu sonuçlar, sistemin hatalı Python kodlarını tespit etme ve onarma konusunda oldukça yetkin olduğunu göstermektedir. Şablon tabanlı APR aracı olan PyNar Sohbet Robotu ile karşılaştırıldığında tez çalışmasının onarım sistemi, PyNar'ın %53,3'lük başarısına kıyasla %85,84 gibi daha yüksek bir başarı oranına ulaşmıştır. Bu karşılaştırma, geliştirilen otomatik onarım sisteminin etkinliğini ve yapay zeka destekli çözüm yaklaşımlarının bu alanda ne kadar başarılı olabileceğini gözler önüne sermiştir.
Bu akademik çalışma, otomatik program onarımı konusunda önemli bir ilerlemeyi işaret ederek bu alandaki ileriye dönük çalışmalar için güçlü bir referans sağlamaktadır. Elde edilen yüksek doğruluk oranları ve onarım başarısı, APR araçlarının yazılım geliştirme alanında önemli bir etki yaratabileceğinin göstergesidir. Bu tür sistemlerin gelişimi ve iyileştirilmesi kod kalitesini artırma ve geliştirme süreçlerinin verimliliğini iyileştirme yolunda umut verici yenilikler sunmaktadır.

Abstract:
Automatic Program Repair (APR) is a field of research that employs automated techniques to detect and fix errors encountered in software development processes. Studies in this area aim to accelerate the error correction process, enhance software quality and reduce the burden on developers. Recent innovations in this field encompass deep learning and machine learning techniques, alongside traditional algorithmic approaches, making significant strides in automating stages such as code analysis, error type prediction, localization of faulty code segments and offering repair suggestions.
This disputation focuses on a system that targets the automatic repair of code written in the Python programming language using artificial intelligence technologies. The work involves the development of specialized models using BiLSTM and LSTM networks for the detection and repair of faulty code. In the initial phase, training was conducted on faulty Python codes with various error types. The BiLSTM error type prediction model achieved a 98% accuracy rate, effectively demonstrating its capability to identify error types. Python code samples that function correctly were processed to tokenize and break them down into basic building blocks, with each token matched with unique identifiers. This process resulted in a dataset used for training a LSTM-based token prediction model. Post-training, the model exhibited high success, achieving a 98.44% accuracy rate and a 98.91% F1 score.
The system's performance was tested on 925 faulty code samples created through mutation testing, successfully repairing 794 of them (85.84%). These results demonstrate the system's proficiency in detecting and repairing faulty Python code. When compared with PyNar, a template-based APR tool chatbot, the thesis's repair system reached a higher success rate of 85.84% compared to PyNar's 53.3%. This comparison highlights the effectiveness of the developed automatic repair system and underscores the potential success of AI-supported solution approaches in this field.
This research marks a significant advancement in automatic program repair, providing a robust reference for future research in this area. The high accuracy and repair success rates indicate that APR tools could have a substantial impact in the field of software development. The continued development and improvement of such systems offer promising innovations for enhancing code quality and increasing the efficiency of development processes.