Loading...
- Type of Document: M.Sc. Thesis
- Language: Farsi
- Document No: 54184 (19)
- University: Sharif University of Technology
- Department: Computer Engineering
- Advisor(s): Heydarnoori, Abbas
- Abstract:
- Developers often seek to find projects that match their topics of interest in version control systems with the goal of reusing code, extracting similar requirements, learning, and more. However, due to the widespread use of these systems, the number of projects maintained on them is huge and ever-increasing. This has made it difficult to identify projects based on their topics. GitHub, as a prominent version control system, with the aim of facilitating access to projects based on their topics, has provided the possibility of assigning software topics to projects in the form of free-text tags for users. Assigning a correct and complete set of topics to software projects allows programmers to easily navigate projects by screening projects based on those topics.Previously, several studies have been conducted to facilitate the navigation of software projects. These studies began with approaches to grouping software projects and searching among them. Then, by identifying the positive effects of topic labeling of software projects on navigation, search, and categorization operations, as well as by enabling such labeling, research in this area continued with the project labeling approach. Studies with basic approaches are often dependent on technology and the programming language. On the other hand, labeling-based approaches mostly have results with limited recall and low precision. This low precision indicates the weakness of these approaches in predicting missing topic tags. Due to the importance of completeness of topic labels assigned to projects, this weakness has attracted the attention of researchers.In the present study, we categorize existing projects on the GitHub platform based on software topics through tagging, focusing on predicting missing tags. In order to achieve this, we first create a knowledge graph of GitHub-approved software topics through a crowd-sourced process. Then, using machine learning methods and information retrieval methods applicable to semantic networks, we present a knowledge graph-based software topic recommendation system with the aim of assigning the most complete set of possible topics to each software project. The results of the evaluations show that our proposed approach has an accuracy of 72.8%, which has significantly improved compared to the state-of-the-art methods and the results of previous studies. Our proposed method has outperformed the state-of-the-art approach by 62.28% and 93.14% regarding mean success rate and means average precision, respectively
- Keywords:
- Version Control System ; Knowledge Graph ; Machine Learning ; Classification ; Labeling Algorithm ; Software Topics ; Software Projects
-
محتواي کتاب
- view
- چکیده
- فهرست مطالب
- فهرست جدولها
- فهرست تصویرها
- فصل1 : معرفی پژوهش
- 1-1 مقدمه
- 1-2 تعریف مسئله
- 1-3 ایده حل مسئله
- 1-4 نگاهی اجمالی بر راهکار پیشنهادی
- 1-5 دستاوردها و نوآوریهای پژوهش
- 1-6 مراحل اجرای پژوهش
- 1-7 ساختار پایاننامه
- فصل2 : پیشزمینهها
- 2-1 مقدمه
- 2-2 گرافهای دانش
- 2-3 فرآیندهای اجرا شده
- 2-3-1 کدگذاری دستی
- 2-3-2 اعتبارسنجی مثلثی
- 2-3-3 جمعسپاری عملیات برچسبگذاری - برچسبگذاری نیمههدفگرا
- 2-4 الگوریتمهای مورد استفاده
- 2-4-1 فعالسازی منتشرشونده
- 2-4-2 دستهبندی متون با یادگیری ماشین
- 2-4-2-1 دستهبندی چند-دستهای چند-برچسبی
- 2-4-2-2 روشهای مدلسازی داده
- 2-4-2-3 الگوریتمهای دستهبندی متون
- فصل3 : کارهای مرتبط
- 3-1 مقدمه
- 3-2 مطالعات با هدف بهبود دسترسپذیری و بازیابی پروژههای نرمافزاری
- 3-2-1 مطالعات با هدف خوشهبندی پروژههای نرمافزاری
- 3-2-2 مطالعات با هدف بهبود عملیات جستجوی پروژههای نرمافزاری
- 3-2-3 مطالعات با هدف برچسبگذاری پروژههای نرمافزاری
- 3-2-4 تحلیل مطالعات با هدف دسترسپذیری و بازیابی پروژههای نرمافزاری
- 3-3 مطالعات با رویکرد استفاده از گرافهای دانش در مهندسی نرمافزار
- 3-3-1 مطالعات مرتبط با ساخت و کاربرد گرافهای دانش در مهندسی نرمافزار
- 3-3-2 تحلیل مطالعات با رویکرد استفاده از گرافهای دانش در مهندسی نرمافزاری
- فصل4 : راهکار پیشنهادی
- 4-1 مقدمه
- 4-2 نگاه کلی به راهکار پیشنهادی
- 4-3 ساخت گراف دانش موضوعات نرمافزاری
- 4-3-1 مقداردهی اولیه گراف دانش
- 4-3-2 گسترش گراف دانش
- 4-3-2-1 اعتبارسنجی روابط
- 4-3-2-2 گردآوری دانش
- 4-4 طراحی و پیادهسازی سیستم توصیهگر برچسبهای موضوعی
- 4-4-1 طراحی و پیادهسازی مولفه توصیهگر برچسب مبتنی بر گراف دانش
- 4-4-2 پیادهسازی مولفه توصیهگر برچسب مبتنی بر یادگیری ماشین
- 4-4-2-1 دادگان
- 4-4-2-2 پیادهسازی مدل نمایش ورودی
- 4-4-2-3 پیادهسازی الگوریتم ناییو بیز چندجملهای
- 4-4-2-4 پیادهسازی الگوریتم رگرسیون لاجیستیک
- 4-4-3 اتصال دو مولفه مبتنی بر گراف دانش و مبتنی بر یادگیری ماشین
- فصل5 : ارزیابی
- 5-1 مقدمه
- 5-2 ارزیابی فرآیند ساخت گراف دانش موضوعات نرمافزاری
- 5-2-1 تنظیمات اجرا و ارزیابی
- 5-2-1-1 مشخصات مشارکتکنندگان
- 5-2-1-2 سامانه برخط گسترش گراف دانش
- 5-2-1-3 معیارهای ارزیابی
- 5-2-2 نتایج و تحلیلها
- 5-2-2-1 نتایج حاصل از گام مقداردهی اولیه گراف دانش
- 5-2-2-2 نتایج حاصل از تکرار اول گام گسترش گراف دانش
- 5-2-2-3 نتایج حاصل از تکرار دوم گام گسترش گراف دانش
- 5-2-2-4 نتایج حاصل از تکرار سوم گام گسترش گراف دانش
- 5-2-2-5 مشخصات گراف دانش موضوعات نرمافزاری
- 5-2-1 تنظیمات اجرا و ارزیابی
- 5-3 ارزیابی سیستم توصیهگر برچسبهای موضوعی
- 5-3-1 تنظیمات اجرا
- 5-3-1-1 رویکرد پایه
- 5-3-1-2 دادگان
- 5-3-1-3 مقادیر پارامترها
- 5-3-1-4 معیارهای ارزیابی
- 5-3-2 نتایج و تحلیلها
- 5-3-2-1 تحلیل معیار
- 5-3-2-2 تحلیل معیارهای و
- 5-3-1 تنظیمات اجرا
- 5-4 تهدیدات علیه اعتبار
- 5-4-1 تهدیدات علیه اعتبار داخلی
- 5-4-2 تهدیدات علیه اعتبار خارجی
- 5-4-3 تهدیدات علیه اعتبار ساخت
- فصل6 : نتیجهگیری و کارهای آتی
- 6-1 مقدمه
- 6-2 نقاط قوت و ضعف
- 6-2-1 نقاط قوت
- 6-2-2 نقاط ضعف
- 6-3 کارهای آتی
- منابع یا مراجع
- واژگان فارسی به انگلیسی
- واژگان انگلیسی به فارسی
