파일이 많고 패턴을 찾기 어려움

자동화된 분석 도구와 스크립트 를 사용해 패턴을 추출하고 데이터를 이해해야함.


1. 간단한 샘플링

모든 파일을 한 번에 분석하기 보다는, 일부 파일 을 무작위로 샘플링하여 내용을 살펴보는 것이 좋음.

샘플링 코드

import os
import random

directory = "/path/to/md_files"
sample_files = random.sample(os.listdir(directory),5) # 무작위 5개 파일 선택

# 샘플 출력
for file_name in sample_files:
    with open(os.path.join(directory, file_name), "r", encoding="utf-8") as file:
        print(f"=== {file_name} ===")
        print(file.read(500)) # 첫 500자 출력
        print("\n")

2. 공통 패턴 찾기

샘플링한 데이터를 통해 자주 반복되는 형식을 파악함. 자주 등장하는 요소 를 자동으로 탐지하는 방법을 사용함.

예: 자주 등장하는 단어/구조 탐지

from collections import Counter
import re

# 모든 파일에서 단어 빈도수 찾기
word_counter = Counter()

for file_name in os.listdir(directory):
    with open(os.path.join(directory, file_name), "r", encoding="utf-8") as file:
        text = file.read()
        words = re.findall(r'\w+', text.lower()) # 단어만 추출
        word_counter.update(words)
        
# 가장 많이 등장한 20개 단어 출력
print(word_counter.most_common(20))

3. 구조적인 패턴 추출

Markdown 파일에서 특정 태그구조적인 패턴 을 분석하려면 정규 표현식을 사용함.

Markdown 헤더와 코드 블록 패턴 추출:

import re

# Markdown 헤더와 코드 블록 추출
pattern_header = r"^(#{1,6}\s*(.*)" # 헤더 패턴
pattern_code_block = r"```(.*?)```"

for file_name in os.listdir(directory):
    with open(os.path.join(directory, file_name), "r", encoding="utf-8") as file:
        text = file.read()
        headers = re.findall(patter_header, text, flags=re.MULTILINE)
        code_blocks = re.findall(pattern_code_block, text, flags=re.DOTALL)
        
        print(f"Headers in {file_name}: {headers}")
        print(f"Code blocks in {file_name}: {code_blocks}")

4. 텍스트 클러스터링을 통한 패턴 발견

데이터 수가 너무 많아 수동 분석이 어렵다면 클러스터링 알고리즘 으로 비슷한 내용을 자동으로 그룹화할 수 있음.

사용 방법:

  • TF-IDF : 파일의 텍스트 숫자를 벡터로 변환.

  • K-Means 클러스터링 : 비슷한 데이터를 자동으로 그룹화

예제 코드(TF-IDF + K-Means):

from sklearn.features_extraction.text import TfdfVectorizer
from sklearn.cluster import KMeans
import os

# 모든 파일 내용 읽기
texts = []
file_names = []

for file_name in os.listdir(directory):
    with open(os.path.join(directory, file_name), "r", encoding="utf-8") as file:
    file_names.append(file_name)
    
# TF-IDF 변환
vectorizer = TfidVectorizer(max_features=1000, stop_words="english")
X = vectorizer.fit_transform(texts)

# K-Means 클러스터링
num_clusters = 5
kmeans = KMeans(n_clusters=num_clusters, random_state=42)
kmeans.fit(X)

# 각 파일이 속한 클러스터 출력

5. 파일 요약 및 키워드 추출

많은 파일을 빠르게 분석하려면 텍스트 요약 또는 키워드 추출 기법을 사용하여 주요 내용을 파악할 수 있음.

Python 요약 예제(Sumy 라이브러리):

from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lsa import LsaSummarizer

# 텍스트 요약
for file_name in os.listdir(directory):
    with open(os.path.join(directory, file_name), "r", encoding="utf-8") as file:
        text = file.read()
        parser = PlaintextParser.from_string(text, Tokenizer("english"))
        summarizer = LsaSummarizer()
        summary = summarizer(parser.document, 3)  # 요약 문장 3개

        print(f"=== Summary for {file_name} ===")
        for sentence in summary:
            print(sentence)

6. 클라우드 서비스 활용

파일이 너무 많아 로컬에서 처리하기 어렵다면 클라우드 서비스를 활용해 작업할 수 있음.

  • Google Colab : 무료 GPU 및 대규모 데이터 처리 가능

  • Hugging Face Pipelines : 텍스트 요약, 키워드 추출 등

Last updated

Was this helpful?