자연어처리(설정)

1 minute read

자연어처리 기본 설정

Colab과 Jupyter 기준입니다.

  • !apt-get update : 리눅스 패키지 업데이트
  • !apt-get install g++ openjdk-8-jdk : Java설치
  • !pip install JPype1 : Java와 Python을 연결하는 JPype 설치
  • !pip install rhinoMorph : 형태소 분석기 설치

Colab에서의 폰트 설정

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    %config InlineBackend.figure_format = 'retina' #폰트가 깨끗하게 보이도록 설정
    !apt install fonts-nanum # 나눔 폰트 설치
    import matplotlib.font_manager as fm
    fontpath = '/usr/share/fonts/truetype/nanum/NanumMyeongjo.ttf'
    font = fm.FontProperties(fname=fontpath, size=9)
    # 기본 글꼴 변경
    import matplotlib as mpl
    mpl.font_manager._rebuild()
    mpl.pyplot.rc('font', family='NanumMyeongjo')

Local에서의 폰트 설정

    import matplotlib
    from matplotlib import font_manager, rc
    font_path = 'C:/Windows/Fonts/malgun.ttf'
    font_name = font_manager.FontProperties(fname=font_path).get_name()
    matplotlib.rc('font', family=font_name)

동작확인

    import rhinoMorph
    rn = rhinoMorph.startRhino()

    text = '한글테스트 글을 남겨주세요"
    data = rhinoMorph.onlyMorph_list(rn,text) # 선언한 형태소 분석기의 객체를 같이 넣어준다.
    print(data)
    #출력 : ['한글','테스트','','','남기','','','','어요']

RHINO 여러가지 사용법

모든 형태소 보이기

    # text = '한글로 된 한글텍스트를 분석하는 것은 즐겁다.'
    text_analyzed = rhinoMorph.onlyMorph_list(rn, text)
    print('\n1. 형태소 분석 결과:', text_analyzed)
    #출력 : ['한글','로','되','ㄴ','한글','텍스트','를','분석','하','는','것','은','즐겁','다','.']

실질형태소만, 동사의 어말어미는 제외

    # text = '한글로 된 한글텍스트를 분석하는 것은 즐겁다.'
    text_analyzed = rhinoMorph.onlyMorph_list(rn, text, pos=['NNG', 'NNP', 'NP', 
        'VV', 'VA', 'XR', 'IC', 'MM', 'MAG', 'MAJ'])
    print('\n2. 형태소 분석 결과:', text_analyzed)
    #출력 : ['한글','되','한글','텍스트','분석','즐겁']

실질형태소만, 동사의 어말어미 포함

    # text = '한글로 된 한글텍스트를 분석하는 것은 즐겁다.'
    text_analyzed = rhinoMorph.onlyMorph_list(rn, text, pos=['NNG', 'NNP', 'NP', 
        'VV', 'VA', 'XR', 'IC', 'MM', 'MAG', 'MAJ'],eomi=True) # eomi는 어말어미를 포함한다는 말이다.
    print('\n2. 형태소 분석 결과:', text_analyzed)
    #출력 : ['한글','되다','한글','텍스트','분석','즐겁다']

전체형태소, 품사정보도 가져오기

    morphs, poses = rhinoMorph.wholeResult_list(rn, text)
    print('morphs:', morphs)
    print('poses:', poses)  

원문의 어절 정보를 같이 가져 오기

    text_analyzed = rhinoMorph.wholeResult_text(rn, text)
    print('\n5. 형태소 분석 결과:\n', text_analyzed)

연결된 명사 결합

    text_analyzed = rhinoMorph.onlyMorph_list(rn, text, pos=['NNG', 'NNP', 'NP', 
    'VV', 'VA', 'XR', 'IC', 'MM', 'MAG', 'MAJ'], combineN=True)
    print('\n6. 형태소 분석 결과:\n', text_analyzed)
    #출력 : ['한글','되','한글텍스트','분석','즐겁]

‘어근 + 하’ 결합

    text_analyzed = rhinoMorph.wholeResult_list(rn, '사랑합니다')
    print('\n8. 형태소 분석 결과: ', text_analyzed)
    #출력 : (['사랑','하','ㅂ니다],['XR','XSV','EF])
    text_analyzed = rhinoMorph.wholeResult_list(rn, '사랑합니다', xrVv=True)
    print('\n9. 형태소 분석 결과: ', text_analyzed)
    #출력 : (['사랑하','ㅂ니다],['VV','EF])

품사 주요 태그

  • 일반명사 NNG
  • 고유명사 NNP
  • 의존명사 NNB
  • 대명사 NP
  • 수사 NR
  • 동사 VV
  • 형용사 VA
  • 보조용언 VX
  • 긍정지정사 VCP
  • 부정지정사 VCN
  • 관형사 MM
  • 일반부사 MAG
  • 접속부사 MAJ
  • 감탄사 IC
  • 어근 XR

Leave a comment