Hydra Logo

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 대화 목록의 경우, 키워드가 AIartificial intelligence의 두 가지로 정의되어 있습니다.
    • TODO: ChatterBot이 어떻게 categories를 활용하는가?
  • conversations
    • 대화의 나열입니다.
    • 대화는 일반적으로 두 문자열의 나열로, 첫 번째는 질문, 두 번째는 대답에 해당됩니다.

2. 기여 방법

Corpus에 가장 직접적으로 기여하는 방법은 데이터셋을 수정하는 것입니다.

2.1. 데이터셋 추가

다음은 데이터셋에 새로운 데이터를 추가하는 경우입니다.

  • 특정 파일에 새로운 대화 또는 키워드를 추가한다.
  • 새로운 파일을 생성하고 대화 및 키워드를 작성한다.
  • 새로운 언어를 추가한다.

파일 및 내용을 추가하는 경우는, 기존의 YAML 포맷을 엄수하면서 작업하시기 바랍니다. 포맷이 달라지는 경우 파싱에 오류가 발생할 수 있는 위험을 수반하기 때문입니다. 다만, 분류만 적절하다면 어떤 데이터를 추가하는 지는 크게 관여하지 않으니 자유롭게 추가하셔도 됩니다.

언어를 추가하는 경우, 기본적인 형태를 영어 데이터셋을 기반으로 하시기 바랍니다. 여기서 형태는 YAML 포맷, 주제 분류, 키워드 등을 말합니다.

2.2. 데이터셋 수정

다음은 기존 데이터를 수정하는 경우입니다.

  • 특정 대화의 오타 및 번역 오류를 수정한다.
  • 특정 대화를 다른 파일로 옮긴다.
  • 특정 대화를 삭제한다.

첫 번째 경우는 크게 문제되지 않지만, 나머지 경우는 변경 사항과 더불어 해당 작업이 필요한 이유에 대한 설명을 PR 시 덧붙여주시기 바랍니다.

특히 세 번째 경우는 타인의 기여를 제거하는 행위이므로 신중하게 하시기 바랍니다.