Synology::Jupyter Notebook에서 문장요약 해보기


1. 아주 간단하게 어디서나

Synology의 Docker에 Jupyter Notebook 이미지가 있습니다. 이걸로 나스에 Jupyter Notebook을 띄우면, 어떤 기기에서든지 URL하나로 Jupyter Notebook를 사용할 수 있습니다. 이제까지 설정은 해놨지만 마땅히 쓸 일은 없었던 Jupyter Notebook을 가지고 자연어 처리 모듈을 이용해 문장 요약을 해보았습니다. 그래서 비망록차 남겨봅니다.

2. Jupyter Notebook의 설정


1) Docker > 레지스트리에서 Jupyter Notebook를 가져옵니다.
2) Docker > 이미지에서 Jupyter Notebook 컨테이너 설정을 합니다


3) 고급설정 > 포트설정:안쓰이고 있는 임의의 포트번호를 입력합니다.
    고급설정 > 볼륨:파일스테이션을 컨테이너 내의 파일시스템이랑 연결할 수 있습니다. 

    # 마운트 설정시 /usr/jupyter로 설정했는데 알아서 디렉토리 생성해서 잘 이어주네요.

4) 포트포워딩
5) http://{DNS이름}:{설정한 포트}로 접속
6) 접속시 필요한 토큰은 Docker의 "로그"탭에서 확인 할 수 있습니다.

3. GENSIM

자연어 처리 라이브러리가 몇개 있는거 같은데, GENSIM을 이용한 방법을 인터넷에서 찾았으니 그대로 따라해 봤습니다.

pip 명령어를 이제까지 한번도 Jupyter Notebook에서 쳐본적이 없는데, 쳐보니 무슨 터미널같이 로그 쫙 나오네요. 신기신기. 저는 따라만 하는데도 도중에 에러메시지가 꽤 나왔는데 그것만 추려서 기록하겠습니다. 

1) ModuleNotFoundError: No module named 'gensim.summarization'

"pip install gensim newspaper3k"을 실행했음에도 불구하고, 모듈이 없다고 나옴. 찾아보니 버젼차이라고. 아래의 명령어를 실행후에 해결됨.
pip install gensim==3.8.3

2) ImportError: cannot import name 'has_pattern' from 'gensim.utils'

위의 에러를 해결해도 또 나타나는 has_pattern 임포트가 안된다는 에러. 찾아보니, pip과 아나콘다 충돌의 영향이었다는 글이 있어서 그대로 실행함.
pip uninstall -y scipy
conda install scipy
Jupyter Notebook에서  [y/n]에 대한 답을 칠수가 없으므로, -y 옵션 꼭 필요.

결론. 정리하면

여러모로 뻘짓도 많이 했는데, 정리하자면 이런 느낌입니다.

1) 라이브러리 설치
pip install --upgrade pip
pip install gensim newspaper3k
pip install python-Levenshtein
pip install gensim==3.8.3

2) 충돌해결
pip uninstall -y scipy
conda install scipy

3) 요약작업
from gensim.summarization.summarizer import summarize
from newspaper import Article

url = '{요약할 기사 URL}'
news = Article(url, language='ko')
news.download()
news.parse()
#50단어 제한
print(summarize(news.text, word_count=50))
#비율제한
print(summarize(news.text, ratio=0.1))

4) 원문

 이 블로그 다른 게시글: 블로그, 어디서 만드는게 좋을까?


5) 요약결과 

print(summarize(news.text, word_count=50)) # 50자 요약설정
하지만 네이버 블로그를 다년간 사용하다보면 네이버가 얼마나 폐쇄적인 플랫폼인지 이해하게 됩니다. 조금더 내 입맛대로 블로그를 이끌어 가고 싶다면 네이버 블로그는 이 점이 매우 불편합니다. 입맛대로 블로그를 이끌어가고 싶다는 욕구안에서 가장 큰 것은 블로그를 수익화하고 싶다는 것인데, 그러면 대체적으로 티스토리를 발견하게 되고, 애드고시를 치르게 됩니다. 그리고 3개월을 투입하여 어느정도 원하는 느낌의 블로그 기능과 환경을 구축할수 있었습니다. 


이거말고 nltk라는 라이브러리도 있고, 키워드 구름 만드는 것도 있었으니 시간나면 또 해보겠습니다. 또한 이거 하면서 pip이랑 아나콘다랑 충돌하는 문제를 겪었는데, 어떤 글을 보면 노트북에서 가상환경을 따로 설정해서 하는게 좋다는 내용도 있었습니다. 그것도 시간 나면 차차...

#참조링크들