# 6. 불용어 제거
불용어(stopwords)란,
데이터 전체에서 꽤 많이 등장하지만 실제로는 별로 중요하지 않은 단어들
ex) ~가, ~은, ~는과 같은 조사나 접사 등
해당 데이터의 특성으로 자주 등장할 수 밖에 없는 단어들
불용어는 짐작하여 한 번에 정의하는 것이 아니라, 토큰화 결과를 확인하면서 계속해서 추가
stop_words = ['기자', '제공', '무단', '배포', '무단배포', '배포금지', '이번', '위해', '라며', '금지', '뉴스', '통해', '오늘', '지난달', '지난', '대한', '경우', '관련', '뉴시스', '현재', '지난해', '때문', '지금', '또한', '만큼', '최근', '당시', '올해', '대해', '다시', '모두']
df['tokenized'] = df['news'].apply(tokenizer.nouns)
# 데이터프레임의 news열에 tokenized.nouns라는 함수를 모두 적용하고 나서
# tokenized 열에 새로 저장하라! 라는 의미
- 리프트 컴프리헨션
test_list = ['경찰서', '상해', '혐의', '씨', '구속', '수사', '일']
remove_word_list = ['경찰서', '구속']
test_list = [item for item in test_list if item not in remove_word_list and len(item) > 1]
print(test_list)
['상해', '혐의', '수사']
1) for item in test_list
test_list라는 파이썬 리스트 자료형에서 원소를 하나씩 꺼내는데 이를 item이라 명명
2) if item not in remove_word_list and len(item) > 1
item이 remove_word_list에 없으면서 이 item의 길이가 1 초과인 경우를 조건으로 한다.
ex) '용' 이라는 단어의 길이는 1 / '학교'라는 단어의 길이는 2
3) [item for item in test_list if item not in remove_word_list and len(item) > 1]
조건에 맞는 경우에만 item을 남긴다.
다시 말해 조건에 맞지 않으면 살아남지 못하여 없어지게 됩니다.
- 불용어 제거 코드
df['tokenized'] = df['tokenized'].apply(lambda x: [item for item in x if item not in stop_words and len(item) > 1])
1) lambda x
동작 코드는 현재 입력을 x라고 하고 x에 대해 동작 코드를 수행하라는 의미
2) df['tokenized']
라는 열의 각 행에 대해서 apply를 하는데
3) 각 행을 x라고 한다면
x의 각 원소들은 stop_words에 없으면서 길이가 1보다 긴 경우에만 살아남게하라 라는 의미
'데이터분석' 카테고리의 다른 글
텍스트 마이닝(1) - colab 한글세팅 ~ 형태소 분석 (0) | 2022.07.19 |
---|---|
파이썬 / 학습 방향 & 난이도 (0) | 2022.07.18 |
개발일지 / 크롤링차단 방지법, 유저 에이전트(User Agent) 지정 (0) | 2022.07.18 |
댓글