2017-09-10 13 views
0

자연 언어 처리 (NLP) 작업의 경우 word2vec 벡터를 단어의 포함으로 사용합니다. 그러나 여전히 word2vec 모델을 lstm 모델과 통합하는 방법을 이해하지 못합니까?word2vec 모델과 lstm 모델을 통합하는 방법은 무엇입니까?

긴 단시간 (LSTM) 네트워크를 사용하는 정서적 예측과 같은 NLP 작업을 모델링 할 때 어떻게 알 수없는 단어를 처리해야합니까?

답변

1

신경망의 입력으로 텍스트 데이터를 사용하려면 숫자로 변환해야합니다. 즉, word2vec은 간단히 말하면 큰 하나의 핫 인코딩 된 벡터를 갖는 것의 대안입니다.

그러나 사용할 수 있으려면 미리 정의 된 단어 세트 인 사전이 있어야합니다.이 사전은 사용자의 포함 행렬 (생성 된 word2vec)에 매핑됩니다. 그 행렬은 사전 크기와 삽입물의 크기 (당신의 특징 벡터 크기)를 모양대로 가질 것입니다.

해당 사전은 포함 토큰에 항목이있는 특수 토큰 (예 : <UNK>)을 사용하여 알 수없는 단어를 처리합니다.

편집 :

이 당신의 텍스트를 입력 말할 수 있습니다 추가 예 : The quick brown fox jumps over the lazy dog

그리고 이것은 당신의 사전입니다 (크기 8) :

<EOF> 0 
<UNK> 1 
the 2 
fox 3 
jumps 4 
over 5 
lazy 6 
dog 7 

매입과 함께 내장 행렬 크기 2 :

0 | -0.88930951349 -1.62185932033 
1 | -0.11004085279 0.552127884563 
2 | 0.689740990506 0.834548005211 
3 | -0.7228834693 0.633890390277 
4 | -1.47636106953 -0.20830548073 
5 | 1.08289425079 0.211504860598 
6 | -0.626065160814 0.505306007423 
7 | 1.91239085331 -0.102223754095 

그럼 당신은 사전에 인덱스 모든 단어를 교체, 전처리에 입력을해야합니다, 그 결과는 다음과 같다 : 사전에없는 quick로하고 brown, 사람들은

[2, 1, 1, 3, 4, 5, 2, 6, 7]

공지 사항

있음 알 수없는 단어.

마지막으로 네트워크에서 사용하려면 인덱스를 포함으로 대체해야합니다.

[[0.689740990506, 0.834548005211], [-0.11004085279, 0.552127884563], 
[-0.11004085279, 0.552127884563], [-0.7228834693, 0.633890390277], 
[-1.47636106953, -0.20830548073], [1.08289425079, 0.211504860598], 
[0.689740990506, 0.834548005211], [-0.626065160814, 0.505306007423], 
[1.91239085331, -0.102223754095]] 
+0

하지만 lstm과 그의 게이트 및 활성화 기능이 어떻게 고려되는지는 알 수 없습니까 ?? 당신이 언급 한 모든 것들이 첫 번째 층에서 일어 났습니까 ?? – dan

+0

Christoper Olah의 블로그를 읽으시길 권합니다. 그는 lstms http://colah.github.io/posts/2015-08-Understanding-LSTMs/을 포함하여 신경 네트워크에 대한 깊이있는 설명을 정말 훌륭하게 가지고 있습니다. –

+0

신경망 계층은 목적 함수에 더 적합한 다른 표현으로 벡터를 변환하는 것이라고 생각할 수 있습니다. 당신이 매우 깊은 네트워크를 가지고있을 때, 네트워크의 큰 부분이 특징 추출을 할 것이며, 마지막 부분 만이 실제 목적 (분류, 회귀 등)을 할 것입니다. 'word2vec'는 사전에 피처 엔지니어링의 일부를 수행하여 네트워크가 동일한 효과를 달성해야하는 교육/용량의 양을 줄입니다. –