import pandas as pd
import numpy as np
import re
import nltk
nltk.download('omw-1.4')
nltk.download('wordnet')
from nltk.corpus import stopwords
from nltk.tokenize import word\_tokenize
from nltk.stem import WordNetLemmatizer
from sklearn.feature\_extraction.text import TfidfVectorizer
from sklearn.model\_selection import KFold
from sklearn.utils.class\_weight import compute\_class\_weight
from sklearn.svm import SVC
from sklearn.metrics import f1\_score
from tqdm import tqdm

# Set seed value
np.random.seed(42)

# Load data
train\_df = pd.read\_csv('train.csv')
test\_df = pd.read\_csv('test.csv')

# Compute class weights
class\_weights = compute\_class\_weight(class\_weight='balanced', classes=np.unique(train\_df['label']), y=train\_df['label'])

# Define text pre-processing functions
def preprocess\_text(text):
 # Remove non-alphabetic characters
 text = re.sub(r'[^a-zA-Z\s]', '', text)
 # Convert to lowercase
 text = text.lower()
 # Tokenize
 tokens = word\_tokenize(text)
 # Remove stopwords
 tokens = [token for token in tokens if token not in stopwords.words('english')]
 # Lemmatize
 lemmatizer = WordNetLemmatizer()
 tokens = [lemmatizer.lemmatize(token) for token in tokens]
 # Join tokens back into a string
 text = ' '.join(tokens)
 return text

# Preprocess train and test text data with progress bar
with tqdm(total=len(train\_df), desc='Preprocessing train text') as pbar:
 train\_df['text'] = train\_df['text'].apply(lambda x: preprocess\_text(x))
 pbar.update(len(train\_df))

with tqdm(total=len(test\_df), desc='Preprocessing test text') as pbar:
 test\_df['text'] = test\_df['text'].apply(lambda x: preprocess\_text(x))
 pbar.update(len(test\_df))

# Define KFold cross-validation with progress bar
kf = KFold(n\_splits=5, shuffle=True, random\_state=42)
total\_iterations = kf.get\_n\_splits(train\_df) \* 2 # 2 iterations per fold (train and test)
with tqdm(total=total\_iterations, desc='KFold cross-validation') as pbar:
 f1\_scores = []
 for fold, (train\_index, val\_index) in enumerate(kf.split(train\_df)):
 X\_train, y\_train = train\_df.iloc[train\_index]['text'], train\_df.iloc[train\_index]['label']
 X\_val, y\_val = train\_df.iloc[val\_index]['text'], train\_df.iloc[val\_index]['label']

 tfidf = TfidfVectorizer()
 X\_train\_tfidf = tfidf.fit\_transform(X\_train)
 X\_val\_tfidf = tfidf.transform(X\_val)

 svm = SVC(class\_weight={i: w for i, w in enumerate(class\_weights)}, kernel='linear', random\_state=42)
 svm.fit(X\_train\_tfidf, y\_train)

 y\_val\_pred = svm.predict(X\_val\_tfidf)
 f1 = f1\_score(y\_val, y\_val\_pred, average='weighted')
 f1\_scores.append(f1)

 X\_test\_tfidf = tfidf.transform(test\_df['text'])
 y\_test\_pred = svm.predict(X\_test\_tfidf)
 test\_df[f'fold{fold+1}'] = y\_test\_pred
 
 pbar.update() # increment progress bar for train
 
 X\_train\_tfidf = None # free memory
 X\_val\_tfidf = None # free memory
 
 # repeat for test
 X\_test\_tfidf = tfidf.transform(test\_df['text'])
 y\_test\_pred = svm.predict(X\_test\_tfidf)
 test\_df[f'fold{fold+1}'] = y\_test\_pred
 
 pbar.update() # increment progress bar for test
 pbar.set\_postfix({'fold': fold+1, 'F1 score': f1})
 
 pbar.set\_description(f'Average F1 score: {np.mean(f1\_scores):.4f}')

test\_df['label'] = test\_df[[f'fold{fold+1}' for fold in range(5)]].mode(axis=1)[0]
test\_df[['id', 'label']].to\_csv('./0316\_test.csv', index=False)
print("Ensemble predictions completed.")

