728x90

MI Lab/Word2Vec - 2021.11~2022.01 14

[연관어 분석] 크롤링 + 전처리 + 인공지능(word2vec)

하나의 영어단어를 입력했을 때 그 단어와 연관된, 함께 많이 사용이 되는 단어들을 찾기 위해 인공지능을 활용했다. 연관어를 찾는 단계는 다음과 같다. 입력 단어가 A라고 할 때. 1) 구글 검색창에 단어 A를 입력했을 때 나타나는 뉴스기사들의 제목과 본문 내용 일부를 페이지 1쪽부터 10쪽까지 탐색하며 가져온다. 2) 가져온 내용들을 전처리하여 인공지능이 학습할 수 있는 형태로 만든다. 3) word2vec 모델에 학습데이터를 넣어 연관어를 출력받는다. 즉, 단어를 검색할 때마다 그 단어에 맞는 학습데이터를 만들어서 연관어를 찾아내는 것이다. 매번 새롭게 탐색해야 해서 비효율적이지만 단어의 의미가 변화되거나 사회적으로 다른 의미로써 쓰이는 등 연관어가 바뀔 수 있는 경우에는 효과적이라고 볼 수 있다. 일..

[단어 연관도 - Lab meeting] Tensorflow Lite - 2022.01.25.화

Tensorflow로 학습한 word2vec 모델을 안드로이드 프로젝트에서 활용하기 위해 Tensorflow Lite 형태의 파일로 저장을 해서 사용해보았다. 아직 내가 원하는 동작까지는 성공하지 못했지만, tflite 파일을 저장해서 사용할 수 있다는 것을 확인하기 위해 예제로 사용한 간단한 코드에서는 제대로 동작했다. 지식이 너무 부족하다보니 시스템 설계 자체를 애초에 잘못한 것 같다. 시스템 설계를... 제대로 해야겠다. 그리고 다음주부터는 Lab meeting에서 이 주제가 아니라 연구 논문을 쓸 주제로 진행하기로 했다. 관련 공부를 좀 더 해보고, 이 관련 내용은 동아리 활동에서 계속 진행하면 될 것 같다.

[단어 연관도 - Lab meeting] word2vec 학습 데이터 - 2022.01.04.화

이번 Lab meeting에서는 word2vec를 학습할 때 어떤 데이터를 사용해야 할지에 대해 공부하고 발표해보았다. 불용어를 제거하지 않았을 경우에는, 해당 단어가 크게 의미를 가지지 않은 단어임에도 불구하고 다른 단어와의 연관성이 있다고 판단될 수 있다. 또한 의미없는 단어까지 학습하게 된다는 점에서 불필요한 시간이 소요될 수 있다. 이제는 직접 코드를 작성하고 실행해보는 작업을 해보아야 할 것 같다.

[단어 연관도 분석] gensim 설치

word2vec를 이용하여 단어의 연관도를 분석하려고 한다. gensim 패키지에 word2vec가 있기 때문에 gensim을 설치해서 사용할 수 있다. gensim 설치 방법을 찾아보니 pip install gensim 위 명령어로 설치가 가능하다고 하는데, 시도해보니 아래와 같은 오류가 발생했다. 그래서 구글에 검색해보니 같은 오류가 발생하는 사람들이 많았다. 버전을 지정해서 설치하면 오류가 발생하지 않는다고 하는데, 해당 글이 조금 예전에 작성된 글이라 최신 버전이 아닐 것 같았다. 그래서 최신 버전이 뭔지 알기 위해 gensim 페이지에 들어갔는데 최신 버전이 뭔지는 모르겠고 아래와 같은 설치 명령어를 발견했다. pip install --upgrade gensim 이걸 하면 되려나? 싶어서 해줬더..

[단어 연관도 - Lab meeting] 연관어 분석 방법 - 2021.12.28.화

이번주는 Word2Vec 이외에 연관어를 분석하는 방법 2가지를 공부해보았다. 같은 단어 쌍(순서 무관)이 여러번 등장할수록 연관되어 있다고 보는 '동시 출현 기반 연관어 분석' 방법이 있다. 가중치를 활용한 '통계적 가중치 기반 연관어 분석' 방법이 있는데, 이 방법에서 가중치를 이용해 유사도를 계산하는 수식이 3가지 정도 존재한다.(더 존재할수도 있지만 내가 발견한 글에는 대표적으로 3가지가 설명되어 있었다) 수식을 자세히 보지도 않고 어려워 보여서 건너뛰었는데, 교수님이 해당 수식은 어려운 것이 아니라고 하셨다. 나중에 자세히 보면서 공부할 필요가 있을 것 같다. 연관어 분석에서 단어별 중요성을 파악하는 데 쓰이는 중심성 계수에 대해서도 공부해보았다. 교수님과 대화를 나누다보니 이 부분은 이해가 확..

[단어 연관도 - Lab meeting] Skip-gram 활용 사례 - 2021.11.29.월

이전 랩미팅에서 CBOW 설명 시 사용했던 단어 2차원 그래프가 어떻게 나온 것인지 실제 코드를 보며 공부를 해보았다. 해당 코드는 아마존의 휴대폰 관련 리뷰 댓글을 입력 데이터로 받아 단어 간의 연관성을 분석한 것이다. CBOW를 설명할 때 해당 그래프를 사용했는데, 이 코드는 skip-gram을 이용한 것이었다. 그리고 알고보니 CBOW보다 skip-gram의 성능이 더 좋아서 많이 사용된다고 한다. +) 참고 https://nbviewer.org/github/dreamgonfly/phone-review-nlp/blob/master/phone_reviews_nlp.ipynb#Modern-NLP-on-mobile-phone-reviews Jupyter Notebook Viewer You can find..

[단어 연관도 - Lab meeting] Word2Vec - 2021.11.22.월

단어의 연관도를 분석하는 인공지능을 탐색하던 중 Word2Vec라는 알고리즘을 발견하여 공부해보았다. 단어를 벡터로 표현하면, 벡터 연산이 가능해진다. 벡터 연산을 하면 앞에서 봤던 것처럼 ‘king – man + woman = queen’이라는 연산이 가능해진다. (단, 벡터가 단어의 의미를 잘 표현하고 있을 경우에 가능) - 단어를 여러 차원에 분산하여 표현했을 때의 장점 1) 적은 차원으로 대상을 표현할 수 있다. 원핫인코딩처럼 표현하면 단어의 수만큼 차원을 사용하지만, word2vec처럼 표현하면 차원의 크기를 설정하여 거기에 맞춰서 벡터가 표현된다. 보통 20~200차원 정도 사용. 2) 입력 데이터에 0이 많으면 데이터에서 정보를 뽑아내기 어렵지만, 각각의 차원이 모두 정보를 가지고 있으면 모..

728x90