NGLP 메트릭 얻기 - ISEL-HGU/IntegratedDPModel GitHub Wiki

툴 소개

NGLP metric 구하기 위한 툴이다. git show 명령어를 통해 반환되는 커밋 텍스트 정보로 커밋 말뭉치를 생성하고 이를 이용하여 trigram을 학습시켜 토큰 시퀀스에 대한 확률들을 미리 계산한다. NGLP 메트릭 값을 얻기 위해서는 NGLP 메트릭을 구해야 할 커밋을 먼저 토큰화하여 trigram 형태로 만든다. 그 다음 trigram 토큰 시퀀스에 해당하는 확률을 모두 곱해 마지막에 음의 로그를 취한다. 본 연구에서는 NGLP 메트릭을 구하기 위해 single trigram 모델과 master trigram 모델을 학습시킨다. Single trigram model은 한 프로젝트의 기간을 정해 그 사이의 모든 커밋들을 훈련 데이터로 사용하여 trigram을 훈련시키지만, master trigram 모델은 여러 개의 프로젝트 커밋을 학습 데이터로 사용하여 master 모델을 생성한다.

Manual script steps

  1. git clone https://github.com/ISEL-HGU/IntegratedDPModel.git

  2. https://github.com/ISEL-HGU/IntegratedDPModel/tree/master/Ngram/src 아래에 있는 코드를 다음과 같은 명렁어로 실행시킨다. (python version: 3.7.3 에서 실행되었음)

    python single_ngram.py
    python master_ngram.py
    
    1. 코드 중 12번째 줄의 train_filename 변수에 train data의 path와 42번째 줄의 testcommit_name 변수에 test data의 path를 입력해준다. output을 위해서는 26번째 줄 with open 안에 input csv metric file path를 입력해주고 27번째에 with open 안에 output metric csv 파일의 경로를 잘 설정해준다.
  3. output metric csv 파일에서 필요없는 metric들은 지워주고 뒤에 두 개 콜럼의 위치를 바꿔서 맨 마지막 컬럼에 class label이 오게 한 뒤 ARFF 파일로 만들어준다. https://github.com/ISEL-HGU/IntegratedDPModel/blob/master/src/main/java/edu/handong/csee/isel/weka/CSV2Arff.java을 실행시킨다. 이때 i 옵션에 바꾸고 싶은 input csv path를 입력한다. 이클립스에서 하나하나 실행시켜도 되고 아래처럼 실행파일을 만들어 스크립트를 돌려도 된다.

    CSV2ARFF_script