필요한 라이브러리를 임포트합니다.
import re
정규 표현식(Regular Expressions)을 다룰 수 있게 해주는 라이브러리인 re 모듈을 import합니다.
파일 경로를 설정합니다.
input_file = '/content/rus_news_2022_10K-sentences.txt'
output_file = 'cleaned_rus_news.txt'
입력 파일과 출력 파일의 경로를 나타내는 두 개의 변수에 값을 할당합니다. input_file은 입력으로 사용할 텍스트 파일의 경로를, output_file은 정제된 결과를 저장할 텍스트 파일의 이름을 지정하는 코드입니다.
파일 경로는 입력 파일에서 우클릭하여 [경로 복사]한 후 붙여넣기 합니다.
텍스트 정제를 수행합니다.
def clean_text(text):
text = re.sub(r'[-—#/@§*!&:;()?\\«,._·•»a-zA-Z0-9一-龥]', '',text)
text = re.sub(r'\\d+', '', text)
text = re.sub(r'\\s+', ' ', text)
text = text.strip()
text = text.lower()
return text
clean_text 함수를 사용하여 텍스트를 정제하겠습니다.
먼저 re.sub 함수를 사용해 텍스트에서 제거할 패턴(특수문자, 영문자, 숫자, 한자 등)을 찾아 빈 문자열로 대체합니다. a-zA-Z0-9는 모든 영어 대소문자와 숫자들을 포함하며, 一-龥는 중국어 및 일본어 한자 범위입니다. 그런 다음 텍스트에서 모든 숫자(\d+)를 찾아 빈 문자열로 대체합니다. 여기서 \d+는 하나 이상의 숫자를 의미합니다.
여러 개의 공백을 하나로 줄입니다. \s+는 하나 이상의 공백 문자(공백, 탭, 줄 바꿈 등)를 의미합니다. 양쪽 공백을 제거합니다. strip()은 텍스트의 앞과 뒤에 있는 공백을 제거하는 함수입니다.
lower() 함수를 사용해 텍스트 내 모든 알파벳을 소문자로 변환합니다.
여러 단계의 정제 작업을 통해 변형된 텍스트가 text 변수에 저장됩니다. 이제 함수의 실행을 종료하고, 함수가 호출된 곳으로 값을 반환합니다. 반환된 텍스트는 함수 외부에서 사용할 수 있게 됩니다.
파일을 열고 정제된 텍스트를 저장하겠습니다.
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
for line in infile:
cleaned_line = clean_text(line)
if cleaned_line:
outfile.write(cleaned_line + '\\n')
텍스트 정제 후에 내용이 없는 줄은 건너뛰고, 빈 줄이 아닌 경우에만 결과 파일에 저장합니다.
정제된 텍스트 파일을 읽고, 파일의 첫 10줄만 출력하겠습니다.
with open(output_file, 'r', encoding='utf-8') as f:
print("정제된 텍스트 파일의 첫 10줄:")
for _ in range(10):
print(f.readline().strip())
지금까지의 과정을 모두 포함하면 다음과 같이 코드가 완성됩니다.
import re
input_file = '/content/rus_news_2022_10K-sentences.txt'
output_file = 'cleaned_rus_news.txt'
def clean_text(text):
text = re.sub(r'[-—#/@§*!&:;()?\\«,._·•»a-zA-Z0-9一-龥]', '',text)
text = re.sub(r'\\d+', '', text)
text = re.sub(r'\\s+', ' ', text)
text = text.strip()
text = text.lower()
return text
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
for line in infile:
cleaned_line = clean_text(line)
if cleaned_line:
outfile.write(cleaned_line + '\\n')
with open(output_file, 'r', encoding='utf-8') as f:
print("정제된 텍스트 파일의 첫 10줄:")
for _ in range(10):
print(f.readline().strip())
화살표 버튼을 클릭하여 셀을 실행합니다.
다음과 같이 출력됩니다.
정제화 작업이 끝났습니다. 정제된 텍스트를 저장하는 코드를 포함했기 때문에, cleaned_rus_news.txt가 자동 저장된 것을 확인할 수 있습니다.