영어 문장 목록에서 임베딩을 만드는 방법

Yeong Eo Munjang Moglog Eseo Imbeding Eul Mandeuneun Bangbeob



우리가 기계(컴퓨터)와 통신하고 특정 검색을 수행하거나 한 언어에서 다른 언어로 번역하는 것과 같은 특정 작업을 수행하도록 지시할 때 컴퓨터가 이를 어떻게 이해하고 처리하는지 생각해 본 적이 있습니까? 이것은 모두 자연어 처리의 인공 지능 하위 필드를 통해 수행됩니다. 컴퓨터는 숫자 값을 이해하고 NLP의 '단어 임베딩' 기술은 우리가 컴퓨터에 입력으로 제공하는 단어와 텍스트를 컴퓨터가 인식할 수 있도록 해당 숫자 벡터로 변환합니다. NLP의 몇 가지 다른 프로세스는 언어 모델을 통한 인간-컴퓨터 상호 작용을 넘어 발생하지만 이 가이드에서는 임베딩이라는 단어를 자세히 다룰 것입니다.

통사론:

다양한 기능이 텍스트의 단어 임베딩을 위한 자연어 처리에 속합니다. 이 문서에서는 이러한 목적을 위한 'word2vec' 함수를 다룹니다. 더 명확하게 하기 위해 임베딩이라는 단어는 텍스트 입력을 벡터 표현으로 변환합니다. 이 경우 문맥상 의미가 거의 동일한 단어가 동일한 표현을 제공합니다.

'word2vec' 알고리즘은 단어가 나타나는 문맥을 먼저 예측하여 단어 임베딩을 학습하는 방식으로 훈련되는 신경망 모델입니다. 이 모델은 텍스트를 입력으로 받습니다. 그런 다음 텍스트의 각 단어에 대해 해당 단어에 대한 벡터 표현이 생성됩니다. 이 모델은 문맥이 동일한 것으로 보이는 단어가 동일한 의미를 갖는다는 생각에 기반합니다. 'word2vec'의 구문은 다음과 같습니다.







$ Word2Vec(문장, min_count)

이 알고리즘에는 'sentences'와 'minimum_count'라는 두 개의 매개변수가 있습니다. sentence는 문장의 목록이나 문장 형태의 텍스트가 저장되는 변수이고 minimum_count는 카운트 값 1에 대해 이야기하며 텍스트에서 1보다 적게 나타나는 단어는 무시해야 함을 의미합니다. .



예 1:

이 예제에서는 영어 문장 목록에 존재하는 단어에 대한 단어 임베딩을 생성합니다. '임베딩'이라는 단어를 생성하려면 'word2vec' 모델을 사용해야 합니다. 이 모델은 Python의 'gensim' 라이브러리 패키지입니다. 'word2vec'과 함께 작동하려면 Python 라이브러리 저장소에 Gensim을 설치해야 합니다.



이 예제를 구현하기 위해 'google colab' 온라인 Python 컴파일러에서 작업할 것입니다. gensim을 설치하려면 'pip install gensim' 명령을 사용하십시오. 모든 관련 패키지와 함께 이 라이브러리를 다운로드하기 시작합니다. 설치가 완료되면 gensim에서 'word2vector' 패키지를 가져옵니다.





이 'word2vec' 모델을 교육하려면 교육 데이터 세트를 만들어야 합니다. 이를 위해 우리는 4~5개의 영어 문장을 포함하는 문장 목록을 만듭니다. 이 목록을 'training_data' 변수에 저장합니다.

교육 데이터 세트를 만든 후 다음 단계는 이 데이터에서 'word2vec' 모델을 교육하는 것입니다. 그래서 우리는 모델을 부릅니다. '입력' 변수에 저장한 이 모델의 입력 매개변수에 교육 데이터를 제공합니다. 그런 다음 “minimum_count”인 두 번째 매개변수를 지정합니다. 값을 '1'로 설정했습니다. 이 학습 모델의 출력은 'trained_model' 변수에 저장됩니다.

