ML&DL
명사 추출 - 네이버 영화리뷰
joyHong
2020. 8. 11. 23:36
이번 글에서는 네이버 영화리뷰 데이터에서 실제 리뷰 문장을 읽어 명사만 추출하고자 한다.
형태소 분석기는 Mecab 형태소 분석기를 활용할 것이다.
실행환경은 윈도우즈10에서 파이참을 사용한다.
윈도우즈에서 Mecab을 사용하기 위한 방법은
https://joyhong.tistory.com/127
에서 설명한 적이 있다.
명사를 추출할 대상이 되는 파일은 이전 글에서 생성한 데이터를 활용할 것이다.
코드
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
from konlpy.tag import Mecab
from tqdm import tqdm
from pykospacing import spacing
def tokenize(corpus_fname, output_fname, space=False):
tokenizer = Mecab(dicpath='C:/mecab/mecab-ko-dic')
toatal_lines = sum(1 for line in open(corpus_fname, 'r', encoding='utf-8'))
# tqdm에 입력할 total 값을 구하기 위해 사용,
with open(corpus_fname, 'r', encoding='utf-8') as f1, \
open(output_fname, 'w', encoding='utf-8') as f2:
for _, line in tqdm(enumerate(f1), total=toatal_lines):
sentence = line.replace('\n', '').strip()
if space:
sentence = spacing(line.replace('\n', '').strip())
# 띄어쓰기 교정을 수행.. 단, 시간이 오래 걸림
tokenized_sent = ' '.join(tokenizer.nouns(sentence))
f2.writelines(tokenized_sent + '\n')
tokenize('D:/Data/embedding/data/processed/processed_ratings.txt', 'D:/Data/embedding/data/tokenized/ratings_mecab.txt')
실행화면
위 코드를 실행하면 원 텍스트에서 명사를 추출하고
명사 목록을 띄어쓰기로 구분하여 나열한 결과를 확인할 수 있다.
형태소 분석기로 Mecab을 사용했는데 위의 결과는 mecab의 사용자 사전 구성에 따라 달라질 수 있으며,
위의 결과는 기본 사전만을 사용한 결과이며,
형태소 분석을 하기 전에 띄어쓰기 교정을 수행 후 분석을 한 결과이다.
참고:
위에서 사용한 코드는 https://github.com/ratsgo/embedding/blob/master/preprocess/supervised_nlputils.py 에서 가져와 일부 수정하여 사용하였습니다.