본문 바로가기
Data/자연어 처리

Question Generation

by forestlim 2020. 12. 10.
728x90
반응형

cdQA를 연구하던 중 사람이 일일이 질문과 답변을 작성하기 수고스럽다고 생각해 질문을 생성해주는 모델을 찾았다.

github.com/codertimo/KorQuAD-Question-Generation

 

codertimo/KorQuAD-Question-Generation

question generation model with KorQuAD dataset. Contribute to codertimo/KorQuAD-Question-Generation development by creating an account on GitHub.

github.com

먼저, 내가 임의로 수집한 데이터셋에 답변을 달아주었다. 

(cdQA-annotator를 이용하였다. cdQA-annotator를 띄우는 방법은 나중에 다시 작성하겠다.)

내가 수집한 텍스트(paragraphs)에서 답변을 드래그 하고 Add annotation을 누르면 자동으로 답변이 입력된다.

이렇게 모든 텍스트에 답변만 다는 작업을 마친후 json파일로 내려받을 수 있다. 

이처럼 korquad1.0 데이터 셋과 비슷하게 질문만 없이 출력된 것을 볼 수 있다. 

(cdQA-annotator에 올리기 위해 데이터를 크롤링 하는 코드도 나중에 올리도록 하겠다.)

 

이렇게 세팅이 끝난 후 가중치를 훈련시키는 작업을 진행하였다. 

train.json을 이용해 답변에 매칭되는 질문을 생성하는 학습을 진행하였다. 

<학습 진행>

CUDA가 계속 터져서 batch size를 줄여서 학습을 진행하였다. 

학습이 된 후 모델이 .pth 로 저장된다. (artifacts 디렉토리가 새로 생기며 안에 모델 파일이 생기게 된다.)

 

 

KorQuAD-Question-Generation/korquad_ag/config.py 에 들어가서 dev.json이 아닌 나의 데이터 셋으로 바꿔주었다. 

다른 파라미터 튜닝도 계속 연구해 볼 생각이다. 

이제 답변에 해당하는 질문을 생성해보자!

 

<데이터셋에 질문 생성>

 

<dev.json으로 질문을 생성한 파일과 내가 만든 데이터(wiki_make2_answer.json)로 생성한 파일 비교>

1) dev.json

기존 질문이 있었기에 생성된 질문과 실제 질문이 같이 출력

 

2) wiki_make2_answer.json

기존 질문이 없었기 때문에 실제 질문은 없고 gpt로 생성된 질문과 답변만이 출력됨

 

 

 

 

향후에는 하나의 답변에 생성되는 질문을 여러개 만드는 연구를 진행할 생각이다. 

모든 사람이 똑같이 질문을 하지 않기 때문이다. 

결과가 잘 나올지는 모르겠지만 계속 연구를 해 볼 것이다. 

728x90
반응형

댓글