Giter Club home page Giter Club logo

bugs-classification's Introduction

bugs-classification

Сборка

git clone https://github.com/ml-in-programming/bugs-classification.git

cd bugs-classification

gradlew build

Запускаемый jar-файл: build\libs\bugs-classification-v1.jar

war-файл для сервера: server\build\libs\server-v1.war

Консольный интерфейс

java -jar build\libs\bugs-classification-v1.jar [команда]

  1. parse src dst
    Преобразует csv файл в используемый в проекте формат
Аргумент Значение
src Исходный csv-файл с данными. Ожидаемый формат описан ниже.
dst Итоговый файл с предобработанными данными для дальнейшей работы.
step_id ID задачи для фильтрации решений.

Пример: java -jar build\libs\bugs-classification-v1.jar parse data.csv solutions.tmp 239566

  1. cluster src dst
    Кластеризует неправильные решения
Аргумент Значение
src Файл с предобработанными данными, полученный с помощью команды parse.
dst Итоговый файл с кластеризованными исправлениями.

Пример: `java -jar build\libs\bugs-classification-v1.jar cluster solutions.tmp clusters.tmp

  1. mark src dst n_show n_clusters
    Позволяет разметить кластеры. Размечается n самых больших кластеров.
Аргумент Значение
src Файл с полученными кластерами, полученный с помощью команды cluster.
dst Итоговый файл с размеченными данными.
n_show Количество элементов кластера, которые будут показываться для примера
n_clusters Количество кластеров, которые будут размечены.

Пример: java -jar build\libs\bugs-classification-v1.jar mark clusters.tmp marks.tmp 5 40

  1. prepare src solutions dst Преобразует размеченные данные в формат, нужный для быстрого создания классификатора.
Аргумент Значение
src Файл с полученными кластерами, полученный с помощью команды cluster.
solutions Файл с предобработанными данными, полученный с помощью команды parse
dst Итоговый файл с размеченными данными.

Пример: java -jar build\libs\bugs-classification-v1.jar prepare marks.tmp solutions.tmp prepared.tmp

Формат исходного csv файла

Ожидается такой формат (порядок столбцов значения не имеет):

step_id,user_id,submission_code,is_passed,timestamp
239,566,"public class HelloWorld {
	public static void main(String[] args) {
		System.out.println(""Hello, World!"");
	}
}",False,1442181616
239,566,"class HelloWorld {
  public static void main(String[] args) {
    System.out.println(""Hello, World!"");
  }
}",False,1442182020

Запуск сервера

В файле bugs-classification\server\src\main\resources\data.txt прописан путь, откуда сервер попытается загрузить данные. Каждая папка, название которой состоит только из цифр, будет интерпретирована как подготовленные данные для какой-то задачи. Если в этом файле прописан путь path и есть подготовленные данные для задач с номерами (step_id) 239566 и 566239, то ожидается следующее расположение файлов:

path
    239566
        solutions.tmp
        prepared.tmp
    566239
        solutions.tmp
        prepared.tmp

После сбоки проекта, war файл будет лежать в server\build\libs. Сервер поддерживает два вида запросов.

Запрос подсказки

Позволяет получить подсказку для неправильного решения.

Формат запроса следующий:

Ожидается POST запрос по адресу

ip:port/server-v1/webapi/bugs-classification/hint

со следующими аргументами в формате JSON

Аргумент Значение
problem Идентификатор задачи (step_id)
code Текст решения

Формат ответа следующий:

{"hint":*hint_text*,"confidence":*confidence*,"errorMessage":*error_message*,"status":*status*,"time":*time*}
Аргумент Значение
hint Текст подсказки. Если что-то пошло не так, то поле будет пустым.
confidence Уверенность классификатора в ответе
errorMessage Сообщение об ошибке. Если запрос был успешно обработан, то поле будет пустым.
status Статус обработки запроса. Может принимать два значения: OK и ERROR
time Время обработки запроса на сервере

Пример: Для данного решения задачи с номером 239566

void foo() {}

запрос будет выглядеть, например, так

curl --header "Content-Type: application/json" \
--request POST \
--data '{"problem":53619,"code":"void foo() {}"}' \
http://localhost:8080/server-v1/webapi/bugs-classification/hint

а ответ так

{"hint":"Похоже удача сегодня не на вашей стороне","confidence":1.0,"errorMessage":"","status":"OK","time":556}

Запрос доступных классификаторов

Позволяет узнать список задач, для которых доступна функция получения подсказок.

Формат запроса следующий:

Ожидается GET запрос

ip:port/server-v1/webapi/bugs-classification/classifiers

Формат ответа следующий:

[*problem_1*, *problem_2*, ...]

Например

[47538,53619,55715,47334,58088,53676]

bugs-classification's People

Contributors

artyomlobanov avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bugs-classification's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.