[GPTers 챌린지 - 8기 부트캠프] 대화 내용을 txt 형식으로 저장한 파일을 가지고 "#인증" 횟수를 카운팅하는 파이썬 프로그램을 AI의 도움으로 짜 보았습니다.
원래 ChatGPT로 할 생각이였는데, 오늘(11/22) 오전 ChatGPT가 아픈 관계로 부득이하게 Edge의 Copilot을 이용하게 되었는데, 결과적으로 너무나 편하게 작업을 한 듯 합니다.
먼저, 작업 환경은 다음과 같습니다.
왼쪽 노트북 : Google CoLab / 오른쪽 모니터 : Edge(+ Copilot)
Edge 화면 : 대화 내용 txt 파일 / Copilot
Copilot 모드 : "보다 정밀한 모드"
AI의 도움으로 문제를 해결한다는 것을 목적으로 하였기 때문에, 가급적이면 코딩을 잘 모른다라는 느낌으로 하나 하나 진행을 하였습니다. (“자녀와 함께 AI”라는 부트캠프의 컨셉에 맞게)
[다운 받은 대화 내용 txt 파일 형태]
...
...
GPT에게 SNS 발행에 필요한 해시태그를 나열해달라고 했습니다
[닉네임] [23:58] 사진
[닉네임] [23:58] 사진 2장
[닉네임] [23:58] #인증
과거에 산 룰루레몬 여름재질 조거 사이즈 기반으로 겨울재질 조거 사이즈 추천을 gpt 유료, 무료에게 각각 물어봤는데 이건 유료보다 무료가 오히려 추천을 잘하는 것 같은..
[닉네임] [23:59] #인증
생성AI의 발전으로 인한 유망직업과 위협받는 직업
--------------- 2023년 11월 21일 화요일 ---------------
[닉네임] [00:00] 사진
[닉네임] [00:00] #인증
급하게 지피티로 질문하나 해봅니다 ㅠ
[닉네임] [00:00] 하지만 늦었네요 ㅎㅎ
배움이님이 들어왔습니다.
[닉네임] [04:14] #인증
...
...[edge에 txt 파일을 띄운 후 Copilot과의 작업 시작]
Copilot한테 할 수 있는지 확인 —> 1번에 바로 기본 틀 완성!!!
** 질문
이 문서에서 아이디별로 "#인증"이라는 글을 몇 번 남겼는지를 카운팅하고 싶은데, 이걸 파이썬으로 코딩해 줄 수 있겠어 ?** 답변
네, 파이썬을 사용하여 특정 텍스트를 카운팅하는 코드를 작성할 수 있습니다. 아래는 간단한 예시입니다:
```python
# 필요한 라이브러리를 불러옵니다.
import re
# 문서를 문자열로 표현합니다.
# 이 부분은 실제 문서의 내용으로 대체해야 합니다.
document = """
user1: #인증
user2: #인증
user1: #인증
user3: #인증
"""
# 아이디와 '#인증'이 함께 있는 부분을 찾습니다.
matches = re.findall(r'(user\d+): #인증', document)
# 각 아이디별로 '#인증'이 몇 번 나왔는지 카운팅합니다.
counts = {}
for user in matches:
if user not in counts:
counts[user] = 0
counts[user] += 1
# 결과를 출력합니다.
for user, count in counts.items():
print(f'{user}: {count}')
```
이 코드는 문서 내에서 '#인증'이라는 글을 남긴 아이디를 찾아서, 각 아이디가 '#인증'을 몇 번 남겼는지 카운팅합니다. 'document' 변수에 실제 문서의 내용을 넣어주시면 됩니다. 이 코드는 아이디가 'user'로 시작하고 뒤에 숫자가 붙는 형태를 가정하고 작성되었습니다. 실제 아이디의 형태에 따라 정규 표현식을 적절히 수정해주셔야 합니다. 또한, 이 코드는 아이디와 '#인증' 사이에 콜론과 공백이 있는 것을 가정하고 있습니다. 실제 문서의 형태에 따라 이 부분도 적절히 수정해주시면 됩니다. 이 코드를 실행하면, 각 아이디가 '#인증'을 몇 번 남겼는지 출력해줍니다. 이 코드를 참고로 하여, 원하시는 작업을 수행하는 코드를 작성하실 수 있을 것입니다.“#인증” 부분의 구조 알려 줌.
** 질문
“#인증”이 있는 부분의 형식이 예를 들어, “[닉네임] [17:51] #인증“
이렇게 되었는데, 이걸 반영해 줘.** 답변
네, 그런 형식을 가진 문서에 대해 작동하는 코드를 아래에 제공드립니다:
```python
# 필요한 라이브러리를 불러옵니다.
import re
# 문서를 문자열로 표현합니다.
# 이 부분은 실제 문서의 내용으로 대체해야 합니다.
document = """
[소나짱(청강)] [17:51] #인증
[소나짱(청강)] [18:51] #인증
[청강짱(소나)] [19:51] #인증
"""
# 아이디와 '#인증'이 함께 있는 부분을 찾습니다.
matches = re.findall(r'\[(.+)\] \[\d+:\d+\] #인증', document)
# 각 아이디별로 '#인증'이 몇 번 나왔는지 카운팅합니다.
counts = {}
for user in matches:
if user not in counts:
counts[user] = 0
counts[user] += 1
# 결과를 출력합니다.
for user, count in counts.items():
print(f'{user}: {count}')
```
이 코드는 문서 내에서 '#인증'이라는 글을 남긴 아이디를 찾아서, 각 아이디가 '#인증'을 몇 번 남겼는지 카운팅합니다. 'document' 변수에 실제 문서의 내용을 넣어주시면 됩니다. 이 코드는 아이디가 대괄호 안에 있고, 그 뒤에 시간이 대괄호 안에 있는 것을 가정하고 작성되었습니다. 이 코드를 실행하면, 각 아이디가 '#인증'을 몇 번 남겼는지 출력해줍니다. 이 코드를 참고로 하여, 원하시는 작업을 수행하는 코드를 작성하실 수 있을 것입니다.** 출력 결과
소나짱(청강): 7
GPTers - 윤누리: 20
드론: 2
kuri: 15
박정기: 53
미또/제조/기획: 22
...
...
...결과 출력 업그레이드
** 질문
결과 출력하는 부분에 다음을 적용시켜 줘.
* 테이블 형태로 출력
* 컬럼은 : "아이디", "인증 개수"
* count를 내림차순으로 정렬** 출력 결과
아이디 인증 개수
---------------------------- -----------
박정기 53
GPTGPS ellie Kim 32
미또/제조/기획 22
DECK 22
GPTers - 윤누리 20
이른아침에 20
광밤 | 자녀와함께AI 19
키믄별 18
kuri 15
...
...
...날짜별 카운팅 / 출력
날짜별로 카운팅 해서 출력해 줘.
대화 내용 파일 입력 방식 변경
(txt 파일을 직접 입력 받는 방식으로 수정해 줘.)결과 출력 형식 고도화
출력하는 부분에서는 윤누리님의 올려 주신 양식을 캡처해서 이렇게 해 줘 라고 하니, 바로 알아 먹고 반영해 주었습니다. 최종 출력 결과
마지막 단계에서 일부 애로 사항이 있어서 CoLab에서 Jupiter Notebook으로 갈아 타기는 했지만, 테이블 형태로 출력하고 csv 파일로 저장하는 것 까지 잘 마무리하였습니다.
느낀 점
최종 결과물을 만들어 내는 데 한 시간 정도 시간이 걸린 듯 한데, 혼자 힘으로는 그 짧은 시간에 절대 하지 못했을 듯. (아니, 아예 시도 자체를 안 했을 거라고 생각합니다.)
다시금 AI의 힘은 대단하구나라는 것을 느꼈습니다. 대충 얘기해도 알아 듣고 처리하는 것도 그렇고, 결과물의 품질도 그렇고.. 특히나.. 결과를 만들어 내는 속도감은…
어제(11/21) CanRobot님의 수업이 도움이 되었습니다~ 감사합니다!!
앞으로 ChatGPT나 Copilot이라는 친구의 도움이 있다면 지금까지 생각하지 못한 여러 가지 일들을 과감히 시도해 볼 수 있을 듯 합니다.