IT 견문록/2022_부스트캠프 AITech 3기(100일)

[일일리포트] Day 58 (데이터 제작2)

논곰 2022. 4. 12. 22:02

해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.

▶ Today I Learned (핵심 요약 정리)

국내 언어 데이터 구축 프로젝트

21세기 세종 계획(국립국어원)

 총 2억 어절의 자료 구축, 공개 XML 형식, 언어정보나눔터 누리집을 통해 배포하다 중단 후 DVD로만 배포하게 됐다. 하지만 자료가 오래됐고, 사용에 익숙하지 않은 사람이 많다. 문어는 기사나 책, 구어는 강의나 방송 원고가 포함되어 있다. 세종 형태 분석 태그표는 MeCab, khaii, 꼬마, 한나눔, 코모란 등에서 채택하고 있다. Penn Treebank의 구 구조 분석 방식을 따름 (모두의 말뭉치에서는 의존구문 분석 방식으로 변경했다)

 

 모두의 말뭉치
 인공지능의 한국어 처리 능력 향상에 필수적인 한국어 학습 자료 공개 플랫폼. '21세기 세종계획'에 비해 일상 대화, 메신저, 웹 문서 등 구어체 자료의 비중을 높임. 또한 다층위 주석 말뭉치도 포함되어 있다.(형태, 구문, 어휘 의미, 의미역, 개체명, 상호 참조 등) JSON형식으로, 모두의 말뭉치 누리집에서 배포한다. 원시 말뭉치와 주석 말뭉치로 구성되어 있다.

>학습, 검증, 평가용 데이터가 나누어져 있지 않으므로 사용자가 직접 나누어 사용해야 한다.

 

엑소 브레인
 인간의 지적 노동을 보조할 수 있는 언어처리 분야의 AI 기술개발을 위한(전문직 종사자의 조사, 분석 등의 지식노동을 보조) 우리나라 대표 인공지능 국가 R&D 프로젝트이다.(개체명도 포함되어있다)
 ETRI의 오픈 AI API, DATA서비스 누리집에서 데이터셋을 배포하고 있다. 특이한 점은 NER 태그가 굉장히 세분화되어 있는데, QA를 위해 다양한 태그가 필요해 100개이상 태그로 세분화했다고 한다. 

 

AI 허브
 AI 기술 및 제품, 서비스 개발에 필요한 AI인프라를 지원하는 누구나 활용하고 참여하는 AI 통합 플랫폼이다. 데이터별로 데이터 설명서, 구축활용가이드를 제공한다. JSON, 엑셀 등 다양한 형식의 데이터를 제공한다. 실제 산업계 수요 조사를 반영하여 다양한 TASK를 수행할 수 있는 자원을 구축한다.

 

민간 주도 데이터셋

  •  KLUE: 한국어 이해 능력 평가를 위한 벤치마크이다. 순수하게 한국어 원시 말뭉치를 가공해서 각각의 데이터를 만들었다는 점에서 특별하다고 한다.
  • KorQuAD
    스탠포드에서 공개한 SQuAD를 벤치마킹해서 한국어에도 적용가능하게 만들었다. 위키피디아 데이터를 가지고, 질문을 생성하고 답변하는 Task를 수행할 수 있다.
  • KorNLU
    영어로 된 자연어 추론(NLI)및 문장 의미 유사도(STS) 데이터셋을 기계 번역하여 공개. 순수한 한국어가 아니라서 발생하는 문제점이 있다. 

자연어처리 연관 분야

 자연어처리와 연관된 분야는 크게 언어학, 인공지능, 텍스트 마이닝으로 나눌 수 있다. 각 분야에서 관심을 가지는 세부 분야는 아래 그림과 같다.

자연어처리와 연관된 분야

Linguistics: 기존 언어학에서는 언어학자의 직관에 의존하지만, 말뭉치 언어학은 실제 데이터에 들어난 언어적인 특성을 파악해 정의하는 학문이다. Linguistics분야에는 자연어처리의 Upstream Task가 많이 들어가 있다. 해당 Task들은 AI에서 Task를 수행함에 있어서 기초가 된다.

  • Semantic Role Labeling(의미역 라벨링): Subject Object 정보 라벨링

