'전체 글'에 해당되는 글 67건

  1. 2019.10.11 :: GET과 POST
  2. 2019.10.11 :: 게임구동기
  3. 2019.10.11 :: 모델생성기
  4. 2019.10.11 :: 챗봇을 응용한 파이썬 텍스트 게임 제작
  5. 2019.10.11 :: 넘파이 NumPy
  6. 2019.10.09 :: 머신러닝의 개념
  7. 2019.10.09 :: [파이썬] 문자열 서식
  8. 2019.10.09 :: [파이썬] 간단한 팩토리얼 계산기
JSP 2019. 10. 11. 22:25

[GET하고 POST를 사용하는 이유]

Get과 Post는 HTTP프로토콜을 이용해서 서버에 데이터를 전달할 때 사용하는 메서드입니다.

 

데이터를 전달한다는 본질적인 기능적인 측면에서는 같다고 할 수 있습니다.

 

하지만, 세부적으로 보안과, 전달형식, 전달할 수 있는 데이터의 양에 따라 차이점이 발생합니다.

 

[GET]

Get은 주소줄에 값이 ?뒤에 입력한 정보가 노출되어, 정보를 보여주어도 상관없는 기능을 수행할 때 get 메소드를 수행합니다. GET은 길이제한이 있어서 많은 양의 데이터를 보내기가 어렵습니다.

get 방식은 post방식보다 빠르다고 할 수 있는데 get방식의 요청은 캐싱(캐시라고 하는 처리가 더 빠른 메모리 영역으로 데이터를 가져와서 접근하는 방식을 말합니다.)때문에 빠릅니다.

 

[Post]

Post는 입력할 정보를 숨겨 정보가 보이면 안될 때 주로 사용됩니다. Get과 다르게 요청시 데이터양의 제한이 없으며, url상에 나타나지 않아 보안상 좋습니다.

 

[GET과 POST]

GET은 가져온다는 개념이고, POST는 수행한다는 개념으로 받아들이면 이해하기 편합니다.

 

즉, get은 서버에서 어떤 데이터를 가져와서 보여줄 때 사용하며, 데이터의 내용이나 상태를 바꾸지 않을 경우에 사용합니다. 예를 들자면 게시판의 리스트라던지 글보기 기능 같은 것이 이에 해당됩니다. 반면에 post는 서버의 값이나 상태를 바꾸기 위해서 사용됩니다. 글을 쓰는 것으로 예를들자면 글의 내용을 저장하고, 수정할 때 post를 사용합니다. post방식이나 get방식 모두 보내는 데이터는 전부 클라이언트측에서 볼 수 있습니다. 단지 get방식은 URL에 데이터가 표시되어 별다른 노력없이 볼 수 있지만, 보안을 생각한다면 두 방식 모두 암호화 해야합니다.

 

'JSP' 카테고리의 다른 글

GET / POST 한글깨짐 처리 방법  (0) 2019.10.11
[JSP] 쿠키와 세션  (0) 2019.06.20
[JSP] 영역(Scope)에 대한 정리  (0) 2019.06.20
[JSP] GET / POST 한글 깨짐 처리 방법  (0) 2019.06.20
Get방식과 Post방식  (0) 2019.06.19
posted by 스노(Snow)
:

필요 패키지를 다운로드합니다.

데이터 처리부

데이터 및 타겟을 인코더 및 디코더 합니다.

모델구동기로 만들었던 모델을 불러옵니다.

답변 생성 함수를 만듭니다.

입력 문장 처리(토큰화)함수를 만듭니다.

그 후, 원하시는 스토리로 게임을 제작하시면 됩니다.

 

텍스트 창을 깨끗하게 정리하는 함수 제작

주머니 제작 및 주머니 확인 함수 제작

프롤로그 함수

2번방

 

게임 구동

플레이어가 '주변을 살피다'라고 적으면,

'주변','살피'로 인식되어 rawdata에 있는 데이터들을 검색하여, 같은 토큰으로 인식하는 '주변을 산핀다'의 답변을 불러옵니다. '주변을 살핀다' 의 답변은 0001이며, 답변과 같은 숫자의 이야기를 불러오는 식으로 진행하며, 중복과 랜덤하게 불러오기, 이미지 출력등을 활용하여 플레이어에게 몰입감을 더 줄 수 있게합니다.

posted by 스노(Snow)
:

한국어 자연어 처리를 위해 KoNLPy를 설치하였습니다.

