앎을 경계하기

DAFIT/901 - 자연어데이터전처리연습

<DAFIT> 01 자연어 데이터 전처리 연습 - 03 사전순 배열시키기

양갱맨 2019. 10. 19. 02:10

import re

filePath = 'drive/My Drive/다핏문제/01/Beta01_NLP.txt'
p = re.compile('[ A-Z-a-z]')
f = open(filePath, mode='r', encoding='euc-kr')
s = f.read()
f.close()
s = p.findall(s)
print(s)
s = ''.join(s).split(' ')
s = list(set(s))

for i in range(len(s)):
    s[i] = s[i].lower()
s = sorted(s)

f = open('drive/My Drive/다핏문제/03/DF901_03_이름.txt', mode='w', encoding='euc-kr')
f.write('\n'.join(s))
f.close()

<문제 핵심>

1. 영단어만 추출
2. '-'로 묶인 단어는 한 단어로 간주
3. 모든 문자는 소문자로 출력

일단 단어 추출을 위해서 정규표현식을 사용했다.

영어 대소문자와 공백, '-' 조합의 문자클래스로 파일을 매치시켜보면 다음과 같이 공백, 영어, -를 매치시킨 결과를 확인할 수 있다.

왜 공백을 포함했냐면 split(' ')함수로 공백을 기준으로 단어를 나누고 싶어서이다.

문자 하나 하나로 나눠져있는 배열을 ''.join()으로 문자열형태로 바꿔주고 split(' ')로 공백 기준으로 나눠서 문자열 배열을 만들었다.

list(set(s))는 set()이 중복을 허용하지 않기때문에 set으로 만들었다가 list()로 바꿔주기 위함이다.

중복까지 제거하고 나서 sorted()로 사전순대로 정렬해주면 끝~

 

www.dafit.me

불러오는 중입니다...