hcid-courses / datajournalism-2019

서울대학교 데이터 저널리즘 2019 가을학기
https://hcid-courses.github.io/datajournalism-2019/
4 stars 2 forks source link

[과제5] java.lang.NullPointerException: java.lang.NullPointerException 오류 #5

Open umamicode opened 4 years ago

umamicode commented 4 years ago

실행 환경

Windows10 +64bit +8GB/ Python 3.7.4/ Jupyter Notebook

코드

코드 파일 전체를 올리지 말고, 에러가 일어난 라인 및 의존성이 있는 부분(import package, 사용한 변수의 선언 등)만 올려주세요

# put your code segment here..
import json
import pandas as pd
twdf = pd.DataFrame(zippedList, columns = ['User' , 'Time', 'Text'], index=twindex) 
#twdf는 트위터 크롤링 결과를 데이터프레임으로 다시 정리한 것입니다. 
<img width="717" alt="twdf" src="https://user-images.githubusercontent.com/55076553/69162493-1a8ceb00-0b30-11ea-8525-e91aab29be9c.PNG">

#형태소 분석
from konlpy.tag import Komoran
#하나에만 형태소 분석 수행
alltext= twdf.Text
testtwdf= twdf.Text[0]

tagger = Komoran()
tags = tagger.pos(testtwdf)
tags
###하나만 할 경우 문제 없이 출력
#전체를 형태소 분석
tagged_sentences = [tagger.pos(umami) for umami in alltext]
print(tagged_sentences)
####전체에 돌릴 경우 (java.lang.NullPointerException: java.lang.NullPointerException)에러 발생

설명

작성한 코드의 목적과 내용을 최대한 자세하게 논리적으로 설명해주세요.

크롤링한 트위터 데이터에 형태소 분석을 시도하기 위해 Week 8- Text Analysis Code를 참조하였습니다. 명확하게 보기 위해 트위터 데이터를 데이터프레임(twdf)아래 저장하였고, twdf의 칼럼중 'Text'만을 골라 alltext로 저장했습니다. 근데, alltext[0] (alltext[0]의 type은 str으로 나옵니다)에 형태소 분석을 시도했을 때는 문제가 없는데

같은 함수를 alltext에 적용해 for loop으로 돌리면 'java.lang.NullPointerException: java.lang.NullPointerException'에러 메시지가 납니다. 이게 작동하지 않는다면, 데이터를 추출해놓고도 분석할 수가 없는 것 같아 질문드립니다. 혹시 제가분석 방향을 완전히 잘못 잡고 있는 건가요?

<twdf 구조>

twdf

<형태소 분석 for loop시(문제가 되는 부분)>

전부 다

<각각의 타입>

타입

<형태소 분석을 한 경우에만 시도한 경우>

하나만 할때

에러 메시지

에러 메시지를 복붙해주세요. 필요하면 특별히 에러가 나는 상황도 설명해주세요.

# copy & paste your error message here..

# ex)
java.lang.NullPointerException            Traceback (most recent call last)
<ipython-input-84-1555bc20133d> in <module>
      9 #tags
     10 #전체를 형태소 분석
---> 11 tagged_sentences = [tagger.pos(umami) for umami in alltext]
     12 tagged_sentences

<ipython-input-84-1555bc20133d> in <listcomp>(.0)
      9 #tags
     10 #전체를 형태소 분석
---> 11 tagged_sentences = [tagger.pos(umami) for umami in alltext]
     12 tagged_sentences

c:\users\ajou\appdata\local\programs\python\python37\lib\site-packages\konlpy\tag\_komoran.py in pos(self, phrase, flatten, join)
     64 
     65         for sentence in sentences:
---> 66             result = self.jki.analyze(sentence).getTokenList()
     67             result = [(token.getMorph(), token.getPos()) for token in result]
     68 

java.lang.NullPointerException: java.lang.NullPointerException
eqo295 commented 4 years ago

NullPointerException 에러는 공백으로 된 데이터를 분석 대상으로 넘기면 발생합니다. 형태소 분석의 대상이 되는 문자가 없거나, 특수문자, 공란, 탭 등으로 이뤄지지 않았는지 확인해 주시길 바랍니다(수업중 사용했던 try,except 방식을 응용해 보세요).