25-2-10 AI claude 정말 대박

in hive-138689 •  last month 

claude에 스팀 블록체인에 올라온 글 중에서 맛집과 카페에 대한 글을 추출하고 그것을 지역별로 정리해달라고 했다. 그랬더니 다음과 같이 코드를 짜 주었다.

from beem import Steem
from beem.discussions import Query, Discussions
import re
import pandas as pd
from datetime import datetime, timedelta
from collections import defaultdict

def extract_detailed_location(text):
"""상세 위치 정보 추출"""
# 광역시/도 패턴
major_regions = {
'서울': '서울특별시',
'부산': '부산광역시',
'대구': '대구광역시',
'인천': '인천광역시',
'광주': '광주광역시',
'대전': '대전광역시',
'울산': '울산광역시',
'세종': '세종특별자치시',
'경기': '경기도',
'강원': '강원도',
'충북': '충청북도',
'충남': '충청남도',
'전북': '전라북도',
'전남': '전라남도',
'경북': '경상북도',
'경남': '경상남도',
'제주': '제주특별자치도'
}

location_info = {
    'major_region': None,  # 광역시/도
    'sub_region': None,    # 시/군/구
    'detail': None         # 상세주소
}

# 주소 패턴 매칭
address_pattern = r'(?:위치|주소)[:\s]*([가-힣0-9\s-]+)'
address_match = re.search(address_pattern, text)

if address_match:
    full_address = address_match.group(1)
    
    # 광역시/도 매칭
    for short_name, full_name in major_regions.items():
        if full_name in full_address or short_name in full_address:
            location_info['major_region'] = full_name
            break
    
    # 시/군/구 매칭
    sub_region_pattern = r'([가-힣]+(?:시|군|구))'
    sub_match = re.search(sub_region_pattern, full_address)
    if sub_match:
        location_info['sub_region'] = sub_match.group(1)
    
    # 상세주소
    location_info['detail'] = full_address

# 위치/주소 태그가 없는 경우 본문에서 지역명 찾기
if not location_info['major_region']:
    for short_name, full_name in major_regions.items():
        if full_name in text or short_name in text:
            location_info['major_region'] = full_name
            break

return location_info

def extract_restaurant_cafe_content(days_ago=7):
# Steem 인스턴스 생성
steem = Steem()

# 현재 시간으로부터 지정된 일수 전의 시간 계산
start_time = datetime.utcnow() - timedelta(days=days_ago)

# 한글 패턴 정규식
korean_pattern = re.compile('[가-힣]+')

# 식당/카페 관련 키워드
keywords = [
    '식당', '레스토랑', '맛집', '카페', '커피', 'cafe', '음식점', '식사', 
    '밥집', '디저트', '브런치', '메뉴', '주문', '음식', '요리',
    '커피숍', '베이커리', '디저트카페', '브런치카페', '식사류',
    '맛있', '먹', '마시', '배달', '포장'
]

# 키워드 패턴 생성
keyword_pattern = '|'.join(keywords)

# 결과를 저장할 리스트
food_posts = []

# 쿼리 설정
query = Query(limit=100, tag="")
discussions = Discussions()

# 게시물 조회
for post in discussions.get_discussions('created', query, limit=100):
    if post['created'] < start_time:
        continue
        
    title = post.get('title', '')
    body = post.get('body', '')
    
    if (korean_pattern.search(title) or korean_pattern.search(body)) and \
       (re.search(keyword_pattern, title.lower()) or re.search(keyword_pattern, body.lower())):
        
        # 위치 정보 추출
        location_info = extract_detailed_location(title + " " + body)
        
        food_posts.append({
            'major_region': location_info['major_region'] or '지역미상',
            'sub_region': location_info['sub_region'],
            'detail_location': location_info['detail'],
            'title': title,
            'author': post['author'],
            'created': post['created'],
            'url': f"https://steemit.com/@{post['author']}/{post['permlink']}",
            'tags': post.get('tags', []),
            'body_preview': body[:200] + '...' if len(body) > 200 else body,
            'is_review': is_review(title + " " + body)
        })

# DataFrame으로 변환
df = pd.DataFrame(food_posts)

# 지역별로 정렬
if not df.empty:
    df = df.sort_values(['major_region', 'sub_region', 'title'])

return df

def is_review(text):
"""리뷰 게시물인지 판단"""
review_keywords = ['후기', '리뷰', '방문', '먹어', '마시', '주문', '평가', '별점']
return any(keyword in text for keyword in review_keywords)

def save_to_csv(df, filename='regional_restaurant_cafe_posts.csv'):
"""결과를 CSV 파일로 저장"""
df.to_csv(filename, encoding='utf-8-sig', index=False)

def print_regional_summary(df):
"""지역별 게시물 수 요약 출력"""
print("\n=== 지역별 게시물 수 ===")
regional_counts = df['major_region'].value_counts()
for region, count in regional_counts.items():
print(f"{region}: {count}개")
print(f"총 게시물 수: {len(df)}개")

사용 예시

if name == "main":
# 최근 7일간의 식당/카페 관련 게시물 추출
food_data = extract_restaurant_cafe_content(days_ago=7)

# CSV 파일로 저장
save_to_csv(food_data)

# 지역별 통계 출력
print_regional_summary(food_data)

정말 대박이다. 이것을 바탕으로 한번 돌려보면서 오류만 수정하면 되지 않을까 한다.
엄청나다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

This post has been upvoted by @italygame witness curation trail


If you like our work and want to support us, please consider to approve our witness




CLICK HERE 👇

Come and visit Italy Community



AI의 출현이 인터넷이 처음나왔을때보다 더 엄청난 변화와 혁신을 가져오는 듯 합니다

멋져요. 예전에 맛집 포스팅 많았는데요. ㅎㅎ

앞으로 맛집 포스팅에 지역이나 주소 같은 정보까지 함께 기록해야 겠어요~