Giter Site home page Giter Site logo

ratsgo / embedding Goto Github PK

View Code? Open in Web Editor NEW
449.0 449.0 128.0 525 KB

한국어 임베딩 (Sentence Embeddings Using Korean Corpora)

Home Page: https://ratsgo.github.io/embedding

License: MIT License

Shell 7.35% Python 87.87% C++ 4.41% Makefile 0.38%

embedding's People

Contributors

black7375 avatar gyunggyung avatar jaemkim avatar ratsgo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

embedding's Issues

162p에 대한 질문

162p에서 몇가지 질문이 있습니다.

질문1)
수식 4-27에서 f_w(0) 의 0은 vector를 의미하는지 궁금합니다. (혹시 vector를 의미한다면 0를 굵은 글자체로 하는 것이 좋을 것 같습니다.)

질문2) "임의의 상수 C에 대해 max(C+ c g) = g / ||g|| 임이 성립한다고 한다." 에서 식의 좌변은 output이 scalar지만 우변은 vector입니다. 좌변과 우변이 일치해야 될 것 같습니다. 좌변이 max대신에 argmax가 되던가 우변이 C + ||g||가 되어야 될 것 같은데 제 생각이 맞는지 궁금합니다.

질문3) 수식 4-28의 3번째 줄에 보면 argmax안에 c vector가 수식에 포함되어 있지 않은데 argmax에서는 해당 식을 최대화 하는 c vector를 찾는 것처럼 되어 있습니다. invalid한 수식처럼 보이는데 제 생각이 맞는지 궁금합니다. 2번째줄에서 3번째줄의 수식이 어떻게 나오게 되었는지도 궁금합니다.

BERT

개요
BERT 모델을 우리 레포에 둔다.
코드 상세는 다음과 같다.

  • 모델 코드는 2019년 5월 18일 현재 아래 주소의 origin/master에서 클론한 것이다.
  • https://github.com/google-research/bert
  • 원 레포 코드들을 우리 레포 embeddings/models/bert에 그대로 복사했다.
  • tokenization_test.py 등 일부 코드는 제외

bert 시각화 문의

안녕하세요

책에 있는 버트 시각화 코드를 실행하고 있는데 출력이 안되서요~
제가 뭔가 빠트리고 있는건지, 코드는 정상 작동하는지 궁금하네요~

스크린샷 2019-11-05 오전 5 23 44

확인 좀 부탁드립니다~
감사합니다

뭘 잘 몰라서 하는 질문

81 페이지 코드 3-2 한국어 위키백과 전처리 를 실행시키니 다음의 에러가 나옵니다.


NameError Traceback (most recent call last)
in
5 out_f = "/notebooks/embedding/data/processed/processed_wiki-go.txt"
6 output = open(out_f, 'w')
----> 7 wiki = WikiCorpus(in_f, tokenizer_func=tokenize)
8 i=0
9 for text in wiki.get_texts():

NameError: name 'tokenize' is not defined

원인을 알려 주시면 감사

p.123 페이지 오류 제보

100번의 학습 기회 가운데 3~4번 정도는 학습에서 제외하게 된다는 문장에서

P(w_i)가 0.9684되었을때는 96번 정도를 학습에서 제외하는 표현이 맞는 것 같습니다.
34번에서 9697번으로요~!

ELMo

개요
ELMo 모델을 이 레파지토리에 둔다.
코드 상세는 다음과 같다.

  • 모델 코드는 2019년 5월 18일 현재 아래 주소의 origin/master에서 클론한 것이다.
  • https://github.com/allenai/bilm-tf
  • 원 레포 bilm-tf/bilm 디렉토리에 있는 코드들을 우리 레포 embedding/models/bilm 디렉토리로 그대로 복사했다.
  • 원 레포 bilm-tf/bin/train_elmo.py 코드는 우리 레포 embedding/models에 복사했다
  • train_elmo.py의 모델 설정값은 small 모델로 맞추었다. 상세 파라메터는 다음과 같다.
{"bidirectional": true, "char_cnn": {"activation": "relu", "embedding": {"dim": 16}, "filters": [[1, 32], [2, 32], [3, 64], [4, 128], [5, 256], [6, 512], [7, 1024]], "max_characters_per_token": 30, "n_characters": 261, "n_highway": 2}, "dropout": 0.1, "lstm": {"cell_clip": 3, "dim": 1024, "n_layers": 2, "proj_clip": 3, "projection_dim": 128, "use_skip_connections": true}, "all_clip_norm_val": 10.0, "n_epochs": 10, "n_train_tokens": 768648884, "batch_size": 128, "n_tokens_vocab": 100003, "unroll_steps": 20, "n_negative_samples_batch": 8192}

page 98. 표 3-3 오타

page: 98
Kkma형태소 분석 결과와 Mecb 분석 결과에 오타가 있습니다.

Kkma에 '에/JKM' ---> '들어가/VV'
Mecab에 '가/JKS'가 2번 나옵니다. '방'으로 수정 필요.

===================
page 168
코드 4-46에 정의된 ----> 코드 4-47에 정의된

===================
page 170
코드 4-51에서
--embedding_corpus_path 로 'corpus_mecab.txt'를 넣어주고 있는데,
corpus_mecab.txt라는 파일은 없는 것 같습니다. 흐름상으로는 네이버 영화 리뷰 말뭉치가 들어가야 되니, 'ratings_mecab.txt'이 되어야 하지 않을까요?

===================
page 184
w_0, w_1, ..., w_{T-1}이기 때문에,
수식 5-1에서 \Sigma_{t=k}^{T-k} ===> \Sigma_{t=k}^{T-1}
이렇게 수정되어야 될 것 같습니다.

===================
page 187
코드 5-11에서
'Togged Document' ---> 'TaggedDocument'

from gensim.models.doc2vec import Togged Document
==>
from gensim.models.doc2vec import TaggedDocument

코드를 파이토치 버전으로도 업로드 해주실 계획이 있나요?

안녕하세요. '한국어 임베딩'이라는 책에 관심이 생겨서 알아보고 있던 도중에 이 깃헙에 업로드 된 코드가 Tensorflow로 작성되어 있더라구요. 그런데 제가 TF를 볼줄 몰라서요.

혹시 이 깃헙에 올라온 코드를 Pytorch 딥러닝 프레임워크로 컨버전해서도 업로드 해주실 수 있으실까요?

안녕하세요! 책 내용과 관련해서 몇가지 이슈를 남겨봅니다.

안녕하세요! 책 내용과 관련해서 부족하지만, 제 개인 적인 생각을 담은 몇가지 이슈를 남겨봅니다.
먼저 들어가기 앞서서 평소에 이기창님의 블로그 글을 읽으며, 정말 많은 공부를 할 수 있었음에 진심으로 감사 인사를 드립니다 👍 👍
더불어 깔끔한 목차, 설명과 한번에 이해되는 그림까지 담은 정말정말 좋은 책을 써주셔서 감사드리며, 어제부터 정독을 하고 있습니다

P222

'Vaswani et al(2017)에 따르면 이 경우에 쿼리-키 내적 행렬의 분산을 줄이게 돼 개별 소프트맥스 값이 지나치게 작아지는 것을 방지' 보다 소프트맥스 값이 지나치게 커지는 것을 방지 또는 소프트맥스의 그래디언트가 작아지는 것을 방지가 더 올바르지 않을까라고 생각합니다

We suspect that for large values of dk, the dot products grow large in magnitude, pushing the softmax function into regions where it has extremely small gradients (Vaswani at el, 2017) Attention is all you need.

P228

그림 5-27을 보면 3x3 행렬에서 i==j 일때, 0으로 마스킹된다고 그려져 있으나, MaskedMultiHead Attention의 실제 구현 코드를 보면, i==j일때도 마스킹하지 않습니다(0이 마스킹).

image

i==j일 때도 셀프 어텐션하되, Language Model을 만들기 위해(Next token Predict) 준비하는 부분이 이 부분의 영향을 많이 받는다고 생각합니다

P230

전체 학습 데이터 토큰의 15%를 마스킹한다 보다, 학습 데이터 한 문장의 토큰의 15%를 마스킹한다가 더 옳을 것 같습니다. 실제 google-research/bert 코드를 보면 create_masked_lm_predictions 함수에 512 시퀀스 길이의 문장(즉, [CLS], A, [SEP], B, [SEP])가 들어오므로 이 라인을 보면 학습 데이터 한 문장의 토큰의 15%를 마스킹하는 것이 더 올바른 것 같습니다

논문에서도 in each sequence at random 이라는 표현이 붙습니다.

In all of our experiments, we mask 15% of all WordPiece tokens in each sequence at random.

감사합니다 😄

p.121에 대해

다시 말해 이 다음 학습 데이터를 만들 때는 "를"이라는 단어가 타깃단어(t)가 되고 "빨래"는 문맥 단어(c)가 된다.
라는 문구가 있는데 그림 4-9를 보면 "를"이 문맥 단어(c)이고 "빨래"가 타깃단어(t)로 보입니다.
버그인지 확인 부탁드립니다.

P.211 ELMo Figure 질문입니다.

역방향 LSTM에서 각 LSTM Cell에서 예측하는 값들이 잘못된것 같습니다.
우측부터 첫번쨰라고 할때 첫번째 LSTM Cell에서는 '먹자'의 전 단어인 '밥'을 예측해야 한다고생각합니다.
그림에서는 '먹자'의 다음 단어인 ''를 예측하게 되어있는데, 이 경우 두번째 LSTM cell에서는 이미 그 전 LSTM Cell에서 '먹자'를 봤으므로 '먹자'라는 단어를 예측하는게 쉬워질 것 같습니다.
또한 gamma^task에 대한 추가 설명이 필요할 것 같습니다. 내용만으로는 이해가 되지 않습니다.

오타 제보 및 기타 궁금증 문의

안녕하세요

이해하기 쉽게 책을 내주셔서 공부하던 중 발견한 오타들을 제보하고 몇가지 궁금증을 문의하려고 합니다.

  • 1. transformer 내용 이후로 Pointwise라는 단어가 목차를 포함하여 매우 많이 나오는데(p225, p232, p233, p238 등) 정오표에서 처럼 모두 Position-wise로 수정하면 되는지 궁금합니다.

  • 2. 코드 실행 후 유사도 평가 시 책의 결과와 다르게 나오는 경우가 많은데 데이터셋의 변화에 따른 정상적인 결과인지, 학습을 잘못 시켜 다른 결과가 나온것인지 궁금합니다.

  • 3. p44의 서론 부분에서 GPU로만 학습이 가능한 모델은 ELMo, BERT, 단어 임베딩 파인 튜닝 부분이라 하셨는데 cpu로 실행 시 Word2Vec과 Glove, swivel, 가중임베딩, p106 bert 부분도 잘 실행되지 않았습니다.

  • 4. p62의 아래에서 2번째 줄, "TF-IDF 행렬 구축 튜토리얼은 4.1절 '잠재 의미 분석' "--> 4.4절

  • 5. p101의 위에서 7번째 줄, "preprocessmecab-user-dic.csv" --> preprocess/mecab-user-dic.csv

  • 6. p106의 코드 3-27에서 /notebooks/embedding 위치에서 python을 실행하면 from bert.tokenization이 아니라 from models.bert.tokenization으로 실행해야 제대로 되는 것 같습니다.

  • 7. p118 그림 4-5 밑에 문단에서 " 다섯 번째 단어가" --> "네 번째 단어가"

  • 8. p127 위에서 2번째 줄, '가장 높은 단어 10개와' --> '가장 높은 단어 5개와'

  • 9. p135 자소단위 fasttext 모델의 유사어 상위 목록 체크시 자소단위로 분해된 단어가 출력이 되는데 복원시키는 추가 과정을 직접 처리해야하는것인지 학습을 잘못시킨 것인지 궁금합니다.
    fasttext_jamo
    (추가) word_eval.py의 jamo_to_word 함수를 사용하면 분해된 자소를 단어로 합쳐주는 기능이 있긴하네요. fasttext_jamo의 most_similar함수 실행 시 이부분을 추가해주시면 더 좋을 것 같습니다.
    jamo_to_word

  • 10. p137, 4.4.1 PPMI 행렬 'PMI Pointwise Mutual Information, 행렬(2장) --> 콤마(,) 삭제

  • 11. p143 코드4-22와 코드4-23의 실행결과가 같게 나오던데 다르게 나오는게 정상인지 궁금합니다.
    (추가) p143에 제공되는 4-21로 학습 한 후 4-22와 4-23을 실행시키니 같은 유사도 목록이지만 유사도 값이 조금씩 다르네요 ㅎㅎ 혼란을 드려 죄송합니다
    lsa_most_similar

  • 12. p144 4.5.1의 두 번째 문단에서 '두 단어 동시 등장 빈도의 로그 값 A_ij'는 A_ij가 로그 값을 의미하는건지 해당 부분이 log A_ij을 나타내고 있는것인지 헷갈리네요. 저는 표현이 log A_ij를 나타낸다고 이해하였습니다.

  • 13. p146, 코드 4-27의 model path 부분 "data/word-embeddings/glove/glove.txt" --> "data/word-embeddings/glove/glove.vecs.txt"

  • 14. p148, "두 단어가 한 번도 등장하지 않았을 때 PMI는 음의 무한대로 발산하기 때문에" --> 두 단어가 한 번도 동시에 등장하지 않았을 때

  • 15. p155, 문단에서는 "갑-을+정=병"으로 표시하고 있지만 표 4-7의 열은 갑,을,병,정 순서로 되어 있습니다.

  • 16. p159, 코드 4-41 [python] 마커가 표시되어 있지 않습니다.

  • 17. p161, '경제에서 인수 같은 단어가' --> 경제 부분 음영 처리

  • 18. p163. Continous Bag of Words --> Continuous Bag of Words

  • 19. p165, 코드 4-42, 'self.embeddings = defaultdict(list)' --> self.embeddings = defaultdict(list)) (오른쪽 끝에 우괄호 추가)

  • 20. p184의 'y_i를 만드는 방식은 이렇다' 로 시작하는 부분에서 수식 5-2를 참고하면 '바이어스 벡터 b를 더해준 뒤' 까지는 y를 계산하는 부분이고 softmax를 취하면 P를 구하게 되는데 그럼 첫 문장이 확률 p를 구하는 방식이 되어야 하는게 아닌가 싶습니다.

  • 21. p194의 'w_(d,n)은 d번째 문서 내에 n번째로 등장하는 단어'로 시작하는 문단에서 w_(d,n)은 블로그 내용을 참고하면 토픽의 단어 비중의 영향을 받는다고 되어있는데 기호가 잘못 표시된게 아닌가 싶습니다.

  • 22. p195의 아래에서 두번째 줄 (z_(d,j))의 앞부분 설명이 'd번째 문서 i번째 단어가 속한 토픽'으로 바뀌거나 괄호안의 변수가 w_(d,n)이 되어야 서로 같은 내용을 얘기하게 될 것 같습니다.

  • 23. p197의 표5-6은 '단어-토픽 행렬'이고 p198의 표5-8은 '단어-주제 행렬'인데 같은 의미인지, 서로 다른 행렬인지 궁금합니다.

  • 24. p198번에서 깁스 샘플링 시 추정하려는 단어의 토픽 정보를 지운다 했는데 그림 5-12와 그림 5-13은 지우기 전의 분포를 그림으로 나타내고 있는 것 같습니다. 깁스샘플링 추정시 토픽 정보를 지운 분포를 참고하는 것인지 지우기 전의 분포를 참고하는 것인지 잘 이해가 되지 않습니다.

  • 25. p201 코드 5-21의 python 마커 --> bash 마커

  • 26. p213의 위에서 4번째 줄, 'ELMo 모델은 입력 문장의 토큰 수만큼의 임베딩들을 반환하게 된다.'라는 문장은 어떤 의미인지 잘 이해가 되지 않아 추가로 설명을 요청드립니다.

  • 27. p213, 수식 5-5의 L이 정확히 어떤 의미인지 표현해주셨으면 합니다.

  • 28. p218의 ELMo 프리트레이닝 코드에서 --train_prefix 'data/sentence-embeddings/elmo/pretrain-ckpt/traindata/* --vocab_file ... 이런 식으로 되어 있는데 github의 sentmodel.sh pretrain-elmo에선 *뒤에 '를 붙여 실행하고 있는데 sentmodel.sh 과 p218의 소스코드 모두 정상적으로 작동되지 않아 어떤 코드로 실행시켜야 하는지, gpu 1개 사용시 대략적으로 어느 정도의 시간이 소요되는지, 정상적으로 실행되었는지 확인할 수 있는 방법이 있는지 (결과로 어떤 파일이 생성되는지) 궁금합니다.

  • 29. p219 멀티헤드 어텐션은 5.6.1, 5.6.2 --> 5.5.1, 5.5.2

  • 30. p219 상단 피드포워드 네트워크는 5.6.3 --> 5.5.3

  • 31. p223 5.6.1 --> 5.5.1

  • 32. p231의 'max_num_token을 넘지 못할 때까지'라는 말은 max_num_token과 같거나 작아지도록 제거한다고 이해해도 되는 건지 궁금합니다.

  • 33. p236의 아래에서 3번째 줄에 '원시 말뭉치가 너무 크면 전처리가 지나치게 느려질 수 있으므로' 라는 부분에서 코드부분을 보면 전처리 수행 후에 데이터를 분리하고 있는데 그렇다면 해당 문장에서의 전처리는 이후의 어휘 집합 구축을 의미하는것인지 어떤 전처리 내용을 말하는 것인지 궁금합니다.

자잘한 오타의 경우 나름대로 수정하여 이해하고 공부하다가 몇가지 질문할 것들이 생겨 질문하는 김에 정리하여 제보하였습니다. 정리도 잘 안되고 두서없는 많은 내용을 문의드려 불쾌하게 해드렸다면 죄송합니다ㅜㅜ

docker에서 jupyter notebook 띄우는 방법 질문드립니다! (환경설정)

안녕하세요 기창님!

책에 있는 python 코드를 실행해보려고 합니다.

notebooks/embedding 실행

docker run -it --rm ratsgo/embedding-cpu bash

도커 안에서 주피터 노트북 실행

jupyter notebook --ip 0.0.0.0 --allow-root

이후 나오는 token 값으로 로그인하려고 하는데요.
도커에서 주피터를 띄울 때는 url 창에다가 [ip주소:8888] 을 눌러서
주피터 로그인 창이 나오면 거기에
토큰값을 넣어서 주피터로 접속하는 것으로 알고 있습니다.

하지만 localhost:8888
접속 시에 자꾸 거부당하고 있는데요. 이 부분에 대한 답을 구글링하고 있지만
쉽게 해결이 안되서 질문 드려봅니다 ㅠㅠ (현재 운영체제는 우분투입니다)

우분투에서 docker 실행시 고래 그림이 나오면서 ip 주소가 나오지는 않아서 그냥
원래 ip주소:8888 입력 하고 있습니다. 제 생각에는 ip 주소를 잘못입력했거나 방화벽 문제인거 같은데 경험상 아시는 해결책 있으면 부탁드리겠습니다 ㅠㅠ

[공지] 2쇄 및 전자책 발간 일정 안내

안녕하세요! 독자 여러분의 성원에 힘입어 2쇄 및 전자책 발간 일정이 다음과 같이 확정되었습니다.

  • 종이책 2쇄 발간일 : 2019년 10월 31일
  • 전자책 발간일 : 2019년 11월 29일

부족한 책인데 이만큼 성원해 주셔서 진심으로 감사드립니다. 어깨가 무거워집니다.
본 레파지토리 이슈, 메일 등 다양한 방식으로 여러분들이 오류, 개선 사항에 대한 피드백을 주셨는데요.

10월 28일까지 들어온 모든 내용에 대해서는 종이책 2쇄에 반영을 하였습니다.
이후 추가 오류나 개선 의견 등에 대해서는 전자책에 반영할 예정입니다.

다시 한번 머리 숙여 감사드립니다.

이기창 올림

nccl를 import 할수 없다고합니다.

안녕하세요
bert를 fine-tuning 해보려고 데이터 찾아 넣었는데 로그를 보니까
1 Traceback (most recent call last):
2 File "models/tune_utils.py", line 5, in
3 from tensorflow.contrib import nccl
4 ImportError: cannot import name nccl
라고 떠서 nccl을 찾아보니까 멀티 gpu를 위한 라이브러리 같더라구요
근데 이 에러를 해결 못했는데 멀티 gpu설정을 해야 nccl을 사용할수 있나요?

3장 전처리 코드 실행시 에러 문의 드립니다.

안녕하세요! 제공해주신 docker 컨테이너에서 p81의 python 코드와 p85의 자동 전처리 bash 코드 실행시 에러가 발생하여 문의드립니다.

output = open(out_f, 'w') 실행시 no such file or directory 에러가 발생하는데 혹시 빠뜨린 설정사항이 있어서 그런걸까요??

아직 미숙하여 개발 환경 설정이 쉽지 않네요ㅜ

p.123 ~ p.125에 대해

p.123
둘의 크기는 어휘 집합 크기(|V|) X 임베딩 차원수(d)로 동일하다
라고 되어 있는데 틀린 표현은 아니지만 U는 |V| X d고 V는 d X |V|라고 명확하게 해 주는 것이 더 좋을 것 같습니다.

p.125
U+V행렬을 임베딩으로 쓸 수도 있다. 혹은 U, V를 이어 붙여 2d차원의 단어 임베딩으로 사용할 수도 있다.
라고 되어 있는데 V대신에 V^T를 쓰는 것이 더 적절할 것 같습니다.

page 216 clip에 관하여

page 216 ELMo 모델의
lstm_cell = tf.nn.rnn_cell.LSTMCell(lstm_dim, num_proj=projection_dim, cell_clip=cell_clip, proj_clip=proj_clip)

여기서, cell_clip,proj_clip에 대하여, gradient를 clip한다고 책에서 설명하고 있습니다.

tf.nn.rnn_cell.LSTMCell API의 설명이나, 구현을 찾아보면, gradient를 clip하는 것이 아니고, 값 자체를 clip한다고 되어 있습니다.

https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/rnn_cell/LSTMCell

확인 부탁드립니다.

P106 코드 3-26

안녕하세요. P106 코드 3-26 에 대해서 문의드립니다.
bash preprocess.sh make-bert-vocab

위 코드에서 preprocess.sh 에 make-bert-vocab 를 명령어로 가지는 코드가 없는것 같습니다.

P.32~33 질문

안녕하세요.
먼저, 예전부터 블로그 글을 종종 구독하던 팬으로
한국어 임베딩 책을 통해 한글자료로 더 쉽고 빠르게 지식을 습득할 수 있게 해주셔서 감사하다는 인사부터 드립니다.

제가 issue를 남기는 이유는 다름이 아니라
책을 읽다 보니 벡터 계산에 대해 여쭙고 싶은게 생겨서요.
보통 지금까지 제가 봤던 벡터 계산 예시들은
뺄셈하는 두 단어는 공통된 성질을 가지는 관계였고, 더해주는 단어는 빼준 단어와 반의어 관계를 가졌습니다.
(예시: KING (왕)−MAN (남자)+WOMAN (여자) = QUEEN(여왕))

벡터의 계산이 교환법칙이 성립하기는 하지만,
순서를 바꾸더라도 단어에 적용된 부호들이 잘못된 것이 아닌가 싶습니다.