설치방법 (https://konlpy-ko.readthedocs.io/ko/v0.4.3/)

그 후, raw_data에서 파일을 가져와 데이터셋에 맞추어 질문과 답변을 추출합니다.

raw 데이터

추출된 질문 데이터

그 후, 문장을 토크나이징 및 벡터화 하여 문자열을 정수 인덱스로 변환 시킵니다.

답변 또한 토큰화를 시킵니다.

함수형 AIP를 통하여 모델을 생성합니다.

IN(Padding된 질문, 답변) target( 학습된 target 값) 학습을 한 후, 모델을 저장합니다.

모델 객체를 생성하여 입력데이터로써 레이어를 받은 상태에서 LSTM을 통해 얻은 hiddlen Layer와 Cell Layer를 받습니다. 그 후, 모델을 저장합니다.

 

전체 프로그램 코드는 차후 github에 올리겠습니다.

posted by 스노(Snow)
:

세부 내용은 같은 카테고리의 글들을 확인해주세요.

 

미니 프로젝트3 - 자연어 처리 또는 얼굴 인식을 활용한 프로그램 제작

제작 날짜 : 9월 17일 ~ 9월 24일

인원 : 5명

주제 선정 : 자연어 처리를 이용하여 게임 만들어보기

 

주제 선정 이유

- 챗봇을 응용하여 자연어 처리를 이용

- 대사를 플레이어가 직접 작성하므로 몰입감과 자유도 증가

- 스토리를 줌으로써 플레이어의 선택에 대한 폭을 줄임

 

프로젝트 명 : 챗봇을 응용한 텍스트 기반 방탈출 게임

 

문제점 : 플레이어가 생각할 수 있는 모든 경우의 수를 고려해야 함.

해결방법 : 방이라는 장소로 인해 플레이어가 생각할 수 있는 경우의 수를 줄임.

              많은 테스터(다른 조원, 지인 등)들에게 베타테스트 시켜서 확인

 

맡았던 역할

- raw데이터 처리부

- 게임 전체 스토리 구상 (2人)

- 게임 챕터2 제작(총 5챕터)

- 1,2챕터 그림 디자인

 

프로젝트 파일 구성

- 모델생성기

- 게임구동기

- data file

    - 이미지 폴더

        - 게임에 사용되는 그림(.jpg, .png)

    - raw 데이터 폴더

        - raw 데이터(.yml)

플레이어가 '주변을 살피다'라고 적으면,

'주변','살피'로 인식되어 rawdata에 있는 데이터들을 검색하여, 같은 토큰으로 인식하는 '주변을 산핀다'의 답변을 불러옵니다. 자세한 것은 차후 github에 올릴 것이며, 블로그에서 게임구동기를 확인하시면 아실 수 있으실겁니다.

'Python 파이썬 > 챗봇을 응용한 방탈출 게임' 카테고리의 다른 글

게임구동기  (0) 2019.10.11
모델생성기  (0) 2019.10.11
posted by 스노(Snow)
:
Python 파이썬/머신러닝 2019. 10. 11. 09:28

머신러닝의 주요 알고리즘은 선형대수와 통계에 기반합니다.

 

NumPy는 파이썬 언어를 기반으로 하는 수학 및 과학 연산을 위한 패키지입니다.

 

NumPy는 다차원 배열과 이 배열을 대상으로 여러가지 수학적 연산을 수행하는 많은 함수들을 제공합니다.

 

루프를 사용하지 않고 대량 데이터의 배열 연산을 가능하게 하므로 빠른 배열 연산 속도를 보장합니다. 

때문에 빠른 계산 능력을 중요시하는 과학과 공학 패키지들이 넘파이에 의존하고 있습니다.

 

권고하는 설치 명령 :

$ pip install numpy

 

NumPy를 불러올 때 np로 호출하는 것이 관례입니다.

import numpy as np

ndarray

넘파이의 기반 데이터 타입은 ndarray입니다. 넘파이에서는 ndarray를 통하여 다차원 배열을 쉽게 생성하고 다양한 연산을 수행할 수 있습니다.

arr1의 형태는 (3,)으로 1차원 array로서 데이터 3개를 가지고 있음을 뜻합니다.

arr2의 형태는 (2,3)으로 2차원 array로서 2개의 로우(행)와 3개의 칼럼(열)으로 구성되어 데이터 6개(2*3)를 가지고 있음을  뜻합니다.

arr3의 형태는 (1,3)으로 2차원 array로서 1개의 로우(행)와 3개의 칼럼(열)으로 구성되어 데이터 3개를 가지고 있음을 알 수 있습니다.

 

arr1과 arr3은 데이터 수는 같지만 차원이 다른 것을 알 수 있습니다.

 

머신러닝 알고리즘을 하다보면 데이터 값으로는 서로 동일하나 차원이 달라서 오류가 발생하는 경우가 많습니다. 이러한 경우, 차원의 차수를 변환시켜야 하며, reshape()함수 등을 사용하면 됩니다.

arange

arange() 함수는 0부터 함수 인자 값 -1 까지의 값을 순차적으로 ndarray의 데이터값으로 변환합니다.

0이 아닌 원하는 함수 값으로 시작 할 수 있습니다.

linspace

linspace() 함수는 지정된 개수만큼 두 값 사이를 나눈 데이터로 채워진 ndarray를 반환합니다. 단, arange와는 다르게 마지막 함수 인자값이 포함되어 있습니다.

zeros

zeros() 함수는 모든 값이 0으로 채워진 ndarray를 반환합니다.

ones

ones() 함수는 모든 값이 1로 채워진 ndarray를 반환합니다.

dtype을 정해주지 않으면 디폴트 값인 float64 형태가 됩니다.

full

full() 함수는 지정된 값으로 채워진 ndarray를 반환합니다.

reshape

reshape() 함수는 ndarray의 차원과 크기를 변경합니다. 단, 지정된 사이즈로 변경이 불가능하면 오류를 발생합니다. 예를 들자면, (9,) ndarray를 (5,2) 형태로 변경할 수 없습니다.

-1을 사용하면 원래 ndarray와 호환되는 모양으로 변환해 줍니다.

random.rand

random.rand() 함수는 0과 1사이의 무작위의 부동 소수로 채워진 ndarray를 반환합니다.

random.randn

random.randn() 함수는 평균이 0이고 분산이 1인 일변량 정규분포에서 랜덤 샘플링한 부동 소수로 채워진 ndarray를 반환합니다.

sort

sort() 함수는 행렬을 정렬하는 대표적인 방법입니다.

행렬이 2차원 이상일 경우에 axis 축 값을 설정하여 로우 방향, 캄럼 방향으로 정렬할 수 있습니다.

argsort

argsort() 함수는 정렬된 행렬의 인덱스를 반환시켜 줍니다.

transpose

transpose() 함수를 통해 전치 행렬을 구할 수 있습니다.

posted by 스노(Snow)
:
Python 파이썬/머신러닝 2019. 10. 9. 16:25

정의

기계학습 또는 머신러닝(machine learning)은 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습시켜 결과를 예측하는 알고리즘 기법들의 통칭입니다.

 

 

분류

일반적으로 머신러닝은 지도학습과 비지도학습, 강화학습으로 나눠집니다.

 

지도학습 - 데이터에 대한 레이블(명시적인 답)이 주어진 상태에서 컴퓨터를 학습시키는 방법입니다.

              지도학습의 대표적인 머신러닝은 분류와 회귀가 있습니다.

비지도학습 - 데이터에 대한 레이블(명시적인 답)이 주어지지 않은 상태에서 컴퓨터를 학습시키는 방법입니다.

                 비지도학습의 대표적인 머신러닝은 군집화(클러스터링), 차원축소 등이 있습니다.

강화학습 - 현재의 상태에서 어떤 행동을 취하는 것이 최적인지를 학습시키는 방법입니다.

              행동을 취할 때마다 외부 환경에서 보상이 주어지고, 이 보상을 최대화하는 방향으로 학습을 진행시킵니다.

 

오픈 소스 프로그램 언어

머신러닝 프로그램을 작성할 수 있는 대표적인 오픈 소스 프로그램 언어는 파이썬과 R입니다.

C/C++, JAVA 등의 언어도 머신러닝 프로그램 작성이 가능하지만, 파이썬이나 R에 비해 지원 패키지나 개발 생산성이 많이 떨어집니다.

 

머신러닝 분야에서의 R

- 통계 분석을 위해 특화된 언어이며 많은 사용자들이 생성하고 검증해온 다양한 통계 패키지를 보유하고 있습니다. 

- 데이터 시각화 기능이 매우 뛰어납니다.

 

머신러닝 분야에서의 파이썬

- 쉽고 뛰어난 개발 생산성으로 전 세계 개발자들이 파이썬을 선호합니다.

- 인터프리터 언어의 특성상 속도는 느리지만 확장성, 유연성, 호환성이 뛰어나 다양한 영역에서 사용됩니다.

- 딥러닝 프레임워크인 텐서플로, 케라스, 파이토치 등에서 파이썬 우선 정책으로 파이썬을 지원하고 있습니다.

posted by 스노(Snow)
:
Python 파이썬 2019. 10. 9. 13:37

문자열 서식

%d : 정수형

%s : 문자형

%f : 실수형

 

파이썬에서는 서식과 데이터의 자료형이 달라도 에러가 뜨지 않고 자동으로 캐스팅합니다.

여러개의 문자열 서식을 사용할 경우 % 뒤에 괄호로 묶어서 사용합니다.

 

[결과]

[코드]

 

# 문자열 서식
# %d, %s, %f : 정수형. 문자형. 실수형
age = 25
print("나이 : %s" % age) # 파이썬에서는 서식과 데이터의 자료형이 달라도 에러가 뜨지 않고 자동으로 캐스팅
fruit = "포도"
print("좋아하는 과일은 %s 입니다." % fruit)
name = "스노"
print("%s님의 나이는 %s입니다." %(name, age)) # 여러개의 문자열 서식을 사용할 경우 % 뒤에 괄호로 묶어서 사용
rate=98
print("에러율 : %d%%" % rate)
point=3.141592
print("원주율 : %10.3f" %point)

posted by 스노(Snow)
:
Python 파이썬 2019. 10. 9. 13:31

자연수의 계승 또는 팩토리얼은 그 수보다 작거나 같은 모든 양의 정수의 곱을 말합니다.

n이 하나의 자연수일 때, 1에서 n까지의 모든 자연수의 곱입니다.

 

[결과]

[코드]

def fact(n):
    if n == 1:
        return n
    else:
        return n * fact(n-1)
n=int(input())
print(n,"의 팩토리얼")
print(fact(n))

posted by 스노(Snow)
: