(수정) 불용어를 삭제하는 코드를 실행하자 데이터가 사라져버리는 문제
조회수 387회
안녕하세요, 제가 앞서 질문한 내용을 통해 불용어 삭제 코드를 수정하여 실제로 불용어가 삭제되는 결과를 받을 수 있었습니다.
그런데 코드를 돌리다보니, 불용어를 삭제하자 데이터가 반절 이상 날아가버리는 것을 확인할 수 있었습니다.
코드 쭉 보여드리겠습니다.
import konlpy
import re
def tokenize_korean_text(text):
text = re.sub(r'[^,.?!\w\s]','', text)
okt = konlpy.tag.Okt()
Okt_morphs = okt.pos(text)
words = []
for word, pos in Okt_morphs:
if pos == 'Verb' or pos == 'Noun':
words.append(word)
return words
tokenized_list = []
for text in df['Keyword']:
tokenized_list.append(tokenize_korean_text(text))
print(len(tokenized_list))
print(tokenized_list[1800])
여기까지 실행하면 결과가 나와서, tokenized_list는 1800줄의 데이터가 있음을 알 수 있습니다. 아래는 그 결과입니다.
1832
['오늘날', '국가', '환경', '부정', '상태', '개선', '구성원', '각자', '환경', '이익', '대한']
코드를 계속 실행합니다.
drop_corpus = []
for index in range(len(tokenized_list)):
corpus = tokenized_list[index]
if len(set(corpus)) < 3:
review_df.drop(index, axis='index', inplace=True)
drop_corpus.append(corpus)
for corpus in drop_corpus:
tokenized_list.remove(corpus)
df.reset_index(drop=True, inplace=True)
바로 아래가 불용어 삭제 코드입니다.
stopwords = ['입니다','있습니다','우리','할','수','하는','합니다','여러분']
clean_words = []
for i in tokenized_list:
a = 0
for ii in stopwords:
if ii in i:
a += 1
if a < 1:
clean_words.append(i)
여기서 print(clean_words[991]) 를 실행하면
IndexError: list index out of range
991번째 데이터는 없다고 나오고, 실제로 결과값을 저장했을때도 990번째 데이터까지만 저장됩니다. 나머지 데이터가 전부 날아간 듯 합니다.
어떻게 코드를 수정해야 하는 것일지요?
댓글 입력