'아들+딸-소녀=소년'로 되어있는데
'아들-딸+소녀=소년'(혹은, '소녀-딸+아들=소년')이어야 하는것이 아닌지,

'아들+딸-아빠=엄마'가 아니라,
'아빠-아들+딸=엄마'가 되어야하는 것이 아닌지,
'신랑+신부-왕=여왕'이 아니라,
'왕-신랑+신부=여왕'이 되어야 하는게 아닌지...

즉, 첫번째 단어벡터 + 두번째 단어벡터 - 세번째 단어벡터 <- 이 식의 순서를 지킨다면
예시 단어들의 순서(첫번째 단어와 세번째 단어 교환)를 바꿔야 할 것 같습니다.

제 지식이 짧아 틀린 의견으로 번거롭게 해드린 것일 수도 있겠습니다만,
그래도 검토 부탁드립니다.

전체 프로젝트 개요

개요
임베딩 튜토리얼 프로젝트를 만든다
모듈 구성요소는 다음과 같다

  • 위키피디어 다운로드 및 전처리
  • 네이버 영화 리뷰 다운로드 및 전처리
  • SoyNLP 활용한 tokenize
  • KoNLPy 활용한 tokenize
  • Khai 활용한 tokenize
  • SoyNLP 활용한 Co-occurrence matrix 구축
  • 사이킷런 활용한 SVD
  • gensim 활용한 Word2Vec
  • FastText
  • GloVe
  • Swivel
  • Weighted Word Embeding
  • Bokeh 활용한 시각화 프로젝트
  • pLSA
  • gensim 활용한 LDA
  • gensim 활용한 Doc2Vec
  • ELMo
  • GPT
  • BERT
  • Feature-based learning
  • Fine tune

실습 코드 정오표

개요
한국어 임베딩 책에 소개돼 있는 실습 코드 수정 사항을 종합 기록해둔다.

Swivel

개요
임베딩 프로젝트의 하위 과제인 Swivel 코드를 레파지토리 내부로 가져온다.
가급적 원본 레파지토리를 유지해서 그대로 클론하는 것이 원칙이나 Swivel 모 레파지토리가 너무 커서 2019년 5월 25일 기준 필수 코드 3개(swivel.py, fastprep 관련 파일 두 개)만 가져온다.

p. 68 오류 제보 입니다.

안녕하세요.
페이지 68에 아래서 5번째 줄 - 표 2-4의내 마음 속에 영원히 기억될 최고의 명작이다의 빈도가 아니라. 그 아이는 또바기 인사를 잘한다가 맞는 것 같습니다.

또한 p72에 형태(form)이므로 p73맨 앞 단어에도 형식보다 형태로 오는게 맞는것 같습니다

더불어 P225의 트랜스포머 설명에서 Pointwise 보다 Position-wise가 좀 더 올바르지 않을까? 생각합니다!!
감사합니다 :D

attention_score 버그

page 265.
tune_utils.py에서 make_elmo_graph()에서

attention_score = tf.nn.softmax(tf.contrib.layers.fully_connected(inputs=H, num_outputs=1, activation_fn=None))

이렇게 되어 있는데, softmax를 취하면서, 모든 값이 1이 되어 버립니다.

attention_score = tf.nn.softmax(tf.contrib.layers.fully_connected(inputs=H, num_outputs=1, activation_fn=None),axis=1)

이렇게 되어야 될 것 같습니다.

unzip error

image
코드 4-1을 실행 시 이렇게 나오는데 몇몇 gdrive 파일이 손상되지 않았나 의심이 갑니다.
파일을 다운로드 후 unzip 시 zipfile을 찾을 수 없다고 나오고 이 외에도 몇 파일은 이런 에러가 발생했는데 제가 실수를 하고 있는지 알려주세요

212page 오탈자

212 페이지 맨 밑에 문구에서

k번째 토큰의 j번째 레이어의 양방향, 역방향 LSTM 히든 벡터를 이어 ~~~

