본문 바로가기

자연어처리

[AI 서비스 리뷰] 초코쿠키 요리법까지 알려주는 인공지능, 네슬레(NESTLE)의 Ruth 리뷰기 AI 서비스 리뷰 : AI 서비스 대신 체험해드립니다! #1 네슬레(NESTLE)의 쿠키 코치 Ruth 리뷰기 요즘 인공지능이 여러 분야와 결합해 다양한 AI 서비스가 나오고 있는데요, 첫 번째로 리뷰할 AI 서비스는 바로 NESTLE의 인공지능 쿠키 코치(Cookie Coach) Ruth입니다. 네슬레(Nestle) 제품은 한 번쯤 쿠키, 초콜릿, 커피, 음료 등으로 접해보셨을 텐데요, 네슬레에서는 자사의 초코칩 쿠키 요리법을 소비자가 직접 만들어 볼 수 있도록 인공지능 코치가 도와주는 서비스 프로그램이 개발되었습니다. 바로 위 사진의 Cookie Coach인 Ruth가 바로 인공지능인데요, 요리법을 단계별로 알려주며, 원하는 쿠키를 만들 수 있도록 요리법을 변경해주고, 중간에 관련된 질문에 대해 대답.. 더보기
[자연어 처리] RNN 텍스트 분류 모델, 어떠한 활성화 함수 & 손실 함수를 사용하는게 좋을까요? - RNN으로 텍스트 분류 모델을 만들 때, 어떠한 활성화 함수와 손실 함수를 사용하는 게 좋을까요? RNN 구조를 이용한 텍스트 분류 문제는 모든 time step(시점 수 = 던어 수)에 대해 입력을 받고, 최종 출력 층에서 활성화 함수를 통해 하나의 답을 고르는 문제인데요, 이때 출력층에서 두 개의 선택지 중에서 답을 고르는 건지, 세 개 이상의 선택지에서 답을 고르는 건지에 따라 이진 분류 또는 다중 클래스 분류로 나누어집니다. 만약, 여기서 이진 분류의 문제로 해결을 하고 싶다면 활성화 함수는 Sigmoid 함수를, 손실 함수는 binary_crossentropy를 사용하는 것이 적절합니다. 반면, 다중 클래스 문제이 경우 활성화 함수를 Softmax, 손실함수를 categorical_cross.. 더보기
[자연어처리] Okt : 형태소 단위로 나누는 방법 (파이썬) 자연어처리를 할 때, 데이터 전처리로 문장을 형태소 단위로 나누는 과정을 거쳐야 하는데요, 파이썬에서 형태소 단위로 나누는 라이브러리는 다양합니다. 그중에서 Okt 라이브러리를 이용하여 형태소 단위로 나누는 방법에 대해서 살펴보도록 하겠습니다. - 형태소 단위로 나누기 먼저, 필요한 라이브러리를 설치해줍니다. from konlpy.tag import Okt import re 그리고, 형태소 단위로 나눌 문장은 다음과 같다고 가정하겠습니다. text1 = "Tue) 오늘도 나는 커피를 마셔요!" Okt 객체를 이용해서 이 문장을 형태소 단위로 나누기 전, 한글과 공백을 제외한 문자를 모두 제거해주어야 하는데요, 정규표현식을 이용해서 코드를 다음과 같이 입력해주면 됩니다. text2 = re.sub("[^가.. 더보기
[자연어처리] 파이썬으로 원 핫 인코딩(One-Hot Encoding) 구현하기 (코드) 1. 원-핫 인코딩이란? 원-핫 인코딩(One-Hot Encoding)이란 단어 집합의 크기를 벡터 차원으로 만든 뒤, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고 다른 인덱스에는 0을 부여하는 방식을 말합니다. 한편, 케라스에서는 원-핫 인코딩을 하기 위한 함수 'to_categorical()'를 제공하는데요, 코드를 통해 원-핫 인코딩을 어떻게 하는지 살펴보도록 하겠습니다. 2. 코드 구현하기 먼저, 다음과 같은 문장이 있다고 가정해보겠습니다. text = "나는 얼죽아 추워도 아이스아메리카노 나는 아이스아메리카노 좋아 아이스아메리카노 마시자" 그리고나서 이 문장에 대해 원-핫 인코딩을 하기 위한 코드를 작성해보겠습니다. (1) 라이브러리 설치 먼저, 원 핫 인코딩을 하기 위한 라이브러리를 비롯.. 더보기
[자연어처리] 패딩(Padding) : 다른 숫자로 패딩하는 방법 (파이썬) 이전 글들에서 pad_sequences() 함수를 사용하여 패딩을 구현하고, 길이 지정 등 다양하게 패딩하는 방법에 대해서 계속 살펴보았는데요, 이번 글에서는 0이 아닌 다른 값으로 패딩하는 방법에 대해서 살펴보겠습니다. 먼저, pad_sequences() 함수를 이용하여 길이 10의 제로패딩을 하는 코드를 작성해보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']] #정수 인코딩 tokenizer= Tokenizer(.. 더보기
[자연어처리] 패딩(Padding) : 길이 지정 방법 - maxlen (파이썬) 이전 글들에서 패딩을 하는 기본적인 방법과, 제로 패딩을 할 때 0을 뒤로 채우는 방법 등에 대해서 살펴보았는데요, 이번에는 패딩을 할 때, 길이를 지정하는 방법에 대해서 살펴보도록 하겠습니다. 먼저, 기본적으로 패딩을 하는 코드를 작성하고, 그 결과를 보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']] tokenizer= Tokenizer() tokenizer.fit_on_texts(sentences) encode.. 더보기
[자연어처리] 패딩(Padding) : 0을 뒤에 채우는 방법 (파이썬) 지난 글에서는 파이썬에서 패딩을 구현하는 기본적인 방법에 대해서 알아보았는데요, pad_sequences() 함수를 이용하여 패딩을 구현했습니다. 아래 코드처럼 pad_sequenes()를 이용하여 코드를 입력하면 기본적인 패딩이 되는데요, import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']] tokenizer= Tokenizer() tokenizer.fit_on_texts(sentences) encoded = tokenizer... 더보기
[자연어처리] 파이썬 코드로 패딩(Padding) 구현하기 - pad_sequences 패딩(Padding)이란, 데이터에 특정한 값을 채워서 데이터의 크기를 일괄적으로 조정하는 것을 말하는데요, 이때 특정한 값이 0이라면 이를 제로 패딩이라고 합니다. 한편, 케라스에서 패딩을 하기 위한 함수 'pad_sequences()'를 제공하는데요, 정수 인코딩이 된 값을 입력하면 패딩된 값으로 반환해줍니다. 한번 코드를 보면서 살펴보도록 하겠습니다. 1. 정수 인코딩하기 정수 인코딩을 하는 방법은 이전 글에서 자세하게 살펴보았는데요, 이에 대해서는 이전 글을 참고하시고, 바로 코드를 작성해보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['.. 더보기
[자연어처리] 정수 인코딩 하기 - fit_on_texts() 단어에 정수를 부여하는 것을 정수 인코딩이라고 하는데요, 자주 사용되는 정수 인코딩 방법은 단어를 빈도수 순으로 정렬한 뒤, 빈도수가 높은 순서대로 차례대로 낮은 숫자부터 부여하는 방법입니다. 한편, 케라스에서 fit_on_texts() 라는 함수를 제공하는데요, 이 함수를 이용하면 문자열 데이터(코퍼스)를 빈도수 기준으로 단어 집합을 생성해 줍니다. 그리고나서 맵핑을 위해 texts_to_sequences() 함수를 사용하면 되는데요, 아래 코드를 보면서 살펴보도록 하겠습니다. 1. 필요한 라이브러리 설치 먼저 필요한 라이브러리를 설치해줍니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer 2. fit_on_te.. 더보기