ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • dd
    AI Study 2025. 7. 16. 21:40

    https://ruddy-eocursor-bfc.notion.site/232adce7255a808b8718e0d94c8247fd?source=copy_link

     

    증상 군집/분류 | Notion

    Made with Notion, the all-in-one connected workspace with publishing capabilities.

    ruddy-eocursor-bfc.notion.site

     

     

    토큰화

    띄어쓰기 기준 으로 토큰화 만들기

    corpus_tokenized = [
        ['나', '는', '밥', '을', '먹', '었', '다'],
        ['그녀', '는', '라면', '을', '먹', '었', '다']
    ]
    
    # 각 토큰 리스트를 띄어쓰기로 합치기
    corpus_joined = [' '.join(tokens) for tokens in corpus_tokenized]
    
    # TF-IDF 벡터화
    tfidf_matrix = vectorizer.fit_transform(corpus_joined)
    

    Tockenizer 대입

    def my_tokenizer(text):
        # 형태소 분석 결과를 리스트로 반환하는 함수
        # 예: mecab, konlpy 등 사용
        return 형태소_분리기(text)  # ['나', '는', '밥', '을', '먹', '었', '다']
    
    vectorizer = TfidfVectorizer(tokenizer=my_tokenizer, lowercase=False)
    tfidf_matrix = vectorizer.fit_transform(raw_text_list)
    
    

    문장을 TF-IDF 벡터화한 예시

    문장 "나는" "밥을" "먹었다" "그녀는" "라면을" "밥이" "최고야"

    나는 밥을 먹었다 1.0 1.2 1.1 0 0 0 0
    그녀는 라면을 먹었다 0 0 1.1 1.0 1.3 0 0
    밥이 최고야 0 0 0 0 0 1.4 1.5

    각 값은 문장과 단어의 TF-IDF 값

    TF-IDF 계산 코드

    from sklearn.feature_extraction.text import TfidfVectorizer
    
    corpus= ["나는 밥을 먹었다", "그녀는 라면을 먹었다", "밥이 최고야"]
    
    # TF-IDF 벡터라이저 생성 및 학습
    vectorizer = TfidfVectorizer(max_features=20000). # max 값을 알아서 조정
    tfidf_matrix = vectorizer.fit_transform(corpus)
    
    # 단어 목록 (벡터의 각 축 이름)
    print("단어 목록:", vectorizer.get_feature_names_out())
    
    # 문장별 벡터 출력
    print("TF-IDF 벡터 (array):")
    print(tfidf_matrix.toarray())
    
    
    • 조사 제외

    차원축소

    TruncatedSVD

    from sklearn.decomposition import TruncatedSVD
    
    svd = TruncatedSVD(n_components=100)
    X_reduced = svd.fit_transform(tfidf_matrix)
    

    PCA (밀집 행렬용)

    from sklearn.decomposition import PCA
    import numpy as np
    
    pca = PCA(n_components=10)  # 10차원으로 축소
    X_reduced = pca.fit_transform(tfidf_matrix)
    
    print(X_reduced.shape)  # (100, 10)
    

    코사인 유사도 거리

    $$ cosine\_distance(A, B) = 1 - \cfrac{A \cdot B}{\|A\| \|B\|} $$

    from sklearn.metrics.pairwise import cosine_similarity, cosine_distances
    
    # 코사인 유사도 행렬
    sim_matrix = cosine_similarity(tfidf_matrix)
    
    # 코사인 거리 행렬
    dist_matrix = cosine_distances(tfidf_matrix)
    
    # 문장과 corpus 사이의 유사도 계산
    sims = cosine_similarity(tfidf_matrix[i], tfidf_matrix)  # shape: (1, 3)
    

    Hierarchical Clustering (AgglomerativeClustering)

    from sklearn.cluster import AgglomerativeClustering
    
    agg = AgglomerativeClustering(n_clusters=50, linkage='ward')  # 세밀한 군집 수 가능
    labels = agg.fit_predict(X)
    

    HDBSCAN

    import hdbscan
    
    clusterer = hdbscan.HDBSCAN(min_cluster_size=10)
    labels = clusterer.fit_predict(X)
    

    'AI Study' 카테고리의 다른 글

    AutoEncoder  (0) 2022.03.24

    댓글

Designed by Tistory.