From cf8734ee20c7d497070d91b45c308b98b3d41c28 Mon Sep 17 00:00:00 2001 From: annakong23 Date: Sun, 5 Oct 2025 13:24:59 +0900 Subject: [PATCH 1/2] fix typo and spacing #1006 --- .../nlp/sequence_models_tutorial.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/beginner_source/nlp/sequence_models_tutorial.py b/beginner_source/nlp/sequence_models_tutorial.py index 6cea3987f..ff0c1df28 100644 --- a/beginner_source/nlp/sequence_models_tutorial.py +++ b/beginner_source/nlp/sequence_models_tutorial.py @@ -14,7 +14,7 @@ 순환 신경망은 일종의 상태를 유지하는 네트워크입니다. 예를 들면, 출력은 다음 입력의 일부로 사용될 수 있습니다. 정보는 네트워크가 시퀀스를 통과할 때 전파될 수 있습니다. -LSTM의 경우에, 시퀀스의 각 요소에 대응하는 *은닉 상태(hidden state)* :math:`h_t` 가 존재하며, +LSTM의 경우에, 시퀀스의 각 요소에 대응하는 *은닉 상태(hidden state)* :math:`h_t`가 존재하며, 이는 원칙적으로 시퀀스의 앞부분에 있는 임의 포인트의 정보를 포함할 수 있습니다. 우리는 은닉 상태를 이용하여 언어 모델에서의 단어, 품사 태그 등 무수히 많은 것들을 예측할 수 있습니다. @@ -100,25 +100,25 @@ # `여기 `__. # 에서 관련 내용을 읽을 수 있습니다. # -# 모델은 다음과 같습니다. 단어가 :math:`w_i \in V` 일 때, -# 입력 문장을 :math:`w_1, \dots, w_M` 라고 합시다. 또한, -# :math:`T` 를 우리의 태그 집합라고 하고, :math:`w_i` 의 단어 태그를 :math:`y_i` 라고 합니다. -# 단어 :math:`w_i` 에 대한 예측된 태그를 :math:`\hat{y}_i` 로 표시합니다. +# 모델은 다음과 같습니다. 단어가 :math:`w_i \in V`일 때, +# 입력 문장을 :math:`w_1, \dots, w_M`라고 합시다. 또한, +# :math:`T`를 우리의 태그 집합이라고 하고, :math:`w_i`의 단어 태그를 :math:`y_i`라고 합니다. +# 단어 :math:`w_i`에 대한 예측된 태그를 :math:`\hat{y}_i`로 표시합니다. # # -# 이것은 :math:`\hat{y}_i \in T` 일 때, 출력이 :math:`\hat{y}_1, \dots, \hat{y}_M` 시퀀스인 +# 이것은 :math:`\hat{y}_i \in T`일 때, 출력이 :math:`\hat{y}_1, \dots, \hat{y}_M` 시퀀스인 # 구조 예측 모델입니다. # # 예측을 하기 위해, LSTM에 문장을 전달합니다. 한 시간 단계 -# :math:`i` 의 은닉 상태는 :math:`h_i` 로 표시합니다. 또한 각 태그에 +# :math:`i`의 은닉 상태는 :math:`h_i`로 표시합니다. 또한 각 태그에 # 고유한 인덱스를 할당합니다 (단어 임베딩 섹션에서 word\_to\_ix 를 사용한 것과 유사합니다.) -# 그러면 :math:`\hat{y}_i` 예측 규칙은 다음과 같습니다. +# 그러면 :math:`\hat{y}_i` 예측 규칙은 다음과 같습니다. # # .. math:: \hat{y}_i = \text{argmax}_j \ (\log \text{Softmax}(Ah_i + b))_j # # 즉, 은닉 상태의 아핀 맵(affine map)에 대해 로그 소프트맥스(log softmax)를 취하고, # 예측된 태그는 이 벡터에서 가장 큰 값을 가지는 태그가 됩니다. -# 이것은 곧 :math:`A` 의 타깃 공간의 차원이 :math:`|T|` 라는 것을 +# 이것은 곧 :math:`A`의 타깃 공간의 차원이 :math:`|T|`라는 것을 # 의미한다는 것을 알아두세요. # # @@ -131,7 +131,7 @@ def prepare_sequence(seq, to_ix): training_data = [ # 태그는 다음과 같습니다: DET - 한정사;NN - 명사;V - 동사 - # 예를 들어, "The" 라는 단어는 한정사입니다. + # 예를 들어, "The"라는 단어는 한정사입니다. ("The dog ate the apple".split(), ["DET", "NN", "V", "DET", "NN"]), ("Everybody read that book".split(), ["NN", "V", "DET", "NN"]) ] @@ -233,17 +233,17 @@ def forward(self, sentence): # 단어의 문자에서 파생된 표현으로 단어 임베딩을 증가시켜보겠습니다. # 접사(affixes)와 같은 문자 수준의 정보는 품사에 큰 영향을 미치기 때문에, # 상당한 도움이 될 것으로 예상합니다. -# 예를 들어, 접사 *-ly* 가 있는 단어는 +# 예를 들어, 접사 *-ly*가 있는 단어는 # 영어에서 거의 항상 부사로 태그가 지정됩니다. # -# 이것을 하기 위해서, :math:`c_w` 를 단어 :math:`w` 의 C를 단어 w의 문자 수준 표현이라고 하고, -# 전과 같이 :math:`x_w` 를 단어임베딩이라고 합시다. -# 그렇다면 우리의 시퀀스 모델에 대한 입력은 :math:`x_w` 와 -# :math:`c_w` 의 연결이라고 할 수 있습니다. 만약에 :math:`x_w` 가 차원 5를 가지고, :math:`c_w` +# 이것을 하기 위해서, :math:`c_w`를 단어 :math:`w`의 C를 단어 w의 문자 수준 표현이라고 하고, +# 전과 같이 :math:`x_w`를 단어임베딩이라고 합시다. +# 그렇다면 우리의 시퀀스 모델에 대한 입력은 :math:`x_w`와 +# :math:`c_w`의 연결이라고 할 수 있습니다. 만약에 :math:`x_w`가 차원 5를 가지고, :math:`c_w` # 차원 3을 가지면 LSTM은 차원 8의 입력을 받아들여야 합니다. # # 문자 수준의 표현을 얻기 위해서, 단어의 문자에 대해서 LSTM을 수행하고 -# :math:`c_w` 를 LSTM의 최종 은닉 상태가 되도록 합니다. +# :math:`c_w`를 LSTM의 최종 은닉 상태가 되도록 합니다. # 힌트: # # * 새 모델에는 두 개의 LSTM이 있을 것입니다. From 3868e64f1571d5e8fbab663eeffeb35fd21b10ee Mon Sep 17 00:00:00 2001 From: annakong23 Date: Sun, 5 Oct 2025 16:56:35 +0900 Subject: [PATCH 2/2] Style: fix spacing issues based on code review feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit beginner_source/nlp/sequence_models_tutorial.py 오탈자 수정 Fixes #1006 --- .../nlp/sequence_models_tutorial.py | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/beginner_source/nlp/sequence_models_tutorial.py b/beginner_source/nlp/sequence_models_tutorial.py index ff0c1df28..7f61e5231 100644 --- a/beginner_source/nlp/sequence_models_tutorial.py +++ b/beginner_source/nlp/sequence_models_tutorial.py @@ -14,7 +14,7 @@ 순환 신경망은 일종의 상태를 유지하는 네트워크입니다. 예를 들면, 출력은 다음 입력의 일부로 사용될 수 있습니다. 정보는 네트워크가 시퀀스를 통과할 때 전파될 수 있습니다. -LSTM의 경우에, 시퀀스의 각 요소에 대응하는 *은닉 상태(hidden state)* :math:`h_t`가 존재하며, +LSTM의 경우에, 시퀀스의 각 요소에 대응하는 *은닉 상태(hidden state)* :math:`h_t` 가 존재하며, 이는 원칙적으로 시퀀스의 앞부분에 있는 임의 포인트의 정보를 포함할 수 있습니다. 우리는 은닉 상태를 이용하여 언어 모델에서의 단어, 품사 태그 등 무수히 많은 것들을 예측할 수 있습니다. @@ -100,25 +100,25 @@ # `여기 `__. # 에서 관련 내용을 읽을 수 있습니다. # -# 모델은 다음과 같습니다. 단어가 :math:`w_i \in V`일 때, -# 입력 문장을 :math:`w_1, \dots, w_M`라고 합시다. 또한, -# :math:`T`를 우리의 태그 집합이라고 하고, :math:`w_i`의 단어 태그를 :math:`y_i`라고 합니다. -# 단어 :math:`w_i`에 대한 예측된 태그를 :math:`\hat{y}_i`로 표시합니다. +# 모델은 다음과 같습니다. 단어가 :math:`w_i \in V` 일 때, +# 입력 문장을 :math:`w_1, \dots, w_M` 라고 합시다. 또한, +# :math:`T` 를 우리의 태그 집합이라고 하고, :math:`w_i` 의 단어 태그를 :math:`y_i` 라고 합니다. +# 단어 :math:`w_i` 에 대한 예측된 태그를 :math:`\hat{y}_i` 로 표시합니다. # # -# 이것은 :math:`\hat{y}_i \in T`일 때, 출력이 :math:`\hat{y}_1, \dots, \hat{y}_M` 시퀀스인 +# 이것은 :math:`\hat{y}_i \in T` 일 때, 출력이 :math:`\hat{y}_1, \dots, \hat{y}_M` 시퀀스인 # 구조 예측 모델입니다. # # 예측을 하기 위해, LSTM에 문장을 전달합니다. 한 시간 단계 -# :math:`i`의 은닉 상태는 :math:`h_i`로 표시합니다. 또한 각 태그에 +# :math:`i` 의 은닉 상태는 :math:`h_i` 로 표시합니다. 또한 각 태그에 # 고유한 인덱스를 할당합니다 (단어 임베딩 섹션에서 word\_to\_ix 를 사용한 것과 유사합니다.) -# 그러면 :math:`\hat{y}_i` 예측 규칙은 다음과 같습니다. +# 그러면 :math:`\hat{y}_i` 예측 규칙은 다음과 같습니다. # # .. math:: \hat{y}_i = \text{argmax}_j \ (\log \text{Softmax}(Ah_i + b))_j # # 즉, 은닉 상태의 아핀 맵(affine map)에 대해 로그 소프트맥스(log softmax)를 취하고, # 예측된 태그는 이 벡터에서 가장 큰 값을 가지는 태그가 됩니다. -# 이것은 곧 :math:`A`의 타깃 공간의 차원이 :math:`|T|`라는 것을 +# 이것은 곧 :math:`A` 의 타깃 공간의 차원이 :math:`|T|` 라는 것을 # 의미한다는 것을 알아두세요. # # @@ -131,7 +131,7 @@ def prepare_sequence(seq, to_ix): training_data = [ # 태그는 다음과 같습니다: DET - 한정사;NN - 명사;V - 동사 - # 예를 들어, "The"라는 단어는 한정사입니다. + # 예를 들어, "The" 라는 단어는 한정사입니다. ("The dog ate the apple".split(), ["DET", "NN", "V", "DET", "NN"]), ("Everybody read that book".split(), ["NN", "V", "DET", "NN"]) ] @@ -233,17 +233,17 @@ def forward(self, sentence): # 단어의 문자에서 파생된 표현으로 단어 임베딩을 증가시켜보겠습니다. # 접사(affixes)와 같은 문자 수준의 정보는 품사에 큰 영향을 미치기 때문에, # 상당한 도움이 될 것으로 예상합니다. -# 예를 들어, 접사 *-ly*가 있는 단어는 +# 예를 들어, 접사 *-ly* 가 있는 단어는 # 영어에서 거의 항상 부사로 태그가 지정됩니다. # -# 이것을 하기 위해서, :math:`c_w`를 단어 :math:`w`의 C를 단어 w의 문자 수준 표현이라고 하고, -# 전과 같이 :math:`x_w`를 단어임베딩이라고 합시다. -# 그렇다면 우리의 시퀀스 모델에 대한 입력은 :math:`x_w`와 -# :math:`c_w`의 연결이라고 할 수 있습니다. 만약에 :math:`x_w`가 차원 5를 가지고, :math:`c_w` +# 이것을 하기 위해서, :math:`c_w` 를 단어 :math:`w` 의 C를 단어 w의 문자 수준 표현이라고 하고, +# 전과 같이 :math:`x_w` 를 단어임베딩이라고 합시다. +# 그렇다면 우리의 시퀀스 모델에 대한 입력은 :math:`x_w` 와 +# :math:`c_w` 의 연결이라고 할 수 있습니다. 만약에 :math:`x_w` 가 차원 5를 가지고, :math:`c_w` # 차원 3을 가지면 LSTM은 차원 8의 입력을 받아들여야 합니다. # # 문자 수준의 표현을 얻기 위해서, 단어의 문자에 대해서 LSTM을 수행하고 -# :math:`c_w`를 LSTM의 최종 은닉 상태가 되도록 합니다. +# :math:`c_w` 를 LSTM의 최종 은닉 상태가 되도록 합니다. # 힌트: # # * 새 모델에는 두 개의 LSTM이 있을 것입니다.