여기서 양방향, 역방향이 아니고 순방향, 역방향으로 수정하는 것이 맞는것 같습니다!!!!!!!

p181 오류 제보입니다.

안녕하세요. 책을 열심히 읽다가 잘못된점이 있는것 같아서 제보드립니다 :)
181페이지의 마지막 문단 "그림 5-3 왼쪽 리스트는 ~" 에서 왼쪽이 아니라, 오른쪽으로 변경해야 할 것 같습니다.
이와 마찬가지로 동일한 문단에서 "그림 5-3의 우측 그림은 실제 ~ "에서 우측을 좌측으로 변경해야 맞을 것 같습니다.

p.40 오타

40p에 오타를 발견했습니다.

기존 : 다운스트림 태스크 (downstearm)
수정 : 다운스트림 태스크 (downstream)

[공지] 레파지토리 운영 원칙

개요

  • 본 레파지토리는 도서 한국어 임베딩과 그 튜토리얼을 위한 것입니다.
  • 도서에 대한 질문, 의견 제시는 언제든 환영합니다.
  • 도서를 구매하지 않았더라도 임베딩 기법에 대한 질문과 의견을 올리시는 것 또한 격하게 환영합니다.
  • 부족한 제가 "한국어 임베딩"을 주제로 책을 쓰고 본 레파지토리를 열게 된 것은 이 책을 마중물로 하여 임베딩에 대한 논의와 개발이 활발해졌으면 좋겠다는 바람에서였습니다.
  • 따라서 이 레파지토리와 이슈 게시판은 모두가 함께 이끌어 갔으면 좋겠습니다.
  • 누구나 질문이나 의견을 제시할 수 있고, 역시 누구나 답을 할 수 있습니다.
  • 아울러 누구나 본 레파지토리 개선에 기여할 수 있습니다.
  • 저자-독자의 1대多 소통이 아닌 불특정 다수의 독자들 사이의 多대多 소통이 되었으면 좋겠습니다.
  • 향후 이 레파지토리 운영과 관련해 추가로 공지할 사항이 생기면 이 이슈에 공유하도록 하겠습니다.

126쪽 코드 질문

  1. 코드 4-4 오류

코드 4-4를 실행하면 조금 뒤에 '죽었음'이라는 메시지가 출력되고 제대로 된 결과물이 얻어지지 않습니다.
우분투 16.04, MacOS Catalina, Windows 10 환경에서 모두 해 보았으나 전부 제대로 실행되지 않았습니다.

물론 이전 과정인 전 처리, 형태소 분석을 모두 수행한 이후에 실행을 한 것입니다.
그런데도 자꾸 코드 4-4가 제대로 실행되지 않아서, '죽었음'을 키워드로 구글링을 해 보니 메모리 부족 문제라는 글들이 보이더군요.
딱히 설정을 안 건드려도 실행이 되도록 튜토리얼을 구성하셨으리라고 생각은 됩니다만,
혹시나 하여 도커 설정에서 CPUs:4, Memory: 14848 MB, Swap: 2048MB로 자원을 대폭 늘려 봤습니다. (Windows 10 환경)
그러나 '죽었음' 메시지가 출력되는 시간이 훨씬 늦어질 뿐 여전히 실행되지 않습니다.
무슨 문제인지, 어떻게 해결해야 되는지 궁금합니다.

  1. 코드 4-1의 데이터 관련

코드 4-1이 '형태소 분석 완료된' 데이터를 다운로드하는 것이라고 되어 있습니다만, 다운받은 파일을 에디터로 열어 보면 형태소 단위로 토큰화만 되어 있습니다.
형태소 분석을 했다고 하면 형태소 뒤에 태그까지 있어야 되는 거로 이해되는데, 원래 워드 벡터를 만들 때 이런 식으로 태그 없이 토큰화만 해서 만드는 게 일반적인지요?
그러면 동철자인 형태소들끼리 구별이 안 돼서 좀 이상해지는 게 아닌가 싶어서 여쭙습니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.