Corpus 기여 가이드
이 문서는 ChatterBot Corpus 모듈(이후 Corpus)에 기여하는 방법에 대해 설명합니다.
1. Corpus 구조
이 부분에서는 Corpus가 어떻게 구성되어 있는지 서술합니다.
1.1. Corpus 모듈
Corpus 모듈(corpus.py
)은 데이터셋에 대한 경로 지정 역할을 수행하지만, 그 외의 기능은 존재하지 않습니다.
1.2. 데이터셋
Corpus의 실제 데이터셋은 data
폴더 내부에 위치해 있습니다. 이 폴더 내에는 언어 별로 폴더가 구분되어 있으며, 각 언어에 대해 대화 주제 별로 파일이 분리되어 있습니다.
예를 들어, 한국어 데이터셋은 data/korean 폴더에 위치해 있으며, 그 중 인사와 관련된 데이터셋은 data/korean/greetings.yml에서 확인할 수 있습니다.
한국어 데이터셋과 영어 데이터셋을 비교하면 알 수 있듯이, 언어마다 포함된 주제가 다를 수 있습니다. 따라서 대화를 추가할 때 기존 파일의 분류에 구애받지 않고 새로운 파일을 추가하여도 무방합니다.
1.2.1. 데이터셋 구조
데이터셋은 YAML으로 작성되어 있습니다. 포맷은 다음과 같습니다.
- categories
- 본 파일이 다루는 주제에 대한 키워드를 나열합니다.
- 키워드는 여러 개일 수 있습니다. AI 대화 목록의 경우, 키워드가
AI
와artificial intelligence
의 두 가지로 정의되어 있습니다. - TODO: ChatterBot이 어떻게 categories를 활용하는가?
- conversations
대화
의 나열입니다.대화
는 일반적으로 두 문자열의 나열로, 첫 번째는질문
, 두 번째는대답
에 해당됩니다.
2. 기여 방법
Corpus에 가장 직접적으로 기여하는 방법은 데이터셋을 수정하는 것입니다.
2.1. 데이터셋 추가
다음은 데이터셋에 새로운 데이터를 추가하는 경우입니다.
- 특정 파일에 새로운 대화 또는 키워드를 추가한다.
- 새로운 파일을 생성하고 대화 및 키워드를 작성한다.
- 새로운 언어를 추가한다.
파일 및 내용을 추가하는 경우는, 기존의 YAML 포맷을 엄수하면서 작업하시기 바랍니다. 포맷이 달라지는 경우 파싱에 오류가 발생할 수 있는 위험을 수반하기 때문입니다. 다만, 분류만 적절하다면 어떤 데이터를 추가하는 지는 크게 관여하지 않으니 자유롭게 추가하셔도 됩니다.
언어를 추가하는 경우, 기본적인 형태를 영어 데이터셋을 기반으로 하시기 바랍니다. 여기서 형태
는 YAML 포맷, 주제 분류, 키워드 등을 말합니다.
2.2. 데이터셋 수정
다음은 기존 데이터를 수정하는 경우입니다.
- 특정 대화의 오타 및 번역 오류를 수정한다.
- 특정 대화를 다른 파일로 옮긴다.
- 특정 대화를 삭제한다.
첫 번째 경우는 크게 문제되지 않지만, 나머지 경우는 변경 사항과 더불어 해당 작업이 필요한 이유에 대한 설명을 PR 시 덧붙여주시기 바랍니다.
특히 세 번째 경우는 타인의 기여를 제거하는 행위이므로 신중하게 하시기 바랍니다.