<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>서키의 블로그</title>
    <link>https://seokhee123.tistory.com/</link>
    <description>공부 정리 블로그 입니다</description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 01:46:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>seokhee123</managingEditor>
    <item>
      <title>[Unity][해결] 패키지 매니저 Error searching for packages 오류</title>
      <link>https://seokhee123.tistory.com/6</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;패키지 매니저 Error searching for packages. 오류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;오류 메세지&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Error&amp;nbsp;searching&amp;nbsp;for&amp;nbsp;packages.&amp;nbsp;An&amp;nbsp;error&amp;nbsp;occurred,&amp;nbsp;likely&amp;nbsp;on&amp;nbsp;the&amp;nbsp;server.&amp;nbsp;Please&amp;nbsp;try&amp;nbsp;again&amp;nbsp;later.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unable&amp;nbsp;to&amp;nbsp;perform&amp;nbsp;online&amp;nbsp;search:&lt;br /&gt;&amp;nbsp;&amp;nbsp;Request&amp;nbsp;[GET&amp;nbsp;&lt;a href=&quot;https://packages.unity.com/-/api/search?host=editor&amp;amp;provider=enterprise]&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://packages.unity.com/-/api/search?host=editor&amp;amp;provider=enterprise]&lt;/a&gt;&amp;nbsp;failed&amp;nbsp;with&amp;nbsp;status&amp;nbsp;code&amp;nbsp;[502]&lt;br /&gt;UnityEditor.EditorApplication:Internal_CallUpdateFunctions&amp;nbsp;()&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1205&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZErqH/btsH3Pa9lIV/iukzKeG95PUqD7kov8ffaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZErqH/btsH3Pa9lIV/iukzKeG95PUqD7kov8ffaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZErqH/btsH3Pa9lIV/iukzKeG95PUqD7kov8ffaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZErqH%2FbtsH3Pa9lIV%2FiukzKeG95PUqD7kov8ffaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1205&quot; height=&quot;104&quot; data-origin-width=&quot;1205&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해결방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트를 모두 저장 후 종료하고 Unity Hub를 로그아웃 후 다시 로그인 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 다시 프로젝트를 실행해서 패키지 매니저를 사용하면 정상 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이 방법으로도 해결되지 않는다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;411&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d9bIfw/btsH3orhquC/Dl77TvCTVd1SOefmQryvr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d9bIfw/btsH3orhquC/Dl77TvCTVd1SOefmQryvr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d9bIfw/btsH3orhquC/Dl77TvCTVd1SOefmQryvr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd9bIfw%2FbtsH3orhquC%2FDl77TvCTVd1SOefmQryvr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;222&quot; height=&quot;310&quot; data-origin-width=&quot;411&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Help &amp;gt; Reset Packages to Defaults 를 눌러 패키지 초기화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;단, 패키지 초기화이기 때문에 다운로드한 패키지가 많다면 미리 백업해야함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금방 초기화가 진행되는데 완료하면 패키지 매니저가 정상동작한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1083&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WjUIR/btsH4alO25P/8RC77jutZWKd7V2xwcpHe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WjUIR/btsH4alO25P/8RC77jutZWKd7V2xwcpHe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WjUIR/btsH4alO25P/8RC77jutZWKd7V2xwcpHe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWjUIR%2FbtsH4alO25P%2F8RC77jutZWKd7V2xwcpHe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1083&quot; height=&quot;310&quot; data-origin-width=&quot;1083&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Unity/오류</category>
      <author>seokhee123</author>
      <guid isPermaLink="true">https://seokhee123.tistory.com/6</guid>
      <comments>https://seokhee123.tistory.com/6#entry6comment</comments>
      <pubDate>Wed, 19 Jun 2024 10:08:10 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] Unity에서 Open AI API 사용하기</title>
      <link>https://seokhee123.tistory.com/5</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Unity에서 Open AI API 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. ChatGPT와 같이 대화하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. gpt-4o, gpt-4-turbo 모델을 사용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음의 깃허브 링크를 참고해서 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃허브 : &lt;a href=&quot;https://github.com/RageAgainstThePixel/com.openai.unity?tab=readme-ov-file#list-assistants&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/RageAgainstThePixel/com.openai.unity?tab=readme-ov-file#list-assistants&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1717583257648&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - RageAgainstThePixel/com.openai.unity: A Non-Official OpenAI Rest Client for Unity (UPM)&quot; data-og-description=&quot;A Non-Official OpenAI Rest Client for Unity (UPM). Contribute to RageAgainstThePixel/com.openai.unity development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/RageAgainstThePixel/com.openai.unity?tab=readme-ov-file#list-assistants&quot; data-og-url=&quot;https://github.com/RageAgainstThePixel/com.openai.unity&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b8sNQE/hyWgY5hVoP/5u9kamF72ZSGWQtcgAqJCk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://github.com/RageAgainstThePixel/com.openai.unity?tab=readme-ov-file#list-assistants&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/RageAgainstThePixel/com.openai.unity?tab=readme-ov-file#list-assistants&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b8sNQE/hyWgY5hVoP/5u9kamF72ZSGWQtcgAqJCk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - RageAgainstThePixel/com.openai.unity: A Non-Official OpenAI Rest Client for Unity (UPM)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Non-Official OpenAI Rest Client for Unity (UPM). Contribute to RageAgainstThePixel/com.openai.unity development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 시작&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작을 위해 깃허브 링크의 프로젝트를 다운 받아야하는데 2가지 방법이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.1 과 1.2 둘중에 편하신 방법대로 하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1.1 Git url 사용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 링크에서 git url을 복사합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;a href=&quot;https://github.com/RageAgainstThePixel/com.openai.unity.git#upm&quot;&gt;https://github.com/RageAgainstThePixel/com.openai.unity.git#upm&lt;/a&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복사된 링크를 Unity에서 Window &amp;gt; Package Manager 에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우측 상단의 + 모양 &amp;gt; Add package from git URL 누르고 링크를 붙여넣기 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HfK1S/btsHPWIccSc/6RtoOH39Ij5REK4HCAIA8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HfK1S/btsHPWIccSc/6RtoOH39Ij5REK4HCAIA8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HfK1S/btsHPWIccSc/6RtoOH39Ij5REK4HCAIA8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHfK1S%2FbtsHPWIccSc%2F6RtoOH39Ij5REK4HCAIA8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;645&quot; height=&quot;349&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크를 붙여넣고 add를 누르면 다음 화면과 같이 Open AI 패키지가 다운로드 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1349&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crOi0t/btsHPmUUtC3/StvbVbLSDpnOy7VhA5kKlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crOi0t/btsHPmUUtC3/StvbVbLSDpnOy7VhA5kKlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crOi0t/btsHPmUUtC3/StvbVbLSDpnOy7VhA5kKlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrOi0t%2FbtsHPmUUtC3%2FStvbVbLSDpnOy7VhA5kKlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1349&quot; height=&quot;592&quot; data-origin-width=&quot;1349&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1.2&amp;nbsp; OpenUPM을 사용하는 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity에서 Edit &amp;gt; Project Setting &amp;gt; PackageManager&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1423&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cC6kLw/btsHOXBoqwy/l980paRt39zd1z4Z6zHzM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cC6kLw/btsHOXBoqwy/l980paRt39zd1z4Z6zHzM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cC6kLw/btsHOXBoqwy/l980paRt39zd1z4Z6zHzM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcC6kLw%2FbtsHOXBoqwy%2Fl980paRt39zd1z4Z6zHzM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1423&quot; height=&quot;922&quot; data-origin-width=&quot;1423&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사진과 같이 입력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Name : OpenUPM&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL : &lt;a href=&quot;https://package.openupm.com&quot;&gt;https://package.openupm.com&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Scope(s) : com.openai&amp;nbsp; /&amp;nbsp; com.utilities&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 후 Apply 누르면 완료&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Open AI API Key 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용을 위해서는 Open AI 키를 발급받아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키 발급은 추후 글로 작성해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Open AI API 키 발급 검색하시고 나온 방법대로 하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발급받은 키를 복사하여 메모장에 저장해둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(키를 잃어버리면 다시 발급이 안되고 해당 키를 취소한 뒤에 새로 발급 받아야합니다!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발급 받은 키를 2가지 방식으로 쓸 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2.1 프로젝트 내에서 저장하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;해당 방법은 공유된 프로젝트나 깃허브 연동 등으로 외부에서 열람이 가능하다면 키 도난 가능성이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;혼자 테스트 하시는게 아니시면 2.2 방법을 이용해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity에서 Assets &amp;gt; Resources 폴더 안에 OpenAIfiguration 이라는 파일이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 파일에 Api Key 부분에 발급 받은 키를 입력해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rkgwi/btsHQ1PmrXm/aQhKzbuJnLXBdCZhQSvZ91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rkgwi/btsHQ1PmrXm/aQhKzbuJnLXBdCZhQSvZ91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rkgwi/btsHQ1PmrXm/aQhKzbuJnLXBdCZhQSvZ91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frkgwi%2FbtsHQ1PmrXm%2FaQhKzbuJnLXBdCZhQSvZ91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;221&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2.2 환경변수로 저장하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PC의 시스템 속성 &amp;gt; 고급 &amp;gt; 환경 변수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하단에 시스템 변수 &amp;gt; 새로 만들기 에 다음과 같이 추가해주시면 됩니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/57Ke5/btsHQkWfJM5/YQVVjFOc7jKKD6fPPP99bK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/57Ke5/btsHQkWfJM5/YQVVjFOc7jKKD6fPPP99bK/img.png&quot; data-alt=&quot;변수 값에는 발급 받은 키를 붙여넣기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/57Ke5/btsHQkWfJM5/YQVVjFOc7jKKD6fPPP99bK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F57Ke5%2FbtsHQkWfJM5%2FYQVVjFOc7jKKD6fPPP99bK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;927&quot; height=&quot;266&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;변수 값에는 발급 받은 키를 붙여넣기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트의 Sample 폴더 내에 있는 ChatBehaviour.cs 파일에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1717588238266&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private OpenAIClient openAI;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수 추가하고&lt;/p&gt;
