ginipick commited on
Commit
ffb5b8d
·
verified ·
1 Parent(s): 12e6818

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -11
app.py CHANGED
@@ -119,29 +119,62 @@ def upload_parquet(file_path: str) -> Tuple[str, str, str]:
119
  def text_to_parquet(text: str) -> Tuple[str, str, str]:
120
  try:
121
  from io import StringIO
122
- # CSV 데이터를 StringIO를 통해 읽기
123
- csv_data = StringIO(text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  df = pd.read_csv(
125
- csv_data,
126
  sep=',',
127
- dtype=str,
128
- quoting=csv.QUOTE_ALL, # 모든 필드를 큰따옴표로 감싸는 것으로 처리
129
- escapechar='\\', # 이스케이프 문자 설정
130
- engine='python', # Python 엔진 사용
131
- header=None, # 첫 번째 행을 열 이름으로 사용하지 않음
132
- names=['id', 'text', 'label', 'metadata'] # 열 이름 지정
133
  )
 
134
  # 데이터 유형 최적화
135
  df = df.astype({'id': 'int32', 'text': 'string', 'label': 'string', 'metadata': 'string'})
 
136
  # Parquet 파일로 변환
137
  parquet_filename = 'text_to_parquet.parquet'
138
  df.to_parquet(parquet_filename, engine='pyarrow', compression='snappy')
 
139
  # Parquet 파일 내용 미리보기
140
  parquet_content = load_parquet(parquet_filename)
 
141
  return f"{parquet_filename} 파일이 성공적으로 변환되었습니다.", parquet_content, parquet_filename
 
142
  except Exception as e:
143
- error_message = f"텍스트 변환 중 오류가 발생했습니다: {str(e)}\n{traceback.format_exc()}"
144
- print(error_message)
145
  return error_message, "", ""
146
 
147
  def preprocess_text_with_llm(input_text: str) -> str:
 
119
  def text_to_parquet(text: str) -> Tuple[str, str, str]:
120
  try:
121
  from io import StringIO
122
+ import csv
123
+
124
+ # 입력 텍스트 정제
125
+ lines = text.strip().split('\n')
126
+ cleaned_lines = []
127
+
128
+ for line in lines:
129
+ # 빈 줄 건너뛰기
130
+ if not line.strip():
131
+ continue
132
+
133
+ # 쌍따옴표 정규화
134
+ line = line.replace('""', '"') # 중복 쌍따옴표 처리
135
+
136
+ # CSV 파싱을 위한 임시 StringIO 객체 생성
137
+ temp_buffer = StringIO(line)
138
+ try:
139
+ # CSV 라인 파싱 시도
140
+ reader = csv.reader(temp_buffer, quoting=csv.QUOTE_ALL)
141
+ parsed_line = next(reader)
142
+ if len(parsed_line) == 4: # id, text, label, metadata
143
+ # 각 필드를 적절히 포맷팅
144
+ formatted_line = f'{parsed_line[0]},"{parsed_line[1]}","{parsed_line[2]}","{parsed_line[3]}"'
145
+ cleaned_lines.append(formatted_line)
146
+ except:
147
+ continue
148
+ finally:
149
+ temp_buffer.close()
150
+
151
+ # 정제된 CSV 데이터 생성
152
+ cleaned_csv = '\n'.join(cleaned_lines)
153
+
154
+ # DataFrame 생성
155
  df = pd.read_csv(
156
+ StringIO(cleaned_csv),
157
  sep=',',
158
+ quoting=csv.QUOTE_ALL,
159
+ escapechar='\\',
160
+ names=['id', 'text', 'label', 'metadata']
 
 
 
161
  )
162
+
163
  # 데이터 유형 최적화
164
  df = df.astype({'id': 'int32', 'text': 'string', 'label': 'string', 'metadata': 'string'})
165
+
166
  # Parquet 파일로 변환
167
  parquet_filename = 'text_to_parquet.parquet'
168
  df.to_parquet(parquet_filename, engine='pyarrow', compression='snappy')
169
+
170
  # Parquet 파일 내용 미리보기
171
  parquet_content = load_parquet(parquet_filename)
172
+
173
  return f"{parquet_filename} 파일이 성공적으로 변환되었습니다.", parquet_content, parquet_filename
174
+
175
  except Exception as e:
176
+ error_message = f"텍스트 변환 중 오류가 발생했습니다: {str(e)}"
177
+ print(f"{error_message}\n{traceback.format_exc()}")
178
  return error_message, "", ""
179
 
180
  def preprocess_text_with_llm(input_text: str) -> str: