diff --git a/basic/char-rnn-hangul.ipynb b/basic/char-rnn-hangul.ipynb new file mode 100644 index 0000000..dd68b08 --- /dev/null +++ b/basic/char-rnn-hangul.ipynb @@ -0,0 +1,571 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SIMPLE HANGUL CHAR-RNN " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TENSORFLOW VERSION IS 1.0.1\n" + ] + } + ], + "source": [ + "from __future__ import print_function\n", + "import tensorflow as tf\n", + "import numpy as np\n", + "import hgtk\n", + "from tensorflow.contrib import rnn\n", + "tf.set_random_seed(0) \n", + "print (\"TENSORFLOW VERSION IS %s\" % (tf.__version__))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DEFINE TRAINING SEQUENCE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hangul_sentence = '사랑하고 나서 잃는 것은 전혀 사랑하지 않았던 것보다 더 낫다. 죄는 취소될 수 없다.용서될 뿐이다. 아예 배우지 않느니 보다는 늦으나마 배우는 편이 낫다. 근심은 세월을 거치지 않고 백발과 노령을 가져온다. 이기는 것이 중요한 것이 아니다. 어떻게 노력하는가가 문제이다. 말 한 마디가 세계를 지배한다. 어느 사회에서나 유아들에게 우유를 먹이는 것보다 더 좋은 투자는 없다. 위대한 것 치고 정열이 없이 이루어진 것은 없다. 작지만 청결한 것은 큰 것이요. 크지만 불결한 것은 작은 것이다. 참된 삶을 맛보지 못한 자만이 죽음을 두려워하는 것이다. 훌륭한 말은 훌륭한 무기이다. 좋은 밤을 찾다가 좋은 낮을 잃어버리는 사람들이 많다. 의인의 수고는 생명에 이르고 악인의 소득은 죄에 이른다. 가치있는 적이 될 수 있는 자는 화해하면 더 가치있는 친구가 될 것이다. 일은 인간생활의 피할 수 없는 조건이며, 인간 복지의 참된 근원이다. 우리는 지성적으로 되기 위해 많은 대가를 치른다. 자기 자신을 아는 것은 참된 진보이다. 행실은 각자가 자기의 이미지를 보여주는 거울이다. 창조적인 예술가는 그 전의 작품에 만족하지 않기 때문에 다음 작품을 만든다. 인생은 불확실한 항해이다. 성실하지 못한 사람은 위대한 것들을 생산할 수가 없다. 마음의 즐거움은 얼굴을 빛나게 하여도 마음의 근심은 심령을 상하게 하느니라. 민주주의는 정지된 것이 아니라 영원히 계속되는 행진이다. 내 자신의 무식을 아는 것은 지식에로의 첫걸음이다. 좋은 나무는 좋은 열매를 맺는다. 날이 밝기 직전에 항상 가장 어둡다. 내일의 모든 꽃은 오늘의 씨앗에 근거한 것이다. 조용한 물이 깊이 흐른다. 빈부강약을 막론하고 일하지 않는자를 배척하라. 강한 사람이란 가장 훌륭하게 고독을 견디어 낸 사람이다. 인간은 이성적 동물이다. 인간성 이외에는 본질적으로 진실한 것은 없다. 할 수 있는 한 훌륭한 인생을 만들라.인생은 짧고 곧 지나간다. 말도 행동이고 행동도 말의 일종이다. 자신이 자신의 지휘관이다. 소유물의 부족은 개선할 수 있으나 영혼의 가난은 해결하기 쉬운 것이 아니다. 풍랑은 항상 능력있는 항해자 편이다. 지식과 목재는 세파에 시달리지 아니하면 많이 애용될 수가 없다. 모든 죄의 기본은 조바심과 계으럼이다. 전쟁에서는 오직 한 번 죽지만 정치에서는 여러번 죽는다. 사람은 자기 일보다 남의 일을 더 잘알고 더 잘 판단한다. 모든 날 중 가장 완전히 잃어버린 날은 웃지 않은 날이다. 인간의 진정한 재산은 그가 이 세상에서 행하는 선행인 것이다. 친구들을 불신한다는 것은 그들에게 속은 것보다 더 수치스러운 일이다. 인간은 패배하였을 때 끝나는 것이 아니다.포기 했을 때 끝나는 것이다. 인간은 천에 따라서 자기 옷을 지어야 한다. 배운 사람은 항상 자기 속에 재산이 있다. 하늘에는 입이 없으므로, 사람으로 하여금 말하게 한다. 오직 남들을 위하여 산 인생만이 가치 있는 것이다. 무지함을 두려워 말라. 거짓 지식을 두려워하라. 늑대는 이빨을 잃어도 그 천성은 잃지 않는다. 정직은 가장 확실한 자본이다. 무거운 마음을 가지고 가벼운 시를 즐길 수 없다. 지성인은 자기의 마음으로 자기 자신을 망보는 사람이다. 습관은 제二의 천성으로 제一의 천성을 파괴한다. 핑계를 잘 대는 사람은 거의 좋은 일을 하나도 해내지 못한다. 위대한 사람은 절대로 기회가 부족하다고 불평하지 않는다. 행복하게 산다는 것은 마음의 평온함을 뜻한다. 두 사람의 머리는 한 사람의 머리보다 낫다. 힘으로서 사람을 복종시키지 말고 덕으로서 사람을 복종시켜라. 인간이란 생각하는 것이 적으면 적을수록 많이 지껄여댄다. 너 자신을 다스려라. 그러면 당신은 세계를 다스릴 것이다. 시간을 잘 맞춘 침묵은 말보다 더 좋은 웅변이다. 목표를 보는 자는 장애물을 겁내지 않는다. 용기는 대단히 중요하다. 근육과 같이 사용함으로써 강해진다. 행복이란 불만에 자기가 속지 않으면 된다. 위기의 시기에는 가장 대담한 방법이 때로는 가장 안전하다. 자유느 획득하는 것보다 간직하는 것이 더 어렵다. 행동가처럼 생각하라. 그리고 생각하는 사람처럼 행동하라. 성공적인 결혼이란 매일같이 개축해야 하는 건물과 같은 것이다. 어리석은 자는 수치스러운 일을 할 때에도 그것이 언제나 그의 의무라고 선포한다. 내기는 탐욕의 아들이며,부정의 형제이며,불행의 아버지이다. 오늘 가장 좋게 웃는 자는 역시 최후에도 웃을 것이다. 부당한 이득을 얻지말라.그것은 손해와 같은 것이다. 굳은 결심은 가장 유용한 지식이다. 위대한 사람은 모두가 겸손하다. 하나의 작은 꽃을 만드는 데도 오랜 세월의 노력이 필요하다. 공손과 인간성과의 관계는, 따스함과 밀초와의 관계와 같다. 어느날 갑자기 착한 사람이 되거나 악인이 되는 사람은 없다. 맹세는 말에 지나지 않고, 말은 바람에 지나지 않는다.\"사자라 할지라도 파리들로 부터 자기 몸을 방어해야 한다. 마땅히 행할 길을 아이에게 가르쳐라.그리하면 늙으도 그것을 떠나지 않으리라. 자신을 알 수 있는 사람이야말로 진정한 현인이다. 가장 훌륭한 예언은 상식,즉 우리의 원래의 지혜이다. 자신이 현명하다고 생각하고 있는 인간은 정녕 구제할 수 없는 바보이다. 너의 의무를 다하라. 그리고 나머지는 하나님께 맡겨라. 전력을 다해서 시간에 대항하라. 생활의 기술이란 우리의 환경에 대한 계속적인 적응을 의미한다. 얻기 어려운 것은 시기 편견이란 실효성이 없는 의견이다. 오래 가는 행복은 정직한 것 속에서만 발견할 수 있다. 맹세는 말에 지나지 않고 말은 바람에 지나지 않는다. 훌륭한 삶에는 세 가지 요소가 있다. 즉 배우는 일,돈 버는 일,무엇인가 하고 싶은일. 모든 일은 계획으로 시작하고, 노력으로 성취되며, 오만으로 망친다. 창조는 고민속에서 나오고 발전은 고생 속에서 움튼다. 인생의 참된 목적은 영원히 생명을 깨닫는데 있다. 미지를 향해 출발하는 사람은 누구나 외로운 모험에 만족해야 한다. 말이 입힌 상처는 칼이 입힌 상처보다 깁다. 지혜의 가장 명백한 징조는 쉴새없이 명랑한 것이다. 탐구하여 찾아질 수 없을 정도로 어려운 문제는 존재하지 않는다. 행동에 부주의하지 말며,말에 혼동되지 말며,생각에 방황하지 말라. 사업을 좌우하여라. 사업에 의해 좌우되어서는 안된다. 소인은 특별한 것에 관심이 있고, 위인은 평범한 것에 관심이 있다. 자신의 주인이 되는 자는 곧 다른 사람들의 주인이 될 것이다. 우리의 거의 모든 삶이 어리석은 호기심에 낭비되고 있다. 많은 벗을 가진 사람은 한 사람의 진실한 벗을 가질 수 없다. 아름다운 것! 그것은 마음의 눈으로 보여지는 미 금전은 무자비한 주인이지만 유익한 종이 되기도 한다. 위대한 사람은 목적을, 소인들은 공상을 가지고 있다. 세상에서 가장 아름다운 것은 세상 그 자체이다. 군자는 기회가 없다고 불평하지 않는다. 당신은 의지의 주인이 되라. 그리고 당신은 양심의 노예가 되라. 산을 옮기는 사람은 작은 돌맹이부터 옮긴다. 정당하게 사는 자에게는 어느 곳이든 안전하다. 군자는 의리에 밝고, 소인은 이익에 밝다. 어떠한 충고일지라도 길게 말하지 말라. 얼마나 오래 사느냐가 아니라 어떻게 사느냐가 문제 삶은 순간들의 연속이다. 한순간,한순간을 사는 것이 성공하는 겄이다. 위대한 것을 멸시하고,과도함 보다는 중용을 택하는 것이 군자의 특징이다. 험담은 세 사람을 죽인다. 말하는 자, 험담의 대상자, 듣는자. 교육의 목표는 지식의 증진과 진리의 씨부리기이다. 가시에 찔리지 않고서는 장미꽃을 모을 수가 없다. 자기 일을 멸시하는 자는 먹을 양식과 싸운다. 많은 사람이 충고를 받지만, 오직 현명한 자만이 충고의 덕을 본다. 하나님 앞에서는 울어라. 그러나 사람들 앞에서는 웃어하. 돈으로 살 수 있는 행복이라 불리는 상품은 없다. 미는 내부의 생명으로부터 나오는 빛이다. 일을 몰고 가라. 그렇지 않으면 일이 너를 몰고 갈 것이다. 행동을 초래시키지 않는 생각, 그것은 생각이 아니라 공상이다. 의복에만 마음이 쏠리는 것은 마음과 인격이 잠든 탓이다. 험한 언덕을 오르려면 처음에는 서서희 걸어야 한다. 만약 급히 서두르려면 돌아 가는 길로 가라. 즐거움에 찬 얼굴은 한접시의 물로도 연회를 만들 수 있다. 청년이여 일하라. 좀더 일하라. 끝까지 열심히 일하라. 노령에 활기를 주는 진정한 방법은, 마음의 청춘을 연장하는 것이다. 참고 버티라. 그 고통은 차츰차츰 너에게 좋은 것으로 변할 것이다. 좋은 가문에서 태어나는 것은 바람직한 일이다. 그러나 그 영광은 조상의 것이다. 좋은 친구는 건강에도 좋다. 모든 일은 어려운 고비를 넘겨야 쉬워진다. 사람의 척도는 그가 불행을 얼마나 잘 이겨내는지에 달려있다. 패배를 극복하는 법을 배워야 한다. 그럴때에 당신의 인격이 향상된다. 태만이란 약한 마음을 가진 사람의 유일한 피난처이다. 한 손으로 다른 손을 씻고, 두 손으로 얼굴을 씻는다. 자기가 할 수 있는 일은 남에게 밀지 말라. 산 기계를 만들지 말고, 인간을 만들라.\"악은 선을 인식시키고 고통은 기쁨을 느끼게 한다. 두사람의 개성의 만남은 두가지 화학물질의 접촉과 같다. 반응이 있으면 둘 다 변화한다. 거룩하고 즐겁고 활기차게 살아라. 믿음과 열심에는 피곤과 짜증이 없다. 논리와 상식은 다르다. 여행이란 젊은이들에게는 교육의 일부이며 연장자들에겐 경험의 일부이다. 인간은 죽을 때까지 완전한 인간이 못된다. 좋은 전쟁 또는 나쁜 평화는 없다. 천재란 인내에 대한 위대한 자질 이외에는 아무것도 아니다. 작은 도끼라도 찍고 찍으면 큰 참나무는 넘어진다. 안심하면서 먹는 한조각 빵이 근심하면서 먹는 잔치보다 낫다. 은혜를 입은 자는 잊지말아야 하고 베푼자는 기억하지 말아야 한다. 원인은 숨겨지지만 결과는 잘 알려진다. 모범은 훈화보다 유효하다. 당신의 인생은 당신이 하루종일 무슨 생각을 하는지에 달려있다. 많은 사물중에서 가운데가 제일이다.내 위치도 가운데가 되게 하라. 백년을 살 것처럼 일하고 내일 죽을 것처럼 기도하라. 뿌리가 튼튼해야 열매가 많다. 모범은 모든 사람이 읽을 수 있는 교훈이다. 우리의 인내가 우리의 힘보다 더 많은 것을 성취할 것이다. 당신이 누군가를 배반한다면,당신은 또한 당신 자신을 배반하는 셈이다. 평온한 마음으로 아껴 생활하는 것이 사람에게 큰 부이다. 긍지는 인간이 입을 수 있는 가장 훌륭한 갑옷이다. 절제는 모든 미덕의 진주고리를 이어주는 비단의 실이다. 현실에 대한 눈은 감을수 있어도 기억에 대한 눈은 감을 수 없다. 어린이가 없는 곳에 천국은 없다. 인간은 사회적 동물이다. 가장 훌륭한 기술, 가장 배우기 어려운 기술은 세상을 살아가는 기술이다. 나의 음악은 어린 아이들과 동물들이 가장 잘 이해한다. 단 하나의 하늘에 올려진 고마워하는 생각이 완전한 기도이다. 자신의 행동이 빗나간 사람일수록 맨 먼저 남을 모략한다. 다른 사람을 지배하려는 사람은,먼저 자기 자신의 주인이 되어야 한다. 청년기는 대실수이다. 장년기는 투쟁이다. 그리고 노년기는 후회이다. 큰 시련은 큰 의무를 완수하게 만드는 것이다. 일은 인류를 사로잡는 모든 질환과 비참을 치료해 주는 주요한 치료제이다. 깨끗한 의복은 좋은 소개장 어리석은 짓을 삼가는 것이 지혜의 입문이다. 친구를 얻는 유일한 방법은 스스로 완전한 친구가 되는 것이다. 희망은 가난한 인간의 빵이다. 인간은 신의 걸작품이다. 먹는 것은 자신을 즐겁게 하기 위함이요. 입는 것은 남을 즐겁게 하기 위함이다. 시간은 언제까지든 당신을 기다리는 것은 아니다. 좋은 일을 많이 해내려고 기다리는 사람은 하나의 좋은 일도 해낼 수가 없다. 모든 국가의 기초는 그 나라 젊은 이들의 교육이다. 대화는 학생들의 실험실이요, 작업장이다. 덕이 없는 아름다움은 향기 없는 꽃이다. 모든 개량과 진보의 근본은 근로이다. 인생에서 중요한 법칙은 만사에 중용을 지키는 일이다. 결함이 나의 출발의 바탕이고 무능이 나의 근원이다. 시간을 이용할줄 아는 사람은 하루를 사흘로 통용한다. 권세가 인간을 교만으로 이끌어갈 때,시가 그에게 한계를 상기시켜준다. 우리들은 감탄과 희망과 사랑으로 산다. 조금 알기 위해서 많이 공부해야 한다. 말로하는 사랑은 쉽게 외면할수 있으나 행동으로 보여주는 사라은 저항할 수가 없다. 덕이 없는 아름다움은 향기 없는 꽃이다. 시련이란 진리로 통하는 으뜸가는 길이다. 기대하지 않는 자는 실망하지도 않을 것이다. 선을 행하는 데는 나중이라는 말이 필요없다. 노동은 생명이요, 광명이다. 살아 있는 실패작은 죽은 걸작보다 낫다. 학문의 최대의 적은 자기 마음속에 있는 유혹이다. 작은 성공을 만족스럽게 생각하는 사람은 큰 성공을 얻지 못한다. 힘없는 정부는 미약하고, 정의없는 힘은 포악이다. 누구나 오래 살기를 바란다. 그러나 누구를 막론하고 나이는 먹기 싫어한다. 충고자는 아무리 신랄하여도 결코 해를 끼치지 않는다. 최초의 큰 웃음보다는 마지막의 미소가 오히려 났다. 훌륭한 충고보다 값진 선물은 없다. 가정은 삶의 보물상자가 되어야 한다. 사랑은 사람들을 치료한다. 사랑을 받는 사람,사랑을 주는 사람 할 것이 없이. 현대화 보다 더 고상한 것이 있다.그것은 바로 영원한 것이다. 한나라의 진정한 재산은 땀흘려 일하는 부지런한 주민의 수에 있다. 노년은 청춘에 못지 않은 좋은 기회이다. 호기심이란 무지의 고백인데 그것은 의도적이며 당당하며 열렬하다. 최대다수의 최대행복은 도덕과 입법의 초석이다. 종소리처럼 맑고 분명해라. 우리의 거의 모든 삶이 어리석은 호기심에 낭비되고 있다. 한치의 기쁨마다 한자의 고민이 있다. 담화는 마음의 보다 즐거운 향연이다. 마음이 어진 사람은 조그마한 집에 살아도 행복하다. 목적 없이 존재하는 것은 아무 것도 없다. 눈물을 흘리면서 빵을 먹어보지 못한 사람은 인생의 참맛을 알 수 없다. 사람을 알려면 그의 지갑,쾌락,그리고 불평을 보라. 다른 사람들을 비난하려고 생각하기 전에 자기 자신을 추분이 살펴보아야 한다. 큰 나무는 바람을 많이 받는다. 당신은 항상 영웅이 될수 없다.그러나 항상 사람은 될수 있다. 검약은 훌륭한 소득이다. 악은 쾌락 속에서도 고통을 주지만 덕은 고통속에서도 위안을 준다. 너의 위대한 조상을 본받아 행동하라. 나는 내 운명의 주인이요. 나는 내 마음의 선장이다. 환락은 망상 위에 세울 수 있으나, 행복은 진리 위에만 세워진다. 악은 선을 인식시키고 고통은 기쁨을 느끼게 한다. 사랑은 인생의 소금이다. 사람의 천성과 직업이 맞을때 행복하다. 돈이 있어도 이상이 없는 사람은 몰락의 길을 밟는다. 여가를 활용하지 못하는 사람은 항상 여가 시간이 없다. 존재하는 것을 변화시키는 것은 성숙하게 만드는 것이다. 아름다움이란 경솔한 사람이 그릇생각하듯 보이는 그대로 외관만의 치레는 아니다. 지식이 깊은 사람은 시간의 손실을 가장 슬퍼한다. 용기가 없는 사람에게는 어떤 좋은 것도 생기지 않는다. 민주주의의 모든 질병은 더 많은 민주주의에 의해서 치료될 수 있다. 무관심 때문에 사람은 실제로 죽기전에 죽어버린다. 넌 자신을 누구에겐가 필요한 존재로 만들라. 누구에게든 인생을 고되게 만들지 말라. 가장 최상의 길은 없다. 많은 사람이 가고 있다면 그 길이 최상이다. 근로가 잠들면 빈곤은 창으로 들어온다. 적당주의자가 되지 말라. 그것은 세상에서 가장 위험한 것이다. 천재응 1퍼센트의 영감이요. 99퍼센트는 노력이다. 충고는 좀처럼 환영받지 못한다. 인간은 교육을 통하지 않고는 인간이 될 수 없는 유일한 존재이다. 이해가 부족한 사람이 오해가 많은 사람보다 낫다. 겸손이 없다면 당신은 인생의 가장 기본적인 교훈도 배울 수가 없다. 소비된 시간은 존재하고 이용된 시간은 생명이다. 세상이 당신에게 준 것보다 더 많이 세상에게 주라. 사랑은 고생을 면할 수가 없다.그러나 잊을 수 있는 능력이 있다. 지성이란 그것을 갖고 있지 않는 사람에게는 보이지 않는다. 공손이란 가장 친절한 방법으로 가장 친절한 것을 향하고 말하는 것이다. 자기 자신을 예찬하는 자는 신의 미움을 받는다. 지혜는 간혹 누더기 가면을 덮어쓰고 있다. 과도한 재산을 소유하게 되었을 때보다 더 시련을 당하게 되는 적은 없다. 인간은 환경을 창조하고 환경은 인간을 창조한다. 생각이 깊지 못한 사람은 항상 입을 놀린다. 신념은 연애와 같은 것이어서 강요할 수 없는 것이다. 군자의 사귐은 담담함이 물과 같고, 소인의 사귐은 달콤함이 단술과 같다. 인간은 아직까지도 모든 컴퓨터중에서 가장 훌륭한 컴퓨터이다. 작은 구멍 하나가 큰 배를 침몰시키는 것이다. 다정하고 조용한 말은 힘이 있다. 미소,악수,혹은 호의로운 눈총 등 무었인가를 남에게 동냥할 필요가 없는 인간은 없다. 진정한 벗은 제2의 자기인 것이다. 시간을 선택하는 것은 시간을 절약하는 것이다. 눔을 감아라. 그럼 너는 너 자신을 볼 수 있으리라. 화가 나면 열을 세어라. 풀리지 않는 다면 백을 세어라. 내가 아직 살아있는 동안에는 나로 하여금 헛되이 살지 않게 하라. 사랑없이 사는 것은 정말로 사는 것이 아니다. 언론의 자유를 죽이는 것은 진리를 죽이는 것이다. 시종일관하는 자는 운명을 믿고, 변덕 부리는 자는 요행을 믿는다. 재산가들 중에는 상식을 가진 자가 드물다. 확실한 벗은 불확실한 처지에 있을 때 알려진다. 결백한 자와 미인은, 시간 이외에는 적이 없다. 양심은 어떠한 과학의 힘보다도 강하고 현명하다. 남은 많이 용서하되 자신은 결코 용서하지 말라. 지구상에는 인간이외는 위대한 것이 없다.인간에게는 지성이외엔 훌륭한 것이 없다. 인내하라.경험하라.조심하라. 그리고 희망을 가져라. 한가한 인간은 고여 있는 물이 썩는 것과도 같다. 인류를 위해 사는 것은 자기의 이름을 위해 사는 것보다 훌륭한 것이다. 다른 인간을 증오하는 댓가는, 자신을 더 적게 사랑하는 것이다. 사람은 돈지갑은 가난해도,정신적으로는 긍지를 가질 수 있다. 시기와 질투는 언제나 남을 쏘려다가 자신을 쏜다. 말하자마자 행동하는 사람, 그것이 가치있는 사람이다. 잔잔한 바다에서는 좋은 뱃사공이 만들어지지 않는다. 한 가지 일을 경험하지 않으면 한 가지 지혜가 자라지 않는다. 나는 나 자신을 빼 놓고는 모두 안다. 아무리 화려한 궁전이라도 초라한 내 집만한 곳은 없다. 장점과 훌륭한 예의는 어디서나 번영할 것이다. 정직한 노동은 사랑스런 얼굴을 낳는다. 충실한 삶의 깊이를 아는 자는 아름다운 죽음의 가치를 안다. 공정하고 바른데는 근거를 두었다면 긍지보다 이익을 주는 것은 좀처럼 없다. 사랑하고 사랑받는 것은 태양을 양쪽에서 쪼이는 것과 같다. 아이들에게는 비평보다도 귀감이 필요하다. 지혜는 고통을 통해서 생긴다. 기회는 새와 같은것, 날아가기 전에 꼭 잡아라. 소인은 특별한 것에 관심이 있고, 위인은 평범한 것에 관심이 있다. 소비된 시간은 존재하고 이용된 시간은 생명이다. 말만 하고 행동하지 않는 사람은 잡초로 가득 찬 정원과 같다. 쓴 맛을 보기 전에 단 맛을 보아서는 안된다. 진정한 위인치고 자신을 위인으로 생각하는 자는 없다. 사람의 잘못은 좀처럼 자신에게는 나타나지 않는다. 정신으로 창조된 것은 물질보다 한결 생명적이다. 진주를 간직하고 있는 것은 병든 궁이다. 성공의 비결은 목적을 향해 시종일관하는 것이다. 지식인은 지금까지 일어났던 일을 안다. 천재는 앞으로 일어날 일을 안다. 탐구정신은 우리가 살고 있는 시대의 위대한 특징이다. 많은 사람이 충고를 받지만, 오직 현명한 자만이 충고의 덕을 본다. 자기가 가고 있는 곳을 모르는 사람은 결코 높이 향상하지 못한다. 빈곤은 재앙이 아니라 불편이다. 술은 인격을 비춰주는 거울이다. 인내는 쓰다. 그러나 그 열매는 달다. 미련한 자는 자기 행위를 바른 줄로 여긴다. 명언 모음, 격언 모음 약 360개 신기한 말을 하는 것이 귀함이 아니라 실행함이 귀하다. 기쁨을 주는 사람만이 더 많은 기쁨을 즐길 수 있다. 오직 바보나 죽은 자만이 절대로 자기의 의견을 변화시키지 않는다. 인류의 목적은 휴식이 아니다.그것은 지적이며 도덕적인 완성이다. 대화시의 신중은 웅변보다 더 중요하다. 생명이 있는 한,사람은 무었인가 바랄수 있다. 인생을 해롭게 하는 비애를 버리고 명랑한 기질을 간직하라. 가시나무를 심는 자는 장미를 기대해서는 안된다. 중간이 가장 안전할 것이다. 남자는 마음으로 늙고 여자는 얼굴로 늙는다. 서투런 의사소통은,훌륭한 예절을 망쳐버린다. 태만을 즐기고 있을 때는 태만함을 느끼지 못한다. 상식은 그렇게 흔한 것이 아니다. 아름다운 것은 선하고 선한 자는 곧 아름다워진다. 영혼이 깃든 청춘은 그렇게 쉽사리 사라지지 않는다. 누구든지 크나큰 시련을 당하기 전에는 참다운 인간이 못된다. 권리는 어느 곳에나 도리를 벗어난 곳에서는 존재할 수 없다. 사악은 언제나 미덕보다 더 쉽다. 왜냐하면 사악은 모든일에 지름길을 택하기 때문이다. 근심은 미를 훔치는 도둑이다. 폭풍은 참나무가 더욱 뿌리를 깊게 박도록 한다. 적은 것을 적다고 하지 말며 천한 것을 천하게 여기지 말라. 일의 기량을 닦기 위해서 가장 중요한 것은 실행과 경험이다. 어떤 가치있는 행동을 하지 아니한 날,그날은 잃은 날이다. 서툰 의사는 한번에 한 사람을 해치지만, 서툰 교사는 130명을 해친다. 우유부단한 것만이 습관으로 되어 있는 사람보다 더 비참한 사람은 없다. 선한 사람이 되라. 그러면 세상은 선한 세상이 될 것이다. 한 시대의 철학은 다음 시대에서는 평범한 상식에 불과하다. 속이는 말로 재물을 모으는 것은 죽음을 구하는 것이다. 일은 시작할 때가 언제나 가장 좋다. 신사를 만드는 것은 옷이 아니다. 버들가지는 약하나 다른 재목을 묵는다. 명언 모음, 격언 모음 전쟁에선 어느 편이 스스로를 승자라고 부를지라도 승리자는 없고 모두 패배자 뿐이다. 부지런한 바보만큼 이웃을 괴롭히는 자는 없다. 존재하는 모든 훌륭한 것은 독창력의 열매이다. 죽음을 두려워하는 나머지 삶을 시작조차 못하는 사람이 많다. 기와 한장 아껴서 대들보 썩는다. 배우라.비교하라.사실을 수입하라. 가장 높은 곳에 올라가려면, 가장 낮은 곳 부터 시작하라. 가난한 사람은 덕행으로, 부자는 선행으로 이름을 떨쳐야 한다. 자연은 하나님의 작품이요. 예술은 사람의 작품이다. 부유함이 문명을 낳지는 못하나, 문명은 부유함을 낳는다. 최고급 회개란 과거의 죄를 청산하고 똑바로 행동하는 것이다. 인격은 당신의 아이들에게 남겨줄 수 있는 최대의 유산이다. 하나의 모범은 천 마디의 논쟁보다 더 가치 있는 것이다. 울지 않는 청년은 야만인이요 웃지 않는 노인은 바보다. 분노는 바보들의 가슴속에서만 살아간다.'\n", + "print (\"FOLLOWING IS OUR TRAINING SEQUENCE:\")\n", + "print (hangul_sentence)\n", + "\n", + "sentence = hgtk.text.decompose(hangul_sentence)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DEFINE VOCABULARY AND DICTIONARY" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VOCABULARY: \n", + "[',', '9', 'ㅝ', '.', 'ㅚ', 'ㅜ', 'ㅍ', 'ㄷ', 'ㄴ', 'ᴥ', 'ㅅ', 'ㅊ', 'ㅔ', 'ㅘ', 'ㄹ', 'ㅂ', 'ㅛ', 'ㅢ', 'ㅑ', 'ㅙ', 'ㅣ', 'ㅄ', 'ㄱ', 'ㅟ', 'ㅕ', '0', 'ㄼ', 'ㅡ', 'ㅖ', 'ㅈ', 'ㅎ', 'ㅇ', '3', 'ㄻ', 'ㅆ', 'ㅌ', 'ㅠ', 'ㅏ', '1', 'ㄲ', 'ㅓ', 'ㄸ', 'ㅃ', 'ㅐ', ' ', 'ㅁ', 'ㅗ', 'ㅀ', 'ㄺ', 'ㅉ', '6', '2', 'ㅋ', 'ㄶ', '\"']\n", + "DICTIONARY: \n", + "{',': 0, 'ㅁ': 45, '9': 1, 'ㅝ': 2, 'ㅙ': 19, '.': 3, 'ㅚ': 4, 'ㅜ': 5, 'ㅍ': 6, 'ㄷ': 7, 'ㄴ': 8, '1': 38, 'ㅔ': 12, 'ㅉ': 49, 'ㅘ': 13, 'ㄹ': 14, 'ㅂ': 15, 'ᴥ': 9, 'ㅢ': 17, 'ㅑ': 18, 'ㅅ': 10, 'ㅄ': 21, 'ㅟ': 23, 'ㅕ': 24, 'ㄼ': 26, 'ㅖ': 28, 'ㅡ': 27, 'ㄱ': 22, 'ㅈ': 29, 'ㅎ': 30, 'ㅇ': 31, '3': 32, 'ㄻ': 33, 'ㅆ': 34, 'ㅌ': 35, 'ㄶ': 53, 'ㅠ': 36, 'ㅏ': 37, 'ㄲ': 39, 'ㅐ': 43, 'ㅓ': 40, 'ㄸ': 41, 'ㅃ': 42, ' ': 44, 'ㅗ': 46, '0': 25, 'ㅀ': 47, 'ㄺ': 48, 'ㅛ': 16, '6': 50, '2': 51, 'ㅋ': 52, 'ㅊ': 11, 'ㅣ': 20, '\"': 54}\n" + ] + } + ], + "source": [ + "char_set = list(set(sentence))\n", + "char_dic = {w: i for i, w in enumerate(char_set)}\n", + "print (\"VOCABULARY: \")\n", + "print (char_set)\n", + "print (\"DICTIONARY: \")\n", + "print (char_dic)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## CONFIGURE NETWORK" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data_dim = len(char_set)\n", + "num_classes = len(char_set)\n", + "hidden_size = 64\n", + "sequence_length = 10 # Any arbitrary number" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SET TRAINING BATCHES" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0/30389] [ㅅㅏᴥㄹㅏㅇᴥㅎㅏᴥ]=>[ㅏᴥㄹㅏㅇᴥㅎㅏᴥㄱ]\n", + " [10, 37, 9, 14, 37, 31, 9, 30, 37, 9]=>[37, 9, 14, 37, 31, 9, 30, 37, 9, 22]\n", + "[ 1/30389] [ㅏᴥㄹㅏㅇᴥㅎㅏᴥㄱ]=>[ᴥㄹㅏㅇᴥㅎㅏᴥㄱㅗ]\n", + " [37, 9, 14, 37, 31, 9, 30, 37, 9, 22]=>[9, 14, 37, 31, 9, 30, 37, 9, 22, 46]\n", + "[ 2/30389] [ᴥㄹㅏㅇᴥㅎㅏᴥㄱㅗ]=>[ㄹㅏㅇᴥㅎㅏᴥㄱㅗᴥ]\n", + " [9, 14, 37, 31, 9, 30, 37, 9, 22, 46]=>[14, 37, 31, 9, 30, 37, 9, 22, 46, 9]\n", + "[ 3/30389] [ㄹㅏㅇᴥㅎㅏᴥㄱㅗᴥ]=>[ㅏㅇᴥㅎㅏᴥㄱㅗᴥ ]\n", + " [14, 37, 31, 9, 30, 37, 9, 22, 46, 9]=>[37, 31, 9, 30, 37, 9, 22, 46, 9, 44]\n", + "[ 4/30389] [ㅏㅇᴥㅎㅏᴥㄱㅗᴥ ]=>[ㅇᴥㅎㅏᴥㄱㅗᴥ ㄴ]\n", + " [37, 31, 9, 30, 37, 9, 22, 46, 9, 44]=>[31, 9, 30, 37, 9, 22, 46, 9, 44, 8]\n", + "[ 5/30389] [ㅇᴥㅎㅏᴥㄱㅗᴥ ㄴ]=>[ᴥㅎㅏᴥㄱㅗᴥ ㄴㅏ]\n", + " [31, 9, 30, 37, 9, 22, 46, 9, 44, 8]=>[9, 30, 37, 9, 22, 46, 9, 44, 8, 37]\n", + "[ 6/30389] [ᴥㅎㅏᴥㄱㅗᴥ ㄴㅏ]=>[ㅎㅏᴥㄱㅗᴥ ㄴㅏᴥ]\n", + " [9, 30, 37, 9, 22, 46, 9, 44, 8, 37]=>[30, 37, 9, 22, 46, 9, 44, 8, 37, 9]\n", + "[ 7/30389] [ㅎㅏᴥㄱㅗᴥ ㄴㅏᴥ]=>[ㅏᴥㄱㅗᴥ ㄴㅏᴥㅅ]\n", + " [30, 37, 9, 22, 46, 9, 44, 8, 37, 9]=>[37, 9, 22, 46, 9, 44, 8, 37, 9, 10]\n", + "[ 8/30389] [ㅏᴥㄱㅗᴥ ㄴㅏᴥㅅ]=>[ᴥㄱㅗᴥ ㄴㅏᴥㅅㅓ]\n", + " [37, 9, 22, 46, 9, 44, 8, 37, 9, 10]=>[9, 22, 46, 9, 44, 8, 37, 9, 10, 40]\n", + "[ 9/30389] [ᴥㄱㅗᴥ ㄴㅏᴥㅅㅓ]=>[ㄱㅗᴥ ㄴㅏᴥㅅㅓᴥ]\n", + " [9, 22, 46, 9, 44, 8, 37, 9, 10, 40]=>[22, 46, 9, 44, 8, 37, 9, 10, 40, 9]\n" + ] + } + ], + "source": [ + "dataX = []\n", + "dataY = []\n", + "for i in range(0, len(sentence) - sequence_length):\n", + " x_str = sentence[i:i + sequence_length]\n", + " y_str = sentence[i + 1: i + sequence_length + 1]\n", + " x = [char_dic[c] for c in x_str] # x str to index\n", + " y = [char_dic[c] for c in y_str] # y str to index\n", + " dataX.append(x)\n", + " dataY.append(y)\n", + " if i < 10:\n", + " print (\"[%4d/%4d] [%s]=>[%s]\" % (i, len(sentence), x_str, y_str))\n", + " print (\"%s%s=>%s\" % (' '*12, x, y))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 'NDATA' IS 30379\n", + "'BATCH_SIZE' IS 512\n" + ] + } + ], + "source": [ + "ndata = len(dataX)\n", + "batch_size = 512\n", + "print (\" 'NDATA' IS %d\" % (ndata))\n", + "print (\"'BATCH_SIZE' IS %d\" % (batch_size))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DEFINE PLACEHOLDERS" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'sequence_length' IS [10]\n", + " 'num_classes' IS [55]\n", + "'X' LOOKS LIKE \n", + " [Tensor(\"Placeholder:0\", shape=(?, 10), dtype=int32)]\n", + "'X_OH' LOOKS LIKE \n", + " [Tensor(\"one_hot:0\", shape=(?, 10, 55), dtype=float32)]\n" + ] + } + ], + "source": [ + "X = tf.placeholder(tf.int32, [None, sequence_length])\n", + "Y = tf.placeholder(tf.int32, [None, sequence_length])\n", + "X_OH = tf.one_hot(X, num_classes)\n", + "print (\"'sequence_length' IS [%d]\" % (sequence_length))\n", + "print (\" 'num_classes' IS [%d]\" % (num_classes))\n", + "print(\"'X' LOOKS LIKE \\n [%s]\" % (X)) \n", + "print(\"'X_OH' LOOKS LIKE \\n [%s]\" % (X_OH))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DEFINE MODEL" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OUTPUTS LOOKS LIKE [Tensor(\"CHAR-RNN/Reshape:0\", shape=(512, 10, 55), dtype=float32)]\n", + "MODEL DEFINED.\n" + ] + } + ], + "source": [ + "num_hidden = 256\n", + "with tf.variable_scope('CHAR-RNN', reuse=False):\n", + " cell = rnn.BasicLSTMCell(hidden_size, state_is_tuple=True)\n", + " cell = rnn.MultiRNNCell([cell] * 2, state_is_tuple=True)\n", + " # DYNAMIC RNN WITH FULLY CONNECTED LAYER\n", + " _hiddens = tf.contrib.layers.fully_connected(X_OH, num_hidden, activation_fn=tf.nn.relu)\n", + " _outputs, _states = tf.nn.dynamic_rnn(cell, _hiddens, dtype=tf.float32)\n", + " _outputs = tf.contrib.layers.fully_connected(_outputs, num_classes, activation_fn=None)\n", + " # RESHAPE FOR SEQUNCE LOSS\n", + " outputs = tf.reshape(_outputs, [batch_size, sequence_length, num_classes])\n", + "print (\"OUTPUTS LOOKS LIKE [%s]\" % (outputs))\n", + "print (\"MODEL DEFINED.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DEFINE TF FUNCTIONS" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "FUNCTIONS DEFINED.\n" + ] + } + ], + "source": [ + "weights = tf.ones([batch_size, sequence_length]) # EQUAL WEIGHTS\n", + "seq_loss = tf.contrib.seq2seq.sequence_loss(\n", + " logits=outputs, targets=Y, weights=weights)\n", + "loss = tf.reduce_mean(seq_loss)\n", + "optm = tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)\n", + "print (\"FUNCTIONS DEFINED.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OPTIMIZE" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0] loss_val: 4.00965 \n", + "[ 1000] loss_val: 1.47579 \n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mfeeds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbatchX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbatchY\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m _, loss_val, results = sess.run(\n\u001b[0;32m---> 12\u001b[0;31m [optm, loss, outputs], feed_dict=feeds)\n\u001b[0m\u001b[1;32m 13\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m%\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"[%5d] loss_val: %.5f \"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss_val\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/bluedisk/anaconda/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 765\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 766\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 767\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 768\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 769\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/bluedisk/anaconda/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 964\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m--> 965\u001b[0;31m feed_dict_string, options, run_metadata)\n\u001b[0m\u001b[1;32m 966\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 967\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/bluedisk/anaconda/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1013\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1014\u001b[0m return self._do_call(_run_fn, self._session, feed_dict, fetch_list,\n\u001b[0;32m-> 1015\u001b[0;31m target_list, options, run_metadata)\n\u001b[0m\u001b[1;32m 1016\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1017\u001b[0m return self._do_call(_prun_fn, self._session, handle, feed_dict,\n", + "\u001b[0;32m/Users/bluedisk/anaconda/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1020\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1021\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1022\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1023\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/bluedisk/anaconda/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 1002\u001b[0m return tf_session.TF_Run(session, options,\n\u001b[1;32m 1003\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1004\u001b[0;31m status, run_metadata)\n\u001b[0m\u001b[1;32m 1005\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1006\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "config = tf.ConfigProto()\n", + "config.gpu_options.allow_growth=True\n", + "sess = tf.Session(config=config)\n", + "sess.run(tf.global_variables_initializer())\n", + "MAXITER = 20000\n", + "for i in range(MAXITER):\n", + " randidx = np.random.randint(low=0, high=ndata, size=batch_size)\n", + " batchX = [dataX[iii] for iii in randidx]\n", + " batchY = [dataY[iii] for iii in randidx]\n", + " feeds = {X: batchX, Y: batchY}\n", + " _, loss_val, results = sess.run(\n", + " [optm, loss, outputs], feed_dict=feeds)\n", + " if (i%1000) == 0:\n", + " print (\"[%5d] loss_val: %.5f \" % (i, loss_val))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## PRINT CHARS" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[' ', 'ㅣ', 'ㄴ', 'ᴥ', 'ㅇ', 'ㅡ', 'ᴥ', ' ', 'ㅇ', 'ㅣ']\n", + "['ㅏ', 'ᴥ', 'ᴥ', ' ', 'ㄱ', 'ㅓ', 'ㅅ', 'ᴥ', 'ㅇ', 'ㅡ']\n", + "['ᴥ', ' ', 'ㅇ', 'ㅣ', 'ᴥ', 'ᴥ', 'ㅇ', 'ㅏ', 'ᴥ', ' ']\n", + "['ㅏ', 'ᴥ', 'ᴥ', 'ㅇ', 'ㅇ', 'ㅓ', 'ᴥ', 'ㄹ', 'ㅇ', 'ㅏ']\n", + "['ᴥ', 'ᴥ', 'ㅇ', 'ㅡ', 'ᴥ', ' ', 'ㅇ', 'ㅣ', 'ᴥ', 'ㄹ']\n", + "['ㅏ', 'ᴥ', 'ᴥ', 'ㅇ', 'ㅡ', 'ᴥ', ' ', 'ㅇ', 'ㅣ', 'ㄴ']\n", + "['ᴥ', 'ᴥ', ' ', 'ㅏ', 'ᴥ', 'ᴥ', ' ', 'ㄱ', 'ㅏ', 'ᴥ']\n", + "['ᴥ', 'ᴥ', ' ', 'ㅏ', 'ᴥ', '.', ' ', 'ㅇ', 'ㅏ', 'ᴥ']\n", + "[' ', 'ㅏ', 'ᴥ', ' ', 'ㅇ', 'ㅏ', 'ᴥ', 'ᴥ', 'ㅇ', 'ㅇ']\n", + "['ㅇ', 'ㅣ', 'ᴥ', 'ᴥ', 'ㄷ', 'ㅡ', 'ㄴ', 'ᴥ', ' ', 'ㄱ']\n" + ] + } + ], + "source": [ + "randidx = np.random.randint(low=0, high=ndata, size=batch_size)\n", + "batchX = [dataX[iii] for iii in randidx]\n", + "batchY = [dataY[iii] for iii in randidx]\n", + "feeds = {X: batchX, Y: batchY}\n", + "results = sess.run(outputs, feed_dict=feeds)\n", + "for j, result in enumerate(results):\n", + " index = np.argmax(result, axis=1)\n", + " chars = [char_set[t] for t in index]\n", + " if j < 10:\n", + " print (chars)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SAMPLING FUNCTION " + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tensor(\"Placeholder_2:0\", shape=(?, 1), dtype=int32)\n" + ] + } + ], + "source": [ + "LEN = 1;\n", + "# XL = tf.placeholder(tf.int32, [None, LEN])\n", + "XL = tf.placeholder(tf.int32, [None, 1])\n", + "XL_OH = tf.one_hot(XL, num_classes)\n", + "with tf.variable_scope('CHAR-RNN', reuse=True):\n", + " cell_L = rnn.BasicLSTMCell(hidden_size, state_is_tuple=True)\n", + " cell_L = rnn.MultiRNNCell([cell_L] * 2, state_is_tuple=True)\n", + " istate = cell_L.zero_state(batch_size=1, dtype=tf.float32)\n", + " # DYNAMIC RNN WITH FULLY CONNECTED LAYER\n", + " _hiddens = tf.contrib.layers.fully_connected(XL_OH, num_hidden, activation_fn=tf.nn.tanh)\n", + " _outputs_L, states_L = tf.nn.dynamic_rnn(cell_L, _hiddens\n", + " , initial_state=istate, dtype=tf.float32)\n", + " _outputs_L = tf.contrib.layers.fully_connected(\n", + " _outputs_L, num_classes, activation_fn=None)\n", + " # RESHAPE FOR SEQUNCE LOSS\n", + " outputs_L = tf.reshape(_outputs_L, [LEN, 1, num_classes])\n", + "print (XL)\n", + "\n", + "def weighted_pick(weights):\n", + " t = np.cumsum(weights)\n", + " s = np.sum(weights)\n", + " return(int(np.searchsorted(t, np.random.rand(1)*s)))\n", + "def softmax(x):\n", + " alpha = 2\n", + " e_x = np.exp(alpha*(x - np.max(x)))\n", + " return e_x / np.sum(e_x) # only difference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SAMPLE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### BURNIN" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "인\n", + "간\n", + "은\n" + ] + } + ], + "source": [ + "hangul_prime = \"인간은\"\n", + "prime = hgtk.text.decompose(hangul_prime)\n", + "istateval = sess.run(cell_L.zero_state(1, tf.float32))\n", + "for c in prime[:-1]:\n", + " index = char_dic[c]\n", + " inval = [[index]]\n", + " outval, stateval = sess.run([outputs_L, states_L]\n", + " , feed_dict={XL:inval, istate:istateval})\n", + " istateval = stateval" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SAMPLE" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SAMPLED SETENCE: \n", + " 인간은안자런 젓은 있다. 말의 하라 어라. 것은 오다. 사라 이러는 주은 인다. 인다. 사라는 작이 울이다. 사라지 것은 인속은 사라 있이 오지모 구종이다. 애이다. 것을 사 읺라는 자을 구다 이라라. 자라는 사라. 나라. 족은 사라는 고수을 사라고 사라 인은 웂다. 인는 살다. 이지한 어로 일은 마는 위고도 곳은 도 사는 사라라. 것이 이가다. 만다. 고이 없다. 이이시가 어리는 마로다. 지하래 잆다. 인다. 한 일지 위다. 것이 무라로 인다. 마리다. 사라라. 없다. 아라라. 해것하는 시시는 이라기 인나는 연산다. 것은 마라는 사신지 것을 엇을 인이 마라 것은 없다. 일의 것은 한다. 새기 도 없다. 족은 자이 아란 사란 젓은 철이다. 하는 것은 버맘은 가다. 사라 한 하늠은 다라 인나지 없다. 소하\n", + "\n", + "ORIGINAL SENTENCE: \n", + " 사랑하고 나서 잃는 것은 전혀 사랑하지 않았던 것보다 더 낫다. 죄는 취소될 수 없다.용서될 뿐이다. 아예 배우지 않느니 보다는 늦으나마 배우는 편이 낫다. 근심은 세월을 거치지 않고 백발과 노령을 가져온다. 이기는 것이 중요한 것이 아니다. 어떻게 노력하는가가 문제이다. 말 한 마디가 세계를 지배한다. 어느 사회에서나 유아들에게 우유를 먹이는 것보다 더 좋은 투자는 없다. 위대한 것 치고 정열이 없이 이루어진 것은 없다. 작지만 청결한 것은 큰 것이요. 크지만 불결한 것은 작은 것이다. 참된 삶을 맛보지 못한 자만이 죽음을 두려워하는 것이다. 훌륭한 말은 훌륭한 무기이다. 좋은 밤을 찾다가 좋은 낮을 잃어버리는 사람들이 많다. 의인의 수고는 생명에 이르고 악인의 소득은 죄에 이른다. 가치있는 적이 될 수 있는 자는 화해하면 더 가치있는 친구가 될 것이다. 일은 인간생활의 피할 수 없는 조건이며, 인간 복지의 참된 근원이다. 우리는 지성적으로 되기 위해 많은 대가를 치른다. 자기 자신을 아는 것은 참된 진보이다. 행실은 각자가 자기의 이미지를 보여주는 거울이다. 창조적인 예술가는 그 전의 작품에 만족하지 않기 때문에 다음 작품을 만든다. 인생은 불확실한 항해이다. 성실하지 못한 사람은 위대한 것들을 생산할 수가 없다. 마음의 즐거움은 얼굴을 빛나게 하여도 마음의 근심은 심령을 상하게 하느니라. 민주주의는 정지된 것이 아니라 영원히 계속되는 행진이다. 내 자신의 무식을 아는 것은 지식에로의 첫걸음이다. 좋은 나무는 좋은 열매를 맺는다. 날이 밝기 직전에 항상 가장 어둡다. 내일의 모든 꽃은 오늘의 씨앗에 근거한 것이다. 조용한 물이 깊이 흐른다. 빈부강약을 막론하고 일하지 않는자를 배척하라. 강한 사람이란 가장 훌륭하게 고독을 견디어 낸 사람이다. 인간은 이성적 동물이다. 인간성 이외에는 본질적으로 진실한 것은 없다. 할 수 있는 한 훌륭한 인생을 만들라.인생은 짧고 곧 지나간다. 말도 행동이고 행동도 말의 일종이다. 자신이 자신의 지휘관이다. 소유물의 부족은 개선할 수 있으나 영혼의 가난은 해결하기 쉬운 것이 아니다. 풍랑은 항상 능력있는 항해자 편이다. 지식과 목재는 세파에 시달리지 아니하면 많이 애용될 수가 없다. 모든 죄의 기본은 조바심과 계으럼이다. 전쟁에서는 오직 한 번 죽지만 정치에서는 여러번 죽는다. 사람은 자기 일보다 남의 일을 더 잘알고 더 잘 판단한다. 모든 날 중 가장 완전히 잃어버린 날은 웃지 않은 날이다. 인간의 진정한 재산은 그가 이 세상에서 행하는 선행인 것이다. 친구들을 불신한다는 것은 그들에게 속은 것보다 더 수치스러운 일이다. 인간은 패배하였을 때 끝나는 것이 아니다.포기 했을 때 끝나는 것이다. 인간은 천에 따라서 자기 옷을 지어야 한다. 배운 사람은 항상 자기 속에 재산이 있다. 하늘에는 입이 없으므로, 사람으로 하여금 말하게 한다. 오직 남들을 위하여 산 인생만이 가치 있는 것이다. 무지함을 두려워 말라. 거짓 지식을 두려워하라. 늑대는 이빨을 잃어도 그 천성은 잃지 않는다. 정직은 가장 확실한 자본이다. 무거운 마음을 가지고 가벼운 시를 즐길 수 없다. 지성인은 자기의 마음으로 자기 자신을 망보는 사람이다. 습관은 제二의 천성으로 제一의 천성을 파괴한다. 핑계를 잘 대는 사람은 거의 좋은 일을 하나도 해내지 못한다. 위대한 사람은 절대로 기회가 부족하다고 불평하지 않는다. 행복하게 산다는 것은 마음의 평온함을 뜻한다. 두 사람의 머리는 한 사람의 머리보다 낫다. 힘으로서 사람을 복종시키지 말고 덕으로서 사람을 복종시켜라. 인간이란 생각하는 것이 적으면 적을수록 많이 지껄여댄다. 너 자신을 다스려라. 그러면 당신은 세계를 다스릴 것이다. 시간을 잘 맞춘 침묵은 말보다 더 좋은 웅변이다. 목표를 보는 자는 장애물을 겁내지 않는다. 용기는 대단히 중요하다. 근육과 같이 사용함으로써 강해진다. 행복이란 불만에 자기가 속지 않으면 된다. 위기의 시기에는 가장 대담한 방법이 때로는 가장 안전하다. 자유느 획득하는 것보다 간직하는 것이 더 어렵다. 행동가처럼 생각하라. 그리고 생각하는 사람처럼 행동하라. 성공적인 결혼이란 매일같이 개축해야 하는 건물과 같은 것이다. 어리석은 자는 수치스러운 일을 할 때에도 그것이 언제나 그의 의무라고 선포한다. 내기는 탐욕의 아들이며,부정의 형제이며,불행의 아버지이다. 오늘 가장 좋게 웃는 자는 역시 최후에도 웃을 것이다. 부당한 이득을 얻지말라.그것은 손해와 같은 것이다. 굳은 결심은 가장 유용한 지식이다. 위대한 사람은 모두가 겸손하다. 하나의 작은 꽃을 만드는 데도 오랜 세월의 노력이 필요하다. 공손과 인간성과의 관계는, 따스함과 밀초와의 관계와 같다. 어느날 갑자기 착한 사람이 되거나 악인이 되는 사람은 없다. 맹세는 말에 지나지 않고, 말은 바람에 지나지 않는다.\"사자라 할지라도 파리들로 부터 자기 몸을 방어해야 한다. 마땅히 행할 길을 아이에게 가르쳐라.그리하면 늙으도 그것을 떠나지 않으리라. 자신을 알 수 있는 사람이야말로 진정한 현인이다. 가장 훌륭한 예언은 상식,즉 우리의 원래의 지혜이다. 자신이 현명하다고 생각하고 있는 인간은 정녕 구제할 수 없는 바보이다. 너의 의무를 다하라. 그리고 나머지는 하나님께 맡겨라. 전력을 다해서 시간에 대항하라. 생활의 기술이란 우리의 환경에 대한 계속적인 적응을 의미한다. 얻기 어려운 것은 시기 편견이란 실효성이 없는 의견이다. 오래 가는 행복은 정직한 것 속에서만 발견할 수 있다. 맹세는 말에 지나지 않고 말은 바람에 지나지 않는다. 훌륭한 삶에는 세 가지 요소가 있다. 즉 배우는 일,돈 버는 일,무엇인가 하고 싶은일. 모든 일은 계획으로 시작하고, 노력으로 성취되며, 오만으로 망친다. 창조는 고민속에서 나오고 발전은 고생 속에서 움튼다. 인생의 참된 목적은 영원히 생명을 깨닫는데 있다. 미지를 향해 출발하는 사람은 누구나 외로운 모험에 만족해야 한다. 말이 입힌 상처는 칼이 입힌 상처보다 깁다. 지혜의 가장 명백한 징조는 쉴새없이 명랑한 것이다. 탐구하여 찾아질 수 없을 정도로 어려운 문제는 존재하지 않는다. 행동에 부주의하지 말며,말에 혼동되지 말며,생각에 방황하지 말라. 사업을 좌우하여라. 사업에 의해 좌우되어서는 안된다. 소인은 특별한 것에 관심이 있고, 위인은 평범한 것에 관심이 있다. 자신의 주인이 되는 자는 곧 다른 사람들의 주인이 될 것이다. 우리의 거의 모든 삶이 어리석은 호기심에 낭비되고 있다. 많은 벗을 가진 사람은 한 사람의 진실한 벗을 가질 수 없다. 아름다운 것! 그것은 마음의 눈으로 보여지는 미 금전은 무자비한 주인이지만 유익한 종이 되기도 한다. 위대한 사람은 목적을, 소인들은 공상을 가지고 있다. 세상에서 가장 아름다운 것은 세상 그 자체이다. 군자는 기회가 없다고 불평하지 않는다. 당신은 의지의 주인이 되라. 그리고 당신은 양심의 노예가 되라. 산을 옮기는 사람은 작은 돌맹이부터 옮긴다. 정당하게 사는 자에게는 어느 곳이든 안전하다. 군자는 의리에 밝고, 소인은 이익에 밝다. 어떠한 충고일지라도 길게 말하지 말라. 얼마나 오래 사느냐가 아니라 어떻게 사느냐가 문제 삶은 순간들의 연속이다. 한순간,한순간을 사는 것이 성공하는 겄이다. 위대한 것을 멸시하고,과도함 보다는 중용을 택하는 것이 군자의 특징이다. 험담은 세 사람을 죽인다. 말하는 자, 험담의 대상자, 듣는자. 교육의 목표는 지식의 증진과 진리의 씨부리기이다. 가시에 찔리지 않고서는 장미꽃을 모을 수가 없다. 자기 일을 멸시하는 자는 먹을 양식과 싸운다. 많은 사람이 충고를 받지만, 오직 현명한 자만이 충고의 덕을 본다. 하나님 앞에서는 울어라. 그러나 사람들 앞에서는 웃어하. 돈으로 살 수 있는 행복이라 불리는 상품은 없다. 미는 내부의 생명으로부터 나오는 빛이다. 일을 몰고 가라. 그렇지 않으면 일이 너를 몰고 갈 것이다. 행동을 초래시키지 않는 생각, 그것은 생각이 아니라 공상이다. 의복에만 마음이 쏠리는 것은 마음과 인격이 잠든 탓이다. 험한 언덕을 오르려면 처음에는 서서희 걸어야 한다. 만약 급히 서두르려면 돌아 가는 길로 가라. 즐거움에 찬 얼굴은 한접시의 물로도 연회를 만들 수 있다. 청년이여 일하라. 좀더 일하라. 끝까지 열심히 일하라. 노령에 활기를 주는 진정한 방법은, 마음의 청춘을 연장하는 것이다. 참고 버티라. 그 고통은 차츰차츰 너에게 좋은 것으로 변할 것이다. 좋은 가문에서 태어나는 것은 바람직한 일이다. 그러나 그 영광은 조상의 것이다. 좋은 친구는 건강에도 좋다. 모든 일은 어려운 고비를 넘겨야 쉬워진다. 사람의 척도는 그가 불행을 얼마나 잘 이겨내는지에 달려있다. 패배를 극복하는 법을 배워야 한다. 그럴때에 당신의 인격이 향상된다. 태만이란 약한 마음을 가진 사람의 유일한 피난처이다. 한 손으로 다른 손을 씻고, 두 손으로 얼굴을 씻는다. 자기가 할 수 있는 일은 남에게 밀지 말라. 산 기계를 만들지 말고, 인간을 만들라.\"악은 선을 인식시키고 고통은 기쁨을 느끼게 한다. 두사람의 개성의 만남은 두가지 화학물질의 접촉과 같다. 반응이 있으면 둘 다 변화한다. 거룩하고 즐겁고 활기차게 살아라. 믿음과 열심에는 피곤과 짜증이 없다. 논리와 상식은 다르다. 여행이란 젊은이들에게는 교육의 일부이며 연장자들에겐 경험의 일부이다. 인간은 죽을 때까지 완전한 인간이 못된다. 좋은 전쟁 또는 나쁜 평화는 없다. 천재란 인내에 대한 위대한 자질 이외에는 아무것도 아니다. 작은 도끼라도 찍고 찍으면 큰 참나무는 넘어진다. 안심하면서 먹는 한조각 빵이 근심하면서 먹는 잔치보다 낫다. 은혜를 입은 자는 잊지말아야 하고 베푼자는 기억하지 말아야 한다. 원인은 숨겨지지만 결과는 잘 알려진다. 모범은 훈화보다 유효하다. 당신의 인생은 당신이 하루종일 무슨 생각을 하는지에 달려있다. 많은 사물중에서 가운데가 제일이다.내 위치도 가운데가 되게 하라. 백년을 살 것처럼 일하고 내일 죽을 것처럼 기도하라. 뿌리가 튼튼해야 열매가 많다. 모범은 모든 사람이 읽을 수 있는 교훈이다. 우리의 인내가 우리의 힘보다 더 많은 것을 성취할 것이다. 당신이 누군가를 배반한다면,당신은 또한 당신 자신을 배반하는 셈이다. 평온한 마음으로 아껴 생활하는 것이 사람에게 큰 부이다. 긍지는 인간이 입을 수 있는 가장 훌륭한 갑옷이다. 절제는 모든 미덕의 진주고리를 이어주는 비단의 실이다. 현실에 대한 눈은 감을수 있어도 기억에 대한 눈은 감을 수 없다. 어린이가 없는 곳에 천국은 없다. 인간은 사회적 동물이다. 가장 훌륭한 기술, 가장 배우기 어려운 기술은 세상을 살아가는 기술이다. 나의 음악은 어린 아이들과 동물들이 가장 잘 이해한다. 단 하나의 하늘에 올려진 고마워하는 생각이 완전한 기도이다. 자신의 행동이 빗나간 사람일수록 맨 먼저 남을 모략한다. 다른 사람을 지배하려는 사람은,먼저 자기 자신의 주인이 되어야 한다. 청년기는 대실수이다. 장년기는 투쟁이다. 그리고 노년기는 후회이다. 큰 시련은 큰 의무를 완수하게 만드는 것이다. 일은 인류를 사로잡는 모든 질환과 비참을 치료해 주는 주요한 치료제이다. 깨끗한 의복은 좋은 소개장 어리석은 짓을 삼가는 것이 지혜의 입문이다. 친구를 얻는 유일한 방법은 스스로 완전한 친구가 되는 것이다. 희망은 가난한 인간의 빵이다. 인간은 신의 걸작품이다. 먹는 것은 자신을 즐겁게 하기 위함이요. 입는 것은 남을 즐겁게 하기 위함이다. 시간은 언제까지든 당신을 기다리는 것은 아니다. 좋은 일을 많이 해내려고 기다리는 사람은 하나의 좋은 일도 해낼 수가 없다. 모든 국가의 기초는 그 나라 젊은 이들의 교육이다. 대화는 학생들의 실험실이요, 작업장이다. 덕이 없는 아름다움은 향기 없는 꽃이다. 모든 개량과 진보의 근본은 근로이다. 인생에서 중요한 법칙은 만사에 중용을 지키는 일이다. 결함이 나의 출발의 바탕이고 무능이 나의 근원이다. 시간을 이용할줄 아는 사람은 하루를 사흘로 통용한다. 권세가 인간을 교만으로 이끌어갈 때,시가 그에게 한계를 상기시켜준다. 우리들은 감탄과 희망과 사랑으로 산다. 조금 알기 위해서 많이 공부해야 한다. 말로하는 사랑은 쉽게 외면할수 있으나 행동으로 보여주는 사라은 저항할 수가 없다. 덕이 없는 아름다움은 향기 없는 꽃이다. 시련이란 진리로 통하는 으뜸가는 길이다. 기대하지 않는 자는 실망하지도 않을 것이다. 선을 행하는 데는 나중이라는 말이 필요없다. 노동은 생명이요, 광명이다. 살아 있는 실패작은 죽은 걸작보다 낫다. 학문의 최대의 적은 자기 마음속에 있는 유혹이다. 작은 성공을 만족스럽게 생각하는 사람은 큰 성공을 얻지 못한다. 힘없는 정부는 미약하고, 정의없는 힘은 포악이다. 누구나 오래 살기를 바란다. 그러나 누구를 막론하고 나이는 먹기 싫어한다. 충고자는 아무리 신랄하여도 결코 해를 끼치지 않는다. 최초의 큰 웃음보다는 마지막의 미소가 오히려 났다. 훌륭한 충고보다 값진 선물은 없다. 가정은 삶의 보물상자가 되어야 한다. 사랑은 사람들을 치료한다. 사랑을 받는 사람,사랑을 주는 사람 할 것이 없이. 현대화 보다 더 고상한 것이 있다.그것은 바로 영원한 것이다. 한나라의 진정한 재산은 땀흘려 일하는 부지런한 주민의 수에 있다. 노년은 청춘에 못지 않은 좋은 기회이다. 호기심이란 무지의 고백인데 그것은 의도적이며 당당하며 열렬하다. 최대다수의 최대행복은 도덕과 입법의 초석이다. 종소리처럼 맑고 분명해라. 우리의 거의 모든 삶이 어리석은 호기심에 낭비되고 있다. 한치의 기쁨마다 한자의 고민이 있다. 담화는 마음의 보다 즐거운 향연이다. 마음이 어진 사람은 조그마한 집에 살아도 행복하다. 목적 없이 존재하는 것은 아무 것도 없다. 눈물을 흘리면서 빵을 먹어보지 못한 사람은 인생의 참맛을 알 수 없다. 사람을 알려면 그의 지갑,쾌락,그리고 불평을 보라. 다른 사람들을 비난하려고 생각하기 전에 자기 자신을 추분이 살펴보아야 한다. 큰 나무는 바람을 많이 받는다. 당신은 항상 영웅이 될수 없다.그러나 항상 사람은 될수 있다. 검약은 훌륭한 소득이다. 악은 쾌락 속에서도 고통을 주지만 덕은 고통속에서도 위안을 준다. 너의 위대한 조상을 본받아 행동하라. 나는 내 운명의 주인이요. 나는 내 마음의 선장이다. 환락은 망상 위에 세울 수 있으나, 행복은 진리 위에만 세워진다. 악은 선을 인식시키고 고통은 기쁨을 느끼게 한다. 사랑은 인생의 소금이다. 사람의 천성과 직업이 맞을때 행복하다. 돈이 있어도 이상이 없는 사람은 몰락의 길을 밟는다. 여가를 활용하지 못하는 사람은 항상 여가 시간이 없다. 존재하는 것을 변화시키는 것은 성숙하게 만드는 것이다. 아름다움이란 경솔한 사람이 그릇생각하듯 보이는 그대로 외관만의 치레는 아니다. 지식이 깊은 사람은 시간의 손실을 가장 슬퍼한다. 용기가 없는 사람에게는 어떤 좋은 것도 생기지 않는다. 민주주의의 모든 질병은 더 많은 민주주의에 의해서 치료될 수 있다. 무관심 때문에 사람은 실제로 죽기전에 죽어버린다. 넌 자신을 누구에겐가 필요한 존재로 만들라. 누구에게든 인생을 고되게 만들지 말라. 가장 최상의 길은 없다. 많은 사람이 가고 있다면 그 길이 최상이다. 근로가 잠들면 빈곤은 창으로 들어온다. 적당주의자가 되지 말라. 그것은 세상에서 가장 위험한 것이다. 천재응 1퍼센트의 영감이요. 99퍼센트는 노력이다. 충고는 좀처럼 환영받지 못한다. 인간은 교육을 통하지 않고는 인간이 될 수 없는 유일한 존재이다. 이해가 부족한 사람이 오해가 많은 사람보다 낫다. 겸손이 없다면 당신은 인생의 가장 기본적인 교훈도 배울 수가 없다. 소비된 시간은 존재하고 이용된 시간은 생명이다. 세상이 당신에게 준 것보다 더 많이 세상에게 주라. 사랑은 고생을 면할 수가 없다.그러나 잊을 수 있는 능력이 있다. 지성이란 그것을 갖고 있지 않는 사람에게는 보이지 않는다. 공손이란 가장 친절한 방법으로 가장 친절한 것을 향하고 말하는 것이다. 자기 자신을 예찬하는 자는 신의 미움을 받는다. 지혜는 간혹 누더기 가면을 덮어쓰고 있다. 과도한 재산을 소유하게 되었을 때보다 더 시련을 당하게 되는 적은 없다. 인간은 환경을 창조하고 환경은 인간을 창조한다. 생각이 깊지 못한 사람은 항상 입을 놀린다. 신념은 연애와 같은 것이어서 강요할 수 없는 것이다. 군자의 사귐은 담담함이 물과 같고, 소인의 사귐은 달콤함이 단술과 같다. 인간은 아직까지도 모든 컴퓨터중에서 가장 훌륭한 컴퓨터이다. 작은 구멍 하나가 큰 배를 침몰시키는 것이다. 다정하고 조용한 말은 힘이 있다. 미소,악수,혹은 호의로운 눈총 등 무었인가를 남에게 동냥할 필요가 없는 인간은 없다. 진정한 벗은 제2의 자기인 것이다. 시간을 선택하는 것은 시간을 절약하는 것이다. 눔을 감아라. 그럼 너는 너 자신을 볼 수 있으리라. 화가 나면 열을 세어라. 풀리지 않는 다면 백을 세어라. 내가 아직 살아있는 동안에는 나로 하여금 헛되이 살지 않게 하라. 사랑없이 사는 것은 정말로 사는 것이 아니다. 언론의 자유를 죽이는 것은 진리를 죽이는 것이다. 시종일관하는 자는 운명을 믿고, 변덕 부리는 자는 요행을 믿는다. 재산가들 중에는 상식을 가진 자가 드물다. 확실한 벗은 불확실한 처지에 있을 때 알려진다. 결백한 자와 미인은, 시간 이외에는 적이 없다. 양심은 어떠한 과학의 힘보다도 강하고 현명하다. 남은 많이 용서하되 자신은 결코 용서하지 말라. 지구상에는 인간이외는 위대한 것이 없다.인간에게는 지성이외엔 훌륭한 것이 없다. 인내하라.경험하라.조심하라. 그리고 희망을 가져라. 한가한 인간은 고여 있는 물이 썩는 것과도 같다. 인류를 위해 사는 것은 자기의 이름을 위해 사는 것보다 훌륭한 것이다. 다른 인간을 증오하는 댓가는, 자신을 더 적게 사랑하는 것이다. 사람은 돈지갑은 가난해도,정신적으로는 긍지를 가질 수 있다. 시기와 질투는 언제나 남을 쏘려다가 자신을 쏜다. 말하자마자 행동하는 사람, 그것이 가치있는 사람이다. 잔잔한 바다에서는 좋은 뱃사공이 만들어지지 않는다. 한 가지 일을 경험하지 않으면 한 가지 지혜가 자라지 않는다. 나는 나 자신을 빼 놓고는 모두 안다. 아무리 화려한 궁전이라도 초라한 내 집만한 곳은 없다. 장점과 훌륭한 예의는 어디서나 번영할 것이다. 정직한 노동은 사랑스런 얼굴을 낳는다. 충실한 삶의 깊이를 아는 자는 아름다운 죽음의 가치를 안다. 공정하고 바른데는 근거를 두었다면 긍지보다 이익을 주는 것은 좀처럼 없다. 사랑하고 사랑받는 것은 태양을 양쪽에서 쪼이는 것과 같다. 아이들에게는 비평보다도 귀감이 필요하다. 지혜는 고통을 통해서 생긴다. 기회는 새와 같은것, 날아가기 전에 꼭 잡아라. 소인은 특별한 것에 관심이 있고, 위인은 평범한 것에 관심이 있다. 소비된 시간은 존재하고 이용된 시간은 생명이다. 말만 하고 행동하지 않는 사람은 잡초로 가득 찬 정원과 같다. 쓴 맛을 보기 전에 단 맛을 보아서는 안된다. 진정한 위인치고 자신을 위인으로 생각하는 자는 없다. 사람의 잘못은 좀처럼 자신에게는 나타나지 않는다. 정신으로 창조된 것은 물질보다 한결 생명적이다. 진주를 간직하고 있는 것은 병든 궁이다. 성공의 비결은 목적을 향해 시종일관하는 것이다. 지식인은 지금까지 일어났던 일을 안다. 천재는 앞으로 일어날 일을 안다. 탐구정신은 우리가 살고 있는 시대의 위대한 특징이다. 많은 사람이 충고를 받지만, 오직 현명한 자만이 충고의 덕을 본다. 자기가 가고 있는 곳을 모르는 사람은 결코 높이 향상하지 못한다. 빈곤은 재앙이 아니라 불편이다. 술은 인격을 비춰주는 거울이다. 인내는 쓰다. 그러나 그 열매는 달다. 미련한 자는 자기 행위를 바른 줄로 여긴다. 명언 모음, 격언 모음 약 360개 신기한 말을 하는 것이 귀함이 아니라 실행함이 귀하다. 기쁨을 주는 사람만이 더 많은 기쁨을 즐길 수 있다. 오직 바보나 죽은 자만이 절대로 자기의 의견을 변화시키지 않는다. 인류의 목적은 휴식이 아니다.그것은 지적이며 도덕적인 완성이다. 대화시의 신중은 웅변보다 더 중요하다. 생명이 있는 한,사람은 무었인가 바랄수 있다. 인생을 해롭게 하는 비애를 버리고 명랑한 기질을 간직하라. 가시나무를 심는 자는 장미를 기대해서는 안된다. 중간이 가장 안전할 것이다. 남자는 마음으로 늙고 여자는 얼굴로 늙는다. 서투런 의사소통은,훌륭한 예절을 망쳐버린다. 태만을 즐기고 있을 때는 태만함을 느끼지 못한다. 상식은 그렇게 흔한 것이 아니다. 아름다운 것은 선하고 선한 자는 곧 아름다워진다. 영혼이 깃든 청춘은 그렇게 쉽사리 사라지지 않는다. 누구든지 크나큰 시련을 당하기 전에는 참다운 인간이 못된다. 권리는 어느 곳에나 도리를 벗어난 곳에서는 존재할 수 없다. 사악은 언제나 미덕보다 더 쉽다. 왜냐하면 사악은 모든일에 지름길을 택하기 때문이다. 근심은 미를 훔치는 도둑이다. 폭풍은 참나무가 더욱 뿌리를 깊게 박도록 한다. 적은 것을 적다고 하지 말며 천한 것을 천하게 여기지 말라. 일의 기량을 닦기 위해서 가장 중요한 것은 실행과 경험이다. 어떤 가치있는 행동을 하지 아니한 날,그날은 잃은 날이다. 서툰 의사는 한번에 한 사람을 해치지만, 서툰 교사는 130명을 해친다. 우유부단한 것만이 습관으로 되어 있는 사람보다 더 비참한 사람은 없다. 선한 사람이 되라. 그러면 세상은 선한 세상이 될 것이다. 한 시대의 철학은 다음 시대에서는 평범한 상식에 불과하다. 속이는 말로 재물을 모으는 것은 죽음을 구하는 것이다. 일은 시작할 때가 언제나 가장 좋다. 신사를 만드는 것은 옷이 아니다. 버들가지는 약하나 다른 재목을 묵는다. 명언 모음, 격언 모음 전쟁에선 어느 편이 스스로를 승자라고 부를지라도 승리자는 없고 모두 패배자 뿐이다. 부지런한 바보만큼 이웃을 괴롭히는 자는 없다. 존재하는 모든 훌륭한 것은 독창력의 열매이다. 죽음을 두려워하는 나머지 삶을 시작조차 못하는 사람이 많다. 기와 한장 아껴서 대들보 썩는다. 배우라.비교하라.사실을 수입하라. 가장 높은 곳에 올라가려면, 가장 낮은 곳 부터 시작하라. 가난한 사람은 덕행으로, 부자는 선행으로 이름을 떨쳐야 한다. 자연은 하나님의 작품이요. 예술은 사람의 작품이다. 부유함이 문명을 낳지는 못하나, 문명은 부유함을 낳는다. 최고급 회개란 과거의 죄를 청산하고 똑바로 행동하는 것이다. 인격은 당신의 아이들에게 남겨줄 수 있는 최대의 유산이다. 하나의 모범은 천 마디의 논쟁보다 더 가치 있는 것이다. 울지 않는 청년은 야만인이요 웃지 않는 노인은 바보다. 분노는 바보들의 가슴속에서만 살아간다.\n" + ] + } + ], + "source": [ + "inval = [[char_dic[prime[-1]]]]\n", + "outval, stateval = sess.run([outputs_L, states_L]\n", + " , feed_dict={XL:inval, istate:istateval})\n", + "istateval = stateval\n", + "index = np.argmax(outval)\n", + "char = char_set[index]\n", + "chars = ''\n", + "for i in range(1000):\n", + " inval = [[index]]\n", + " outval, stateval = sess.run([outputs_L, states_L]\n", + " , feed_dict={XL:inval, istate:istateval})\n", + " istateval = stateval\n", + " # index = np.argmax(outval)\n", + " index = weighted_pick(softmax(outval))\n", + " char = char_set[index]\n", + " chars += char\n", + "print (\"SAMPLED SETENCE: \\n %s\" % hgtk.text.compose(prime+chars))\n", + "print (\"\\nORIGINAL SENTENCE: \\n %s\" % (hangul_sentence))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}