9주차 언어지능 딥러닝 (2)

정지원·2024년 4월 21일
0

에이블 스쿨 복습

목록 보기
37/51
post-thumbnail

KoNLPy (Hannanum)

  • 한글어 자연어 처리를 위한 파이썬 라이브러리 이다.
  • 형태소 분석, 품사 태깅, 명사추출, 구문 분석 등이 있다.
  • 이를 활용하여 텍스트 마이닝, 감성 분석, 정보 추출, 문서 분류 등 응용프로그램을 구축할 수 있음
  • Hannanum, Kkma, Komoran 등이 있다.

KoNLPy 주요 기능

  • 형태소 분석 morpgs

    • morphs(text): 입력된 한국어 텍스트를 형태소 단위로 분석하여 형태소의 리스트를 반환한다.
  • 품사 태깅 pos tagging

    • pos(text): 입력된 한국어 텍스트의 각 단어에 대해 품사를 태깅하여 (형태소, 품사) 쌍의 리스트를 반환한다.
  • 명사 추출 nouns

    • nouns(text): 입력된 한국어 텍스트에서 명사를 추출하여 명사의 리스트를 반환한다.
  • 구문 분석 syntax analysis

    • 구문 분석을 직접적으로 제공하지 않지만 한국어 구문 분석을 위한 다른 도구와 연계하여 사용할 수 있다.

Hannanum

  • 사전 기반 분석을 사용하여 정확한 분석 결과를 제공함
  • Kaist에서 개발 되었고 단어 분리 및 문법 규칙을 활용한다.
  • 형태소분석, 구문분석, 명사추출 등에 사용함
from konlpy tag import Hannanum
hannanum = Hannanum()
print(hannanum.analyze("안녕하십니까 정지원입니다."))	# 형태소 분석
print(hannanum.morphs("안녕하십니까 정지원 입니다."))	# 형태소 단위로 분리
print(hannanum.nouns("안녕하십니까 정지원 입니다."))	# 명사 리스트 출력
print(hannanum.pos("안녕하십니까 정지원 입니다."))		# (형태소, 품사) 형태
>
# analyze 함수 출력 예시
[[
[('안녕', 'ncps'), ('하', 'XSV'), ('시', 'EPH'), ('ㅂ니까', 'EFN')], 
[('안녕', 'ncps'), ('하', 'XSV'), ('시', 'EPH'), ('ㅂ니까', 'EC'), (' ', 'SPACE'), ('정지원입니다.', 'N')]
]]
>
# morphs 함수 출력 예시
['안녕', '하', '시', 'ㅂ', '니까', '정지원입니다', '.']
>
# nouns 함수 출력 예시
['안녕', '정지원입니다']
>
# pos 함수 출력 예시
[('안녕', 'N'), ('하', 'X'), ('시', 'E'), ('ㅂ니까', 'E'), ('정지원입니다', 'N'), ('.', 'S')]

Kkma

  • 세부적인 문법 규칙을 활용하여 정교한 분석 결과를 제공한다.
  • 카카오에서 개발되었고, 형태소 분석과 구문 분석에 중점을 두고 있다.
  • 형태소분석, 구문분석, 명사추출 등에 사용한다.
from konlpy.tag import Kkma
from konlpy.utils import pprint
kkma = Kkma()
pprint(kkma.morphs('공부를 하면 할수록 모르는게 많다.')) # 형태소 별로 나뉨
pprint(kkma.sentences('네, 안녕하세요. 반갑습니다.'))	 # 문장별로 인식하여 출력
pprint(kkma.nouns('공부를 하면 할수록 모르는게 많다.'))  # 명사 추출
pprint(kkma.pos('공부를 하면 할수록 모르는게 많다.'))	 # 형태소 분석

>
# 형태소 분리
['공부', '를', '하', '면', '하', 'ㄹ수록', '모르', '는', '게','많', '다']
>
# 문장 분리
['네, 안녕하세요', '반갑습니다']
>
# 명사 추출
['공부', '수록', '것']
>
#형태소 분석
[('공부', 'NNG'), ('를', 'JKO'), ('하', 'VV'), ('면', 'ECE'), ('하', 'VV'), ('ㄹ수록', 'ECD'), ('모르', 'VV'), ('는', 'ETD'), ('것', 'NNB'), ('이', 'JKS'), ('많', 'VA'), ('다', 'EFN'), ('.', 'SF')]

Komoran

  • 대용량 텍스트 데이터를 빠르고 정확하게 처리할 수 있는 속도와 정확도를 갖추고 있다.
  • shineware에서 개발 되었고, 쉬운 사용성과 성능을 강조하고 있다.
  • 형태소분석, 구문분석, 명사추출에 사용한다
  • komoran은 사전 단어를 인식하여 문장이라도 하나의 단어로 인식한다.
from konlpy.tag import Komoran
komoran = Komoran(userdic = '경로.txt')
print(komoran.pos('바람과 함께 사라지다.'))
  • 위 문장을 실해아혐 원래 '바람', '과', '함께', '사라지다', '.' 으로 나누어진다.
  • 하지만 경로에있는 txt파일에 "바람과 함께 사라지다."가 있다면 미리 학습하여 하나의 단어로 인식하게 된다.

koNLPy, Internet News Parsing

  • Parsing1
!pip install newspaper3k
from newspaper import Article

def crawl_article(url, language='ko'):
  # 현재 title과 text를 추출할 url을 프린트해줌
  print("[Crawl Article]", url) 
  
  # Article을 사용하여 그 URL을 입력하고, 언어옵션지정(한글어 기본), 결과를 a에 저장
  a = Article(url, language = language)
  a.download()
  a.parse()
  
  # a에 해당하는 title과 본문(text)을 html 태그를 제거하여 출력한다.
  return a.title, preprocessing(a.text)  
  • Parsing2
  • beautiful soup 사용
# 인터넷 뉴스 parsing
from bs4 import BeautifulSoup
from urllib.request import urlopen

url = urlopen('url 경로')
soup = BeautifulSoup(url, 'lxml')

title = soup.find("div", {"class": 'article_title'}).get_text(strip=True)
contents = soup.find("div", {"class":'article_txt'}).get_text(strip=True)

print(title)
print(contents)
  • 아래와 같이 뉴스기사에 대한 내용을 긁어 올 수 있다.
profile
뒤늦게 프로그래밍을 시작한 응애

0개의 댓글