반응형

ChatGPT의 가능성

 

ChatGPT에서 발표한 GPTs로 이제 프로그래머가 아닌 일반 사람들이 자기만의 AI를 활용할 수 있는 세상이 열리게 되었다.

상상해 보자.

친구와 대화하는 것과 마찬가지로 컴퓨터와 빠르게 소통할 수 있는 세상을!
그런 세상이 어떻게 보일까?
일상 생활 속에서 어떤 응용 프로그램을 만들어 사용할까?

 

이러한 인공 지능 모델의 영향은 단순한 음성 어시스턴트를 넘어서며, OpenAI의 모델 덕분에 개발자들은 이제 한때 과학 소설로만 여겨졌던 방식으로 우리의 필요를 이해하는 응용 프로그램을 만들 수 있다.

ChatGPT란?

 

그런데 GPT-4 ChatGPT는 무엇일까?


먼저 이러한 인공지능 모델의 기초, 기원 및 주요 기능을 알아보도록 하자.
이러한 모델의 기본을 이해함으로써 다음 세대의 LLM 기반 응용 프로그램을 만드는 길에 한 발자국 나아갈 수 있을 것이기 때문이다.

 

GPT-4 ChatGPT의 개발을 형성한 기본적인 구성 요소를 제시한다.
우리의 목표는 언어 모델과 NLP의 포괄적인 이해, 트랜스포머 아키텍처의 역할, 그리고 GPT 모델 내의 토큰화 및 예측과정을 제공하는 것이다.

 

LLM(대형 언어 모델)로서, GPT-4 ChatGPT는 기계 학습(ML)과 인공 지능(AI)의 하위 분야인 자연어 처리(NLP) 분야에서 얻은 최신 유형의 모델이다.


GPT-4
ChatGPT에 대해 알아보기 전에 NLP와 그와 관련된 분야를 살펴보는 것이 중요합니다.

AI에 대한 다양한 정의가 있지만, 대략적으로 합의되는 정의 중 하나는 AI가 일반적으로 인간 지능이 필요한 작업을 수행할 수 있는 컴퓨터 시스템의 개발이라고 말한다.


이 정의에 따라 많은 알고리즘이 AI 범주에 속한다.
예를 들어 GPS 애플리케이션에서의 교통 예측 작업이나 전략적 비디오 게임에서 사용되는 규칙 기반 시스템을 생각해보자.
이러한 예에서 기계는 외부에서 보면 이러한 작업을 수행하기 위해 지능이 필요한 것처럼 보인다.

ML AI의 하위 집합이다.
ML
에서는 AI 시스템에서 사용되는 의사 결정 규칙을 직접 구현하지 않는다.
대신 시스템이 예제에서 스스로 학습할 수 있게 하는 알고리즘을 개발하려고 한다.
ML
연구가 시작된 1950년대 이후로 많은 ML 알고리즘이 과학 문헌에서 제안되었다다.

이 중에서도 딥러닝 알고리즘이 주목을 받았다.
딥러닝은 뇌의 구조에서 영감을 받은 알고리즘에 중점을 둔 ML의 한 분야다.
이러한 알고리즘을 인공신경망이라고 한다.
이들은 매우 큰 양의 데이터를 처리하고 이미지 및 음성 인식, 그리고 NLP와 같은 작업에서 매우 우수한 성능을 발휘할 수 있다.
GPT-4
ChatGPT는 트랜스포머(변환자)라고 불리는 특정 유형의 딥러닝 알고리즘을 기반으로 한다.
트랜스포머(변환자)는 읽기 기계와 같이 작동한다.
문장이나 텍스트 블록의 다른 부분에 주의를 기울여 그 문맥을 이해하고 일관된 응답을 생성한다.
또한 문장 내 단어의 순서와 그 문맥을 이해할 수 있다.
이로 인해 언어 번역, 질문 응답, 텍스트 생성과 같은 작업에서 높은 효율을 발휘한다.
위 그림은 이러한 용어들 간의 관계를 나타나고 있다.

 

NLP는 컴퓨터가 자연스러운 인간 언어를 처리, 해석 및 생성할 수 있도록 하는 AI의 하위 분야다.
현대적인 NLP 솔루션은 기계 학습 알고리즘을 기반으로 한다.
NLP
의 목표는 컴퓨터가 자연어 텍스트를 처리할 수 있게 하는 것이다.
이 목표는 다음과 같은 다양한 작업을 포함한다:

 

1. 텍스트 분류

입력 텍스트를 미리 정의된 그룹으로 분류한다.
이에는 감정 분석 및 주제 분류와 같은 작업이 포함된다.
기업은 감정 분석을 사용하여 고객이 서비스에 대한 의견을 이해할 수 있다.
이메일 필터링은 "개인", "소셜", "프로모션" "스팸"과 같은 카테고리로 이메일을 분류하는 주제 분류의 예다.

 

2. 자동 번역

텍스트를 한 언어에서 다른 언어로 자동 번역한다.
이것은 한 프로그래밍 언어에서 다른 언어로 코드를 번역하는 작업과 같이 다양한 영역을 포함할 수 있다.
예를 들어, Python에서 C++로 코드를 번역하는 것도 포함된다.

 

3. 질문 응답

주어진 텍스트를 기반으로 질문에 답한다.
예를 들어, 온라인 고객 서비스 포털은 제품에 관한 FAQ를 대답하기 위해 NLP 모델을 사용할 수 있으며, 교육용 소프트웨어는 학습 주제에 관한 학생의 질문에 답변하기 위해 NLP를 사용할 수 있다.

 