AI: 궁극적으로 서비스로 나올 수 있는 부분이 주로 해당된다. AI Task를 수행하기 위해 Linguistics에 있는 부분을 연구했다고 볼 수 있다.


Text Mining: 검색 기술 등에 사용이 된다. 

(참조링크) 자연어처리 개요(overview)

NLP Task별 주요 데이터셋

질의응답 (QA, Question Answering)

SQuAD 데이터셋: 위키피디아 데이터를 기반으로 제작한 기계 독해 및 질의응답 데이터

  • 논문에 있는 데이터 collection이나 데이터 scheme을 보면 데이터 형태를 확인할 수 있다.
  • 데이터 구축을 할 때는 어떤 지시문을 사용자들에게 보여줄 지에 대해서도 생각해야 한다.

기계번역 (Machine Translation)

WMT 데이터셋: 2014년부터 시행된 기계 번역 학회에서 공개한 데이터셋 다국어 번역 데이터이며, 두 언어간의 병렬 말뭉치(Parallel Corpus)로 구성된다. 뉴스, 바이오, 멀티 모달 데이터 등이 제공된다. (데이터 형식 2020)

  • 데이터를 확인함에 있어서 id 정보가 매우 중요하다.
  • 번역은 방향이 중요하다. 한-영, 영-한 순서가 다르면 다른 Task가 된다.

요약 (Text Summarization)

CNN/Daily Mail: 추상요약 말뭉치이다. 기사에 대하여 사람이 직접 작성한 요약문이 짝을 이루고 있다. 추상 요약 Task에서 자주 사용되는 데이터이다.

대화 (Dialogue)

DSTC: Dialog System Technology Challenges. 기계번역과 양대산맥에 있는 NLP의 주요 Task이다. 이제는 단순 텍스트 데이터에서 넘어 멀티모달 데이터를 제공하기도 한다. 추가로 Dialogue는 또 크게 ODD(Open Domain Dialogue), TOD(Task Oriented Dialogue)로 나뉘게 된다.

WoZ: Wizard-of-Oz. WoZ방식은 대화 수집 방식의 하나로, 참여자가 대화 시스템을 통해 대화를 하고 있다고 생각하게 한 뒤 실제로는 실제 사람이 참여자의 발화에 맞추어 응답을 제시하고 대화를 이끌어나가면서 대화를 수집하는 방식

UDC: Ubuntu Dialogue Corpus. 우분투 플랫폼 포럼의 대화를 수집한 데이터이다. 대화 상태 추적과 블로그 등에서 보이는 비구조적 상호작용의 특성을 모두 가지고 있다.

데이터의 형태를 보고, 내가 수행 하려고 하는 Task에서 어떤 식으로 데이터를 사용할 수 있을 지 확인해야 한다.

원시데이터

 원시데이터란 과제를 해결하기 위해 특정 도메인, 장르, 주제 등에 대해 조건에 맞춰 수집했으나 주석 단계를 거치지 않은 상태의 데이터이다. 원하는 형태로 가공하기 이전의 데이터로 목적에 맞는 전처리 과정을 거쳐 가공이 되어야 활용할 수 있다.

 원시 데이터를 수집하는 과정 자체가 시간이 매우 드는 작업이기 때문에, 오픈소스에서 가져올 수 있을 수 있다면 최대한 활용하자. 원시 데이터 수집 시 검토해야 하는 사항은 다음과 같다. 

원시 데이터 수집 시 검토사항

추가적으로 원시데이터를 수집할 때, 획득가능성, 신뢰성, 데이터 균형과 다양성, 법 제도 준수, 저작권, 데이터 윤리 등을 고려해야 한다. 

  • 획득 가능성: 획득이 불가능하거나 통제 불가능한 주기를 가지고 있다면 원시 데이터의 정책에 의존하게 되므로 바람직하지 않음. 획득이 용이하더라도 서비스 활용 측면에서 데이터를 활용하기 위해 가공 처리에 많은 비용이 드는 데이터는 선정하기 어려움.
  • 데이터 균형과 다양성: 개체의 다양성, 목적 및 상황의 다양성, 시간별, 종류별, 사람별, 지역별 다양성
  • 신뢰성: 데이터의 품질이 신뢰할 수 있는지 검토
  • 법 제도 준수: 개인정보 및 사생활 보호가 필요한 항목 획득 시 적절한 법적, 기술적 절차를 거친 데이터를 사용해야 한다. 개인정보 처리를 하기 위해서는 정규표현식이 필요
  • 저작권: 원시 데이터에 주석 작업을 하는 경우, 결과물은 2차적 저작물로 간주되며 라이센스는 원시 데이터를 따름
  • 데이터 윤리:인공지능 윤리 가이드라인. 혐오 표현 및 차별적 발언 필터링 등

원시데이터 전처리

원시 데이터 전처리 단게에서는 추출 대상을 확인하고, 불필요 요소를 제거하거나 변환해야 하며, 정제 대상을 다시 한 번 확인해야 한다. 

  • 추출 대상 확인: 메타 정보, 주석 대상 텍스트 (주석 대상 표현 포함 텍스트 여부, 텍스트 길이 범위)
  • 불필요 요소 제거 및 변환: 개인정보 비식별화[필수], 비윤리적 표현 정제
  • 정제 대상 확인: 숫자, 외국어, 기호, 이모지, 띄어쓰기, 맞춤법, 오탈자, 개인 정보, 문장 분리
메타 정보: 텍스트 외에 텍스트를 설명하는 정보. 텍스트 ID, 이름, 저장 정보, 매체 정보, 주석 정보, 출처, 형태/구문 분석 정보 등을 사전에 정해진 양식에 맞춰 기록된다.

데이터 구축 작업 설계

데이터 구축 프로세스에서 실제 데이터 구축이 진행되는 단계는 주석과 검수 단계이다. 이때, MAMA Cycle이라고 해서, Model-Annotate-Model-Annotate의 작업을 수행하게 된다.

데이터 구축 프로세스

데이터 주석 유형

유형 1) 분류: 문장 또는 텍스트에 대한 분류 레이블을 주석하는 유형이다. 감성분석, 주제분류, 자연어 추론 등이 있고, 구축 난이도는 일반적으로 낮은 편. (자연어 추론 등의 경우 전문성에 차이가 난이도에 영향을 미칠 수 있다.)

유형 2) 특정범위 주석: 텍스트의 일부를 선택해 특정한 레이블을 주석하는 유형이다. NER(개체명), 형태분석 등이 있다. 구축 난이도는 과제에 따라 다르다. 

유형 3) 대상 간 관계 주석: 대상 간 관계를 주석하는 유형이다. 관계 추출, 개체명 연결, 구문 분석 등이 있다. 2번 유형에서 하나를 더해 두 단계에 걸쳐 구축해야 하므로 구축 난이도는 높은 편이다.

유형 4) 텍스트 생성: 주어진 텍스트에 대한 텍스트 또는 발화를 생성하는 유형이다. 대화문, 번역, 요약 등이 있다. 

유형 5) 복합 유형: 앞선 유형의 데이터 구축 방식을 복합적으로 사용해 다양한 정보를 주석하는 유형이다. 질의 응답, 슬롯필링 대화, 챗봇 등이 있다. 

데이터 검수

데이터 검수 유형에는 '표본 추출'과 '전수 검사'가 있으며, 데이터의 평가기준으로는 작업자 간 일치도(IAA, Inter-Annotator Agreement)와 모델 평가(Evaluation)가 있다.

  • 가이드라인 정합성: 각 주석 절차 및 주석 내용이 가이드라인에 부합하는지 확인
  • 데이터 형식: 메타 정보, 레이블, 텍스트 내용 등의 형식이 맞는지 확인
  • 통계 정보: 메타 정보 및 레이블의 분포, 문장 길이, 단위 별 규모 확인
  • 모델 성능 확인: 모델 학습을 통해 결과값 확인

오류 원인분석

  • 구축방법 측면의 오류 원인
  • 가이드라인 측면의 오류 원인
  • 데이터셋 측면의 오류 원인
  • 학습모델 측면의 오류 원인