&lt;pre id=&quot;code_1717588279248&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private void Awake()
        {
        	// 입력
            openAI = new OpenAIClient(System.Environment.GetEnvironmentVariable(&quot;OPENAI_API_KEY&quot;))
            {
                EnableDebug = enableDebug
            };
        
            texture = textureFromSprite(sprite);
            OnValidate();
            assistantTools.Add(Tool.GetOrCreateTool(openAI.ImagesEndPoint, nameof(ImagesEndpoint.GenerateImageAsync)));
            conversation.AppendMessage(new Message(Role.System, systemPrompt));
            inputField.onSubmit.AddListener(SubmitChat);
            submitButton.onClick.AddListener(SubmitChat);
            recordButton.onClick.AddListener(ToggleRecording);
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Awake 문에 다음과 같이 입력하면 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 실행해보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatBehaviour.cs 에 SubmitChat()을 확인해서&lt;/p&gt;
&lt;pre id=&quot;code_1717591780616&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var request = new ChatRequest(conversation.Messages, tools: assistantTools);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 부분을&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1717591798497&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var request = new ChatRequest(conversation.Messages, model: Model.GPT4_Turbo ,tools: assistantTools);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 변경해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT4_Turbo 말고도 많은 모델을 쓸 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트의 Sample 폴더 내에 있는 OpenAIChatSample 씬을 실행해보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2276&quot; data-origin-height=&quot;1339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdNk8u/btsHRm6NX8k/FXOK4Nw2kbGjHf5HcBReeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdNk8u/btsHRm6NX8k/FXOK4Nw2kbGjHf5HcBReeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdNk8u/btsHRm6NX8k/FXOK4Nw2kbGjHf5HcBReeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdNk8u%2FbtsHRm6NX8k%2FFXOK4Nw2kbGjHf5HcBReeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2276&quot; height=&quot;1339&quot; data-origin-width=&quot;2276&quot; data-origin-height=&quot;1339&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 유니티에서 ChatGPT 처럼 대화를 주고 받을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 음성도 같이 출력됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 세팅은 한글 폰트가 깨져서 출력되기 때문에 영어로 테스트 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 한글 폰트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 한글 폰트를 다운로드 받습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;폰트&quot; href=&quot;https://hangeul.naver.com/font&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://hangeul.naver.com/font&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1717591494122&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;네이버 글꼴 모음&quot; data-og-description=&quot;네이버가 만든 150여종의 글꼴을 한번에 만나보세요&quot; data-og-host=&quot;hangeul.naver.com&quot; data-og-source-url=&quot;https://hangeul.naver.com/font&quot; data-og-url=&quot;https://hangeul.naver.com/font&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4TxPa/hyWgW7pRgm/oji3zE5rHkdMxkv3sS6kFk/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628&quot;&gt;&lt;a href=&quot;https://hangeul.naver.com/font&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hangeul.naver.com/font&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4TxPa/hyWgW7pRgm/oji3zE5rHkdMxkv3sS6kFk/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;네이버 글꼴 모음&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;네이버가 만든 150여종의 글꼴을 한번에 만나보세요&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hangeul.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 네이버 나눔 폰트를 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운 받은 파일의 .ttf 폰트 파일을 Unity로 복사하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity의 Window &amp;gt; TextMeshPro &amp;gt; Font Asset Creator 를 엽니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;857&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G8cmo/btsHO99pCRG/KheKIpdGFVobKWyCKCaH2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G8cmo/btsHO99pCRG/KheKIpdGFVobKWyCKCaH2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G8cmo/btsHO99pCRG/KheKIpdGFVobKWyCKCaH2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG8cmo%2FbtsHO99pCRG%2FKheKIpdGFVobKWyCKCaH2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;927&quot; height=&quot;857&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;857&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Source Font File에 다운 받은 글꼴을 넣어주고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Generate Font Atlas를 눌러 생성 후 Save를 통해 저장해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 ChatBehaviour.cs 부분에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1717591951016&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        [SerializeField]
        private TMP_FontAsset fonts;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폰트 변수를 추가해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 AddNewTextMessageContent 부분에 textMesh.font = fonts; 를 추가해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1717592123482&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;private TextMeshProUGUI AddNewTextMessageContent(Role role)
        {
            var textObject = new GameObject($&quot;{contentArea.childCount + 1}_{role}&quot;);
            textObject.transform.SetParent(contentArea, false);
            var textMesh = textObject.AddComponent&amp;lt;TextMeshProUGUI&amp;gt;();
            textMesh.fontSize = 24;
            
            //입력
            textMesh.font = fonts;

#if UNITY_2023_1_OR_NEWER
            textMesh.textWrappingMode = TextWrappingModes.Normal;
#else
            textMesh.enableWordWrapping = true;
#endif
            return textMesh;
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 UI의 InputField 등 한글 입력 부분에 폰트를 추가해주면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2272&quot; data-origin-height=&quot;1334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xfpnD/btsHPnGm9tX/59ZIxXySJCVZ8th16Ld9B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xfpnD/btsHPnGm9tX/59ZIxXySJCVZ8th16Ld9B0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xfpnD/btsHPnGm9tX/59ZIxXySJCVZ8th16Ld9B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxfpnD%2FbtsHPnGm9tX%2F59ZIxXySJCVZ8th16Ld9B0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2272&quot; height=&quot;1334&quot; data-origin-width=&quot;2272&quot; data-origin-height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글이 깨지지 않고 대화를 나눌 수 있습니다&lt;/p&gt;</description>
      <category>Unity/Unity에서 Open AI API 사용하기</category>
      <author>seokhee123</author>
      <guid isPermaLink="true">https://seokhee123.tistory.com/5</guid>
      <comments>https://seokhee123.tistory.com/5#entry5comment</comments>
      <pubDate>Sun, 9 Jun 2024 23:21:50 +0900</pubDate>
    </item>
    <item>
      <title>[NLP] 워드 투 벡터 (Word2Vec)</title>
      <link>https://seokhee123.tistory.com/4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이전 시간에 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없는 단점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 유사도를 반영해서 수치화할 수 있는 방법인 Word2Vec가 등장하게 됩니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 워드 투 벡터란&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 원-핫 벡터는 단어 집합의 크기가 차원입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단어 집합 {hello, nice, to, meet, you}&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A7MOH/btsHkXtDirC/iFFRCZ6J42HXqcpkHa4CO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A7MOH/btsHkXtDirC/iFFRCZ6J42HXqcpkHa4CO0/img.png&quot; data-alt=&quot;단어 집합이 5개이므로 차원은 5입니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A7MOH/btsHkXtDirC/iFFRCZ6J42HXqcpkHa4CO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA7MOH%2FbtsHkXtDirC%2FiFFRCZ6J42HXqcpkHa4CO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;994&quot; height=&quot;613&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;단어 집합이 5개이므로 차원은 5입니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 표현할 단어만 1이고 나머지는 0으로 표현되기 때문에 희소 표현(sparse representation)이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 이는 단어의 유사성을 표현할 수 없고 대부분의 단어가 0으로 표현되기 때문에 매우 비효율적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 분산 표현(Distributed Representation)이 등장하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 분산 표현은 '비슷한 문맥에서 등장하는 단어들은 비슷한 의미를 가진다'라는 가정을 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분산 표현은 분산 가설을 이용하여 텍스트를 학습하고 단어의 의미를 여러 차원에 '분산'하여 표현합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 표현된 단어 집합 {hello, nice, to, meet, you} 로 예시를 들겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비슷한 문맥에서 등장하는 단어는 비슷한 의미를 가지는 가정을 했기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nice 라는 단어를 확인하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mExMD/btsHicZ9eTD/6Ohc1xoalhNwxIa4ckFpo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mExMD/btsHicZ9eTD/6Ohc1xoalhNwxIa4ckFpo0/img.png&quot; data-alt=&quot;수치는 예시입니다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mExMD/btsHicZ9eTD/6Ohc1xoalhNwxIa4ckFpo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmExMD%2FbtsHicZ9eTD%2F6Ohc1xoalhNwxIa4ckFpo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;927&quot; height=&quot;115&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;115&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;수치는 예시입니다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nice 를 분산 표현을 통해 학습을 하니까 수치들이 여러 차원에 분산되어 표시됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 수치를 보면 nice 와 유사도가 가까운 단어가 표시되는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;단어집합 -&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;hello&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;nice&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;to&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;meet&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;you&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;nice&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;0.9&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;0.8&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;0.5&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;0.6&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px; text-align: center;&quot;&gt;0.7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 분산표현을 통해 학습한 nice는 hello, nice, you, meet, to 순으로 유사도가 높게 나온다는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 수치는 예시입니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방식의 대표적인 학습 방법이 Word2Vec입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 Word2Vec 에는 2가지 방식이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. CBOW(Continous Bag Of Words)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CBOW는 주변에 있는 단어들을 입력으로 중간에 있는 단어를 예측하는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예문 : &quot; The fat cat sat on the mat&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예문에서 sat라는 단어를 The fat cat on the mat 으로부터 예측해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 예측해야하는 단어 sat을 중심단어(Center word)라고 하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예측에 사용되는 단어를 주변 단어(Context word)라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중심단어를 예측하기 위해 앞 뒤로 몇개의 단어를 볼지 정해야 하는데 이 범위를 윈도우(window)라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;window = 2 라고 가정할 경우 중심단어 sat에서 앞의 두 단어 fat cat과 뒤의 두 단어 on the를 입력으로 사용하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 도식화하면 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OfJpc/btsHiIxFMrg/APdBzyCHKWzaPCe9umia3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OfJpc/btsHiIxFMrg/APdBzyCHKWzaPCe9umia3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OfJpc/btsHiIxFMrg/APdBzyCHKWzaPCe9umia3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOfJpc%2FbtsHiIxFMrg%2FAPdBzyCHKWzaPCe9umia3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;444&quot; height=&quot;194&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 윈도우를 옆으로 움직여 주변 단어와 중심 단어를 바꿔가며 학습하는 단계를 슬라이딩 윈도우라고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DR6qF/btsHkSMRC1P/6xk9c9XxkSOgP5Iapapk5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DR6qF/btsHkSMRC1P/6xk9c9XxkSOgP5Iapapk5k/img.png&quot; data-alt=&quot;슬라이딩 윈도우(Sliding Window)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DR6qF/btsHkSMRC1P/6xk9c9XxkSOgP5Iapapk5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDR6qF%2FbtsHkSMRC1P%2F6xk9c9XxkSOgP5Iapapk5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;568&quot; height=&quot;386&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;슬라이딩 윈도우(Sliding Window)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Skip-gram&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CBOW가 주변단어를 통해 중심단어를 예측한다면 Skip-gram은 반대입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Skip-gram은 중심단어를 통해 주변단어를 예측합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyYBx/btsHlEtz5ut/VHQ7ghWkkA4GR50ERMAs6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyYBx/btsHlEtz5ut/VHQ7ghWkkA4GR50ERMAs6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyYBx/btsHlEtz5ut/VHQ7ghWkkA4GR50ERMAs6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyYBx%2FbtsHlEtz5ut%2FVHQ7ghWkkA4GR50ERMAs6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;372&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 도식화하면 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boi9DO/btsHjYGAKB2/S2OcnurxsBkqobRriCPXKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boi9DO/btsHjYGAKB2/S2OcnurxsBkqobRriCPXKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boi9DO/btsHjYGAKB2/S2OcnurxsBkqobRriCPXKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fboi9DO%2FbtsHjYGAKB2%2FS2OcnurxsBkqobRriCPXKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;206&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 한계점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Word2Vec에도 한계점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 단어의 &lt;span style=&quot;color: #ee2323;&quot;&gt;형태학적 특성&lt;/span&gt;을 반영하지 못한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;teach, teacher, teaches 이 세 단어는 의미적으로 유사한 단어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 각 단어를 개별로 처리하기 때문에 벡터 값이 다르게 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 단어 빈도 수의 영향을 많이 받아 &lt;span style=&quot;color: #ee2323;&quot;&gt;희소한 단어&lt;/span&gt;를 임베딩하기 어렵다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단어 빈도수의 영향을 많이 받기 때문에 희소한 단어를 임베딩하기 어렵습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. &lt;span style=&quot;color: #ee2323;&quot;&gt;OOV(Out of Vocabulary)&lt;/span&gt;의 처리가 어렵다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OOV는 사전에 없는 단어를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단어 단위로 학습하는 Word2Vec의 특성 상&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 단어가 등장하면 데이터 전체를 학습시켜야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CBOW와 Skip-gram의 부족한 메커니즘 설명 부분은 다음 자료를 참고해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고자료 : &lt;a href=&quot;https://wikidocs.net/22660&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wikidocs.net/22660&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715256264796&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;09-02 워드투벡터(Word2Vec)&quot; data-og-description=&quot;앞서 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를&amp;hellip;&quot; data-og-host=&quot;wikidocs.net&quot; data-og-source-url=&quot;https://wikidocs.net/22660&quot; data-og-url=&quot;https://wikidocs.net/22660&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bcfB6r/hyV2yFIuGa/kK0TRdobKmRRN4GMcMZ8W1/img.png?width=98&amp;amp;height=130&amp;amp;face=0_0_98_130,https://scrap.kakaocdn.net/dn/roZUK/hyV2BWKW4M/4j7batqyUF0JpJSy6VKh70/img.png?width=569&amp;amp;height=372&amp;amp;face=0_0_569_372,https://scrap.kakaocdn.net/dn/KRSUR/hyV2yTgJxy/61WBeK0GgICtNcUjOPsguK/img.png?width=559&amp;amp;height=350&amp;amp;face=0_0_559_350&quot;&gt;&lt;a href=&quot;https://wikidocs.net/22660&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wikidocs.net/22660&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bcfB6r/hyV2yFIuGa/kK0TRdobKmRRN4GMcMZ8W1/img.png?width=98&amp;amp;height=130&amp;amp;face=0_0_98_130,https://scrap.kakaocdn.net/dn/roZUK/hyV2BWKW4M/4j7batqyUF0JpJSy6VKh70/img.png?width=569&amp;amp;height=372&amp;amp;face=0_0_569_372,https://scrap.kakaocdn.net/dn/KRSUR/hyV2yTgJxy/61WBeK0GgICtNcUjOPsguK/img.png?width=559&amp;amp;height=350&amp;amp;face=0_0_559_350');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;09-02 워드투벡터(Word2Vec)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;앞서 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wikidocs.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>NLP</category>
      <author>seokhee123</author>
      <guid isPermaLink="true">https://seokhee123.tistory.com/4</guid>
      <comments>https://seokhee123.tistory.com/4#entry4comment</comments>
      <pubDate>Thu, 9 May 2024 21:07:26 +0900</pubDate>
    </item>
    <item>
      <title>[NLP]원-핫 인코딩(One-Hot Encoding)</title>
      <link>https://seokhee123.tistory.com/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원-핫 인코딩에서는 단어 집합(vocabulary)이 나오는데 단어집합은 서로 다른 단어들의 집합이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그러나 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;book, books&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;두 단어는 서로 다른 단어입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;단어의 변형 형태도 다른 단어로 간주하는 것입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;teach, teacher, teaches&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 변형 형태도 단어 집합에서는 다른 형태로 간주하는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원-핫 인코딩에 앞서 먼저 해야할 일은 단어집합을 만드는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 단어의 중복을 허용하지 않고 모으면 이를 단어집합이라고 하고, 이 단어에 고유한 정수를 부여합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 정수인코딩이라고 하는데, 각 단어의 인덱스를 부여하는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시)&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1 = hello, 2 = teach, 3 = teacher, 4 = teaches, 5 = cat&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 원-핫 인코딩(One-Hot Encoding)이란?&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방금 번호를 부여한 단어를 벡터로 다루려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원-핫 인코딩은 단어 집합의 크기를 벡터 차원으로 둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스는 0을 부여하는 표현 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 이렇게 부여된 벡터를 원-핫 벡터라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2284&quot; data-origin-height=&quot;1452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfHD24/btsGxZ7kQZj/tPJGnuDkagOkTmkEKxLb0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfHD24/btsGxZ7kQZj/tPJGnuDkagOkTmkEKxLb0k/img.png&quot; data-alt=&quot;번호를 부여한 단어의 벡터 차원을 시각적으로 표현한 것&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfHD24/btsGxZ7kQZj/tPJGnuDkagOkTmkEKxLb0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfHD24%2FbtsGxZ7kQZj%2FtPJGnuDkagOkTmkEKxLb0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;714&quot; height=&quot;454&quot; data-origin-width=&quot;2284&quot; data-origin-height=&quot;1452&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;번호를 부여한 단어의 벡터 차원을 시각적으로 표현한 것&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단어집합에 5개의 단어가 있기 때문에 5차원 벡터로 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 해당 단어의 인덱스에 1의 값을 부여한 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 한국어 문장으로 원-핫 벡터를 만들어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문장 : 나는 지금 티스토리 블로그에 글을 쓰고 있다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Okt 형태소 분석기를 통해서 문장에 대해 토큰화를 수행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Konlpy 다운이 필요합니다) &lt;u&gt;&lt;a title=&quot;설치링크&quot; href=&quot;https://konlpy-ko.readthedocs.io/ko/v0.4.3/install/#id2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;설치링크&lt;/a&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1712850573282&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from konlpy.tag import Okt  

okt = Okt()  
tokens = okt.morphs(&quot;나는 자연어 처리를 배운다&quot;)  
print(tokens)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결과는&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;596&quot; data-origin-height=&quot;32&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh2Kt9/btsGzgUYpOP/NuM5AzPKk6TtDavAjlosbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh2Kt9/btsGzgUYpOP/NuM5AzPKk6TtDavAjlosbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh2Kt9/btsGzgUYpOP/NuM5AzPKk6TtDavAjlosbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh2Kt9%2FbtsGzgUYpOP%2FNuM5AzPKk6TtDavAjlosbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;596&quot; height=&quot;32&quot; data-origin-width=&quot;596&quot; data-origin-height=&quot;32&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;또한 각 토큰에 대해 고유한 정수를 부여합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712850732066&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;word_to_index = {word : index for index, word in enumerate(tokens)}
print('단어 집합 :',word_to_index)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sq1PY/btsGzDWHhdo/wFrgFcpMIQ3R3MtEv6GhfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sq1PY/btsGzDWHhdo/wFrgFcpMIQ3R3MtEv6GhfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sq1PY/btsGzDWHhdo/wFrgFcpMIQ3R3MtEv6GhfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsq1PY%2FbtsGzDWHhdo%2FwFrgFcpMIQ3R3MtEv6GhfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;953&quot; height=&quot;34&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;토큰을 입력하면 해당 토큰의 원-핫 벡터를 만들어 내는 함수입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712850789449&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def one_hot_encoding(word, word_to_index):
  one_hot_vector = [0]*(len(word_to_index))
  index = word_to_index[word]
  one_hot_vector[index] = 1
  return one_hot_vector&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제&lt;b&gt; '티스토리'&lt;/b&gt; 라는 단어의 원-핫 벡터를 얻는다면&lt;/p&gt;
&lt;pre id=&quot;code_1712850884981&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;one_hot_encoding(&quot;티스토리&quot;, word_to_index)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vciDp/btsGwMHQEZl/4YTcp4lPunCq4JbAZadyUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vciDp/btsGwMHQEZl/4YTcp4lPunCq4JbAZadyUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vciDp/btsGwMHQEZl/4YTcp4lPunCq4JbAZadyUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvciDp%2FbtsGwMHQEZl%2F4YTcp4lPunCq4JbAZadyUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;304&quot; height=&quot;40&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;티스토리의 원-핫벡터의 인덱스 3의 값이 1이고 나머지는 0이 나오네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 케라스(Keras)를 이용한 원-핫 인코딩&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;케라스는 to_categorical()이라는 유용한 도구를 지원합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(tensorflow, keras 필요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712851222614&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;text = &quot;나는 회가 좋아 나는 연어가 좋아 그리고 광어도 좋아&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 단어를 정수 인코딩한다면&lt;/p&gt;
&lt;pre id=&quot;code_1712852097568&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.utils import to_categorical

text = &quot;나는 회가 좋아 나는 연어가 좋아 그리고 광어도 좋아&quot;

tokenizer = Tokenizer()
tokenizer.fit_on_texts([text])
print('단어 집합 :',tokenizer.word_index)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;32&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qF0oG/btsGwv61EdB/9kTJ1yMwcE8GvJ2YKIeCsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qF0oG/btsGwv61EdB/9kTJ1yMwcE8GvJ2YKIeCsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qF0oG/btsGwv61EdB/9kTJ1yMwcE8GvJ2YKIeCsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqF0oG%2FbtsGwv61EdB%2F9kTJ1yMwcE8GvJ2YKIeCsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;696&quot; height=&quot;32&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;32&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 결과가 나옵니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;큰 특징은 빈도 수에 따라 앞 번호를 가져가네요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712852143094&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sub_text = &quot;나는 회가 그리고 광어도 좋아&quot;
encoded = tokenizer.texts_to_sequences([sub_text])[0]
print(encoded)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;137&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UoU1t/btsGwPc5zZN/yxkJl5xR411qf0kceNnCk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UoU1t/btsGwPc5zZN/yxkJl5xR411qf0kceNnCk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UoU1t/btsGwPc5zZN/yxkJl5xR411qf0kceNnCk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUoU1t%2FbtsGwPc5zZN%2FyxkJl5xR411qf0kceNnCk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;137&quot; height=&quot;30&quot; data-origin-width=&quot;137&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 단어의 인덱스 번호가 나오네요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 &lt;b&gt;&quot;나는 회가 그리고 광어도 좋아&quot;&lt;/b&gt; 문장을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;to_categorical() 한다면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712852272649&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;one_hot = to_categorical(encoded)
print(one_hot)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;103&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUkk4o/btsGzlhyBAw/AQdiuVcW59GjjPMrskARkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUkk4o/btsGzlhyBAw/AQdiuVcW59GjjPMrskARkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUkk4o/btsGzlhyBAw/AQdiuVcW59GjjPMrskARkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUkk4o%2FbtsGzlhyBAw%2FAQdiuVcW59GjjPMrskARkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;181&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;103&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 결과가 나옵니다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;3. 원-핫 인코딩의 한계&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 표현 방식은 단어 집합이 늘어날수록, 벡터의 저장을 위한 공간이 계속 늘어나는 단점이 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;단어의 갯수 = 벡터의 차원 수&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 1000개의 단어집합이 있다면 모든 단어는 1000개의 차원을 가진 벡터가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 단어 각각은 값을 1 가지고 나머지 999개는 0을 가지기 때문에 이는 &lt;b&gt;저장 공간 측면에서 매우 비효율적&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 단점으로는 &lt;b&gt;단어의 유사도를 표현하지 못합니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 나왔던 teach, teaches, teacher와 같이 의미가 비슷한 단어도 단어의 유사도를 표현할 수 없게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, teach라는 단어가 cat, teacher 중 어떤 것과 더 유사한지도 파악할 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 단점을 해결하기 위해 Word2Vec를 사용하게 되는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 글에서 다루겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;참고문헌&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;a href=&quot;https://wikidocs.net/22647&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wikidocs.net/22647&lt;/a&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;</description>
      <category>NLP</category>
      <author>seokhee123</author>
      <guid isPermaLink="true">https://seokhee123.tistory.com/3</guid>
      <comments>https://seokhee123.tistory.com/3#entry3comment</comments>
      <pubDate>Fri, 12 Apr 2024 01:30:59 +0900</pubDate>
    </item>
    <item>
      <title>안녕하세요</title>
      <link>https://seokhee123.tistory.com/2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블로그 시작합니다&lt;/p&gt;</description>
      <author>seokhee123</author>
      <guid isPermaLink="true">https://seokhee123.tistory.com/2</guid>
      <comments>https://seokhee123.tistory.com/2#entry2comment</comments>
      <pubDate>Thu, 11 Apr 2024 23:25:58 +0900</pubDate>
    </item>
  </channel>
</rss>