본문 바로가기

Project Log/CommentTeller

배포 재도전기 - ETRI 형태소 분석 API사용 배포해보려고 heroku에서도 시도해봤지만 역시나 같은 라이브러리 문제(라이브러리 자체 문제는 아니고 찾아보니 동적로드 라이브러리 관련한 문제인 것 같다.)로 실패했다. 어떻게 방법이 없을까 하다가 한국전자통신 연구원에서 제공하고 있는 형태소 분석을 API를 사용해보기로 했다. 하루에 5000건만 호출할 수 있으며, 1회 호출 시 입력이 1만 글자 미만까지만 요청이 가능하다. 사용방법은 홈페이지에 자세하게 가이드가 나와있다. 먼저 API key발급 요청을 하면 메일로 보내주시는데, API 요청할 때 request body에 json형태로 보내면 된다. 나 같은 경우에는 형태소 분석 서비스를 이용할 것이기 때문에 analysis_code에 morp를 넣어주었다. { "access_key": "YOUR_AP.. 더보기
프로젝트 후기 ✨ 동기 재밌있는 API없나 둘러보다가 youtube에서 댓글을 제공해주는 API가 있길래, 댓글에서 가장 많이 쓰여진 단어를 word cloud형태로 보여주는 사이트를 만들기로 했다. 통계적으로 엄청나게 유의미한 데이터는 아니지만 그냥 심심풀이로 한번 돌려서 보고싶었다ㅋㅋㅋ 🔥 프로젝트를 진행하면서... 플젝 진행하면서 아쉬웠던 점을 몇가지 추려보았다. 1. 명사 분석이 잘 안됨 사전에 나오는 명사나 일반적인(?) 명사는 명사로서 분리가 잘되지만, 인터넷용어나 전문용어는 명사로 분석이 잘 안되는 것 같아 아쉬웠다. 예를 들면 게임 관련 영상을 돌리면 캐릭터 명이나 게임 관련 용어들을 명사로 제대로 분석하지 못하는 모습이 보여졌다. 오버워치 영상을 돌리면 솜브라 -> 솜, 브라 이렇게 나눠지고 둠피스트 .. 더보기
Express 라우터에 async/await 프론트에서 유튜브 비디오 아이디가 넘어오면 백에서 진행되는 단계는 다음과 같다. 1. 비디오 아이디로 API 요청 후 댓글 가져오기 2. 특수문자, ㅠㅠ, ㅋㅋ, ㅎㅎ와 같은 한글, 숫자, 한글 이외의 언어 공백으로 변환 3. 문장에서 단어만 추출하기 4. 최다빈도 단어 추출하기 이 네 가지 단계를 각 함수로 분리하고, 순서대로 진행할 수 있도록 async/await 구문을 이용해 프라미스를 return 하도록 만들어 주었다. 그리고 라우터에 요청이 들어오면 저 네가지 함수를 다시 await을 사용해서 순서대로 진행되게 만들어줘야 한다. 그러기 위해서는 라우터 함수에 async를 다는 게 필요했는데, 예를 들면 아래와 같이 단순 무식하게 router함수에 달아보았더니 모양새가 뭔가 안 익숙하기도 하고 이.. 더보기
Google Cloud Platform - App Engine으로 배포하기? [2] 정말 한 틱만 건드려주면 될 것 같아서 또 포기 못하고 찾기 시작했다. 문제가 됐던 라이브러리(라이브러리 자체 문제X) 깃허브 저장소에 동일한 내용의 이슈가 올라와있었다. 이분은 heroku로 배포를 하셨는데 heroku도 gcp 앱 엔진과 마찬가지로 bash로 추가 설치하는 것이 불가능하셨다고 한다. 그래서 아래와 같이 npm script를 추가하셔서 실행시켰는데 다행히도 관련한 코드 디렉토리가 생겨났다고... 나도 postinstall은 아니지만 install 스크립트를 사용해서 했었는데 안됐었다. 하지만 혹시나 싶어서 postinstall로 수정후 다시 한 번 배포 진행했으나 동일한 오류로 실패했다. {"postinstall": "node_modules/mecab-ya/bin/install-meca.. 더보기
Google Cloud Platform - App Engine으로 배포하기? GCP App Engine이라는 서비스를 이용하면 아주 간편하게 서버를 배포할 수 있다고 해서 사용하기로 했다. 지난번 API 사용할 때 무료 평가판을 1년 동안 사용할 수 있게 되어서, 사용할 수 있을 때 알차게 사용하고 싶기도 하고 한번 써보고 싶었다. 이제 배포만하면 끝이다! 하고 패기롭게 시작했다가 고통받고 있다. 일단, 배포 과정은 소스를 스토리지에 올리면 package.json을 기준으로 의존하고 있는 package를 다운로드하여 배포하는 식으로 이루어진다. 그런데 문제는, 내가 사용하고 있는 형태소 분석 라이브러리인 mecab-ya라이브러리는 npm install을 통해 다운로드한 후, 다시 bash script를 이용해서 필요한 모듈과 파일들을 다시 다운로드하여줘야 한다. 그런데 gcp는 .. 더보기
삽질의 날 - redux-thunk, async/await, 유튜브 댓글 API 와 오늘 진짜 삽질의 날이라고 불러도 과장이 아닐 정도로 연속으로 다른 삽질만 하루 종일 했다. redux-thunk 먼저 프론트는 거의 다 완성돼서 백으로 API요청만 보낼 수 있도록 하면 돼서 redux-thunk를 사용해서 비동기 요청을 처리하도록 했다. 백에서 API요청을 받는 것 까지는 확인 했는데, 요청의 loading/success/error 상태가 전혀 처리되지 않는 것이다. 즉, promise로 형태로 작동하지 않고 요청한 순수 액션에 대한 처리만 작동하고, 심지어 redux-logger도 작동하지 않았다. 아니 대체 왜지? 하면서 미들웨어 잘못 넣었나 하면서 몇 번 바꾸고 이상한 곳만 수정하면서 한두 시간 삽질하다가 이번에도 갓갓 stackoverflow를 뒤적거려보니 비슷한 이유로 l.. 더보기
CommentTeller 프로젝트 소개글 🤖 Comment Teller 유튜브 비디오의 댓글 중 가장 많이 나온 단어들을 워드클라우드로 보여줍니다! 비디오 주소는 예시와 동일하게 작성해주셔야 검색할 수 있습니다. 한글 이외의 언어는 처리하지 않습니다.(이모티콘, 숫자, 특수문자 ㅠㅠ, ㅋㅋ, ㅎㅎ 등 포함) 댓글에서 추출된 명사 중 최다 빈도의 단어 100개만 워드 클라우드로 생성됩니다. 기술 스택 Client JS React React-redux Redux-thunk SCSS Server Node.js Express mecab-ya / mecab ko(형태소분석 라이브러리) Youtube API 더보기