NLP Tutorial
https://github.com/Seokii/Korean_NLP_Tutorial
자연어처리를 공부하며 여러 한국어 NLP Task에 대한 예시 코드를 작성하고자 만들었습니다.
예시 코드를 통해 저와 같은 자연어처리 입문자들에게 도움이 되었으면 합니다 :)
해당 깃허브 주소를 통해 작성한 주피터 노트북 파일을 다운받거나 확인할 수 있습니다.
Dataset
https://aihub.or.kr/aidata/30713
AI Hub의 도서자료요약의 데이터를 사용해 실습을 진행했습니다.
Jupyter Notebook
라이브러리 불러오기
In [1] :
import pandas as pd
import numpy as np
from gensim.summarization.summarizer import summarize
gensim에서 구현된 TextRank 알고리즘 기반의 summarizer를 사용하겠습니다.
데이터 불러오기
In [2] :
df = pd.read_csv('../../dataset/BookSummarization/test_df/Book_test.csv')
In [3] :
df = df.iloc[0:150]
In [4] :
df.reset_index(inplace=True)
AI Hub에서 json형태의 데이터를 제공하고 있지만, csv파일로 따로 정리했습니다.
csv파일은 위의 깃허브에서 다운받을 수 있습니다.
pandas를 통해 csv파일을 불러오고 간단하게 150개의 행만 사용하도록 하겠습니다.
추출적 요약
Text Summarization에는 두 가지 방식이 존재합니다.
하나는 통계 기반의 추출적 요약(extract summarization) 방식이며,
다른 방법은 신경망을 이용한 추상적 요약(abstract summarization) 방식이 있습니다.
해당 글에서는 이미 구현된 TextRank 알고리즘에 기반한 gensim 모델을 사용해 추출적 요약 방식을 구현합니다.
In [5] :
df['extract'] = df.passage.apply(lambda x : summarize(x, ratio=0.4))
불러온 요약 모델을 사용해 데이터 프레임에 새로운 열인 'extract'열을 만들고 lambda함수를 사용해 같은 행의 passage열에 대한 내용을 요약하여 작성합니다.
- ratio 매개 변수를 통해 요약될 내용의 비율을 조정할 수 있습니다.
- word_count 매개 변수를 사용하면 결과 값의 단어 수를 조정할 수 있습니다. 이 옵션을 사용하면 ratio 옵션은 무시됩니다.
- split 옵션을 사용해 True로 설정하면 요약 문장이 리스트로 출력됩니다.
In [6] :
df.head()
passage열의 내용을 요약한 extract열을 생성한 결과입니다.
In [7] :
for i in range(0, 3):
random_number = np.random.randint(0,150, size=1)
print("=" * 120)
print(f'{random_number[0]}' + " 번째 문장 \n")
print('원문 내용: \n\n' + df['passage'][random_number[0]] + '\n\n')
print('추출 요약 내용: \n\n' + df['extract'][random_number[0]] + '\n\n')
print('라벨링된 요약 내용: \n\n' + df['summary'][random_number[0]] + '\n\n')
데이터 프레임 내의 원문, 라벨링 된 요약 값, 추출한 요약 내용의 값을 랜덤으로 세 번 추출한 결과입니다.
여러 번 결과를 출력하다보면 생각보다 나쁘지 않은 성능을 보이는 것을 확인할 수 있습니다.
'머신러닝 & 딥러닝 > 자연어처리' 카테고리의 다른 글
대학교 AI 질의응답 챗봇 만들기 - 2. 단어 사전 구축 (2) | 2022.07.22 |
---|---|
대학교 AI 질의응답 챗봇 만들기 - 1. 사용 데이터 & 텍스트 전처리기 (1) | 2022.07.21 |
[NLP] 네이버 영화 리뷰 데이터(nsmc) 감성 분석 - CNN (0) | 2022.06.30 |
[NLP] 네이버 영화 리뷰 데이터(nsmc) 감성 분석 - LSTM (2) | 2022.06.21 |
[자연어 처리/NLP기초] 6. 벡터간 유사도 구하기: 코사인 유사도 (0) | 2022.02.23 |
댓글