FastText 는 Facebook에서 만든 word representation과 sentence classification의 효율적인 학습을 위한 라이브러리로, Word2Vec 와 같이 단어를 벡터로 만들어 준다. Word2Vec 과의 가장 큰 차이점은 Word2Vec 은 하나의 단어를 쪼갤 수 없는 단위로 생각한다면, FastText 는 하나의 단어 안에도 여러 단어들이 존재할 수 있다고 가정하여 학습을 진행한다. 또한 한국어를 포함한 157개국 언어에 대한 common crawler 와 wikipedia의 데이터를 학습한 pre-trained model을 제공하고 있다.
Install
FastText 는 github page를 통해 다운로드 받거나, pip module을 설치하여 사용할 수 있다.
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
fastText $ sudo pip install .
# 또는
fastText $ sudo python setup.py install
$ pip install fasttext
Pre-trained model 만 사용할 경우에는 딱히 설치하지 않아도 됨 ^^
Pre-trained model
Download pre-trained model
pre-trained model은 https://fasttext.cc/docs/en/pretrained-vectors.html 페이지에서 다운로드 받을 수 있으며, 다음 두 가지 형태로 제공된다.
- text(vec) : 라인마다 단어에 대한 vector가 있는 형태
- bin : vector 뿐만 아니라 dictionary와 모델의 하이퍼 파라미터와 같은 정보들이 모두 포함된 형태. 모델을 추가로 학습하여 개선할 수 있다.
Convert into spacy model
text(vec) 모델을 다운로드하여 이를 spacy 모델로 변환하자.
# spacy 설치
$ pip install spacy
# mecab 설치
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
# 혹은
$ pip install mecab-python3
# mecab-ko 설치
$ wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
$ tar zxvf mecab-0.996-ko-0.9.2.tar.gz
$ cd mecab-0.996-ko-0.9.2
mecab-0.996-ko-0.9.2 $ ./configure
mecab-0.996-ko-0.9.2 $ make
mecab-0.996-ko-0.9.2 $ make check
mecab-0.996-ko-0.9.2 $ sudo make install
# mecab-ko-dic 설치
$ wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz
$ tar zxfv mecab-ko-dic-2.1.1-20180720.tar.gz
$ cd mecab-ko-dic-2.1.1-20180720
mecab-ko-dic-2.1.1-20180720 $ ./autogen.sh # audomake version 문제로 에러가 발생하는 경우 수행
mecab-ko-dic-2.1.1-20180720 $ ./configure
mecab-ko-dic-2.1.1-20180720 $ make
mecab-ko-dic-2.1.1-20180720 $ sudo make install
# natto-py 설치
$ pip install natto-py
# convert 수행
$ python -m spacy init vectors ko ./wiki.ko.vec wiki_ko_model/
mecab-ko 및 mecab-ko-dict 설치와 관련된 자세한 내용은 아래 페이지를 참고한다.
https://bitbucket.org/eunjeon/mecab-ko/src/master/README.md
변환이 완료된 spacy 모델은 다음과 같은 구조를 갖게 된다.
wiki_ko_model
├── config.cfg
├── meta.json
└── vocab
├── key2row
├── lookups.bin
├── strings.json
└── vectors
meta.json 파일을 수정하여 이름 및 버전 정보등을 수정할 수 있다.
Model packaging
변환된 모델을 spacy 에서 로드할 수 있는 형태로 패키징하자.
$ python -m spacy package ./wiki_ko_model ./
ko_model-0.1.0 디렉토리가 생성되며, 다음과 같은 구조를 갖게 된다.
meta.json 파일에 설정된 이름과 버전으로 생성 됨
ko_model-0.1.0
├── MANIFEST.in
├── dist
│ └── ko_model-0.1.0.tar.gz
├── ko_model
│ ├── __init__.py
│ ├── ko_model-0.1.0
│ │ ├── config.cfg
│ │ ├── meta.json
│ │ └── vocab
│ │ ├── key2row
│ │ ├── lookups.bin
│ │ ├── strings.json
│ │ └── vectors
│ └── meta.json
├── ko_model.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── entry_points.txt
│ ├── not-zip-safe
│ ├── requires.txt
│ └── top_level.txt
├── meta.json
└── setup.py
생성된 디렉토리로 이동하여 다음 명령어를 이용하여 모델 생성을 완료한다.
$ cd ko_model-0.1.0
ko_model-0.1.0 $ python setup.py sdist
dist 디렉토리 하위에 ko_model-0.1.0.tar.gz 파일이 생성된다.
ko_model-0.1.0/dist
└── ko_model-0.1.0.tar.gz
Install model
다음 명령어를 이용하여 생성한 모델을 설치한다.
ko_model-0.1.0 $ cd dist
ko_model-0.1.0/dist $ pip install ko_model-0.1.0.tar.gz
모델 설치가 완료되면, 다음 명령어로 설치 성공 여부를 확인한다.
$ spacy info ko_model
======================= Info about pipeline 'ko_model' =======================
lang ko
name model
version 0.1.0
description
author
email
url
license
spacy_version >=3.0.5,<3.1.0
spacy_git_version 53a3b967a
vectors {'width': 300, 'vectors': 879129, 'keys': 879129, 'name': 'ko_model.vectors'}
pipeline []
components []
disabled []
source /Volumes/DATA/workspace/test/rasa_nlu/rasa-korean/venv/lib/python3.6/site-packages/ko_model
'일하는 > AI, ML' 카테고리의 다른 글
spaCy (0) | 2021.05.25 |
---|---|
GTTS (Google Text to Speech) (0) | 2021.02.03 |
Rasa NLU Tutorial (0) | 2021.01.21 |
NLTK Tutorial (0) | 2021.01.21 |