Please let this code progress bar proceed in real time.
임포트 판다로 PDnumpy를 np로 임포트import reimport nltknltk.download('omw-1.4')nltk.download('wordnet')nltk.corpus에서 중지어 가져오기from nltk.tokenize import word\_tokenizenltk.stem에서 WordNetLemmatizer를 가져옵니다.sklearn.feature\_extraction.text에서 TfidfVectorizer를 가져옵니다.sklearn.model\_selection에서 KFold를 가져옵니다.sklearn.utils.class\_weight에서 compute\_class\_weight를 가져옵니다.sklearn.svm에서 SVC를 가져옵니다.sklearn.metrics에서 F1\_score 가져오기tqdm에서 tqdm 가져오기# 시드 값 설정np.random.seed(42)# 데이터 로드train\_df = pd.read\_csv('train.csv')test\_df = pd.read\_csv('test.csv')# 클래스 가중치 계산class\_weights = compute\_class\_weight(class\_weight='balanced', classes=np.unique(train\_df['label']), y=train\_df['label'])# 텍스트 전처리 함수 정의def preprocess\_text(text): # 알파벳이 아닌 문자 제거 text = re.sub(r'[^a-zA-Z\s]', '', text) # 소문자로 변환 text = text.lower() # 토큰화 tokens = word\_tokenize(text) # 중지어 제거 토큰 = [토큰이 stopwords.words('english')에 없는 경우 토큰의 토큰에 대한 토큰] # 렘매타이저 lemmatizer = WordNetLemmatizer() 토큰 = [lemmatizer.lemmatize(token) for token in tokens] # 토큰을 다시 결합합니다. # 토큰을 다시 문자열로 조인 text = ' '.join(tokens) 텍스트 반환# 진행률 표시줄을 사용하여 훈련 및 테스트 텍스트 데이터 전처리tqdm(total=len(train\_df), desc='전처리 훈련 텍스트')를 pbar로 사용합니다: train\_df['text'] = train\_df['text'].apply(lambda x: preprocess\_text(x)) pbar.update(len(train\_df))tqdm(total=len(test\_df), desc='전처리 테스트 텍스트')를 pbar로 사용합니다: test\_df['text'] = test\_df['text'].apply(lambda x: preprocess\_text(x)) pbar.update(len(test\_df))# 진행률 표시줄로 KFold 교차 검증 정의하기kf = KFold(n\_splits=5, shuffle=True, random\_state=42)총\_이터레이션 = kf.get\_n\_splits(train\_df) \* 2 # 폴드당 2회 반복(훈련 및 테스트)tqdm(total=total\_iterations, desc='KFold 교차 검증')을 pbar로 사용합니다: F1\_SCORES = [] for fold, (train\_index, val\_index) in enumerate(kf.split(train\_df)): X\_train, y\_train = train\_df.iloc[train\_index]['text'], train\_df.iloc[train\_index]['label'] X\_val, y\_val = train\_df.iloc[val\_index]['text'], train\_df.iloc[val\_index]['label'] tfidf = Tfidf벡터라이저() X\_train\_tfidf = tfidf.fit\_transform(X\_train) X\_val\_tfidf = tfidf.transform(X\_val) svm = SVC(class\_weight={i: w for i, w in enumerate(class\_weights)}, kernel='linear', random\_state=42) svm.fit(X\_train\_tfidf, y\_train) y\_val\_pred = svm.predict(X\_val\_tfidf) F1 = F1\_Score(Y\_VAL, Y\_VAL\_Pred, AVE 평균='가중치') f1\_scores.append(f1) X\_test\_tfidf = tfidf.transform(test\_df['text']) y\_test\_pred = svm.predict(X\_test\_tfidf) test\_df[f'fold{fold+1}'] = y\_test\_pred  pbar.update() # 열차에 대한 진행률 표시줄 증가  X\_train\_tfidf = None # 메모리 확보 X\_val\_tfidf = None # 메모리 사용 가능  # 테스트 반복 X\_test\_tfidf = tfidf.transform(test\_df['text']) y\_test\_pred = svm.predict(X\_test\_tfidf) test\_df[f'fold{fold+1}'] = y\_test\_pred  pbar.update() # 테스트 진행률 표시줄 증가 pbar.set\_postfix({'fold': fold+1, 'F1 score': f1})  pbar.set\_description(f'평균 F1 점수: {np.mean(f1\_scores):.4f}')test\_df['label'] = test\_df[[f'fold{fold+1}' for fold in range(5)]].mode(axis=1)[0]test\_df[[['id', 'label']].to\_csv('./0316\_test.csv', index=False)print("앙상블 예측 완료.")이 코드 진행률 표시줄은 실시간으로 진행됩니다.