4.3 개체명인식을 위한 양방향 LSTM모델(BI-LSTM)4.3.1 RNN(Recurrent Neural Network)I, google, at, work라는 문장이 주어졌을 때I work at google. (work=동사, google=명사)I google at work. (google=동사, work=명사)work, google이란 단어는 각각 '명사, 동사'로 각각 쓰일 수가 있다.RNN은 시계열이나 텍스트데이터 분석에 용이하게 사용된다.LSTM은 RNN(Recurrent Neural Network)에서 파생된 모델RRN순환신경망으로 불리는데 은닉층노드의 출력값을 출력층과 다음의 은닉층노드의 입력으로 전달해서 순환하는 특징이 있다.출력층 : y = wx = b은닉층 : h = tanh(현재(y)..
Python
4.2.1 CNN 모델CNN모델은 이미지, Computer Vision 등의 판단에 특화되어 있는 알고리즘CNN알고리즘으로 감정분류도 가능하다.CNN은 합성곱(Convolution), 풀링(Pooling)연산으로 처리되는 알고리즘합성곱은 필터(filter)라고 하는 특정크기의 행렬 소스(이미지행렬, 문장행렬...)와 곱하거나 더하는 연산을 수행합성곱필터는 경우에 따라 마스크 mask, 윈도우 window, 커널 kernel등으로 다양하게 호칭되지만 보통 필터 or 커널로 호칭한다.필터의 위치를 몇 칸씩 이동할지를 결정하는 값이 스트라이드 stride라고 한다.연산을 거칠 때 마다 특징맵(연산후 결과를 feature map이라고 한다)의 크기가 작아 지는데 이를 방지하기 위해 패딩 padding을 사용한다..
4. 챗봇엔진에 필요한 딥러닝 모델4.1 keras케라스는 신경망모델 구축시 필요한 라이브러리이다.pip install tensorflow# !pip install tensorflow!pip show tensorflowTensorFlow는 기계 학습 및 딥러닝을 위한 오픈소스 라이브러이다. 이는 수치 계산을 위한 라이브러리인 NumPy와 비슷하지만, GPU나 TPU 같은 가속기에서 실행할 수 있고, 높은 수준의 추상화로 신경망과 같은 복잡한 모델을 쉽게 구축하고 학습할 수 있도록 지원한다. TensorFlow는 데이터 플로우 그래프라는 개념을 기반으로 한다. # MNIST 분류모델 학습import tensorflow as tfimport matplotlib.pyplot as plt #Matplotlib를..
3. 텍스트유사도챗봇엔진에서 입력된 문장에서 챗봇시스템에서 답변이 얼마나 유사한지에 따라 적절한 답변이 가능하다.3.1. n-gramp 유사도n-gram은 문장에서 n개의 연속적인 단어의 시퀀스를 의미한다.n-gram은 문장에서 n개의 단어를 token으로 사용한다.이웃한 단어의 출현횟수를 통계적으로 표현해서 텍스트의 유사도를 계산하는 방법이다.참고 : https://uumini.tistory.com/69문장간 유사도 계산문장을 n-gram으로 토큰을 분리한 후 단어문서행렬(TDM, Term Document Matrix)를 만든다.이후, 두 문장을 비교해서 동일단어의 출현빈도를 확률로 계산해 유사도를 구할 수 있다.A, B 두 문장이 있을 때 B가 A와 얼마나 유사한지 확률을 구하는 공식n-gram유사도..
2. 임베딩2.1 임베딩이란?자연어를 숫자나 벡터형태로 변환하는 것을 임베딩이라고 한다.즉, 임베딩은 단어나 문장을 수치화해서 벡터공간으로 표현하는 과정을 의미한다.임베딩기법문장임베딩 : 여러개의 문장에서 각각의 문장을 벡터로 표현하는 기법문장의 흐름을 벡터화하기 때문에 문맥적의미응 가지는 장점이 있다.하지만, 문장을 임베딩하기 위해서는 많은 문장이 필요하며 학습비용이 많이 든다.상용시스템에서 많이 사용된다. (단어임베딩에 비해 품질이 우수하다.)단어임베딩 : 개별 단어를 벤터로 표현하는 기법동음의의어에 대한 구분을 하지 않는다.그렇기 때문에 의미가 다르더라도 단어형태가 같다면 동일한 벡터값으로 표현하는 단점이 있다.하지만, 문장임베딩에 비해 학습이 간단하여 실무에 많이 사용된다.2.2 단어임베딩단어 임..
1. 토크나이징1.1 토크나이징이란?컴퓨터분야에서 자연어의 의미를 분석해서 처리할 수 있도록 하는 것이 자연어처리 NLP(Natural Language Processing)이라 한다.자연어처리를 하는 가장 일반적인 방법은?주어진 문장을 일정한 의미가 있는 가장 단어로 분리그 다음에 분리된 단어를 이용해서 의미를 분석한다.여기서 가장 기본이 되는 단어를 토큰 token이라고 한다.토큰단위는 토크나이징하는 방법에 따라 달라질 수가 있다.하지만, 일반적으로 일정한 의미가 있는 가장 작은 단위로 결정된다.이렇게 주어진 문장에서 토큰 단위로 정보를 분리하는 작업을 토크나이징이라고 한다.토크나이징을 구현하기 위해서는 한국어문법에 대한 이해가 필요하다.하지만, 한국어 토크나이징을 지원하는 파이썬 라이브러리가 있다.한..
import MySQLdbA. MySQL or mariaDB1. mariadb database생성create database mysuppliers;show database;use mysupplirs;create table if not exists suppliers( supplier_name varchar(20) , invoice_number varchar(20) , part_number varchar(20) , cost float , purchase_date date);describe suppliers; desc suppliers;2. DB접속을 위한 패키지 설치MySQL or Mariadb와 연동을..
정규식(Regular Expressions)?정규식은 정규표현식의 약칭이다.정규식은 문자열을 처리할 때 사용하는데 파이썬뿐만아니라 문자열을 처리하는 모든 곳에서 사용한다.정규식은 프로그램작성없이 특정 패턴을 정의해서 그 패턴과 일치하는 문자열을 추출하는 기능을 지원한다.예를들어서 주민번호는 '6자리숫자-7자리숫자의 패턴을 가지고 있는데 이 패턴과 일치여부를 확인할 수 있다.즉, 주민번호의 블라인딩처리 or email형식의 검증등 프로그램작성없이도 검증할 수가 있다.파이썬에서는 이런 정규식을 처리하기 위해서 내장모듈 re를 지원한다.import re# help(re)print(dir(re))# 1. findall(패턴, 문자열)# re.findall?sentence = 'Life ..