[AI 모델 탐험기] #6 칸트 글 생성 모델

Changyeop·2021년 5월 28일
0
post-thumbnail

해당 글은 제가 커먼컴퓨터에서 재직 중에 작성한 글이며 회사 공식 블로그에도 올라오고 있습니다.

Kant 모델은 머리말을 입력하면 칸트에 관한 에세이를 작성해주는 모델입니다.

dleunji님께서는 철학 전공 수업에서 칸트의 사상이 심오하여 과제를 진행하는데 어려움을 겪은 경험이 있어, 이 문제를 해결하기 위해 모델을 만드셨다고 합니다.

프로젝트를 바로 확인해 보시고 싶으신 분은 다음 링크를 참조해 주세요.

Demo : https://link.ainize.ai/3utIExV
API : https://link.ainize.ai/3oVtSP8
Github : https://link.ainize.ai/3p5fGmU

철학이라는 단어를 들었을 때 어떤 생각이 드시나요? 저는 철학이라고 하면 심오하고 어려울 거 같다는 생각이 먼저 듭니다. 그러면 철학은 어렵고 심오하니까 삶에서 배척해도 될까요? 저는 아니라고 생각합니다. 우리는 철학을 통해 일상의 중요한 문제들에 관한 생각을 개선할 수 있다고 생각합니다.

하지만 철학에 대한 지식이 없는 사람들이 철학적인 생각을 한다는 것은 쉽지 않습니다. 과거의 철학자들에게 직접 물어보면 좋겠지만 과거의 철학자는 이미 세상을 떠났죠. 그렇다면 사람이 아닌 철학자의 사상을 학습한 인공지능에게 물어보면 어떨까요? 인공지능에게 물어봐도 철학자의 사상과 비슷한 답변을 할까요? 과거의 칸트 사상으로 학습된 모델에 대해 한번 알아봅시다!

순수이성비판

순수이성비판은 철학의 역사에서 가장 영향력 있는 저서 중 하나입니다. 순수이성비판의 원문은 Project Gutenburg에서 구할 수 있습니다.

데이터 전처리를 위해 데이터를 살펴보니 불필요한 Heading, 공백, 기호 등이 있어 이를 제거하는 작업을 진행했습니다.

file_name = "The Critique of Pure Reason.txt"
f = open(file_name, "rt", encoding='utf-8')
file = f.readlines()
f.close()
sentences = []
start = 0
for line in file: 
  if line.startswith('PREFACE'): 
	# PREFACE부터 데이터 가능성을 고려하였습니다.
	# 변수 start는 이를 위한 flag 역할을 수행하였습니다. 
    start = 1
    continue
  elif start != 1:
    continue
  elif line.startswith('End'):
	# PREFACE와 반대로 END로 문장이 시작할 시에 뒤의 부수적인 문장은 고려하지 않기 위해
	# break를 통해 for loop를 나옵니다.
    break
  elif line.startswith(' '):
	# 앞서 말씀드린 도식 외에도 주석 또한 공백으로 시작되어, 이 경우 모두 제거하였습니다.
    continue
	# 헤딩 제거
  elif line.startswith('Section'):
    continue
  elif line.startswith('Chapter'):
    continue
  elif line.startswith('Introduction'):
    continue
  elif line.startswith('FIRST') or line.startswith('SECOND') or line.startswith(
      'THIRD'):
    continue
  elif line.startswith('PROOF') or line.startswith('ANTITHESIS'):
    continue
  elif line.startswith('OBSERVATION'):
    continue
  elif line.startswith('ON THE THESIS'):
    continue
  elif line.startswith('I.') or line.startswith('II.') 
		or line.startswith('III.') or line.startswith('IV.') 
		or line.startswith('V.') or line.startswith('VI.'):
		# 제목에서 기호만 제외한 후 유효한 제목만 남겼습니다.
    line = line[line.find('.') + 2:]
  elif line.startswith('-'):
    continue
  elif line.startswith('§'):
    continue
	# 개행 문자 제거
  elif line == "\\n":
    continue
  elif line.startswith('('):
    line = line[4:]
	elif line.startswith('Introductory'):
	    continue
	elif line.startswith('The remark:'):
	    continue
	elif line.startswith('Remark'):
			continue
	# 주석을 위한 대괄호 내용 삭제
	if line.find('[') > -1:
	      if line.find(']') > -1:
	        left = line.find('[')
	        right = line.find(']')
	        new = line[:left-1] + line[right+1:]
	        line = new
	# 문장 중간에 등장하는 인덱스와 기호 삭제
	line = line.replace('§','')
	line = line.replace('_', '')
	line = line.replace(';', '. ')
	line = line.replace('(a)', '')
	line = line.replace('(b)', '')
	line = line.replace('(c)', '')
	line = line.replace('(1)', '')
	line = line.replace('(2)', '')
	line = line.replace('(3)', '')
	line = line.replace('(4)', '')
	line = line.replace('1.', '')
	line = line.replace('2.', '')
	line = line.replace('3.', '')
	line = line.replace('4.', '')
	line = line.replace('5.', '')
  sentences.append(line)

칸트가 되어보자

  • Ainize가 제공하는 DEMO 사용하기

Ainize가 제공하는 DEMO를 사용해보겠습니다.

원하는 머리말을 입력하면 칸트가 다음의 내용을 작성해줍니다. 해당 DEMO는 link에서 확인할 수 있습니다.

  • Ainize가 제공하는 API 사용하기

이번에는 Ainize에서 제공하는 Kant API를 사용하여 Kant 모델을 사용해보겠습니다. API에 관한 내용은 link에서 확인할 수 있습니다.

  • 직접 모델을 학습하여 사용하기

이번에는 Teachable NLP를 통해 GPT-2 모델을 Fine-Tuning 하여 모델을 사용해보겠습니다.
Teachable-NLP에 전처리 과정을 마친 데이터를 넣고 Model size는 Small 로, epoch는 5로 설정한 뒤 GPT-2 모델을 Fine-tuning 하였습니다. 트레이닝 과정이 종료되면, Test your model 을 클릭합니다.
클릭하면 열리는 TabTab 화면에서 칸트가 되어볼 수 있습니다.

저는 판단이라는 단어로 글을 써보겠습니다.

과학의 판단, 우리 직관의 대상이 될 가능성의 조건은 우리가 현상에서 원리 내 원인을 진행할 수있는 한,
우리는 사후 판단에서이 현상을 발견했다고 말할 수 있습니다. 그러나 우리는 대상과 표현의 동일한 결합을
유지할 수 없으므로 직관에 판단을 추가하여 그 운동의 추진력을 억제 할 수 없습니다. 이 어려움에서 벗어나는
유일한 방법은 카테고리를 결합하는 것입니다. 그리고 이해의 객관적인 사용에서 벗어나는 유일한 방법은
직관의 두 요소를 결합하는 것입니다. 따라서 최상 존재에 대한 개념이 제정되었습니다.

이 모델 정말 학습이 잘된 거 같습니다. 무슨 말을 하는 지 하나도 모르겠습니다. 😂

이 모델은 칸트의 순수이성비판 한권을 가지고 학습하였지만 나아가 칸트가 집필한 다른 책들을 통해 모델을 학습한다면 더욱 칸트가 말하는 거와 같은 효과가 있을 뿐만 아니라 새로운 칸트의 사상이 나올 지도 모르겠다라는 생각을 가지면 글을 마치겠습니다. 읽어주셔서 감사합니다!

레퍼런스

  1. Critique of Pure Reason
  2. The Critique of Pure Reason by Immanuel Kant
  3. Kant Model Github
  4. Kant Model Ainize
  5. Teachable NLP

AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.

최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.

AI네트워크 공식 홈페이지: https://ainetwork.ai/

공식 텔레그램: https://t.me/ainetwork_kr

아이나이즈(Ainize): https://ainize.ai

유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog

페이스북:https://www.facebook.com/ainetworkofficial/

포럼:https://forum.ainetwork.ai/

AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/

profile
성창엽(24)/???

0개의 댓글