ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SKN Family AI 15기 7월 3주차 회고
    기록../SKN Family AI 15기 2025. 7. 29. 09:43

    LLM 이해하기

    LLM이란

    • 방대한 양의 텍스트 데이터를 학습하여 인간의 언어를 이해하고 생성할 수 있는 인공지능 모델

    NLP부터 이해하기

    • 자연어를 컴퓨터가 이해할 수 있도록 처리하는 인공지능의 한 분야
    • 자연어의 경우 시계열 데이터이기 때문에, RNN, LSTM등의 모델로 자연어 처리에 도전할 수 있다.
    • 감성 분석, 워드 클라우드 만들기로 자연어 전처리를 연습해보자

    단어 임베딩

    • 단어를 벡터(vector) 형태로 표현하는 방법
    • 자연어 처리에서 컴퓨터가 텍스트를 이해하고 처리할 수 있도록 단어를 숫자들의 배열로 변환하는 과정으로, 현대에는 원 핫 인코딩같은 희소 벡터를 사용하는 대신 밀집 벡터를 사용한다.
    • 또, 자연어에는 비슷한 뜻을 가지거나 서로 연관이 높은 단어들이 존재함 → 유사한 의미를 가진 단어들은 벡터 공간에서 가까운 위치에 분포하도록 학습(예시로, 사람과 사과보다는 사과와 과일이 더 가까울 것이다.)
    • 기존의 희소 벡터(예: 원-핫 벡터)와 달리, 워드 임베딩은 밀집 벡터를 사용 → 즉, 각 단어 벡터의 모든 차원 값이 0이 아닌 실수 값을 가지며, 차원 수도 상대적으로 작음.
    • 워드 임베딩을 생성하는 방법에는 Word2Vec, GloVe, FastText 등 다양한 기법들이 존재함

    뉴스 데이터를 크롤링 하고, 최빈값으로 워드 클라우드 만들기

    import streamlit as st
    from pymongo import MongoClient
    from wordcloud import WordCloud
    import matplotlib.pyplot as plt
    
    # MongoDB 연결
    # admin 계정에 접속
    client = MongoClient("mongodb://admin:admin@localhost:27017")
    db = client["news"]
    collection = db["word_cnt"]
    
    doc = collection.find_one()
    
    # 'result' 딕셔너리만 추출
    raw_freq = doc.get('result', {}) 
    cleaned_freq = {}
    
    # 숫자 값만 정리
    for word, count in raw_freq.items():
        if isinstance(count, int):  # 또는 float도 허용하려면 (int, float)
            cleaned_freq[word] = count
    
    # 워드클라우드 생성
    wc = WordCloud(
        font_path='/usr/share/fonts/truetype/nanum/NanumSquareRoundB.ttf',  # 👉 한글 폰트 경로
        background_color='white',
        width=800,
        height=600
    ).generate_from_frequencies(cleaned_freq)
    
    # Streamlit 시각화
    st.set_page_config(layout="wide")
    st.title("Word Cloud")
    
    fig, ax = plt.subplots(figsize=(10, 6))
    ax.imshow(wc, interpolation='bilinear')
    ax.axis('off')
    
    st.pyplot(fig)



    크롤링한 뉴스 데이터에서 Word2Vec을 사용하여 연관도 높은 단어 찾기

    github 링크

    Transformer

    • 논문 링크
    • 시퀀스 데이터에 혁명을 가져온 딥러닝 모델.
    • 기존의 RNN(순차적으로 입력을 기다려야함)과 다르게 병렬 처리가 가능하다는 장점이 있다.
    • 가장 큰 키포인트는 바로 쿼리, 키, 값을 이용한 어텐션 연산!

    • 어텐션 메커니즘은 쿼리(Query), 키(Key), 값(Value)이라는 세 가지 벡터를 사용함. 쿼리는 현재 처리해야 할 정보, 키는 입력 시퀀스의 각 요소에 대한 정보, 값은 실제 출력에 사용될 정보를 의미!
      • 트랜스포머 모델은 어텐션 연산을 통해 쿼리와 키 간의 유사도를 계산하여 어텐션 스코어를 얻고, 해당 입력 요소가 현재 쿼리에게 얼마나 영향을 미치는지 계산함!
Designed by Tistory.