모델 교육을 마치면 단어 벡터 모델인 'wv' 접두사가 있는 모델에 간단히 액세스할 수 있습니다. 우리는 또한 우리 단어의 토큰 어휘에 액세스할 수 있으며 다음과 같은 방법으로 인쇄할 수 있습니다.

vocabof_tokens = 목록(model.wv.vocab)

이 모델은 우리의 경우 훈련된 모델을 나타냅니다. 이제 문장 목록에서 'apple'인 한 단어의 벡터 표현에 액세스합니다. 단순히 훈련된 모델을 호출하여 이를 수행합니다. 벡터 표현을 '모델'로 인쇄하려는 단어를 전달합니다. wv ['사과']”를 입력 인수로 지정합니다. 그런 다음 '인쇄' 기능을 사용하여 결과를 인쇄합니다.

~에서 국가로서 모델 수입 워드투벡

training_data = [ [ '사과' , '이다' , '그만큼' , '달콤한' , '사과' , '을 위한' , 'word2vec' ] ,
[ '이것' , '이다' , '그만큼' , '두번째' , '사과' ] ,
[ '여기' , '또 다른' , '사과' ] ,
[ '하나' , '달콤한' , '사과' ] ,
[ '그리고' , '더' , '달콤한' , '사과' ] ]

모델 = 워드투벡 ( training_data , min_count = 1 )
인쇄 ( 모델 )
vocabof_tokens = 목록 ( 모델. wv . index_to_key )
인쇄 ( vocabof_tokens )
인쇄 ( 모델. wv [ '사과' ] )

앞에서 언급한 출력 및 코드에서 'apple'이라는 단어에 대한 임베딩이라는 단어가 표시됩니다. 예제에서는 먼저 교육 데이터 세트를 만들었습니다. 그런 다음 모델을 훈련하고 모델을 요약했습니다. 그런 다음 모델을 사용하여 단어의 토큰 어휘에 액세스할 수 있습니다. 그 다음에는 'apple'이라는 단어에 임베딩이라는 단어를 표시했습니다.

예 2:

gensim 라이브러리를 사용하여 또 다른 문장 목록을 만들어 봅시다. 'word2vec' 모델을 사용하여 단어 임베딩을 생성하기 위해 문장의 각 단어에 대해 모델을 훈련합니다. 먼저 gensim 라이브러리 패키지에서 'word2vec' 모델을 가져옵니다. 그런 다음 두 문장이 포함된 목록이 될 또 다른 데이터 세트를 만듭니다. 목록의 각 문장에는 4개의 단어가 있습니다.

이제 이 목록을 'data' 변수에 저장합니다. 그런 다음 'word2vec()' 모델을 호출하고 '1'과 같은 minimum_count 값으로 이 모델의 인수에 데이터를 공급합니다. 이것이 우리가 모델을 훈련시키는 방법입니다. 이제 목록에 있는 문장에 존재하는 단어가 존재하는 컨텍스트를 예측하여 단어 임베딩을 학습할 수 있습니다. 모델의 결과를 테스트하기 위해 데이터에서 '개'와 같은 단어를 모델에 전달하기만 하면 됩니다. 그런 다음 'print()' 함수를 사용하여 결과를 인쇄합니다.

~에서 국가로서 모델 수입 워드투벡
데이터 = [ [ '토끼' , '가지다' , '이' ] , [ '개' , '가지다' , '귀' ] ]
모델 = 워드투벡 ( 데이터 , min_count = 1 )
인쇄 ( 모델. wv [ '개' ] )

출력의 이전 스니펫에서 입력으로 모델에 공급한 단어의 벡터 표현을 관찰할 수 있습니다.

결론

이 가이드는 영어 문장 목록에 존재하는 단어에 대한 단어 임베딩을 생성하는 방법을 보여줍니다. Word Embedding을 생성하기 위해 'word2vec' 모델을 제공하는 Python의 'gensim' 라이브러리에 대해 배웠습니다. 또한 입력 매개변수, 교육 데이터에서 'word2vec' 모델을 교육하는 방법 및 벡터 표현으로 단어를 표현하는 방법에 대해 배웠습니다.