마지막으로 데이터 구축 작업 설계 시 다음과 같은 유의사항이 있다.

  • 데이터 구축 기간은 넉넉하게 설정해야 한다.
  • 데이터 검수에 충분한 시간을 확보하고, 검수 내용을 어느 시점에 어떻게 반영할 것인가 하는 계획을 세워야 한다. 
  • 각 단계별 작업의 주체와 검수 유형을 선정해둬야 한다.
  • 작업 난이도에 따라 참여 인력을 산정하고, 참여 인력 모집 및 관리를 어떻게 할 것인지 고민해야 한다.
  • 외부 인력 자원을 활용하는 경우 비용 산정을 위해 기본 단가 산정 기준을 잘 세워야 한다.

가이드 라인

 데이터를 구축함에 있어서 가이드라인은 매우 중요하다고 할 수 있다. 가이드라인은 크게 수집을 위한 가이드라인, 주석을 위한 가이드라인, 검수를 위한 가이드라인이 있다. 수집을 위한 가이드라인의 경우 문서형, 주석을 위한 가이드라인의 경우 튜토리얼형을 주로 사용한다. 요즘에는 튜토리얼 가이드라인을 제시하는 경우가 많아지는 추세라고 한다.

 가이드라인의 구성요소는 다음과 같다. 데이터 구축 목적을 잘 정의해야 더 좋은 퀄리티의 데이터를 얻을 수 있다. 또한, Task별 특수하게 나올 수 있는 사항들을 고려해야 한다. 그리고 작업자들에게 익숙하지 않은 용어들에 대해서도 정리해둬야 한다.

가이드라인의 구성요소

 가이드라인은 구축과 검수 과정을 통해 지속적으로 개정되어야 한다. 개정 전과 개정 후 어떤 것이 변화했는지 비교해 볼 수 있도록 버전 관리가 되는 것이 가장 좋다. 버전별로 작성자와 개정일을 기입해두는 것이 관리에 도움이 된다.

 마지막으로 가이드라인 작성 시 유의사항으로는 다음과 같은 것들이 있다.

  • 가이드라인의 유형별 특성을 이해하고 그에 알맞는 정보를 작성해야 한다.
  • 그리고 작업자의 작업 이해도를 고려해 작성하고, 공개해야하는 필수 정보와 부가적 정보가 무엇인지 사전에 고려한다.
  • 마지막으로 작업자의 가독성을 고려해야 하고, 가이드라인의 구성요소의 배치를 어떻게 할 지 고민해야 한다.

▶ Review (생각)

 오늘로 데이터 구축에 관한 강의는 일단 다 끝낸 것 같다. 남은 3강의의 경우 RE Task에 관한 내용이기 때문에 내일 천천히 들을 생각이다. 월요일만해도 이전에 강의듣던 것을 고려해서 오늘까지 끝내려고 했는데 강의도 안 듣다가 들어서 그런지 집중하기 쉽지 않았었다. 그래서 강의에서 제대로 집중하지 못한만큼 오늘은 조금은 더 꼼꼼하게 정리를 하고자 했다. 

 추가적으로 피어세션 시간에는 Git을 조금 더 보기 좋게 정리하고, Readme도 작성을 거의 다 끝냈다. 그리고 최종 프로젝트를 위해서 팀원들과 얘기를 천천히 시작했다. 오늘은 하고 싶은 프로젝트의 방향 등에 대해서 같이 나누는 시간을 가졌다. 특히, 조금은 부끄럽지만 어떤 마음가짐으로 프로젝트에 임할 지에 대해서 얘기를 했다. 나는 팀프로젝트에서 가장 기본적으로 갖춰져야 하는 부분은 '노력하는 사람이 바보가 되지 않을 수 있는 환경'이라고 생각한다.  그렇기 때문에 팀원들 간 어떤 방향을 갖고 있는지 공유할 필요가 있다고 생각해서 같이 나눴었고, 내가 생각했던 것만큼 다들 열심히 하고자 한다고 얘기해줬다.

 그리고 시간이 부족해 디테일하게 나누지는 못했지만 프로젝트 관심 주제나, 방향 등에 대해서도 같이 나누는 시간을 가졌다. 이번 부스트캠프 프로젝트는 프로젝트를 위한 프로젝트가 되지 않게 열심히 준비해서 좋은 결과를 얻을 수 있도록 노력해야겠다.