4. 텍스트 생성

주어진 입력 텍스트(프롬프트라고도 함)를 기반으로 일관되고 관련성 있는 출력 텍스트를 생성한다.

 

앞서 언급한 대로 LLMs는 텍스트 생성 작업 등 다양한 작업을 해결하려는 ML 모델이다.
LLMs
는 컴퓨터가 인간 언어를 처리, 해석 및 생성할 수 있게 하며, 보다 효과적인 인간-기계 커뮤니케이션을 가능하게 한다.
이를 위해 LLMs는 방대한 양의 텍스트 데이터를 분석하거나 학습하며 문장 내 단어 간의 패턴과 관계를 학습한다.
이러한 학습 프로세스를 수행하기 위해 다양한 데이터 원본을 사용할 수 있다.
이 데이터에는 Wikipedia, Reddit, 수천 권의 책의 아카이브 또는 인터넷 자체의 아카이브에서 가져온 텍스트가 포함될 수 있다.
주어진 입력 텍스트를 기반으로, 이러한 학습 프로세스를 통해 LLMs는 다음에 나올 단어에 대한 가장 가능성 있는 예측을 할 수 있으며 이를 통해 입력 텍스트에 의미 있는 응답을 생성할 수 있다.
최근 몇 달 동안 게시된 현대적인 언어 모델은 이제 텍스트 분류, 기계 번역, 질문 응답 및 기타 많은 NLP 작업과 같은 대부분의 NLP 작업을 직접 수행할 수 있는 크기와 학습된 텍스트 양이 매우 크다.


GPT-4
ChatGPT 모델은 텍스트 생성 작업에서 뛰어난 현대적인 LLMs이.

 

파이썬으로 OpenAI API의 'Hello World' 예제 실행

 

OpenAI GPT-4 ChatGPT를 서비스로 제공한다.
이것은 사용자가 모델의 코드에 직접 액세스하거나 자체 서버에서 모델을 실행할 수 없다는 것을 의미한다.
그러나 OpenAI는 모델의 배포 및 실행을 관리하고 사용자는 계정과 비밀 키가 있다면 이러한 모델을 호출할 수 있다.

먼저 OpenAI 웹 페이지에 로그인되어 있는지 확인하자.

 

API 키가 준비되었으면, OpenAI API를 사용한 첫 번째 "Hello World" 프로그램을 작성할 시간이다.

 

다음은 OpenAI Python 라이브러리를 사용한 첫 번째 코드 라인을 보여준다.
OpenAI
가 어떻게 서비스를 제공하는지 이해하기 위해 클래식한 "Hello World" 예제를 시작하자.

 

먼저 pip를 사용하여 Python 라이브러리를 설치한다:

!pip install openai

 

다음으로 Python에서 OpenAI API에 액세스하자:

import openai
# openai ChatCompletion 엔드포인트 호출
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello World!"}],
)
# 응답 추출
print(response["choices"][0]["message"]["content"])

 

다음과 같은 출력이 표시다:

```

안녕하세요! 오늘 어떻게 도와드릴까요?

Hello there! How may I assist you today?

OpenAI Python 라이브러리를 사용하여 첫 번째 프로그램을 작성했다.

 

OpenAI API 키 설정


그럼 이 라이브러리를 사용하는 방법에 대해 조금 더 자세한 내용을 살펴보자.

 

관찰하신 대로 코드 스니펫에서 OpenAI API 키를 명시적으로 언급하지 않았다.
이것은 OpenAI 라이브러리가 자동으로 OPENAI_API_KEY라는 환경 변수를 찾도록 설계되어 있기 때문이다.
또는 다음 코드를 사용하여 API 키가 포함된 파일을 가리킬 수 있다:

# 파일에서 API 키 로드
openai.api_key_path = <경로>,

또는 다음 방법을 사용하여 코드 내에서 API 키를 수동으로 설정할 수 있다:

# API 키 로드
openai.api_key = os.getenv("OPENAI_API_KEY")

권장 사항은 환경 변수에 대한 널리 사용되는 규칙을 따르는 것이다.
, .gitignore 파일에서 소스 제어에서 제외된 .env 파일에 키를 저장하는 것이다.
그런 다음 Python에서 load_dotenv 함수를 실행하여 환경 변수를 로드하고 openai 라이브러리를 가져올 수 있다:

from dotenv import load_dotenv
load_dotenv()
import openai

중요한 점은 .env 파일을 로드한 후에 openai import 선언을 가져와야 하며, 그렇지 않으면 OpenAI 설정이 올바르게 적용되지 않을 수 있다.

 

파이썬 코딩을 통해 프롬프트에 접근해 보면, ChatGPT와의 프롬프트를 파악하는데 도움이 될 수 있다고 본다. 
하지만, 매우 빠르게 변화하고 있는 LLM모델이기 때문에, openai의 Playground에서 본인만의 AI와 만나보는 것이 더 나을 것이라 생각한다. 

다음에는 Playground를 간단히 살펴보도록 할 생각이다.

https://platform.openai.com/playground

 

OpenAI Platform

Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

platform.openai.com

 

참고문헌) Developing Apps with GPT-4 and ChatGPT

 

Developing Apps with Gpt-4 and Chatgpt | Caelen, Olivier - 교보문고

Developing Apps with Gpt-4 and Chatgpt |

product.kyobobook.co.kr

 

반응형
반응형

오늘 ChatGPT의 'OpenAI DevDay'가 있었고, 향후 많은 사람들이 유용하게 사용할 수 있는 기능들이 추가되는 것을 확인한 하루였다. 
이제 정말 나만의 비서를 쓸 수 있는 시대가 도래하고 있다는 것을 알리는 자리가 아니었나 싶다.

가족들에게도 각자 상황에 맞는 비서를 셋팅할 수 있다고 하니, 좀 더 발빠르게 대비할 필요가 있지 않을까 싶다.

 

다음 내용은 오늘 OpenAI 홈페이지에 올라온 글이다(구글 번역).


우리는 특정 목적을 위해 생성할 수 있는 ChatGPT의 사용자 지정 버전('GPTs'라 함)을 출시하고 있습니다. 
GPTs는 누구나 일상 생활, 특정 작업, 직장 또는 집에서 더 도움이 되도록 맞춤형 버전의 ChatGPT를 만들고 해당 창작물을 다른 사람들과 공유할 수 있는 새로운 방법입니다. 
예를 들어, GPTs는 보드 게임의 규칙을 배우거나, 자녀에게 수학을 가르치거나, 스티커를 디자인하는 데 도움이 될 수 있습니다 .

누구나 쉽게 자신만의 GPT를 구축할 수 있습니다. 
코딩이 필요하지 않습니다. 
회사 내부용으로나 모든 사람을 위해 직접 만들 수도 있습니다. 
대화를 시작하고, 지침과 추가 지식을 제공하고, 웹 검색, 이미지 만들기, 데이터 분석 등 할 수 있는 작업을 선택하는 것만큼 쉽습니다. 

ChatGPT Plus 및 Enterprise 사용자는 오늘부터 Canva 및 Zapier AI 작업을 포함한 예제 GPT를 사용해 볼 수 있습니다 . 우리는 곧 더 많은 사용자에게 GPT를 제공할 계획입니다.


새로운 모델 및 개발자 제품에 대한 OpenAI DevDay 발표에 대해 자세히 알아보세요 .

GPTs는 당신의 특정 목적에 맞게 ChatGPT를 맞춤 설정할 수 있습니다.
ChatGPT를 출시한 이후 사람들은 ChatGPT를 특정 사용 방식에 맞게 사용자 정의할 수 있는 방법을 요청해 왔습니다. 

우리는 몇 가지 기본 설정을 지정할 수 있는 맞춤형 지침을 7월에 출시했지만 더 많은 제어 기능에 대한 요청이 계속해서 접수되었습니다. 

많은 고급 사용자는 신중하게 제작된 프롬프트 및 지침 세트 목록을 유지 관리하고 이를 수동으로 ChatGPT에 복사합니다. 

이제 GPT가 이 모든 것을 대신해 드립니다.

최고의 GPTs는 커뮤니티에 의해 발명될 것입니다
우리는 가장 놀라운 GPTs가 커뮤니티의 빌더로부터 나올 것이라고 믿습니다. 

교육자, 코치 또는 유용한 도구를 만드는 것을 좋아하는 사람이든 관계없이 도구를 만들고 전문 지식을 공유하기 위해 코딩을 알 필요는 없습니다.

GPT Store는 이번 달 말에 출시될 예정입니다
오늘부터 GPTs를 생성하고 공개적으로 공유할 수 있습니다. 

이번 달 말에는 검증된 제작자의 창작물을 선보이는 GPT 스토어를 출시할 예정입니다. 

매장에 들어가면 GPTs를 검색할 수 있으며 순위표에 오를 수 있습니다. 

또한 생산성, 교육, '재미를 위한' 카테고리에서 가장 유용하고 즐거운 GPTs를 집중 조명할 것입니다. 

앞으로 몇 달 안에 GPT를 사용하는 사람 수에 따라 수익을 얻을 수도 있습니다.

반응형


우리는 개인 정보 보호와 안전을 염두에 두고 GPTs를 구축했습니다
언제나 그렇듯이 ChatGPT를 사용하여 데이터를 제어할 수 있습니다. 

GPTs와의 채팅은 빌더와 공유되지 않습니다. 

GPT가 타사 API를 사용하는 경우 해당 API로 데이터를 전송할 수 있는지 여부를 선택합니다. 

빌더가 작업이나 지식으로 자신의 GPT를 맞춤설정할 때 빌더는 해당 GPT와의 사용자 채팅을 사용하여 모델을 개선하고 교육할 수 있는지 선택할 수 있습니다. 

이러한 선택은 전체 계정을 모델 교육에서 제외하는 옵션을 포함하여 사용자가 보유한  기존 개인 정보 보호 제어를 기반으로 합니다.

우리는 사용 정책과 비교하여 GPTs를 검토하는 데 도움이 되는 새로운 시스템을 설정했습니다 . 

이러한 시스템은 기존 완화 조치에 더해 ​​사용자가 사기 행위, 증오성 콘텐츠, 성인용 테마와 관련된 유해한 GPTs를 공유하는 것을 방지하는 것을 목표로 합니다. 

또한 빌더가 자신의 신원을 확인할 수 있도록 허용하여 사용자 신뢰를 구축하기 위한 조치를 취했습니다. 

우리는 사람들이 GPTs를 어떻게 사용하는지 계속 모니터링하고 학습하며 안전 완화 조치를 업데이트하고 강화할 것입니다. 특정 GPT에 대해 우려사항이 있는 경우 GPT 공유 페이지의 신고 기능을 사용하여 우리 팀에 알릴 수도 있습니다.

GPTs는 계속해서 더욱 유용하고 스마트해질 것이며, 결국 GPTs가 현실 세계에서 실제 작업을 수행하도록 할 수 있게 될 것입니다. 

AI 분야에서 이러한 시스템은 종종 "에이전트"로 논의됩니다. 

우리는 이러한 미래를 향해 점진적으로 나아가는 것이 중요하다고 생각합니다. 

왜냐하면 신중한 기술 및 안전 작업과 사회가 적응할 시간이 필요하기 때문입니다. 

우리는 사회적 영향에 대해 깊이 생각해 왔으며 곧 더 많은 분석을 공유할 예정입니다.

개발자는 GPTs를 현실 세계에 연결할 수 있습니다
내장된 기능을 사용하는 것 외에도 GPT에서 하나 이상의 API를 사용할 수 있도록 하여 맞춤 작업을 정의할 수도 있습니다. 

플러그인과 마찬가지로 작업을 통해 GPTs는 외부 데이터를 통합하거나 실제 세계와 상호 작용할 수 있습니다. 

GPTs를 데이터베이스에 연결하거나, 이메일에 연결하거나, 쇼핑 도우미로 활용하세요. 예를 들어 여행 목록 데이터베이스를 통합하거나, 사용자의 이메일 받은 편지함을 연결하거나, 전자 상거래 주문을 용이하게 할 수 있습니다.

작업 설계는 플러그인 베타의 통찰력을 바탕으로 구축되어 개발자가 모델과 API 호출 방법을 더 효과적으로 제어할 수 있도록 해줍니다. 

기존 플러그인 매니페스트를 사용하여 GPT에 대한 작업을 정의할 수 있으므로 플러그인 베타에서 쉽게 마이그레이션할 수 있습니다.

기업 고객은 내부 전용 GPTs를 배포할 수 있습니다
몇 달 전 ChatGPT Enterprise를 출시한 이후 초기 고객들은 자신의 비즈니스에 맞는 더 많은 사용자 정의를 원했습니다. 

GPTs는 특정 사용 사례, 부서 또는 독점 데이터 세트에 대한 ChatGPT 버전을 생성할 수 있도록 하여 이 요청에 응답합니다. 

Amgen, Bain, Square와 같은 초기 고객은 이미 내부 GPTs를 활용하여 브랜드를 구현하는 마케팅 자료 제작, 지원 직원의 고객 질문 답변 지원, 신규 소프트웨어 엔지니어의 온보딩 지원 등의 작업을 수행하고 있습니다.

기업은 수요일부터 GPTs를 시작할 수 있습니다. 

이제 회사 내부 사용자가 코드 없이 내부 전용 GPTs를 설계하고 작업공간에 안전하게 게시할 수 있는 권한을 부여할 수 있습니다. 

관리 콘솔을 사용하면 GPTs 공유 방법과 외부 GPTs를 비즈니스 내에서 사용할 수 있는지 여부를 선택할 수 있습니다. 

ChatGPT Enterprise의 모든 사용과 마찬가지로 우리는 모델을 개선하기 위해 GPTs와의 대화를 사용하지 않습니다.

우리는 더 많은 사람들이 AI의 행동 방식을 형성하기를 원합니다
우리는 더 많은 사람들이 우리와 함께 구축할 수 있도록 GPTs를 설계했습니다. 

커뮤니티의 참여는 인류에게 이익이 되는 안전한 AGI를 구축하려는 우리의 사명에 매우 중요합니다. 

이를 통해 모든 사람은 광범위하고 다양한 범위의 유용한 GPTs를 확인하고 앞으로의 상황에 대해 보다 구체적인 감각을 얻을 수 있습니다. 

그리고 첨단 기술에 접근할 수 있는 사람들을 넘어 '무엇을 구축할지'를 결정하는 사람들의 그룹을 확대함으로써 우리는 더 안전하고 더 나은 AI를 갖게 될 가능성이 높습니다. 

사람들을 위한 것이 아니라 사람들과 함께 구축하려는 동일한 열망으로 인해 우리는 OpenAI API를 출시하고 AI 행동에 민주적 입력을 통합하는 방법을 연구하게 되었으며 이에 대해 곧 더 자세히 공유할 계획입니다.

ChatGPT Plus를 더욱 신선하고 사용하기 쉽게 만들었습니다
마지막으로 ChatGPT Plus에는 이제 2023년 4월까지의 최신 정보가 포함됩니다. 

모델 선택기가 얼마나 어려운지에 대한 피드백도 들었습니다. 

오늘부터 더 이상 모델 간에 이동하지 않아도 됩니다. 

필요한 모든 것이 한 곳에 있습니다. 

전환 없이 DALL·E, 브라우징, 데이터 분석에 모두 액세스할 수 있습니다. 

ChatGPT가 PDF 및 기타 문서 유형을 검색할 수 있도록 파일을 첨부할 수도 있습니다.

chatgpt.com 에서 찾아보세요 .


LLM모델이 글로벌 IT기업들에서 앞다투어 나오고 있는 시점을 맞아, 우리가 어떻게 이들을 활용할 수 있는지 알아보면 좋을 시점이 된 것 같다.

 

반응형
반응형

요즘 LLM 인공지능으로 세상이 또 하나의 변화에 직면한 것으로 보인다. 
그 중에서 가장 앞선 곳이 OpenAI라고 할 수 있다. 

AI의 구조에 대해 좀 더 빠르게 알아보는 것이 필요한 시점이라 생각한다.

1. AI 프로젝트 시작하기

요즘 ChatGPT로 촉발된 LLM(Large Language Model)이 폭발적으로 성장하고 있다.

이로 인해 많은 사람들이 인공지능에 대해 정말 많은 관심을 갖게 되었다.

파이썬은 그 여정에 있어서 강력한 동반자가 될 것이라고 생각한다.
왜냐하면 대부분의 인공지능 라이브러리를 파이썬에서 지원하고 있고, 배우기 쉽고 사용하기 편한 파이썬 언어가 인공지능 분야에서는 대세라고 생각하기 때문이다.

 

머신 러닝 라이브러리 소개

Scikit-Learn

Scikit-Learn은 사용하기 매우 쉽지만, 많은 머신 러닝 알고리즘을 효율적으로 구현하므로 머신 러닝을 배우기에 좋은 출발점이 된다.
이것은 2007년 David Cournapeau에 의해 만들어졌으며, 현재는 프랑스 컴퓨터 과학 및 자동화 연구소(Inria)의 연구팀이 주도적으로 이끌고 있다.

TensorFlow

TensorFlow는 분산 수치 계산을 위한 좀 더 복잡한 라이브러리다.
이것은 수백 개의 멀티-GPU(그래픽 처리 장치) 서버에 걸쳐 계산을 분산시켜 매우 큰 신경망을 효율적으로 훈련하고 실행할 수 있게 만들어준다.
TensorFlow(TF)는 Google에서 만들어졌으며, 많은 대규모 머신 러닝 애플리케이션을 지원한다.
2015년 11월에 오픈 소스로 공개되었으며, 2.0 버전은 2019년 9월에 출시되었다.

Keras

Keras는 신경망을 훈련하고 실행하기 매우 간단하게 만드는 고수준의 딥러닝 API이다.
Keras는 TensorFlow와 함께 번들로 제공되며, 모든 집약적인 계산을 위해 TensorFlow에 의존한다.

 

데이터 수집 및 처리

모든 AI 프로젝트의 시작점은 데이터 수집이다.
파이썬은 데이터 수집과 처리를 위한 훌륭한 라이브러리들을 제공한다.
pandas는 데이터 분석을 위한 필수 라이브러리이며, numpy는 수치 계산을 위한 강력한 도구다.
scikit-learn은 데이터 전처리와 모델링을 위한 간편한 기능들을 제공한다.
이 라이브러리들을 사용하여 데이터를 수집하고, 정제하며, 유용한 특성을 추출하는 작업을 진행한다.

첫 번째 머신러닝 모델 구축

데이터가 준비되었다면, 간단한 머신러닝 모델을 구축할 차례다.
scikit-learn의 분류기나 회귀 모델을 사용해보자.
예를 들어, 붓꽃(Iris) 데이터 세트를 사용하여 각 붓꽃의 종류를 분류하는 모델을 만들 수 있다.
이 과정에서 모델을 훈련시키고, 검증하며, 성능을 평가하는 방법을 배울 수 있다.

 

2. 파이썬으로 복잡한 AI 문제 해결하기

딥러닝 입문

TensorFlow나 PyTorch와 같은 프레임워크를 사용하여 딥러닝 모델을 구축하는 방법을 배워보자.
이러한 프레임워크는 복잡한 신경망을 쉽게 설계하고 학습시킬 수 있게 해준다.
간단한 이미지 분류부터 시작하여 점차 복잡한 문제로 나아가자.

사례 연구

실제로 파이썬을 사용하여 해결된 복잡한 AI 문제들을 살펴보는 것도 매우 유익하다.
Google의 AlphaGo부터 자율 주행 자동차에 이르기까지, 파이썬은 다양한 혁신적인 프로젝트에 사용되었다.

3. 파이썬 AI 리소스와 커뮤니티

학습 리소스

Coursera’나 ‘edX’와 같은 온라인 학습 플랫폼에서는 파이썬과 AI 관련 강좌를 제공한다.
또한 ‘GitHub’에는 수많은 오픈소스 프로젝트가 있어 실제 코드를 살펴보고 학습할 수 있는 기회를 제공한다.

커뮤니티 참여

Stack Overflow’, ‘Reddit’, ‘Kaggle’과 같은 플랫폼에서는 전 세계의 개발자들과 지식을 공유하고 문제를 해결할 수 있다.
또한, 파이썬과 AI 관련 컨퍼런스나 워크샵에 참여하여 네트워킹을 할 수 있다.

최신 동향 유지

AI 분야는 빠르게 발전하고 있다.
arXiv’, ‘Google Scholar’ 등의 리소스를 통해 최신 연구를 접하고, ‘Medium’이나 ‘Towards Data Science’와 같은 블로그를 통해 새로운 트렌드를 확인하도록 하자.

반응형
반응형

PyPDF2 맛보기

가끔 pdf파일에서 텍스트를 추출할 일이 있다.
그때 활용할 수 있도록 Python언어로 pdf파일에서 텍스트를 읽어오는 방법에 대해 예제 코드와 함께 알아본다.

 

1. 필요한 라이브러리

PDF파일을 읽어들이기 위해 PyPDF2 라이브러리를 설치한다.

!pip install PyPDF2

2. 예시 코드

공개된 사이트에서 PDF파일을 갖고 온다. 
이번에는 국토교통부 홈에 있는 보도자료에 바로 올라온 '주택건설사업 인허가 속도 높인다'라는 제목의 파일을 읽어들일 것이다. 쉽게 설명하기 위해 주 디렉토리에 'sample.pdf'라는 파일명으로 다운받아 저장했다.

# 라이브러리를 읽어들인다.
from PyPDF2 import PdfReader

# PDF파일을 읽어서 reader라는 변수에 저장한다.
reader = PdfReader("sample.pdf")

파일을 읽어들인 후에는 전체 페이지가 몇 페이지인지 알아보고 전체 페이지에서 다음과 같이 텍스트를 추출하도록 한다.

반응형
pages = reader.pages

text = ""

for page in pages:
    sub = page.extract_text()
    text += sub
    
# 텍스트를 전부 잘 추출했는지 확인한다.    
print(text)

위 예시 파일에서 텍스트를 잘 읽어들인 것을 확인할 수 있다.

PyPDF의 좀 더 복잡한 기능은 '사용자 가이드'를 참고하면 많은 도움이 될 것이다.

 

반응형
반응형

FRED에서 제공하는 API를 통해 데이터를 받아 사용하면 FRED의 데이터 소스에 변화가 있더라도 바로 바로 대응이 가능하겠지만, 그 정도로 데이터를 보는 사람이라면 이 정보가 필요없을 것이다.

나처럼 쉽게 경기선행 지표를 확인하고자 하는 사람들이 참고했으면 좋겠다.

먼저 관련 라이브러리를 설정하고 읽어들인다.

# matplotlib 설정(그래프 그리기)
import matplotlib.pyplot as plt

plt.rcParams['axes.grid'] = True
plt.rcParams['figure.figsize'] = (12,6)
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.formatter.limits'] = -10000, 10000

import FinanceDataReader as fdr

그럼, 이제부터 나스닥지수의 흐름을 보는 데 도움이 되는 대표적인 선행 지표들을 함께 살펴보도록 한다.

1. 주간 실업수당 청구건수(ICSA)

경기가 나빠지는 경우 후행지표로 동작하지만, 경기가 좋아지는 경우 선행 지표로 활용할 수 있다고 한다. 연속 실업수당 청구건수는 CCSA이다.

df = fdr.DataReader('FRED:NASDAQCOM,ICSA','2010-01-01')
ax = df.plot(secondary_y='NASDAQCOM')
ax = ax.axvspan('2019-12-01', '2023-10-25', color='gray', alpha=0.2)

팬데믹 기간에 폭발적으로 증가하다가 최근에는 과거 평균으로 돌아간 상태이다.

2. 소비자 심리지수(UMCSENT)

UMCSENT는 미시건대 소비자 심리지수 추이로 소비자 설문 결과를 수치화한 값이다. 100을 기준으로 100이상이면 긍정적이고 100이하면 부정적으로 본다.

df = fdr.DataReader('FRED:NASDAQCOM,UMCSENT','2010-01-01')
ax = df.plot(secondary_y='NASDAQCOM')
ax = ax.axvspan('2019-12-01', '2023-10-25', color='gray', alpha=0.2)

팬데믹 때 급락한 후 일시 회복하다가 재차 하락한 후 조금씩 회복하고 있다. 아직 70대 수준으로 부정적인 상태이다.

반응형

3. 주택 판매지수(HSN1F)

주택 판매지수는 주택시장 활성화 정도를 나타내는 지수이다. 주가 하락에 앞서 주택 판매지수가 선행하는 특징을 보인다.

df = fdr.DataReader('FRED:NASDAQCOM,HSN1F','2015-01-01')
ax = df.plot(secondary_y='NASDAQCOM')
ax = ax.axvspan('2019-12-01', '2023-10-25', color='gray', alpha=0.2)

2020년부터 현재까지 나스닥지수와 주택 판매지수 추이를 보면, 2020년에는 주택 판매지수가 더 높게 나오다가 2021년 주택 판매지수가 먼저 하락한 것을 볼 수 있다. 그 후 2022년부터 나스닥지수도 하락하고 있다. 

4. 실업률(UNRATE)

실업률은 불황에는 후행지표, 경기회복에는 동행지표로 동작한다고 한다.

df = fdr.DataReader('FRED:NASDAQCOM,UNRATE','2015-01-01')
ax = df.plot(secondary_y='NASDAQCOM')
ax = ax.axvspan('2019-12-01', '2023-10-25', color='gray', alpha=0.2)

실업률은 팬데믹 때 급격히 증가했다가 지속적으로 낮아져 평년 수준으로 돌아와 있는 상태이다.

5. M2 통화량(M2SL)

M2 통화량은 시중에 돈이 얼마나 많이 풀려있는지 보여주는 유동성 지표이다.

df = fdr.DataReader('FRED:NASDAQCOM,M2SL','2015-01-01')
ax = df.plot(secondary_y='NASDAQCOM')
ax = ax.axvspan('2019-12-01', '2023-10-25', color='gray', alpha=0.2)

6. 하이일드 채권 스프레드(BAMLH0A0HYM2)

하이일드 채권은 낮은 신용등급 회사에 투자하는 고위험, 고수익 채권이다. 여기서 스프레드는 국채 수익률과의 차이를 말한다. 불황일수록 하이일드 채권 스프레드는 더 커진다.

df = fdr.DataReader('FRED:NASDAQCOM,BAMLH0A0HYM2','2015-01-01')
ax = df.plot(secondary_y='NASDAQCOM')
ax = ax.axvspan('2019-12-01', '2023-10-25', color='gray', alpha=0.2)

참고 사이트)

FinanceDataReader 깃헙

 

Jupyter Notebook Viewer

선행지표란 경기가 좋아질 것인지 혹은 나빠질 것인지 앞서 반응하는 지표를 말합니다. 대표적인 선행 지표들이 무엇이 있는지 그리고, 이 선행지표들을 살펴봄으로 향후 주식 시장의 흐름을

nbviewer.org

FRED : https://fred.stlouisfed.org/

 

Federal Reserve Economic Data | FRED | St. Louis Fed

Welcome to FRED, your trusted source for economic data since 1991. Download, graph, and track 823,000 US and international time series from 114 sources. Welcome to FRED, your trusted source for economic data since 1991. Download, graph, and track 823,000 U

fred.stlouisfed.org

 

반응형
반응형

웹스크래핑은 인터넷에서 수집할 수 있는 비정형화된 데이터를 다루는 기술이라고 할 수 있다.
비정형화된 데이터는 데이터베이스에 저장될 수 있는 템플릿에 맞는 데이터 모델이 아니라, 다양항 포멧으로 된 데이터라고 보면 된다.
웹에서 얻을 수 있는 텍스트, 이미지, 오디오, 비디오 또는 다른 형태의 조합들을 모두 말한다고 할 수 있다. 
웹스크래핑은 인터넷으로부터 분석하거나 연구를 수행하기 위해  방대한 데이터들을 수집하고 추출할 수 있도록 해주는 매우 유용한 기술이다.
데이터 사이언티스트 또는 엔지니어들이 데이터를 모으거나, 효과적인 의사결정을 위해 비즈니스에 도움이 되는 정보들을 추출할 수 있도록 해준다. 

웹 스크래핑 프로세스 flow

웹 스크래핑은 언제나 다이나믹하다고 생각한다.
왜냐하면 많은 웹사이트들이 계속 업데이트되고, 새로운 기술을 도입해서 변화하고 있기 때문에, 동일한 웹 스크래핑으로 원하는 데이터를 얻지 못할 수 있기 때문이다. 
또한, 개인정보 보호 등 윤리적 이슈로 인해 웹 스크래핑을 하지 못하도록 막는 웹사이트도 늘어나고 있고, 그러한 흐름에 따라 웹 스크래핑이 어려워지고 있다고 할 수 있다.

파이썬에서 웹 스크래핑에 주로 사용하는 라이브러리로 BeautifulSoup, Requests, Urllib, Selenium과 같은 라이브러리가 있다.
좀 더 쉽게 웹 스크래핑을 할 수 있도록 도와주는 Scrapy와 같은 프레임워크도 존재한다. 

보통 자바스크립트를 사용하지 않는 일반적인 HTML사이트는 BeautifulSoup+requests 또는 Scrapy를 사용해 스크래핑을 할 수 있다.
하지만, 우리가 스크래핑하고 싶어하는 많은 사이트들은 자바스크립트를 거의 사용한다고 보면 된다. 그래서, 이런 사이트들은 selenium같은 툴이 더 유용하게 사용되고 있다.

Web Opinion Mining

Web Opinion Mining은 유저들에게 더 나은 의사결정을 할 수 있도록 의미있는 인사이트를 제공하기 위해 다양한 웹 소스들로부터 데이터를 분석해서 의견들을  전달하는 것을 말한다. 
컴퓨터 모델링 기법을 통한 인간의 감정과 그것의 분석에 대한 연구는 감정 분석 또는 Opinion Mining이라고 한다. 우리가 SNS의 글들을 통해 감정 분석을 많이 하는데, 이때 사용되는 것이 Natural Language Processing(NLP) 기술이다. 

 

반응형

'파이썬으로 할 수 있는 일 > 크롤링' 카테고리의 다른 글

Scrapy(스크래피)란?  (0) 2017.03.23
반응형

알고리즘 : 어떤 문제를 풀기 위한 절차나 방법, 구체적으로 어떤 문제가 주어진 '입력' 정보를 원하는 '출력(답)' 정보로 만드는 일련의 과정을 말함.

1부터 n까지 연속한 정수의 합을 구하는 알고리즘1
1부터 n까지 숫자를 차례로 더하는 방법을 사용함

def sum_n(n) :
    s = 0 # 합을 계산할 변수
    for i in range(1, n+1): # 1부터 n까지 반복(n+1은 제외)
        s = s + i
    return s
sum_n(10)

55

1부터 n까지 연속한 정수의 합을 구하는 알고리즘2
수학자 가우스의 계산 방법을 사용함

def sum_n(n):
    return n * (n+1)//2 # 슬래시 두개는 정수 나눗셈을 의미

알고리즘 1과 2를 비교했을 때, 숫자가 커지면 커질수록 알고리즘2가 더 효과적으로 동작한다는 것을 알 수 있다. 
동일한 문제를 해결하는 여러 알고리즘 중 어떤 알고리즘이 더 좋은지 판단하는 것을 '알고리즘 분석'이라고 한다.

1부터 N까지 연속한 정수의 곱을 구하는 알고리즘1

정수의 합을 구하는 알고리즘 1을 고쳐서 작성한다. 1부터 N까지의 곱은 팩토리얼(factorial)이라고 한다. 팩토리얼은 숫자 뒤에 느낌표를 붙여 표기하며 1부터 n까지 연속한 숫자를 차례로 곱한 값을 말한다. '계승'이라고도 한다.

def fact(n):
    f = 1 # 곱을 계산할 변수, 초기값은 1
    for i in range(1, n+1):
        f = f * i
    return f

1부터 N까지 연속한 정수의 곱을 구하는 알고리즘2

재귀 호출(recursion)은 어떤 함수 안에서 자기 자신을 부르는 것을 말한다. 팩토리얼을 재귀 호출로 표현하면, n! = n * (n-1)!로 표현할 수 있다.

def fact(n):
    if n <=1:
        return 1
    return n * fact(n-1)

재귀 호출에는 종료 조건이 꼭 필요하다. 종료 조건이 없으면 RecursionError 또는 Stack Olverflow 등의 에러가 발생할 수 있다.

두 자연수 a와 b의 최대공약수를 구하는 알고리즘1

최대공약수는 두 개 이상의 정수의 공통약수에서 가장 큰 값을 의미한다. 두 수의 약수 중에서, 공통된 것을 찾아, 그 값 중 최댓값을 찾는 것이다. 

def gcd(a, b):
    i = min(a, b) # 두 수 중에서 최솟값을 구하는 함수
    while True:
        if a % i == 0 b % i == 0:
            return i
        i = i -1 # i를 1만큼 감소시킨다

 

두 자연수 a와 b의 최대공약수를 구하는 알고리즘2

수학자 유클리드의 유클리드 알고리즘을 사용해서 문제를 풀 수 있다. 이때 사용하는 것이 재귀 호출이다. 

def gcd(a, b):
    if b == 0: # 종료 조건
        return a
    return gcd(b, a % b) #  좀 더 작은 값으로 자기자신을 호출

재귀 호출은 처음 사용할 때는 혼란스러울 수 있지만, 한번 익혀두면 여러가지 문제를 아주 단순하게 풀 수 있는 강력한 무기가 될 수 있다.

 

위에서 알아본 알고리즘들을 보면, 일련의 순서에 따라 함수를 작성하는 것보다 관련 알고리즘을 사용하는 것이 매우 간단하고 효율성을 높이는 것을 알 수 있다.

가장 핵심적인 알고리즘을 숙지하고 있는 것이 프로그램을 작성하는데 한단계 높은 방법을 제시한다는 것을 알고 있도록 하자.

<참고> 모두의 알고리즘 with  파이썬, 이승찬 저

반응형
반응형

Timestamp

Timestamp()는 시간의 단일 시점을 나타낸다. 파이썬 datetime.datetime 객체와 동일한 기능을 한다. date 또는 datetime  스트링과 함께 pd.Timestamp() 함수를 사용해  Timestamp 객체를 만들 수 있다.

import pandas as pd
timestamp_ex = pd.Timestamp('2023-09-10 12:00:00')

Period

Period()는 하루, 한달, 또는 일년과 같이 시간의 일정 기간을 나타낸다. date 또는 datetime  스트링과 빈도(freq)와 함께 pd.Period() 함수를 사용해  Period 객체를 만들 수 있다.

period_ex = pd.Period('2023-10', freq='M')

Timedelta

Timedelta()는 두 날짜 또는 시간들의 차이를 나타낸다. 파이썬 datetime.datetime 객체와 동일한 기능을 한다. 기간 스트링과 함께 pd.Timedelta() 함수를 사용해 Timedelta 객체를 만들 수 있다.

timedelta_ex = pd.Timedelta('1 day')

resample

resample()은 datetime index를 가지고 원하는 주기로 변환하거나 분석할 수 있다. resample()은 groupby 와 유사하게 사용할 수 있다.  데이터의 index가 datetime 같은 index가 아니라면, 이 메서드를 적용하기 전에 set_index()를 사용해, datetimeIndex를 먼저 설정해야 한다.

resample_ex = pd.resample('M').max()

shift

shift()는 데이터를 이동시킬 때 사용한다. 인수로 n을 줄 때 전체 데이터가 n행씩 뒤로 이동한다.
주식 데이터를 다룰 때 많이 사용하는데, 일간, 월간 변동률 등을 구할 때 사용한다. 다음은 일간 변동률을 구하는 것을 보여준다.

sec_dpc = (sec['Close'] / sec['Close'].shift(1) - 1) * 100 # 'Close'는 종가 필드를 나타냄

rolling

rolling()은 시리즈에서 window 크기에 해당하는 개수만큼 데이터를 추출하여 집계 함수에 해당하는 연산을 실시한다. 집계 함수로는 max(), mean(), min()을 사용할 수 있다. min_periods를 지정하면 데이터 개수가 윈도우 크기에 못미치더라도 mini_periods로 지정한 개수만 만족하면 연산을 수행한다.

kospi = pdr.get_data_yahoo('^KS11', '2023-10-04') # 주식 일별 데이터를 갖고 있다고 가정한다.

window = 252
peak = kospi['Adj Close'].rolling(window, min_periods=1).max()

 

Kaggle DataSets API

캐글에 있는 데이터셋을 가지고 연습해 보도록 한다.
캐글에서 데이터셋을 쉽게 가져오기 위해서 kaggle API를 설치하는 것이 좋다.

!pip install kaggle #kaggle 라이브러리를 설치

캐글 홈페이지에 로그인 후 본인 계정에서 API(kaggle.json) 파일을 다운로드한다.
윈도우의 경우에는 C 드라이브에서 '사용자(User)' >'컴퓨터명;>.kaggle폴더에 다운로드한 API파일을 이동시킨다.

이제 캐글 데이터셋을 주피터 노트북에서 쉽게 사용할 수 있게 되었다.
다운로드 받고자 하는 데이터셋을 캐글에서 검색한 후, API 주소를 클립보드에 복사한다(버튼을 누르도록 되어 있다).

!kaggle datasets list -s store-sales-time-series-forecasting

kaggle datasets 명령과 list, -s 옵션, 복사한 API 주소를 함께 입력하면 해당 데이터셋의 리스트를 다음과 같이 볼 수 있다.

!kaggle datasets download -w aslanahmedov/walmart-sales-forecast

분석하고 싶은 데이터셋을 선택해서 다운로드할 수 있다.
-w옵션은 현재 폴더에 저장하는 옵션이고,--unzip 옵션을 넣어 압축을 해제한 상태에서 다운로드할 수도 있다.

 

반응형

+ Recent posts