25-2-10 AI claude 정말 대박

in AVLE 코리아5 days ago

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)

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

Sort:  

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의 출현이 인터넷이 처음나왔을때보다 더 엄청난 변화와 혁신을 가져오는 듯 합니다

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

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

Coin Marketplace

STEEM 0.18
TRX 0.23
JST 0.033
BTC 97812.97
ETH 2727.87
SBD 0.43