본문 바로가기

도서,강의 리뷰

스파크를 이용한 자연어처리 리뷰


 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


파이썬과 딥러닝 프레임워크로 자연어처리를 어느정도 한 사람으로써 spark 를 통해서 자연어처리를 한다는 것은 신선한 주제였습니다. 하지만, spark 와 Sparknlp , java 버전의 호환 문제로 인해서 일부 api가 작동하지 않는 문제가 있어서 아쉬운 부분입니다. 그렇기에, 로컬보다는 저자가 준비한 colab 파일을 이용해서 코랩에서 실습을 진행하는 것이 좋을 것 같습니다.



(로컬 실습 기준)데이터 엔지니어링 도구들은 특히나 의존성 문제로 인해 api 작동이 안되는 문제가 비일비재한데 이 책 역시 그러한 문제에서 벗어날 수 없었습니다. 우선, 설치한 뒤 일부 api 가 실습 도중 java 버전으로 인해 작동하지 않는 것 같아서 java 버전도 바꾸고 spark 버전도 하둡이랑 맞춰서 바꾸었지만 결국 특정 api 가 실행되지 않았습니다. 제가 세팅을 잘못해서 그런 것일수도 있겠지만, 이 책을 보고 따라하는 상당수의 사람들에게도 비슷한 문제가 닥칠 수 있어서 우려가 되는 부분입니다. shell에서 할 때는 쥬피터에서 작동 안하던 Spark의 api 작동이 잘되는 아이러니가 있어서 아마 jupyter notebook 와 spark 연결을 환경변수 등을 신경써저 잘해야 될 것 같습니다.



코드는 pyspark 를 쓰기에 파이썬을 어느정도 할 줄 알면 큰 문제는 없습니다. 중간중간 spark Api 를 쓰지만 전반적인 코드는 파이썬을 따릅니다. 자연어에 대한 이론은 시중에 나온 자연어처리 책들과 크게 다르지 않습니다. 스파크를 이용해서 nlp를 하는데 의의를 두면 좋을 것 같습니다. 자연어처리 자체는 더 좋은 교재들이 시중에 많이 있지만 책처럼 spark 로 자연어처리를 주제로 삼은 책은 거의 없을 것입니다. 



책의 후반부에서는 keras 를 사용해서 lstm 등의 딥러닝 모델을 실습하는 챕터가 있고, 딥러닝이 나오면서부터는 관련된 라이브러리들을 pyspark 와 sparknlp 와 함께 사용합니다. api 이름만 조금 다를뿐 자연어처리 흐름은 파이썬과 다른 라이브러리에서 하는 것과 별반 차이는 없습니다.



책의 저자는 spark 2.4를 썼고 역자는 3.0.2 를 썼습니다. 저는 spark 3.0.3 과 3.1.2 를 둘 다 썼습니다. 그럼에도 일부 api 가 java 와 호환이 안되는지 에러가 발생해서 중간중간 실습이 막히는 것은 어쩔 수 없었습니다. 책의 저자가 사용한 spark 2.4 버전은 spark 공식홈페이지에서 다운로드 받을 수 없습니다. 2.4.8 설치파일이 있는 것 같은데 다운로드 되는 부분이 안 보였습니다. wget 으로 다른 기술블로그 등의 보니 코드를 내린 거지 404 error 가 발생했습니다. 그러니, 로컬에 spark 를 설치하고 실습이 막힌다면 코랩으로 바로 넘어가서 실습을 하면 좋을 것 같습니다.



실습이 중간중간 막히는 아쉬움을 제외하고는 spark 로 자연어처리를 할 수 있는 신선함을 느낄 수 있어서 자연어처리를 좀 더 다양한 언어로 해보고 싶은 분들은 재밌게 할 수 있을 것 같습니다.