<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>9566</title>
    <link>https://9566.tistory.com/</link>
    <description>ML/DL, GPT 활용, 빅데이터 분석기사, 정보처리기사, SQLD, ADsP, ADP 자료 및 개념 공유
데이터 분석, SQL 개념 설명</description>
    <language>ko</language>
    <pubDate>Wed, 17 Jun 2026 12:06:53 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>9566</managingEditor>
    <image>
      <title>9566</title>
      <url>https://tistory1.daumcdn.net/tistory/4648504/attach/86edfda17b4046c49a59a8945f35d27e</url>
      <link>https://9566.tistory.com</link>
    </image>
    <item>
      <title>Kubernetes + PyTorch DDP에서 NCCL ALLREDUCE 타임아웃 해결기</title>
      <link>https://9566.tistory.com/568</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;(NCCL_P2P_DISABLE / NCCL_IB_DISABLE 2줄로 해결)&lt;/b&gt;&lt;/h3&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;span&gt;최근 Kubernetes GPU 노드에서 &lt;/span&gt;&lt;b&gt;PyTorch DDP(DistributedDataParallel)&lt;/b&gt;&lt;span&gt; 학습을 돌리던 중,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPU 2장이 모두 정상적으로 할당되고 &lt;span&gt;nvidia-smi&lt;/span&gt;도 잘 찍히는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 일정 시간이 지나면 &lt;span&gt;&lt;b&gt;NCCL ALLREDUCE 타임아웃&lt;/b&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;span&gt;DistBackendError&lt;/span&gt;로 종료된다.&lt;/p&gt;
&lt;pre id=&quot;code_1763029829863&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Watchdog caught collective operation timeout:
WorkNCCL(SeqNum=1, OpType=ALLREDUCE)

c10::DistBackendError: watchdog thread terminated with exception
process 1 terminated with signal SIGABRT&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 코드 문제(샘플러, 에폭 루프, barrier, DataLoader 워커 수 등)를 다 확인했지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;결정적인 원인은 &lt;/span&gt;&lt;b&gt;NCCL 통신 경로 자체가 환경과 충돌하는 문제&lt;/b&gt;&lt;span&gt;였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;  문제 원인 요약&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 사용한 환경은:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 노드&lt;/li&gt;
&lt;li&gt;GPU 2장 (RTX PRO 6000 Black)&lt;/li&gt;
&lt;li&gt;Kubernetes Pod 1개에 &lt;span&gt;nvidia.com/gpu: 2&lt;/span&gt; 할당&lt;/li&gt;
&lt;li&gt;외부 네트워크 통신 없이 로컬 IPC로만 통신해도 충분한 구조&lt;/li&gt;
&lt;/ul&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;span&gt;즉, &lt;/span&gt;&lt;b&gt;InfiniBand도 없고, GPU 간 P2P(Not NVLink)도 사실 필요 없는 환경&lt;/b&gt;&lt;span&gt;이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 NCCL은 기본적으로 다음을 시도한다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;GPU 간 &lt;/span&gt;&lt;b&gt;P2P(NVLink) 통신&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;InfiniBand / RDMA&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;소켓 기반 통신&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SHM 기반 IPC&lt;/b&gt;&lt;/li&gt;
&lt;/ol&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;collective op(ALLREDUCE)의 타이밍이 뭉개지고, 결국 watchdog이 타임아웃을 때린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;✨ 해결: 환경 변수 2줄 추가&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 문제는 아래 두 줄로 완전히 해결되었다.&lt;/p&gt;
&lt;pre id=&quot;code_1763029738982&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    os.environ[&quot;NCCL_P2P_DISABLE&quot;] = &quot;1&quot;  # GPU 간 P2P 통신 비활성화
    os.environ[&quot;NCCL_IB_DISABLE&quot;] = &quot;1&quot;   # InfiniBand 비활성화&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단일 노드지만 NVLink가 없는 GPU들끼리의 P2P를 NCCL이 억지로 시도하다가 끊김 &amp;rarr; 타임아웃&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;InfiniBand가 없는 환경에서 IB path 스캔 중 지연 발생 &amp;rarr; 타임아웃&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NCCL이 SHM/Socket 기반으로 &lt;span&gt;&lt;b&gt;깨끗하게 고정&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;통신이 안정화&lt;/li&gt;
&lt;li&gt;ALLREDUCE 타임아웃 완전 소멸&lt;/li&gt;
&lt;li&gt;2GPU DDP 학습이 정상적으로 끝까지 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 &amp;ldquo;두 줄의 기적&amp;rdquo;이었다.&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;h1&gt;&lt;b&gt;  수정 코드 (초기 DDP setup 직전)&lt;/b&gt;&lt;/h1&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;span&gt;main_worker()&lt;/span&gt; 또는 &lt;span&gt;setup_distributed()&lt;/span&gt; 가장 앞쪽에 아래처럼 넣으면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1763029922667&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# --- 핵심 해결 코드 ---
os.environ[&quot;NCCL_P2P_DISABLE&quot;] = &quot;1&quot;  # GPU 간 P2P 통신 비활성화
os.environ[&quot;NCCL_IB_DISABLE&quot;] = &quot;1&quot;   # InfiniBand 비활성화
# ------------------------

dist.init_process_group(backend=&quot;nccl&quot;)
torch.cuda.set_device(local_rank)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kubernetes 환경에서는 Container spec 안에 다음처럼 추가해도 동일하게 동작한다.&lt;/p&gt;
&lt;pre id=&quot;code_1763029934834&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;env:
- name: NCCL_P2P_DISABLE
  value: &quot;1&quot;
- name: NCCL_IB_DISABLE
  value: &quot;1&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;  왜 이 두 줄이 효과가 있었을까?&lt;/b&gt;&lt;/h1&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;b&gt;NCCL 기능&lt;/b&gt;&lt;b&gt;우리 환경&lt;/b&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;P2P (NVLink)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;RTX PRO 6000 Black &amp;mdash; NVLink 없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;NCCL이 P2P 경로를 시도 &amp;rarr; 실패/지연&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;InfiniBand&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;없음&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;NCCL이 IB 스캔하다가 초기화 지연&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;Socket/SHM&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;있음 (정상)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;우리가 원하는 통신 방식&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 &amp;ldquo;쓰지 않는 기능을 강제로 끄는 것&amp;rdquo;이 오히려 더 안전했다.&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;h1&gt;&lt;b&gt;  최종 결과&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NCCL ALLREDUCE 타임아웃 100% 해결&lt;/li&gt;
&lt;li&gt;rank0/rank1 모두 안정적으로 에폭 종료&lt;/li&gt;
&lt;li&gt;GPU 2장 DDP 학습 정상 진행&lt;/li&gt;
&lt;li&gt;학습 속도와 GPU 활용률이 일정하게 유지됨&lt;/li&gt;
&lt;li&gt;종료 시 DistBackendError / SIGABRT도 더 이상 발생 안 함&lt;/li&gt;
&lt;/ul&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 style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;단일 노드에서 P2P(NVLink 없음) + InfiniBand 없는 환경이라면&lt;/b&gt;&lt;/blockquote&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;NCCL_P2P_DISABLE=1 / NCCL_IB_DISABLE=1 을 기본값으로 깔고 가는 게 더 좋다.&lt;/b&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;h1&gt;&lt;b&gt;  비슷한 문제를 겪는 분들에게&lt;/b&gt;&lt;/h1&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DDP에서 ALLREDUCE 타임아웃 발생&lt;/li&gt;
&lt;li&gt;rank 간 collective 불일치 에러&lt;/li&gt;
&lt;li&gt;watchdog이 collective를 죽였다는 메시지 출력&lt;/li&gt;
&lt;li&gt;DistBackendError&lt;/li&gt;
&lt;li&gt;SIGABRT, SIGKILL로 종료&lt;/li&gt;
&lt;li&gt;GPU는 잘 보이는데 통신이 계속 불안정함&lt;/li&gt;
&lt;li&gt;NCCL이 &amp;ldquo;work sequence id 1&amp;rdquo;에서 멈춰 있음&lt;/li&gt;
&lt;/ul&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;pre id=&quot;code_1763029991733&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;os.environ[&quot;NCCL_P2P_DISABLE&quot;] = &quot;1&quot;
os.environ[&quot;NCCL_IB_DISABLE&quot;] = &quot;1&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10분짜리 에러 로그를 한 번에 종결할 수 있는 해결책이었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJ5M0/dJMcabP5hj6/KDdkduJytEhkKuI5iGcWMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJ5M0/dJMcabP5hj6/KDdkduJytEhkKuI5iGcWMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJ5M0/dJMcabP5hj6/KDdkduJytEhkKuI5iGcWMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJ5M0%2FdJMcabP5hj6%2FKDdkduJytEhkKuI5iGcWMk%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;366&quot; height=&quot;366&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&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;</description>
      <category>&amp;lt;ML&amp;gt;</category>
      <category>ALLREDUCE error</category>
      <category>DDP</category>
      <category>DistributedDataParallel</category>
      <category>GPU 오류 해결</category>
      <category>nccl</category>
      <category>NCCL timeout</category>
      <category>nccl 에러</category>
      <category>pytorch</category>
      <category>딥러닝 오류 해결</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/568</guid>
      <comments>https://9566.tistory.com/568#entry568comment</comments>
      <pubDate>Thu, 13 Nov 2025 19:38:42 +0900</pubDate>
    </item>
    <item>
      <title>✅2개의 GPU 환경에서 DDP 분산 학습 구축하기: 오늘의 기술 실험 기록</title>
      <link>https://9566.tistory.com/567</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 &amp;ldquo;데이터 병렬은 안 되는데&amp;hellip; 그렇다고 GPU를 놀릴 순 없고&amp;hellip;&amp;rdquo; 라는 현실적인 고민에서 출발했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루 종일 CUDA 지형도를 탐사하며, GPU 간 통신부터 DDP 구조까지 파고든 실전 기록을 남긴다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uv0cA/dJMcab3BjrA/fVBDlPOeUMoyKhMmwZyFl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uv0cA/dJMcab3BjrA/fVBDlPOeUMoyKhMmwZyFl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uv0cA/dJMcab3BjrA/fVBDlPOeUMoyKhMmwZyFl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuv0cA%2FdJMcab3BjrA%2FfVBDlPOeUMoyKhMmwZyFl1%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;400&quot; height=&quot;400&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&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;&lt;b&gt;1. 문제의 시작: DataParallel이 먹통이었다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 목표는 단순했다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;&amp;ldquo;GPU 두 장 있으니 DataParallel로 성능 두 배!&amp;rdquo;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 NVIDIA의 냉정한 진단 한 줄.&lt;/p&gt;
&lt;pre id=&quot;code_1762773191335&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nvidia-smi topo -p2p a&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는&amp;hellip;&lt;/p&gt;
&lt;pre id=&quot;code_1762773206580&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GPU0 &amp;harr; GPU1 : NS (Not Supported)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;즉, &lt;/span&gt;&lt;b&gt;두 GPU가 서로 직접 접근(P2P, peer-to-peer)을 지원하지 않는 구조&lt;/b&gt;&lt;span&gt;였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인보드의 PCIe 토폴로지 때문인데, 이건 소프트웨어로 바꿀 수 있는 문제가 아니다.&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;따라서 DataParallel은 비효율, 심지어 멈춤 현상까지 발생.&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;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 결론: DistributedDataParallel(DDP)로 전환&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;P2P가 없어도 동작하는 GPU 분산 방식이 바로 &lt;span&gt;&lt;b&gt;DDP(DistributedDataParallel)&lt;/b&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DP는 메인 GPU로 모든 배치를 몰아주는 구조라 P2P가 필수&lt;/li&gt;
&lt;li&gt;&lt;span&gt;DDP는 &lt;/span&gt;&lt;b&gt;각 프로세스가 자신의 GPU에서 모델을 독립적으로 수행하고, NCCL로만 통신&lt;/b&gt;&lt;span&gt;하여 P2P 필요 없음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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 style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;P2P Not Supported 시스템 &amp;rarr; DDP는 문제 없음&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 DP 보다 DDP에 대한 내용이 더 최신이었고 효과도 좋았다.&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;b&gt;python main.py 에서도 2GPU DDP 실행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spawn 기반으로 프로세스 n개 생성&lt;/li&gt;
&lt;li&gt;GPU 개수 따라 world_size 자동 설정&lt;/li&gt;
&lt;li&gt;torchrun 호출 없이도 same behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 이 기반 구조까지 완성했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. main.py 개선: use_gpu 옵션 기반 자동 실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 작성한 핵심 구조:&lt;/p&gt;
&lt;pre id=&quot;code_1762773307184&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def main(use_gpu):
    if use_gpu == 1:
        main_worker(world_size=1)
    else:
        mp.spawn(main_worker, nprocs=use_gpu, args=(world_size,))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 사용자는 GPU 몇 개 사용할지만 정하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 gpu 1장과 2장의 성능 차이를 비교하는걸 생각했는데 그렇게 하지 않아도 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 궁금증 때문에 비교햇고 2장이 조금 더 나았다.(35분 vs 32분)&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. GPU 사용 시간 추적 기능 추가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 main.py 실행 시간&lt;/li&gt;
&lt;li&gt;GPU 두 장이 &lt;span&gt;&lt;b&gt;동시에&lt;/b&gt;&lt;/span&gt; 사용된 시간&lt;/li&gt;
&lt;li&gt;두 시간의 비율(%)&lt;/li&gt;
&lt;/ul&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;span&gt;&lt;b&gt;GPUUsageTracker&lt;/b&gt;&lt;/span&gt; 클래스도 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 끝에는 이런 리포트가 뜨도록 했다:&lt;/p&gt;
&lt;pre id=&quot;code_1762773393564&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;⏱️ 실행 시간 요약
&amp;bull; main.py 전체 실행 시간 : 0시간 32분 12초
&amp;bull; GPU 2대 동시 사용 시간 : 0시간 14분 55초
&amp;bull; 동시 사용 비율        : 46.32%&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 병렬성 체크의 아주 훌륭한 지표.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. GPU 메모리 출력 포맷 개선&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 출력:&lt;/p&gt;
&lt;pre id=&quot;code_1762773422178&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GPU 0: 100% 2340/97887MB&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개선 후:&lt;/p&gt;
&lt;pre id=&quot;code_1762773432318&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GPU 0: 2340/97887MB (2.23%)
GPU 1: 2340/97887MB (2.23%)&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 결과 분석: DDP는 잘 돌아갔다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그를 보면 DDP가 정상적으로 두 GPU를 활용하고 있음:&lt;/p&gt;
&lt;pre id=&quot;code_1762773456184&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GPU 0: 2340/97887MB (2.23%)
GPU 1: 2340/97887MB (2.23%)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 두 GPU 모두 모델 shard를 가지고 forward/backward 수행한 흔적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; NCCL은 정상 작동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 병렬학습 ✔︎&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;h1&gt;&lt;b&gt;9. 오늘의 전체 성과&lt;/b&gt;&lt;/h1&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;GPU 토폴로지 분석&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;P2P 불가 &amp;rarr; DataParallel 비효율 원인 확인&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;분산 학습&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;spawn 기반 DDP 2GPU 지원 완료&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;실행 UX&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;python main.py &amp;ndash;use-gpu=2 구현&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;GPU 모니터링&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;실시간 메모리 사용률 + 동시 사용 시간&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;출력 로그 정리&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;불필요한 중복 출력 제거&lt;/span&gt;&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;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>&amp;lt;ML&amp;gt;</category>
      <category>DDP</category>
      <category>distributed-data-parallel</category>
      <category>gpu-분산학습</category>
      <category>nccl</category>
      <category>torchrun</category>
      <category>데이터병렬</category>
      <category>딥러닝</category>
      <category>멀티gpu</category>
      <category>분산학습</category>
      <category>파이토치</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/567</guid>
      <comments>https://9566.tistory.com/567#entry567comment</comments>
      <pubDate>Mon, 10 Nov 2025 20:22:55 +0900</pubDate>
    </item>
    <item>
      <title>일반 개인 개발자가 &amp;lsquo;코드 저작권 등록&amp;rsquo;하는 가장 쉬운 방법</title>
      <link>https://9566.tistory.com/565</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmaNk6/dJMcadAkXyw/RmO7tOJ0yyLK4bDv4s7v11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmaNk6/dJMcadAkXyw/RmO7tOJ0yyLK4bDv4s7v11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmaNk6/dJMcadAkXyw/RmO7tOJ0yyLK4bDv4s7v11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmaNk6%2FdJMcadAkXyw%2FRmO7tOJ0yyLK4bDv4s7v11%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;382&quot; height=&quot;382&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;프로젝트를 지키는 가장 빠르고 확실한 법적 증명 만들기&lt;/i&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;span&gt;&lt;b&gt;증명&lt;/b&gt;&lt;/span&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;span&gt;&lt;b&gt;저작권 등록증&lt;/b&gt;&lt;/span&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;hr data-ke-style=&quot;style1&quot; /&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;&amp;nbsp;1. 어디에서 등록하나요?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;한국저작권위원회&lt;/b&gt;&lt;/span&gt;에서 &amp;lsquo;프로그램 저작물&amp;rsquo;로 등록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;a href=&quot;https://www.copyright.or.kr&quot;&gt;https://www.copyright.or.kr&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문학&amp;middot;음악 같은 일반 저작물과 달리, &lt;span&gt;&lt;b&gt;코드는 프로그램 저작물&lt;/b&gt;&lt;/span&gt;로 등록해야 한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;&amp;nbsp;2. 개인이 준비해야 할 것&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 개발자가 준비해야 할 것은 사실 딱 세 가지다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;본인 인증(간편인증 또는 공동인증서)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;소스코드 일부(PDF)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로그램 설명서(PDF 또는 DOCX)&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 포인트는:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전체 코드를 제출할 필요 없다&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연속된 30페이지 이내의 코드만 제출&lt;/li&gt;
&lt;li&gt;핵심 기능이 드러나는 부분만 제출하면 충분&lt;/li&gt;
&lt;li&gt;영업비밀도 잘 보호된다&lt;/li&gt;
&lt;li&gt;외부 공개되지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;3. 등록 절차 (개인 기준 가장 빠른 방법)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1) 한국저작권위원회 사이트 접속&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &amp;lsquo;저작권 등록 서비스&amp;rsquo; 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &amp;lsquo;온라인 등록&amp;rsquo; 선택&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2) &amp;lsquo;프로그램 저작물&amp;rsquo; 선택&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 저작물이 아니라 프로그램임을 잊지 말자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3) 서류 업로드&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로그램 설명서&lt;/li&gt;
&lt;li&gt;소스코드 일부&lt;/li&gt;
&lt;li&gt;프로그램 명칭 및 개발 목적 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명서는 대략 이렇게 구성하면 된다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로그램 이름&lt;/li&gt;
&lt;li&gt;개발 목적&lt;/li&gt;
&lt;li&gt;주요 기능&lt;/li&gt;
&lt;li&gt;전체 구조(아키텍처 등)&lt;/li&gt;
&lt;li&gt;모듈별 기능 설명&lt;/li&gt;
&lt;li&gt;구동 화면 또는 예시&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하면 템플릿도 만들어줄 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4) 비용 결제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온라인 신청 기준: &lt;span&gt;&lt;b&gt;3만 원대&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5) 등록증 발급&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;보통 &lt;/span&gt;&lt;b&gt;1~2주 이내&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PDF 형태의 &amp;lsquo;프로그램 저작권 등록증&amp;rsquo; 수령&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 비용: 개인 기준 얼마쯤 드나?&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;&lt;b&gt;항목&lt;/b&gt;&lt;b&gt;금액&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;등록 수수료&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;20,000 ~ 30,000원&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;등록면허세&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;3,600원&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;합계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;b&gt;약 23,600 ~ 33,600원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 부담 없는 금액&lt;br /&gt;✅ 개인이 직접 신청하면 여기서 끝&lt;br /&gt;✅ 변리사나 법무사는 필요 없음&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 왜 개인이 등록해야 할까?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인에게 가장 중요한 건 &lt;span&gt;&lt;b&gt;타임스탬프&lt;/b&gt;&lt;/span&gt;와 &lt;span&gt;&lt;b&gt;법적 증명력&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발한 코드의 &amp;ldquo;작성 시점&amp;rdquo; 증거 확보&lt;/li&gt;
&lt;li&gt;나중에 분쟁 발생 시 강력한 보호&lt;/li&gt;
&lt;li&gt;퍼블리싱&amp;middot;상업화&amp;middot;외주 작업할 때 신뢰도 상승&lt;/li&gt;
&lt;li&gt;파트너/고객/기업과 협업할 때 공식 자료로 인정됨&lt;/li&gt;
&lt;li&gt;정부 과제나 스타트업 IR에서 IP 보호 증빙으로 활용 가능&lt;/li&gt;
&lt;/ul&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. GitHub만으로 충분하지 않을까?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub 커밋 기록도 증거로 쓰일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;법적 증명력은 저작권 등록보다 약함&lt;/li&gt;
&lt;li&gt;정식 등록증 요구하는 경우가 종종 있음&lt;/li&gt;
&lt;li&gt;기업&amp;middot;정부과제&amp;middot;외주 시장에서는 등록증이 신뢰성을 만든다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 비용 대비 효과가 크다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 마무리&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;정말 생각보다 간단하고, 비용도 크지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단 3만 원대.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 1~2주 후에 &amp;lsquo;법적 증명서&amp;rsquo;가 생긴다.&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;이 등록 하나는 꽤 든든한 방패가 되어줄 거다.&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;</description>
      <category>IT팁</category>
      <category>개발자저작권</category>
      <category>개인개발자</category>
      <category>소프트웨어저작권</category>
      <category>저작권등록</category>
      <category>저작권등록방법</category>
      <category>저작권보호</category>
      <category>코드저작권</category>
      <category>코드저작권등록방법</category>
      <category>프로그램저작권</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/565</guid>
      <comments>https://9566.tistory.com/565#entry565comment</comments>
      <pubDate>Sat, 8 Nov 2025 16:34:30 +0900</pubDate>
    </item>
    <item>
      <title>Federated Learning 이미지</title>
      <link>https://9566.tistory.com/564</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/labJ7/dJMcagw24uX/kzxt87n1Sl0c7PLsyKuGC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/labJ7/dJMcagw24uX/kzxt87n1Sl0c7PLsyKuGC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/labJ7/dJMcagw24uX/kzxt87n1Sl0c7PLsyKuGC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlabJ7%2FdJMcagw24uX%2Fkzxt87n1Sl0c7PLsyKuGC0%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;259&quot; height=&quot;259&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-11-05 오후 9.03.26.png&quot; data-origin-width=&quot;1710&quot; data-origin-height=&quot;1004&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xfrs6/dJMcahW1Jvm/92f51gvtoUP1dFvTbBw7Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xfrs6/dJMcahW1Jvm/92f51gvtoUP1dFvTbBw7Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xfrs6/dJMcahW1Jvm/92f51gvtoUP1dFvTbBw7Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXfrs6%2FdJMcahW1Jvm%2F92f51gvtoUP1dFvTbBw7Dk%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;547&quot; height=&quot;321&quot; data-filename=&quot;스크린샷 2025-11-05 오후 9.03.26.png&quot; data-origin-width=&quot;1710&quot; data-origin-height=&quot;1004&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1cPqf/dJMcahQf9Ji/UMF5tTa7cQ167D1hct4Qi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1cPqf/dJMcahQf9Ji/UMF5tTa7cQ167D1hct4Qi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1cPqf/dJMcahQf9Ji/UMF5tTa7cQ167D1hct4Qi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1cPqf%2FdJMcahQf9Ji%2FUMF5tTa7cQ167D1hct4Qi0%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;302&quot; height=&quot;302&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRJeZb/dJMcaa4FCJD/dBQCLrO8r89N0abPdUMeD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRJeZb/dJMcaa4FCJD/dBQCLrO8r89N0abPdUMeD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRJeZb/dJMcaa4FCJD/dBQCLrO8r89N0abPdUMeD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRJeZb%2FdJMcaa4FCJD%2FdBQCLrO8r89N0abPdUMeD0%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;291&quot; height=&quot;194&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/564</guid>
      <comments>https://9566.tistory.com/564#entry564comment</comments>
      <pubDate>Wed, 5 Nov 2025 21:02:13 +0900</pubDate>
    </item>
    <item>
      <title>포트폴리오 소재</title>
      <link>https://9566.tistory.com/563</link>
      <description>&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;- ml 관련&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 페더레이트 러닝 : &lt;a href=&quot;https://ai-inform.tistory.com/entry/%ED%8E%98%EB%8D%94%EB%A0%88%EC%9D%B4%ED%8B%B0%EB%93%9C-%EB%9F%AC%EB%8B%9DFederated-Learning-%EC%9D%B4%EB%9E%80-%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ai-inform.tistory.com/entry/%ED%8E%98%EB%8D%94%EB%A0%88%EC%9D%B4%ED%8B%B0%EB%93%9C-%EB%9F%AC%EB%8B%9DFederated-Learning-%EC%9D%B4%EB%9E%80-%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1762258738541&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;페더레이티드 러닝(Federated Learning) 이란? 쉬운 설명&quot; data-og-description=&quot;인공지능 분야에서 '페더레이티드 러닝(Federated Learning)'은 마치 여러 마을 사람들이 각자 집에서 공부한 내용을 공유하여 함께 똑똑해지는 것과 같습니다. 개인 정보를 보호하면서 인공지능 모&quot; data-og-host=&quot;ai-inform.tistory.com&quot; data-og-source-url=&quot;https://ai-inform.tistory.com/entry/%ED%8E%98%EB%8D%94%EB%A0%88%EC%9D%B4%ED%8B%B0%EB%93%9C-%EB%9F%AC%EB%8B%9DFederated-Learning-%EC%9D%B4%EB%9E%80-%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85&quot; data-og-url=&quot;https://ai-inform.tistory.com/entry/%ED%8E%98%EB%8D%94%EB%A0%88%EC%9D%B4%ED%8B%B0%EB%93%9C-%EB%9F%AC%EB%8B%9DFederated-Learning-%EC%9D%B4%EB%9E%80-%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZtpt1/hyZNcZRE9r/xGQwOm7pAfJC8kP1o2toRk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/FqxYW/hyZM7daV64/yfiH4FDUKTk6M7qUeOenLk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://ai-inform.tistory.com/entry/%ED%8E%98%EB%8D%94%EB%A0%88%EC%9D%B4%ED%8B%B0%EB%93%9C-%EB%9F%AC%EB%8B%9DFederated-Learning-%EC%9D%B4%EB%9E%80-%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ai-inform.tistory.com/entry/%ED%8E%98%EB%8D%94%EB%A0%88%EC%9D%B4%ED%8B%B0%EB%93%9C-%EB%9F%AC%EB%8B%9DFederated-Learning-%EC%9D%B4%EB%9E%80-%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZtpt1/hyZNcZRE9r/xGQwOm7pAfJC8kP1o2toRk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/FqxYW/hyZM7daV64/yfiH4FDUKTk6M7qUeOenLk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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;페더레이티드 러닝(Federated Learning) 이란? 쉬운 설명&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;인공지능 분야에서 '페더레이티드 러닝(Federated Learning)'은 마치 여러 마을 사람들이 각자 집에서 공부한 내용을 공유하여 함께 똑똑해지는 것과 같습니다. 개인 정보를 보호하면서 인공지능 모&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ai-inform.tistory.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;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;</description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/563</guid>
      <comments>https://9566.tistory.com/563#entry563comment</comments>
      <pubDate>Wed, 5 Nov 2025 20:36:30 +0900</pubDate>
    </item>
    <item>
      <title>Hugging Face Hub 사용 가이드 gpt-oss 모델</title>
      <link>https://9566.tistory.com/562</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1762341607749&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;Hugging Face &amp;ndash; The AI community building the future.&quot; data-og-description=&quot;The Home of Machine Learning Create, discover and collaborate on ML better. We provide paid Compute and Enterprise solutions. We are building the foundation of ML tooling with the community.&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/&quot; data-og-url=&quot;https://huggingface.co/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oRtdf/hyZNaabgwq/RVG47cTV32nVkneBPGecmk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/ezhpK/hyZMFIieSR/bklW3i0g9RGNK8zWL6yDok/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oRtdf/hyZNaabgwq/RVG47cTV32nVkneBPGecmk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/ezhpK/hyZMFIieSR/bklW3i0g9RGNK8zWL6yDok/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&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;Hugging Face &amp;ndash; The AI community building the future.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The Home of Machine Learning Create, discover and collaborate on ML better. We provide paid Compute and Enterprise solutions. We are building the foundation of ML tooling with the community.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 서론&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hugging Face Hub는 다양한 머신러닝 모델, 데이터셋, 스페이스(Spaces)를 공유하고 협업할 수 있는 플랫폼입니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허가된(gated) 혹은 비공개(private) 모델의 경우에는 **액세스 토큰(access token)**을 발급받아야 다운로드 또는 사용이 가능하며, 토큰을 통해 인증(authentication)과 권한(authorisation)을 처리할 수 있습니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 글에서는 &lt;/span&gt;&lt;b&gt;토큰을 어떻게 발급하고&lt;/b&gt;&lt;span&gt;, 그리고 &lt;/span&gt;&lt;b&gt;모델을 어떻게 사용하는지 (다운로드/로드/인퍼런스)&lt;/b&gt;&lt;span&gt; 단계별로 살펴보겠습니다.&lt;/span&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;&lt;b&gt;2. 액세스 토큰 발급 방법&lt;/b&gt;&lt;/h2&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-filename=&quot;blob&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;1005&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daIWr5/dJMcakzrUjX/Eb5jCpBhzaav1BYQPk8eW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daIWr5/dJMcakzrUjX/Eb5jCpBhzaav1BYQPk8eW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daIWr5/dJMcakzrUjX/Eb5jCpBhzaav1BYQPk8eW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaIWr5%2FdJMcakzrUjX%2FEb5jCpBhzaav1BYQPk8eW0%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;1915&quot; height=&quot;1005&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;1005&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.1 계정 준비&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;위 사이트에 &lt;/span&gt;접속하여 계정을 생성하거나 로그인합니다.&lt;/li&gt;
&lt;li&gt;이메일 인증이나 프로필 설정 등이 완료되어야 토큰 발급이 가능할 수 있습니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;/ol&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;2.2 토큰 생성&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;로그인 후 우측 상단 아바타(프로필 아이콘)를 클릭 &amp;rarr; &lt;span&gt;&lt;b&gt;Settings&lt;/b&gt;&lt;/span&gt;(설정) 메뉴 진입.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;좌측 메뉴에서 &lt;span&gt;&lt;b&gt;Access Tokens&lt;/b&gt;&lt;/span&gt; 또는 &lt;span&gt;&lt;b&gt;Tokens&lt;/b&gt;&lt;/span&gt; 탭을 선택합니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;New token&amp;rdquo; 또는 &amp;ldquo;+ Create new token&amp;rdquo; 버튼을 클릭하여 새 토큰을 생성합니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;토큰 이름(Name)을 지정하고, 권한(scope) 또는 역할(role)을 선택합니다. (예: 읽기(read)만, 읽기+쓰기(read+write) 등)&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;생성된 토큰 값을 복사해 둡니다. 생성 후 다시는 &lt;span&gt;&lt;b&gt;보이지 않을 수 있으므로&lt;/b&gt;&lt;/span&gt; 안전한 장소에 저장해야 합니다.&lt;/li&gt;
&lt;/ol&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;2.3 권한 및 안전 주의사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;읽기(read) 전용 토큰은 모델 다운로드 또는 인퍼런스만 가능하며, 쓰기(write) 권한이 있는 토큰은 업로드(push) 및 리포지토리 수정도 가능.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;비공개 조직(organization)이나 팀 계정 사용하는 경우에는 토큰 관리, 권한 정책 등이 추가로 존재합니다 (예: 조직 관리자가 토큰 만들기/리뷰 가능) .&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;토큰을 코드나 버전관리(GitHub 등)에 노출시키면 안 됩니다. 외부 공개 저장소에 토큰이 담기면 보안 사고로 이어질 수 있습니다.&lt;/li&gt;
&lt;/ul&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;3. 토큰을 이용한 모델 사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.1 인증(Authentication)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 사용 전 인증이 필요합니다. 방법은 여러 가지가 있습니다.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;환경 변수(environment variable)로 설정: &lt;span&gt;HF_TOKEN=&quot;hf_xxx&amp;hellip;&amp;rdquo;&lt;/span&gt; 등&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;코드 내에서 토큰을 전달: 예) &lt;span&gt;use_auth_token=&amp;hellip;&lt;/span&gt; 파라미터 등&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;CLI 로그인: &lt;span&gt;huggingface-cli login&lt;/span&gt; 명령어로 토큰을 입력하는 방식.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;3.2 모델 다운로드 및 로드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 비공개 또는 사용 허가가 필요한 모델(예: &lt;span&gt;google/gemma-2-2b-it&lt;/span&gt; 등) 사용할 때 다음과 같은 코드를 참고할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/google/gemma-2-2b-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/google/gemma-2-2b-it&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1762341665853&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;google/gemma-2-2b-it &amp;middot; Hugging Face&quot; data-og-description=&quot;This repository is publicly accessible, but you have to accept the conditions to access its files and content. To access Gemma on Hugging Face, you&amp;rsquo;re required to review and agree to Google&amp;rsquo;s usage license. To do this, please ensure you&amp;rsquo;re logged in &quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/google/gemma-2-2b-it&quot; data-og-url=&quot;https://huggingface.co/google/gemma-2-2b-it&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hl4nl/hyZM0FqpiN/8j9CWZzUIT3QHuocmOdki0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/glTlS/hyZMZNknae/17V9f34dwCwK9sEFlR38IK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/google/gemma-2-2b-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/google/gemma-2-2b-it&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hl4nl/hyZM0FqpiN/8j9CWZzUIT3QHuocmOdki0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/glTlS/hyZMZNknae/17V9f34dwCwK9sEFlR38IK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&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;google/gemma-2-2b-it &amp;middot; Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This repository is publicly accessible, but you have to accept the conditions to access its files and content. To access Gemma on Hugging Face, you&amp;rsquo;re required to review and agree to Google&amp;rsquo;s usage license. To do this, please ensure you&amp;rsquo;re logged in&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3q7U/dJMcae0iOK4/E3ABtCpZFcmfMXGdsPKxS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3q7U/dJMcae0iOK4/E3ABtCpZFcmfMXGdsPKxS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3q7U/dJMcae0iOK4/E3ABtCpZFcmfMXGdsPKxS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3q7U%2FdJMcae0iOK4%2FE3ABtCpZFcmfMXGdsPKxS0%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;480&quot; height=&quot;261&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;261&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;access&amp;nbsp;to&amp;nbsp;this&amp;nbsp;model&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.4 게이트드(Gated) 모델 접근 주의&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 모델은 사용 전에 &lt;span&gt;&lt;b&gt;라이선스 동의(usage license)&lt;/b&gt;&lt;/span&gt; 또는 &lt;span&gt;&lt;b&gt;액세스 요청(request access)&lt;/b&gt;&lt;/span&gt; 절차가 필요합니다. 예를 들어 &lt;span&gt;google/gemma-2-2b-it&lt;/span&gt; 모델은 사용 전에 허가 조건을 동의해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 토큰만으로는 부족하고, 모델 페이지에서 &amp;ldquo;Accept license&amp;rdquo; 또는 &amp;ldquo;Request access&amp;rdquo; 버튼을 눌러야 할 수 있습니다.&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;</description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/562</guid>
      <comments>https://9566.tistory.com/562#entry562comment</comments>
      <pubDate>Wed, 5 Nov 2025 20:25:24 +0900</pubDate>
    </item>
    <item>
      <title>LLM 기반 MLOps 시연 중 발생한 Hugging Face Gated Model 인증 오류 정리</title>
      <link>https://9566.tistory.com/561</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 &lt;span&gt;&lt;b&gt;MLOps 시연 환경&lt;/b&gt;&lt;/span&gt;에서 &lt;span&gt;vLLM&lt;/span&gt;을 통해 &lt;span&gt;&lt;b&gt;gpt-oss-20b&lt;/b&gt;&lt;/span&gt; 모델을 연동하던 중 다음과 같은 오류가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 &lt;span&gt;&lt;b&gt;오류 원인, 배경, 해결 방향&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  프로젝트 개요&lt;/b&gt;&lt;/h2&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;1️⃣ 시연 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;모델&lt;/b&gt;&lt;/span&gt;: &lt;span&gt;gpt-oss-20b&lt;/span&gt; (OSS LLM)&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;서빙&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;vLLM&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;UI&lt;/b&gt;&lt;/span&gt;: Streamlit 기반 대화형 인터페이스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;사용자는 Streamlit에서 프롬프트를 입력하고, vLLM 서버를 통해 모델 추론 결과를 실시간으로 확인할 수 있는 구조입니다.&lt;/blockquote&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;2️⃣ 병행 작업&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;현대차 배터리 DPAST 모델용 MLOps 템플릿 구축&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전처리 / 모델 / 학습 / MLflow 로그 저장까지 자동화&lt;/li&gt;
&lt;li&gt;&lt;span&gt;best_epoch&lt;/span&gt; 메타데이터를 MLflow에 저장하는 부분에서 시간이 다소 소요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3️⃣ 남은 과업&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;gpt-oss-20b&lt;span&gt; 모델 &lt;/span&gt;&lt;span&gt;&lt;b&gt;연동 인증 오류 해결&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;관련 토큰 발급 및 환경 변수 주입 과정을 &lt;span&gt;&lt;b&gt;블로그로 문서화&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;/b&gt;&lt;/h2&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;pre id=&quot;code_1762340460190&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;OSError: You are trying to access a gated repo.
Make sure to have access to it at https://huggingface.co/google/gemma-2-2b-it.
401 Client Error. Access to model google/gemma-2-2b-it is restricted.
You must have access to it and be authenticated to access it.&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Hugging Face의 &lt;span&gt;&lt;b&gt;게이트드(Gated) 모델&lt;/b&gt;&lt;/span&gt;에 접근 중이며,&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인증 토큰을 인식하지 못한 상태에서 요청이 전송&lt;/b&gt;&lt;span&gt;된 상황입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;</description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/561</guid>
      <comments>https://9566.tistory.com/561#entry561comment</comments>
      <pubDate>Wed, 5 Nov 2025 20:01:11 +0900</pubDate>
    </item>
    <item>
      <title>251105 수 작업일지</title>
      <link>https://9566.tistory.com/560</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. mlops 시연 영상 구축(llm 모델 - gpt-oss-20b 모델 활용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 모델 / 서빙 / 스트림릿 화면 제작 ( 스트림릿 화면은 사용자를 위해)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. mlops 템플릿 만들기(현대차 배터리 dpast 모델 - 전처리 / 모델 / 학습 )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- mlflow에 best_epoch 을 저장하는 것에 시간 소요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 남은 과업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- gpt-oss-20b 연동오류(토큰이 안맞다는데 관련해서 토큰 발급 블로그 만들것)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762340269465&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     return ModelConfig(
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m            ^^^^^^^^^^^^
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/pydantic/_internal/_dataclasses.py&quot;, line 123, in __init__
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     s.__pydantic_validator__.validate_python(ArgsKwargs(args, kwargs), self_instance=s)
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/vllm/config/__init__.py&quot;, line 603, in __post_init__
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     self.model, self.tokenizer = maybe_override_with_speculators_target_model(  # noqa: E501
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2025-11-05T13:35:25.865+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/vllm/transformers_utils/config.py&quot;, line 487, in maybe_override_with_speculators_target_model
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     config_dict, _ = PretrainedConfig.get_config_dict(
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/transformers/configuration_utils.py&quot;, line 662, in get_config_dict
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/transformers/configuration_utils.py&quot;, line 721, in _get_config_dict
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     resolved_config_file = cached_file(
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m                            ^^^^^^^^^^^^
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/transformers/utils/hub.py&quot;, line 321, in cached_file
[2025-11-05T13:35:25.866+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     file = cached_files(path_or_repo_id=path_or_repo_id, filenames=[filename], **kwargs)
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m   File &quot;/opt/conda/lib/python3.11/site-packages/transformers/utils/hub.py&quot;, line 542, in cached_files
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m     raise OSError(
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m OSError: You are trying to access a gated repo.
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m Make sure to have access to it at https://huggingface.co/google/gemma-2-2b-it.
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m 401 Client Error. (Request ID: Root=1-690ad40d-6065067156b6c5ac666168e4;1c1791cc-fe12-495c-80a4-fcd647aed6a4)
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m
[2025-11-05T13:35:25.867+0900] {pod_manager.py:472} INFO - [base]  [1;36m(APIServer pid=21) [0;0m Cannot access gated repo for url https://huggingface.co/google/gemma-2-2b-it/resolve/main/config.json.
[2025-11-05T13:35:26.861+0900] {pod_manager.py:490} INFO - [base]  [1;36m(APIServer pid=21) [0;0m Access to model google/gemma-2-2b-it is restricted. You must have access to it and be authenticated to access it. Please log in.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;에러 요약&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OSError: You are trying to access a gated repo &amp;hellip; google/gemma-2-2b-it &amp;hellip; 401 Client Error&lt;/li&gt;
&lt;li&gt;&lt;span&gt;의미: &lt;/span&gt;&lt;b&gt;Hugging Face 게이트드(승인 필요) 모델&lt;/b&gt;&lt;span&gt;에 접근 중인데, &lt;/span&gt;&lt;b&gt;vLLM 프로세스에서 인증 토큰을 인식 못 함&lt;/b&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;핵심 원인&lt;/b&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;모델이 &lt;span&gt;&lt;b&gt;게이트드&lt;/b&gt;&lt;/span&gt; &amp;rarr; 계정에서 접근 승인이 필요&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pod/컨테이너/프로세스 환경&lt;/b&gt;&lt;span&gt;에 &lt;/span&gt;&lt;b&gt;HF 토큰 미주입&lt;/b&gt;&lt;span&gt; 또는 잘못된 변수명&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;실행 유저 불일치(토큰은 A유저 홈, 프로세스는 B유저)&lt;/li&gt;
&lt;li&gt;네트워크/프록시로 &lt;span&gt;huggingface.co&lt;/span&gt; 접근 실패&lt;/li&gt;
&lt;/ol&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;b&gt;1) 접근 권한 확인&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모델 페이지에서 &lt;span&gt;&lt;b&gt;Access Granted&lt;/b&gt;&lt;/span&gt;인지 확인(이미 승인되었다면 OK)&lt;/li&gt;
&lt;/ul&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>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/560</guid>
      <comments>https://9566.tistory.com/560#entry560comment</comments>
      <pubDate>Wed, 5 Nov 2025 19:59:39 +0900</pubDate>
    </item>
    <item>
      <title>GPU 두 대로 학습 속도 개선한 후기(data parallel 활용)</title>
      <link>https://9566.tistory.com/559</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;모델 학습 속도를 높이기 위해 RTX 6000 GPU 2대를 활용했습니다.&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;hr data-ke-style=&quot;style1&quot; /&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;1. 병렬화 방식 검토&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딥러닝 모델을 여러 GPU에서 학습시킬 때 주로 사용하는 병렬화 방식은 다음과 같습니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Data Parallel&lt;br /&gt;&lt;/b&gt;&amp;rarr; 학습 후 각 GPU의 gradient를 평균내 업데이트.&lt;br /&gt;&amp;rarr; CNN 계열 모델에서 가장 일반적이고 구현이 간단함.&lt;br /&gt;&amp;rarr; 각 GPU에 동일한 모델을 복제하고, 데이터를 분할해 병렬 학습.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Model Parallel / Tensor Parallel&lt;br /&gt;&lt;/b&gt;&amp;rarr; 거대한 파라미터(수십억 단위)를 가진 대형 모델에서 유용하지만, CNN처럼 상대적으로 작은 모델에서는 오히려 통신 비용이 커서 비효율적임.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;2.&amp;nbsp; 선택한 방식: Data Parallel&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 프로젝트는 CNN 기반 모델이라,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Tensor Parallel은 오히려 오버헤드가 커서 사용하지 않았습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신, PyTorch의 &lt;span&gt;torch.nn.DataParallel&lt;/span&gt; 방식을 적용하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2개의 RTX Pro 6000 GPU를 활용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;3. 결과&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 GPU 대비 약 &lt;span&gt;&lt;b&gt;1.8배 속도 향상&lt;/b&gt;&lt;/span&gt; 확인&lt;/li&gt;
&lt;li&gt;구현이 간단하면서도 안정적인 학습 속도 개선&lt;/li&gt;
&lt;li&gt;메모리 분산 효과로 batch size를 더 크게 설정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&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;4.&amp;nbsp; 한줄 요약&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;대형 언어모델이 아니라면, 복잡한 병렬화 대신&lt;/blockquote&gt;
&lt;blockquote style=&quot;color: #0e0e0e;&quot; data-ke-style=&quot;style1&quot;&gt;&lt;span&gt;&lt;b&gt;Data Parallel&lt;/b&gt;&lt;/span&gt;이 가장 깔끔하고 실용적인 선택입니다.&lt;/blockquote&gt;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <category>data parallel</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/559</guid>
      <comments>https://9566.tistory.com/559#entry559comment</comments>
      <pubDate>Tue, 4 Nov 2025 20:51:52 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 마스터 2급 암기</title>
      <link>https://9566.tistory.com/558</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;X 윈도 환경에서만 사용할 수 있는 (GUI 기반) 편집기&lt;br /&gt;- kwrite&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널(콘솔)환경에서만 사용할 수 있는 (텍스트) 편집기&lt;br /&gt;- nano, vim, pico (nvp -&amp;gt; mvp)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>리눅스 마스터 2급</category>
      <category>리눅스 마스터 2급 암기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/558</guid>
      <comments>https://9566.tistory.com/558#entry558comment</comments>
      <pubDate>Mon, 21 Jul 2025 17:01:51 +0900</pubDate>
    </item>
    <item>
      <title>[프롬프트 제공]GPT로 데이터 정의서 자동화! 엑셀 파일만 올리면 바로 완성하는 방법</title>
      <link>https://9566.tistory.com/557</link>
      <description>&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;GPT로 데이터 정의서 쉽게 자동화하기&lt;/span&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;많은 데이터를 관리할 때 데이터 정의서는 꼭 필요하지만, 만드는 데 시간이 많이 걸립니다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제는 GPT를 활용해서 데이터 정의서를 빠르고 쉽게 자동으로 만들 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어떻게 할까?&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프롬프트만 잘 만들면 테이블명, 컬럼 설명 등 정의서가 자동으로 작성돼요.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;고객사가 자료를 많이 제공해도, GPT에 입력하면 대량의 정의서를 한 번에 만들 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보안도 중요!&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;민감한 정보(개인정보 등)는 미리 빼고,&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예시 값이 필요하면 첫 번째 값만 보여주어 데이터가 새지 않도록 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;효과&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정의서 만드는 시간이 크게 줄어요.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복 작업이 쉬워집니다.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보안도 신경 쓰니, 안심하고 쓸 수 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프롬프트&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하기 프롬프트 2개를 순서대로 그대로 복붙하여 사용 가능합니다.&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1번 프롬프트 복붙 + 엔터 -&amp;gt; 엑셀파일 업로드 -&amp;gt; 2번 프롬프트 복붙 + 엔터 -&amp;gt; 최종결과 도출&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;도메인은 직접 작성이 필요합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1752730381274&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;작업 요청: 데이터 정의서(.xlsx) 자동 생성
도메인 : 농업
목표 : 업로드하는 도메인의 엑셀 데이터를 기반으로 데이터 정의서를 .xlsx 파일 형식으로 생성해 주세요.

세부 조건 :
1. 엑셀 파일이 여러 개일 경우, 3개씩 묶어서 순차적으로 처리해 주세요.
    1-1. .xlsx 파일을 클릭해서 직접 다운로드 가능하도록 하려면, 아래와 같이 다운로드 가능한 URL 형태로 결과를 제공
    1-2. 데이터 정의서가 성공적으로 생성되었습니다. 아래 파일명을 클릭하면 .xlsx 파일을 직접 다운로드할 수 있습니다:
        1-2-1. [(190101)비닐_주차수_데이터정의서.xlsx](sandbox:/mnt/data/(190101)비닐_주차수_데이터정의서.xlsx)
        1-2-2. [(190101)유리_주차수_데이터정의서.xlsx](sandbox:/mnt/data/(190101)유리_주차수_데이터정의서.xlsx)

2. 생성되는 데이터 정의서에는 아래 항목이 포함되어야 합니다:
    2-1. 변수명
    2-2. 데이터 타입 (int, float, object 등)
    2-3. 결측값 여부 (TRUE, FALSE)
    2-4. 대표값 (실수/정수는 nan제외 첫번째 값 1개, 명목형은 대표값 1개)
3. 대표값 처리 기준:
    3-1. 숫자형 변수 (int, float)
    3-2. float는 소수점 셋째 자리까지만 표시
    3-3. 명목형 변수 (object, category 등): 첫 번째 값 기준으로 표시
4. 정의서 시트의 **첫 번째 행(헤더)**은 다음과 같이 강조:
    4-1. 글씨 크기 크게
    4-2. 배경 색상 노란색
5. 각 원본 엑셀 파일에 대해 개별적인 데이터 정의서 파일을 생성
    5-1. 원본 파일명에 한글이 포함되어 있다면, 해당 부분은 간단한 영문 매핑(예: &quot;비닐&quot; &amp;rarr; &quot;vinyl&quot;, &quot;주차수&quot; &amp;rarr; &quot;week&quot;)을 적용해 변환합니다.

예시: (190101)_비닐_주차수.xlsx &amp;rarr; (190101)_vinyl_week.xlsx

한글이 포함된 유니코드 조합형(NFC/NFD) 문제를 방지하기 위해 반드시 영문으로 변환하여 사용합니다.

최종 파일명은 변환된 영문 파일명 뒤에 _data_definition을 붙여 .xlsx 확장자로 저장합니다.

예시: (190101)_vinyl_week_data_definition.xlsx&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1752730731560&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;최종 산출물에서 변수명을 확인한 후, 농업 도메인 기준으로 해석하여 변수 설명을 작성합니다.
작성한 변수 설명을 &quot;변수설명&quot;이라는 마지막 열에 추가한 엑셀 파일을 생성합니다.&lt;/code&gt;&lt;/pre&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;span style=&quot;color: #000000;&quot;&gt;최종 결과&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;결과는 다음과 같은 엑셀(.xlsx)로 출력됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-07-17 오후 2.37.16.png&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CZZDD/btsPnyMJc49/zuLjukFGdpK73KCJ4HTXyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CZZDD/btsPnyMJc49/zuLjukFGdpK73KCJ4HTXyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CZZDD/btsPnyMJc49/zuLjukFGdpK73KCJ4HTXyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZZDD%2FbtsPnyMJc49%2FzuLjukFGdpK73KCJ4HTXyk%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;1120&quot; height=&quot;524&quot; data-filename=&quot;스크린샷 2025-07-17 오후 2.37.16.png&quot; data-origin-width=&quot;1120&quot; data-origin-height=&quot;524&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;</description>
      <category>&amp;lt;GPT 활용&amp;gt;</category>
      <category>ai엑셀</category>
      <category>GPT</category>
      <category>노코드</category>
      <category>데이터관리</category>
      <category>데이터정의서자동화</category>
      <category>생성형ai</category>
      <category>실무팁</category>
      <category>업무자동화</category>
      <category>엑셀자동화</category>
      <category>프롬프트</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/557</guid>
      <comments>https://9566.tistory.com/557#entry557comment</comments>
      <pubDate>Thu, 17 Jul 2025 14:41:46 +0900</pubDate>
    </item>
    <item>
      <title>Bidirectional LSTM-CRF Models for Sequence Tagging 정리</title>
      <link>https://9566.tistory.com/555</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-0.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7Hbqs/btsFDFCDSb0/cAWG1aLCVmQrCGnb7Ts8w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7Hbqs/btsFDFCDSb0/cAWG1aLCVmQrCGnb7Ts8w1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7Hbqs/btsFDFCDSb0/cAWG1aLCVmQrCGnb7Ts8w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7Hbqs%2FbtsFDFCDSb0%2FcAWG1aLCVmQrCGnb7Ts8w1%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-0.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-1.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqEL9w/btsFDDEPRbg/UIWkMlCk0t4mS4nspM82yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqEL9w/btsFDDEPRbg/UIWkMlCk0t4mS4nspM82yK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqEL9w/btsFDDEPRbg/UIWkMlCk0t4mS4nspM82yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqEL9w%2FbtsFDDEPRbg%2FUIWkMlCk0t4mS4nspM82yK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-1.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-2.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDpvay/btsFD3J2qrc/9NefF0krDmDcP9VhkkMR21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDpvay/btsFD3J2qrc/9NefF0krDmDcP9VhkkMR21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDpvay/btsFD3J2qrc/9NefF0krDmDcP9VhkkMR21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDpvay%2FbtsFD3J2qrc%2F9NefF0krDmDcP9VhkkMR21%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-2.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-3.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsMXmR/btsFHsBkAsH/LAXVQQF6H1d68P3Ys1kdBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsMXmR/btsFHsBkAsH/LAXVQQF6H1d68P3Ys1kdBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsMXmR/btsFHsBkAsH/LAXVQQF6H1d68P3Ys1kdBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsMXmR%2FbtsFHsBkAsH%2FLAXVQQF6H1d68P3Ys1kdBK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-3.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-4.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bugEJT/btsFGTFYmQc/Q69t1JbrqThz3gi7LSPToK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bugEJT/btsFGTFYmQc/Q69t1JbrqThz3gi7LSPToK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bugEJT/btsFGTFYmQc/Q69t1JbrqThz3gi7LSPToK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbugEJT%2FbtsFGTFYmQc%2FQ69t1JbrqThz3gi7LSPToK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-4.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-5.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FDx0N/btsFGUEPWU0/tvUFH9pD6EJZJXMKVJmzwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FDx0N/btsFGUEPWU0/tvUFH9pD6EJZJXMKVJmzwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FDx0N/btsFGUEPWU0/tvUFH9pD6EJZJXMKVJmzwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFDx0N%2FbtsFGUEPWU0%2FtvUFH9pD6EJZJXMKVJmzwK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-5.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-6.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6mgn7/btsFFLaOcGT/LgmZiaLPyW1R9I2Ll9WUq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6mgn7/btsFFLaOcGT/LgmZiaLPyW1R9I2Ll9WUq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6mgn7/btsFFLaOcGT/LgmZiaLPyW1R9I2Ll9WUq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6mgn7%2FbtsFFLaOcGT%2FLgmZiaLPyW1R9I2Ll9WUq1%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-6.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-7.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eaGrGM/btsFCzQeImY/14X7CLOkjATAKeIlW0kmL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaGrGM/btsFCzQeImY/14X7CLOkjATAKeIlW0kmL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaGrGM/btsFCzQeImY/14X7CLOkjATAKeIlW0kmL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeaGrGM%2FbtsFCzQeImY%2F14X7CLOkjATAKeIlW0kmL1%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-7.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-8.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DSpNp/btsFCBgcdbu/tOFMHf2yJ4LdpIihUtkS2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DSpNp/btsFCBgcdbu/tOFMHf2yJ4LdpIihUtkS2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DSpNp/btsFCBgcdbu/tOFMHf2yJ4LdpIihUtkS2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDSpNp%2FbtsFCBgcdbu%2FtOFMHf2yJ4LdpIihUtkS2K%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-8.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-9.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/soJUw/btsFF66PTYc/zKvnbKEE4uTflPWLVEOCHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/soJUw/btsFF66PTYc/zKvnbKEE4uTflPWLVEOCHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/soJUw/btsFF66PTYc/zKvnbKEE4uTflPWLVEOCHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsoJUw%2FbtsFF66PTYc%2FzKvnbKEE4uTflPWLVEOCHK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-9.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-10.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXIX0a/btsFCzQeIqk/P4fzUBGIV6ddfpuerAaS21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXIX0a/btsFCzQeIqk/P4fzUBGIV6ddfpuerAaS21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXIX0a/btsFCzQeIqk/P4fzUBGIV6ddfpuerAaS21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXIX0a%2FbtsFCzQeIqk%2FP4fzUBGIV6ddfpuerAaS21%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-10.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-11.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6qF8/btsFFQi6Lq1/Q1u5WOAHwDbTG49Dpw8dA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6qF8/btsFFQi6Lq1/Q1u5WOAHwDbTG49Dpw8dA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6qF8/btsFFQi6Lq1/Q1u5WOAHwDbTG49Dpw8dA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6qF8%2FbtsFFQi6Lq1%2FQ1u5WOAHwDbTG49Dpw8dA1%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-11.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-12.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZYlED/btsFDV6MsJ7/MeQ9r7kCGOGOEJJIlkFJxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZYlED/btsFDV6MsJ7/MeQ9r7kCGOGOEJJIlkFJxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZYlED/btsFDV6MsJ7/MeQ9r7kCGOGOEJJIlkFJxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZYlED%2FbtsFDV6MsJ7%2FMeQ9r7kCGOGOEJJIlkFJxK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-12.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-13.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LSB3s/btsFFkdGEjE/lXfmTu6bNIKCuy0nH0Lcy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LSB3s/btsFFkdGEjE/lXfmTu6bNIKCuy0nH0Lcy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LSB3s/btsFFkdGEjE/lXfmTu6bNIKCuy0nH0Lcy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLSB3s%2FbtsFFkdGEjE%2FlXfmTu6bNIKCuy0nH0Lcy1%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-13.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-14.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlL539/btsFEZHaurJ/lfu4xT419rfbwdyTLON1Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlL539/btsFEZHaurJ/lfu4xT419rfbwdyTLON1Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlL539/btsFEZHaurJ/lfu4xT419rfbwdyTLON1Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlL539%2FbtsFEZHaurJ%2Flfu4xT419rfbwdyTLON1Q0%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-14.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-15.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xcvOR/btsFEkrHhlj/HtfsuLL6I6fBsQLf42vwCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xcvOR/btsFEkrHhlj/HtfsuLL6I6fBsQLf42vwCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xcvOR/btsFEkrHhlj/HtfsuLL6I6fBsQLf42vwCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxcvOR%2FbtsFEkrHhlj%2FHtfsuLL6I6fBsQLf42vwCk%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-15.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-16.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8zWno/btsFGEoI4s0/9YPP04KDn7C66LrTXRtILK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8zWno/btsFGEoI4s0/9YPP04KDn7C66LrTXRtILK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8zWno/btsFGEoI4s0/9YPP04KDn7C66LrTXRtILK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8zWno%2FbtsFGEoI4s0%2F9YPP04KDn7C66LrTXRtILK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-16.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-17.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbHBzR/btsFGBS3ebP/FnyFUPXWKUq2Zl4QkgsMTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbHBzR/btsFGBS3ebP/FnyFUPXWKUq2Zl4QkgsMTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbHBzR/btsFGBS3ebP/FnyFUPXWKUq2Zl4QkgsMTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbHBzR%2FbtsFGBS3ebP%2FFnyFUPXWKUq2Zl4QkgsMTk%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-17.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-18.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MCRzP/btsFGNlpoVu/1X6c7ZWFZ1KXDfRCAi23u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MCRzP/btsFGNlpoVu/1X6c7ZWFZ1KXDfRCAi23u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MCRzP/btsFGNlpoVu/1X6c7ZWFZ1KXDfRCAi23u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMCRzP%2FbtsFGNlpoVu%2F1X6c7ZWFZ1KXDfRCAi23u1%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-18.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-19.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0MsK3/btsFE24Wvxh/clQPHsB5zqFC1kMbgGr36k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0MsK3/btsFE24Wvxh/clQPHsB5zqFC1kMbgGr36k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0MsK3/btsFE24Wvxh/clQPHsB5zqFC1kMbgGr36k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0MsK3%2FbtsFE24Wvxh%2FclQPHsB5zqFC1kMbgGr36k%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-19.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-20.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5MA6x/btsFHrPXKT1/TxWknV40TcS7CvPWIhcouK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5MA6x/btsFHrPXKT1/TxWknV40TcS7CvPWIhcouK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5MA6x/btsFHrPXKT1/TxWknV40TcS7CvPWIhcouK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5MA6x%2FbtsFHrPXKT1%2FTxWknV40TcS7CvPWIhcouK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-20.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-21.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GjLgd/btsFHsuyNHr/MdXKJVI0KTKeRecfJynkEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GjLgd/btsFHsuyNHr/MdXKJVI0KTKeRecfJynkEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GjLgd/btsFHsuyNHr/MdXKJVI0KTKeRecfJynkEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGjLgd%2FbtsFHsuyNHr%2FMdXKJVI0KTKeRecfJynkEk%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-21.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-22.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doBMlB/btsFEhBKLEv/SaYw1B3SgkIrDhA6pduxbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doBMlB/btsFEhBKLEv/SaYw1B3SgkIrDhA6pduxbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doBMlB/btsFEhBKLEv/SaYw1B3SgkIrDhA6pduxbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoBMlB%2FbtsFEhBKLEv%2FSaYw1B3SgkIrDhA6pduxbK%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;2667&quot; height=&quot;1500&quot; data-filename=&quot;a73ea4ad5efaf88d32cc7ef029fc1245-22.png&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/555</guid>
      <comments>https://9566.tistory.com/555#entry555comment</comments>
      <pubDate>Sat, 9 Mar 2024 14:41:38 +0900</pubDate>
    </item>
    <item>
      <title>POS 태킹 리스트</title>
      <link>https://9566.tistory.com/554</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Alphabetical&amp;nbsp;list&amp;nbsp;of&amp;nbsp;part-of-speech&amp;nbsp;tags&amp;nbsp;used&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Penn&amp;nbsp;Treebank&amp;nbsp;Project:&lt;br /&gt;Number Tag Description&lt;br /&gt;1. CC Coordinating&amp;nbsp;conjunction&lt;br /&gt;2. CD Cardinal&amp;nbsp;number&lt;br /&gt;3. DT Determiner&lt;br /&gt;4. EX Existential&amp;nbsp;there&lt;br /&gt;5. FW Foreign&amp;nbsp;word&lt;br /&gt;6. IN Preposition&amp;nbsp;or&amp;nbsp;subordinating&amp;nbsp;conjunction&lt;br /&gt;7. JJ Adjective&lt;br /&gt;8. JJR Adjective,&amp;nbsp;comparative&lt;br /&gt;9. JJS Adjective,&amp;nbsp;superlative&lt;br /&gt;10. LS List&amp;nbsp;item&amp;nbsp;marker&lt;br /&gt;11. MD Modal&lt;br /&gt;12. NN Noun,&amp;nbsp;singular&amp;nbsp;or&amp;nbsp;mass&lt;br /&gt;13. NNS Noun,&amp;nbsp;plural&lt;br /&gt;14. NNP Proper&amp;nbsp;noun,&amp;nbsp;singular&lt;br /&gt;15. NNPS Proper&amp;nbsp;noun,&amp;nbsp;plural&lt;br /&gt;16. PDT Predeterminer&lt;br /&gt;17. POS Possessive&amp;nbsp;ending&lt;br /&gt;18. PRP Personal&amp;nbsp;pronoun&lt;br /&gt;19. PRP$ Possessive&amp;nbsp;pronoun&lt;br /&gt;20. RB Adverb&lt;br /&gt;21. RBR Adverb,&amp;nbsp;comparative&lt;br /&gt;22. RBS Adverb,&amp;nbsp;superlative&lt;br /&gt;23. RP Particle&lt;br /&gt;24. SYM Symbol&lt;br /&gt;25. TO to&lt;br /&gt;26. UH Interjection&lt;br /&gt;27. VB Verb,&amp;nbsp;base&amp;nbsp;form&lt;br /&gt;28. VBD Verb,&amp;nbsp;past&amp;nbsp;tense&lt;br /&gt;29. VBG Verb,&amp;nbsp;gerund&amp;nbsp;or&amp;nbsp;present&amp;nbsp;participle&lt;br /&gt;30. VBN Verb,&amp;nbsp;past&amp;nbsp;participle&lt;br /&gt;31. VBP Verb,&amp;nbsp;non-3rd&amp;nbsp;person&amp;nbsp;singular&amp;nbsp;present&lt;br /&gt;32. VBZ Verb,&amp;nbsp;3rd&amp;nbsp;person&amp;nbsp;singular&amp;nbsp;present&lt;br /&gt;33. WDT Wh-determiner&lt;br /&gt;34. WP Wh-pronoun&lt;br /&gt;35. WP$ Possessive&amp;nbsp;wh-pronoun&lt;br /&gt;36. WRB Wh-adverb&lt;/p&gt;</description>
      <category>pos</category>
      <category>POS 태킹</category>
      <category>POS 태킹 리스트</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/554</guid>
      <comments>https://9566.tistory.com/554#entry554comment</comments>
      <pubDate>Sat, 2 Mar 2024 15:01:51 +0900</pubDate>
    </item>
    <item>
      <title>Bidirectional-LSTM-CRF 논문 번역</title>
      <link>https://9566.tistory.com/551</link>
      <description>&lt;div id=&quot;targetEditArea&quot; style=&quot;color: #000000; text-align: start;&quot;&gt;
&lt;div id=&quot;txtTarget&quot; style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Abstract&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;이&amp;nbsp;논문에서는&amp;nbsp;&lt;u&gt;시퀀스&amp;nbsp;태깅&lt;/u&gt;을&amp;nbsp;위한&amp;nbsp;다양한&amp;nbsp;LSTM(Long&amp;nbsp;Short-Term&amp;nbsp;Memory)&amp;nbsp;기반&amp;nbsp;모델을&amp;nbsp;제안합니다.&amp;nbsp;이러한&amp;nbsp;모델에는&amp;nbsp;LSTM&amp;nbsp;네트워크,&amp;nbsp;양방향&amp;nbsp;LSTM(BI-LSTM)&amp;nbsp;네트워크,&amp;nbsp;조건부&amp;nbsp;랜덤&amp;nbsp;필드(CRF)&amp;nbsp;계층(LSTM-CRF)이&amp;nbsp;있는&amp;nbsp;LSTM&amp;nbsp;및&amp;nbsp;CRF&amp;nbsp;계층(BI-LSTM-CRF)이&amp;nbsp;있는&amp;nbsp;양방향&amp;nbsp;LSTM이&amp;nbsp;포함됩니다.&amp;nbsp;저희의&amp;nbsp;연구는&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;CRF(BI-LSTM-CRF로&amp;nbsp;표시됨)&amp;nbsp;모델을&amp;nbsp;NLP&amp;nbsp;벤치마크&amp;nbsp;시퀀스&amp;nbsp;태그&amp;nbsp;생성&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;적용한&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;연구입니다.&amp;nbsp;저희는&amp;nbsp;BI-LSTM-CRF&amp;nbsp;모델이&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;구성&amp;nbsp;요소&amp;nbsp;덕분에&amp;nbsp;과거&amp;nbsp;및&amp;nbsp;미래&amp;nbsp;입력&amp;nbsp;기능을&amp;nbsp;모두&amp;nbsp;효율적으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있음을&amp;nbsp;보여줍니다.&lt;u&gt;&amp;nbsp;CRF&amp;nbsp;계층&amp;nbsp;덕분에&amp;nbsp;문장&amp;nbsp;수준&amp;nbsp;태그&amp;nbsp;정보도&amp;nbsp;사용&lt;/u&gt;할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;BI-LSTM-CRF&amp;nbsp;모델은&amp;nbsp;POS,&amp;nbsp;청킹&amp;nbsp;및&amp;nbsp;NER&amp;nbsp;데이터&amp;nbsp;세트에서&amp;nbsp;최첨단(또는&amp;nbsp;거의&amp;nbsp;근접)의&amp;nbsp;정확도를&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;또한&amp;nbsp;이전&amp;nbsp;연구에&amp;nbsp;비해&amp;nbsp;&lt;u&gt;견고하고&amp;nbsp;단어&amp;nbsp;임베딩에&amp;nbsp;대한&amp;nbsp;의존도가&amp;nbsp;낮습니다.&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1 Introduction&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;음성 태그&amp;nbsp;부분(POS),&amp;nbsp;청크&amp;nbsp;및&amp;nbsp;명명된&amp;nbsp;엔터티&amp;nbsp;인식(NER)을&amp;nbsp;포함한&amp;nbsp;시퀀스&amp;nbsp;태그&amp;nbsp;지정은&amp;nbsp;전형적인&amp;nbsp;NLP&amp;nbsp;작업이었습니다.&amp;nbsp;이는&amp;nbsp;수십&amp;nbsp;년&amp;nbsp;동안&amp;nbsp;연구의&amp;nbsp;주목을&amp;nbsp;받아왔습니다.&amp;nbsp;태거의&amp;nbsp;출력은&amp;nbsp;&lt;u&gt;다운스트림&amp;nbsp;응용&amp;nbsp;프로그램&lt;/u&gt;에&amp;nbsp;사용될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;사용자&amp;nbsp;검색&amp;nbsp;쿼리로&amp;nbsp;훈련된&amp;nbsp;&lt;u&gt;개체명&amp;nbsp;인식기&lt;/u&gt;는&amp;nbsp;어떤&amp;nbsp;텍스트&amp;nbsp;영역이&amp;nbsp;제품인지&amp;nbsp;식별하여&amp;nbsp;특정&amp;nbsp;제품&amp;nbsp;광고를&amp;nbsp;활성화할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;또&amp;nbsp;다른&amp;nbsp;예는&amp;nbsp;이러한&amp;nbsp;태그&amp;nbsp;정보가&amp;nbsp;&lt;u&gt;검색&amp;nbsp;엔진&lt;/u&gt;에&amp;nbsp;의해&amp;nbsp;관련&amp;nbsp;웹&amp;nbsp;페이지를&amp;nbsp;찾는&amp;nbsp;데&amp;nbsp;사용될&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;것입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;대부분의&amp;nbsp;기존&amp;nbsp;시퀀스&amp;nbsp;태깅&amp;nbsp;모델은&amp;nbsp;HMM(Hidden&amp;nbsp;Markov&amp;nbsp;Model),&amp;nbsp;MEMM(Maximum&amp;nbsp;entropy&amp;nbsp;Markov&amp;nbsp;Model)(McCallum&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2000)&amp;nbsp;및&amp;nbsp;CRF(Conditional&amp;nbsp;Random&amp;nbsp;Fields)를&amp;nbsp;포함하는&amp;nbsp;&lt;u&gt;선형&amp;nbsp;통계&amp;nbsp;모델&lt;/u&gt;입니다.(Lafferty&amp;nbsp;등,&amp;nbsp;2001).&amp;nbsp;시퀀스&amp;nbsp;태깅&amp;nbsp;문제를&amp;nbsp;해결하기&amp;nbsp;위해&amp;nbsp;컨볼루셔널&amp;nbsp;네트워크&amp;nbsp;기반&amp;nbsp;모델(Collobert&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2011)이&amp;nbsp;최근&amp;nbsp;제안되었습니다.&amp;nbsp;우리는&amp;nbsp;이러한&amp;nbsp;모델을&amp;nbsp;Conv-CRF라고&amp;nbsp;부르는데,&amp;nbsp;이는&amp;nbsp;Convolutional&amp;nbsp;Network와&amp;nbsp;출력의&amp;nbsp;CRF&amp;nbsp;레이어로&amp;nbsp;구성되어&amp;nbsp;있기&amp;nbsp;때문입니다(원본&amp;nbsp;논문에서는&amp;nbsp;문장&amp;nbsp;수준&amp;nbsp;대수&amp;nbsp;우도(SSL)라는&amp;nbsp;용어가&amp;nbsp;사용되었습니다).&amp;nbsp;Conv-CRF&amp;nbsp;모델은&amp;nbsp;시퀀스&amp;nbsp;태깅&amp;nbsp;작업에서&amp;nbsp;유망한&amp;nbsp;결과를&amp;nbsp;도출했습니다.&amp;nbsp;음성&amp;nbsp;언어&amp;nbsp;이해(Speech&amp;nbsp;Language&amp;nbsp;Understanding)&amp;nbsp;커뮤니티에서는&amp;nbsp;최근&amp;nbsp;Recurrent&amp;nbsp;Neural&amp;nbsp;Network(Mesnil&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2013;&amp;nbsp;Yao&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2014)와&amp;nbsp;Convolutional&amp;nbsp;Nets(Xu&amp;nbsp;and&amp;nbsp;Sarikaya,&amp;nbsp;2013)&amp;nbsp;기반&amp;nbsp;모델이&amp;nbsp;제안되었습니다.&amp;nbsp;이와&amp;nbsp;관련된&amp;nbsp;다른&amp;nbsp;연구로는&amp;nbsp;음성&amp;nbsp;인식을&amp;nbsp;위해&amp;nbsp;양방향&amp;nbsp;순환&amp;nbsp;신경망(Bidirectional&amp;nbsp;Recurrent&amp;nbsp;Neural&amp;nbsp;Network,&amp;nbsp;Bi-RNN)을&amp;nbsp;제안한&amp;nbsp;Graves&amp;nbsp;등의&amp;nbsp;연구&amp;nbsp;등이&amp;nbsp;있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;본&amp;nbsp;논문에서는&amp;nbsp;시퀀스&amp;nbsp;태깅&amp;nbsp;작업을&amp;nbsp;위한&amp;nbsp;다양한&amp;nbsp;신경망&amp;nbsp;기반&amp;nbsp;모델을&amp;nbsp;제안합니다.&amp;nbsp;이러한&amp;nbsp;모델에는&amp;nbsp;LSTM&amp;nbsp;네트워크,&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;네트워크(BI-LSTM),&amp;nbsp;CRF&amp;nbsp;계층이&amp;nbsp;있는&amp;nbsp;LSTM&amp;nbsp;네트워크(LSTM-CRF)&amp;nbsp;및&amp;nbsp;CRF&amp;nbsp;계층이&amp;nbsp;있는&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;네트워크(BI-LSTM-CRF)가&amp;nbsp;포함됩니다.&amp;nbsp;우리의&amp;nbsp;기여는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;요약될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;1)&amp;nbsp;우리는&amp;nbsp;NLP&amp;nbsp;태깅&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;앞서&amp;nbsp;언급한&amp;nbsp;모델의&amp;nbsp;성능을&amp;nbsp;체계적으로&amp;nbsp;비교합니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;2)&amp;nbsp;우리의&amp;nbsp;작업은&amp;nbsp;NLP&amp;nbsp;벤치마크&amp;nbsp;시퀀스&amp;nbsp;태깅&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;CRF(BI-LSTM-CRF로&amp;nbsp;표시됨)&amp;nbsp;모델을&amp;nbsp;적용한&amp;nbsp;최초의&amp;nbsp;작업입니다.&amp;nbsp;이&amp;nbsp;모델은&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;구성&amp;nbsp;요소&amp;nbsp;덕분에&amp;nbsp;과거&amp;nbsp;및&amp;nbsp;미래&amp;nbsp;입력&amp;nbsp;기능을&amp;nbsp;모두&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;또한&amp;nbsp;이&amp;nbsp;모델은&amp;nbsp;CRF&amp;nbsp;레이어&amp;nbsp;덕분에&amp;nbsp;문장&amp;nbsp;수준의&amp;nbsp;태그&amp;nbsp;정보를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;우리&amp;nbsp;모델은&amp;nbsp;POS,&amp;nbsp;청크&amp;nbsp;및&amp;nbsp;NER&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;최첨단(또는&amp;nbsp;그에&amp;nbsp;가까운)&amp;nbsp;정확도를&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;3)&amp;nbsp;우리는&amp;nbsp;BI-LSTM-CRF&amp;nbsp;모델이&amp;nbsp;강력하고&amp;nbsp;이전&amp;nbsp;관찰과&amp;nbsp;비교하여&amp;nbsp;단어&amp;nbsp;임베딩에&amp;nbsp;대한&amp;nbsp;의존도가&amp;nbsp;낮다는&amp;nbsp;것을&amp;nbsp;보여줍니다.(Collobert&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2011).&amp;nbsp;워드&amp;nbsp;임베딩에&amp;nbsp;의존하지&amp;nbsp;않고도&amp;nbsp;정확한&amp;nbsp;태깅&amp;nbsp;성능을&amp;nbsp;발휘할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;논문의&amp;nbsp;나머지&amp;nbsp;부분은&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;구성되어&amp;nbsp;있습니다.&amp;nbsp;섹션&amp;nbsp;2는&amp;nbsp;본&amp;nbsp;논문에서&amp;nbsp;사용된&amp;nbsp;시퀀스&amp;nbsp;태깅&amp;nbsp;모델에&amp;nbsp;대해&amp;nbsp;설명합니다.&amp;nbsp;섹션&amp;nbsp;3은&amp;nbsp; Training&amp;nbsp;절차를&amp;nbsp;보여줍니다.&amp;nbsp;섹션&amp;nbsp;4는&amp;nbsp;실험&amp;nbsp;결과를&amp;nbsp;보고합니다.&amp;nbsp;섹션&amp;nbsp;5는&amp;nbsp;관련&amp;nbsp;연구에&amp;nbsp;대해&amp;nbsp;논의합니다.&amp;nbsp;마지막으로&amp;nbsp;섹션&amp;nbsp;6은&amp;nbsp;결론을&amp;nbsp;도출합니다.신&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2 Models &lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이&amp;nbsp;섹션에서는&amp;nbsp;본&amp;nbsp;논문에서&amp;nbsp;사용된&amp;nbsp;모델인&amp;nbsp;LSTM,&amp;nbsp;BI-LSTM,&amp;nbsp;CRF,&amp;nbsp;LSTM-CRF&amp;nbsp;및&amp;nbsp;BI-LSTM-CRF를&amp;nbsp;설명합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.1 LSTM Networks &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;순환 신경망(RNN)은 언어 모델(Mikolov et al., 2010; Mikolov et al., 2011)과 음성 인식(Graves et al., 2005)을 포함한 다양한 작업에서 유망한 결과를 산출하기 위해 사용되었습니다. &lt;u&gt;RNN은 이력 정보(history information)를 기반으로 메모리를 유지하며, 이를 통해 모델은 장거리 변수(long&amp;nbsp;distance&amp;nbsp;features)에 따라 현재 출력을 예측&lt;/u&gt;할 수 있습니다. &lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;그림 1은 입력 계층 x, 은닉 계층 h 및 출력 계층 y를 갖는 RNN 구조(Elman, 1990)를 보여줍니다. &lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&lt;u&gt;개체명 태그 지정 컨텍스트에서&lt;/u&gt; x는 입력 특징을 나타내고 &lt;u&gt;y는 태그&lt;/u&gt;를 나타냅니다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;그림 1은 각 단어가&amp;nbsp;&lt;u&gt;다른 것(O, Other)&lt;/u&gt;&amp;nbsp;또는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;네 가지 개체 유형 =&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;&lt;u&gt;개인(PER, Person), 위치(LOC, Location), 조직(ORG, Organization) 및 기타(MISC, Miscellaneous)&lt;/u&gt;&amp;nbsp;중 하나로 태그되는 명명된 개체 인식 시스템을 보여줍니다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&quot;EU rejects German call to boycott British lamb.&quot;의 문장은&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; text-align: start;&quot;&gt;B-ORG O B-MISC O B-MISC O로 태그되며, 여기서&amp;nbsp;&lt;u&gt;B(Begin)-, I(Inside)-태그는 개체의 시작 및 중간 위치를 나타냅니다.&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1422&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9NEoK/btsFm1RBQ6i/Cyp7n5u3J1C88pJRQQtpz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9NEoK/btsFm1RBQ6i/Cyp7n5u3J1C88pJRQQtpz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9NEoK/btsFm1RBQ6i/Cyp7n5u3J1C88pJRQQtpz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9NEoK%2FbtsFm1RBQ6i%2FCyp7n5u3J1C88pJRQQtpz1%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;474&quot; height=&quot;257&quot; data-origin-width=&quot;1422&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입력층은&amp;nbsp;시간&amp;nbsp;t에서의&amp;nbsp;특성을&amp;nbsp;나타냅니다.&amp;nbsp;이&amp;nbsp;특성은&amp;nbsp;&lt;u&gt;단어&amp;nbsp;특성에&amp;nbsp;대한&amp;nbsp;원-핫&amp;nbsp;인코딩,&amp;nbsp;밀집&amp;nbsp;벡터&amp;nbsp;특성,&amp;nbsp;또는&amp;nbsp;희소&amp;nbsp;특성&lt;/u&gt;이&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;입력&amp;nbsp;레이어는&amp;nbsp;feature&amp;nbsp;크기와&amp;nbsp;동일합니다.&amp;nbsp;출력층은&amp;nbsp;시간&amp;nbsp;t에서의&amp;nbsp;레이블에&amp;nbsp;대한&amp;nbsp;확률&amp;nbsp;분포를&amp;nbsp;나타냅니다.&amp;nbsp;레이블의&amp;nbsp;크기와&amp;nbsp;동일한&amp;nbsp;차원의&amp;nbsp;크기를&amp;nbsp;갖습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;feed-forward&amp;nbsp;네트워크와&amp;nbsp;비교하여&amp;nbsp;RNN은&amp;nbsp;이전의&amp;nbsp;숨겨진&amp;nbsp;상태와&amp;nbsp;현재의&amp;nbsp;숨겨진&amp;nbsp;상태(따라서&amp;nbsp;순환&amp;nbsp;계층&amp;nbsp;가중치&amp;nbsp;매개변수)&amp;nbsp;사이의&amp;nbsp;연결을&amp;nbsp;도입합니다.&amp;nbsp;이&amp;nbsp;순환층(Recurrent&amp;nbsp;Layer)은&amp;nbsp;과거&amp;nbsp;정보를&amp;nbsp;저장하기&amp;nbsp;위해&amp;nbsp;설계되었습니다.&amp;nbsp;은닉층(hidden&amp;nbsp;layer)과&amp;nbsp;출력층(output&amp;nbsp;layer)의&amp;nbsp;값은&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;계산됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KLWL3/btsFhSV71dR/QlTGKUNhz5e9hk8dmWtssk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KLWL3/btsFhSV71dR/QlTGKUNhz5e9hk8dmWtssk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KLWL3/btsFhSV71dR/QlTGKUNhz5e9hk8dmWtssk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKLWL3%2FbtsFhSV71dR%2FQlTGKUNhz5e9hk8dmWtssk%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;534&quot; height=&quot;99&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;
&lt;div id=&quot;txtTarget&quot; style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 U, W, V는 훈련 시간에 계산해야 할 연결 가중치이며, f(z)와 g(z)는 다음과 같은 시그모이드 및 소프트맥스 활성화 함수입니다.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMLZEC/btsFlQC3ggA/gKxlgKdSXdqvPhakSlAjek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMLZEC/btsFlQC3ggA/gKxlgKdSXdqvPhakSlAjek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMLZEC/btsFlQC3ggA/gKxlgKdSXdqvPhakSlAjek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMLZEC%2FbtsFlQC3ggA%2FgKxlgKdSXdqvPhakSlAjek%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;558&quot; height=&quot;169&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVD1be/btsFlPRFdhc/KXxSgAZWRS7FiQDKVDqoyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVD1be/btsFlPRFdhc/KXxSgAZWRS7FiQDKVDqoyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVD1be/btsFlPRFdhc/KXxSgAZWRS7FiQDKVDqoyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVD1be%2FbtsFlPRFdhc%2FKXxSgAZWRS7FiQDKVDqoyK%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;430&quot; height=&quot;297&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입력층은&amp;nbsp;시간&amp;nbsp;t에서의&amp;nbsp;특성을&amp;nbsp;나타냅니다.&amp;nbsp;이&amp;nbsp;특성은&amp;nbsp;단어&amp;nbsp;특성에&amp;nbsp;대한&amp;nbsp;원-핫&amp;nbsp;인코딩,&amp;nbsp;밀집&amp;nbsp;벡터&amp;nbsp;특성,&amp;nbsp;또는&amp;nbsp;희소&amp;nbsp;특성이&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;입력&amp;nbsp;레이어는&amp;nbsp;feature&amp;nbsp;크기와&amp;nbsp;동일합니다.&amp;nbsp;출력층은&amp;nbsp;시간&amp;nbsp;t에서의&amp;nbsp;레이블에&amp;nbsp;대한&amp;nbsp;확률&amp;nbsp;분포를&amp;nbsp;나타냅니다.&amp;nbsp;레이블의&amp;nbsp;크기와&amp;nbsp;동일한&amp;nbsp;차원의&amp;nbsp;크기를&amp;nbsp;갖습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;feed-forward&amp;nbsp;네트워크와&amp;nbsp;비교하여&amp;nbsp;RNN은&amp;nbsp;이전의&amp;nbsp;숨겨진&amp;nbsp;상태와&amp;nbsp;현재의&amp;nbsp;숨겨진&amp;nbsp;상태(따라서&amp;nbsp;순환&amp;nbsp;계층&amp;nbsp;가중치&amp;nbsp;매개변수)&amp;nbsp;사이의&amp;nbsp;연결을&amp;nbsp;도입합니다.&amp;nbsp;이&amp;nbsp;순환층(Recurrent&amp;nbsp;Layer)은&amp;nbsp;과거&amp;nbsp;정보를&amp;nbsp;저장하기&amp;nbsp;위해&amp;nbsp;설계되었습니다.&amp;nbsp;은닉층(hidden&amp;nbsp;layer)과&amp;nbsp;출력층(output&amp;nbsp;layer)의&amp;nbsp;값은&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;계산됩니다.이 논문에서는&amp;nbsp;Long Short-Term Memory(Hochreiter and Schmidhuber, 1997; Graves et al., 2005)을 시퀀스 태깅에 적용합니다. Long Short-Term Memory 네트워크는 RNN과 동일하지만, 은닉층의 업데이트가 목적에 맞게 설계된 메모리 셀로 대체된다는 점이 다릅니다. 이로 인해 데이터의 장거리 의존성을 찾고 활용하는 데 더 우수할 수 있습니다. 아래의 Fig. 2는 단일 LSTM 메모리 셀을 보여줍니다(Graves et al., 2005).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RGtmX/btsFm3aR7Nt/1eEP42jGg5gvuHz1UKRngK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RGtmX/btsFm3aR7Nt/1eEP42jGg5gvuHz1UKRngK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RGtmX/btsFm3aR7Nt/1eEP42jGg5gvuHz1UKRngK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRGtmX%2FbtsFm3aR7Nt%2F1eEP42jGg5gvuHz1UKRngK%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;450&quot; height=&quot;343&quot; data-origin-width=&quot;892&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LSTM 메모리 셀은 다음과 같이 구현됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DccBz/btsFmeKuQOI/kkdkKrCfdQ9rlwqHTeCs20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DccBz/btsFmeKuQOI/kkdkKrCfdQ9rlwqHTeCs20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DccBz/btsFmeKuQOI/kkdkKrCfdQ9rlwqHTeCs20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDccBz%2FbtsFmeKuQOI%2FkkdkKrCfdQ9rlwqHTeCs20%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;491&quot; height=&quot;181&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기서 &amp;sigma;는 로지스틱 시그모이드 함수이고, i, f, o, c는 각각 입력 게이트(input gate), 삭제 게이트(forget gate), 출력 게이트(output gate), 셀 벡터(cell vector)를 의미합니다. 이들은 모두 은닉 벡터 h와 동일한 크기를 가집니다. 가중치 행렬의 아래 첨자들은 그 이름이 나타내는 바와 같은 의미를 가집니다. 예를 들어,&amp;nbsp;Whi는 은닉-입력 게이트 행렬을, Wxo는 입력-출력 게이트 행렬을 나타냅니다. 셀에서 게이트 벡터로의 가중치 행렬들 (예: Wci)은 대각선(diagonal) 행렬이므로 각 게이트 벡터의 요소 m은 셀 벡터의 요소 m에서만 입력을 받습니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Fig. 3은 앞서 언급된 LSTM 메모리 셀들을 사용하는 LSTM 시퀀스 태깅 모델을 보여줍니다. 이는 점선 상자로 표시된 라운드 코너(dashed boxes with rounded corners)를 가진 LSTM 메모리 셀들을 포함하고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pSBDP/btsFjJRXLtb/cxfRS5FummrkkNKQaLY6VK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pSBDP/btsFjJRXLtb/cxfRS5FummrkkNKQaLY6VK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pSBDP/btsFjJRXLtb/cxfRS5FummrkkNKQaLY6VK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpSBDP%2FbtsFjJRXLtb%2FcxfRS5FummrkkNKQaLY6VK%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;426&quot; height=&quot;273&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;546&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;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.2 Bidirectional LSTM Networks &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시퀀스 태깅 작업에서는 주어진 시간 동안 과거와 미래의 입력 특성에 모두 액세스할 수 있으므로 (Graves et al., 2013)에서 제안한 대로 양방향 LSTM 네트워크(그림 4)를 활용할 수 있습니다. 이를 통해 특정 시간 프레임에 대해 과거 기능(순방향 상태를 통해)과 미래 기능(역방향 상태를 통해)을 효율적으로 사용할 수 있습니다. 우리는 &lt;u&gt;시간에 따른 역전파(BPTT)&lt;/u&gt;를 사용하여 양방향 LSTM 네트워크를 학습시킵니다(Boden., 2002). 시간이 지남에 따라 펼쳐진 네트워크에 대한 정방향 및 역방향 전달은 &lt;u&gt;모든 시간 단계에 대해 숨겨진 상태를 펼쳐야 한다&lt;/u&gt;는 점을 제외하면 일반 네트워크(NN) 정방향 및 역방향 전달과 유사한 방식으로 수행됩니다. 또한 데이터 포인트의 시작과 끝 부분에 특별한 처리가 필요합니다. 우리의 구현에서는 전체 문장에 대해 앞으로 및 뒤로 작업을 수행하며 각 문장마다 호출될 때 hidden state를 0으로 재설정하기만 하면 됩니다. 여러 문장을 동시에 처리할 수 있는 배치 구현이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.3 CRF networks &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재&amp;nbsp;태그를&amp;nbsp;예측할&amp;nbsp;때&amp;nbsp;이웃&amp;nbsp;태그&amp;nbsp;정보를&amp;nbsp;활용하는&amp;nbsp;방법에는&amp;nbsp;두&amp;nbsp;가지가&amp;nbsp;있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjQBJB/btsFhhhBrjv/pNBZXuAVVzMUWQksnME26K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjQBJB/btsFhhhBrjv/pNBZXuAVVzMUWQksnME26K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjQBJB/btsFhhhBrjv/pNBZXuAVVzMUWQksnME26K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjQBJB%2FbtsFhhhBrjv%2FpNBZXuAVVzMUWQksnME26K%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;445&quot; height=&quot;276&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫&amp;nbsp;번째는&amp;nbsp;각&amp;nbsp;시간&amp;nbsp;단계에&amp;nbsp;대한&amp;nbsp;태그&amp;nbsp;분포를&amp;nbsp;예측한&amp;nbsp;다음&amp;nbsp;&lt;u&gt;빔형&amp;nbsp;디코딩&lt;/u&gt;을&amp;nbsp;사용하여&amp;nbsp;최적의&amp;nbsp;태그&amp;nbsp;시퀀스를&amp;nbsp;찾는&amp;nbsp;것입니다.&amp;nbsp;&lt;u&gt;최대&amp;nbsp;엔트로피&amp;nbsp;분류기(Ratnaparkhi,&amp;nbsp;1996)와&amp;nbsp;최대&amp;nbsp;엔트로피&amp;nbsp;마르코프&amp;nbsp;모델(MEMM)(McCallum&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2000)의&amp;nbsp;작업&lt;/u&gt;이&amp;nbsp;이&amp;nbsp;범주에&amp;nbsp;속합니다.&amp;nbsp;두&amp;nbsp;번째는&amp;nbsp;개별&amp;nbsp;위치&amp;nbsp;대신&amp;nbsp;&lt;u&gt;문장&amp;nbsp;수준에&amp;nbsp;초점&lt;/u&gt;을 맞춰 조건부 무작위 필드(CRF) 모델로 이어지는 것입니다(Lafferty et al., 2001)(그림 5). 메모리 셀/반복 구성 요소가 사용되는 LSTM 및 양방향 LSTM 네트워크와 달리 입력 및 출력은 직접 연결됩니다. CRF(Conditional Random Fields)는 일반적으로 더 높은 태깅 정확도를 얻을 수 있다는 것이 보여졌습니다. 흥미로운 점은 이러한 &lt;u&gt;태그 정보 사용 방식 간의 관계가 입력 특성을 사용하는 두 가지 방법(앞서 언급한 LSTM 및 BI-LSTM 네트워크 참조)과 유사&lt;/u&gt;하다는 것이며, 이 논문에서의 결과는 LSTM에 비해 BI-LSTM의 우월성을 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yIDwo/btsFmjLLNCk/KhnXEVOcJERNFyxvkAw6n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yIDwo/btsFmjLLNCk/KhnXEVOcJERNFyxvkAw6n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yIDwo/btsFmjLLNCk/KhnXEVOcJERNFyxvkAw6n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyIDwo%2FbtsFmjLLNCk%2FKhnXEVOcJERNFyxvkAw6n0%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;382&quot; height=&quot;228&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.4 &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;LSTM-CRF networks&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;LSTM 네트워크와 CRF 네트워크를 결합하여 그림 6과 같은 LSTM-CRF 모델을 구성합니다. 이 네트워크는 LSTM 레이어를 통해 과거 입력 특징과 CRF 레이어를 통해 문장 수준 태그 정보를 효율적으로 사용할 수 있습니다. CRF 레이어는 연속된 출력층을 연결하는 선으로 표현됩니다. CRF 레이어에는&amp;nbsp;&lt;/span&gt;&lt;u&gt;상태 전이 행렬(state transition matrix)&lt;/u&gt;&lt;span style=&quot;text-align: start;&quot;&gt;을 매개변수로 가집니다. 이러한 층을 사용하면 과거 및 미래 태그를 효율적으로 사용하여 현재 태그를 예측할 수 있습니다. &lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;이는 양방향 LSTM 네트워크를 통해 과거 및 미래 입력 기능을 사용하는 것과 유사합니다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;네트워크에서 출력되는 점수 행렬 f&amp;theta;([x]T1 )를 고려합니다. 표기를 간단히하기 위해 입력 [x]T1은 제외합니다. &lt;/span&gt;행렬의 원소&amp;nbsp;[f&amp;theta;]i,t는&amp;nbsp;매개변수&amp;nbsp;&amp;theta;로&amp;nbsp;네트워크에&amp;nbsp;의해&amp;nbsp;출력된&amp;nbsp;점수로,&amp;nbsp;[x]T1&amp;nbsp;문장과&amp;nbsp;i번째&amp;nbsp;태그에&amp;nbsp;대해&amp;nbsp;t번째&amp;nbsp;단어에서&amp;nbsp;출력됩니다.&amp;nbsp;우리는&amp;nbsp;연속된&amp;nbsp;시간&amp;nbsp;단계의&amp;nbsp;쌍을&amp;nbsp;위해&amp;nbsp;i번째&amp;nbsp;상태에서&amp;nbsp;j번째&amp;nbsp;상태로의&amp;nbsp;전이를&amp;nbsp;모델링하기&amp;nbsp;위해&amp;nbsp;전이&amp;nbsp;점수&amp;nbsp;[A]i,j를&amp;nbsp;소개합니다.&amp;nbsp;이&amp;nbsp;전이&amp;nbsp;행렬은&amp;nbsp;위치에&amp;nbsp;독립적입니다.&amp;nbsp;이제&amp;nbsp;네트워크의&amp;nbsp;새로운&amp;nbsp;매개변수를&amp;nbsp;&amp;theta;&amp;nbsp;̃&amp;nbsp;=&amp;nbsp;&amp;theta;&amp;nbsp;&amp;cup;&amp;nbsp;{[A]i,j&amp;nbsp;&amp;forall;i,&amp;nbsp;j&amp;nbsp;}로&amp;nbsp;표기합니다.&amp;nbsp;&lt;u&gt;문장&amp;nbsp;[x]T1과&amp;nbsp;태그&amp;nbsp;경로&amp;nbsp;[i]T1의&amp;nbsp;점수는&amp;nbsp;이제&amp;nbsp;전이&amp;nbsp;점수와&amp;nbsp;네트워크&amp;nbsp;점수의&amp;nbsp;합으로&amp;nbsp;주어집니다:&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uUMph/btsFhS2YLev/AKi2MKHLCjHVrlKJXWrfAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uUMph/btsFhS2YLev/AKi2MKHLCjHVrlKJXWrfAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uUMph/btsFhS2YLev/AKi2MKHLCjHVrlKJXWrfAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuUMph%2FbtsFhS2YLev%2FAKi2MKHLCjHVrlKJXWrfAK%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;701&quot; height=&quot;144&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동적 프로그래밍(Rabiner, 1989)은 추론을 위한 전이행렬 [A]i,j 및 최적의 태그 시퀀스를 계산하는 데 효율적으로 사용될 수 있습니다. 자세한 내용은 (Lafferty et al., 2001)을 참조하세요.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bux5OP/btsFhoODesh/PTTfeXf3Z3kBdao9hbzQlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bux5OP/btsFhoODesh/PTTfeXf3Z3kBdao9hbzQlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bux5OP/btsFhoODesh/PTTfeXf3Z3kBdao9hbzQlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbux5OP%2FbtsFhoODesh%2FPTTfeXf3Z3kBdao9hbzQlk%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;509&quot; height=&quot;314&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.5 BI-LSTM-CRF networks &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LSTM-CRF&amp;nbsp;네트워크와&amp;nbsp;유사하게&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;네트워크와&amp;nbsp;CRF&amp;nbsp;네트워크를&amp;nbsp;결합하여&amp;nbsp;BI-LSTM-CRF&amp;nbsp;네트워크를&amp;nbsp;형성합니다(그림&amp;nbsp;7).&amp;nbsp;BI-LSTM-CRF&amp;nbsp;모델은&amp;nbsp;LSTM-CRF&amp;nbsp;모델에서&amp;nbsp;사용된&amp;nbsp;과거&amp;nbsp;입력&amp;nbsp;특징과&amp;nbsp;문장&amp;nbsp;수준&amp;nbsp;태그&amp;nbsp;정보&amp;nbsp;외에&amp;nbsp;미래&amp;nbsp;입력&amp;nbsp;특징을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;실험에서&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있듯이&amp;nbsp;추가&amp;nbsp;기능은&amp;nbsp;태깅&amp;nbsp;정확도를&amp;nbsp;높일&amp;nbsp;수&amp;nbsp;있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3 Training procedure &lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이&amp;nbsp;문서에&amp;nbsp;사용된&amp;nbsp;모든&amp;nbsp;모델은&amp;nbsp;&lt;u&gt;일반적인&amp;nbsp;SGD&amp;nbsp;순방향&amp;nbsp;및&amp;nbsp;역방향&amp;nbsp;훈련&amp;nbsp;절차를&amp;nbsp;공유&lt;/u&gt;합니다. 하기 알고리즘&amp;nbsp;1에&amp;nbsp;표시된&amp;nbsp;학습&amp;nbsp;알고리즘을&amp;nbsp;설명하기&amp;nbsp;위해&amp;nbsp;가장&amp;nbsp;복잡한&amp;nbsp;모델인&amp;nbsp;BI-LSTM-CRF를&amp;nbsp;선택했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2PF7l/btsFmjSx6or/SiFOocWaZn292LFMIyl5Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2PF7l/btsFmjSx6or/SiFOocWaZn292LFMIyl5Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2PF7l/btsFmjSx6or/SiFOocWaZn292LFMIyl5Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2PF7l%2FbtsFmjSx6or%2FSiFOocWaZn292LFMIyl5Ak%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;453&quot; height=&quot;271&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 epoch(인공&amp;nbsp;신경망에서&amp;nbsp;전체&amp;nbsp;데이터&amp;nbsp;셋에&amp;nbsp;대해&amp;nbsp;forward&amp;nbsp;pass/backward&amp;nbsp;pass&amp;nbsp;과정을&amp;nbsp;거친&amp;nbsp;것을&amp;nbsp;말함.&amp;nbsp;즉,&amp;nbsp;전체&amp;nbsp;데이터&amp;nbsp;셋에&amp;nbsp;대해&amp;nbsp;한&amp;nbsp;번&amp;nbsp;학습을&amp;nbsp;완료한&amp;nbsp;상태)마다 전체 훈련 데이터를 배치로 나누고 한 번에 하나의 배치를 처리합니다. 각 배치에는 배치 크기 매개변수에 의해 결정되는 문장 목록이 포함됩니다. 실험에서는 총 길이가 100보다 크지 않은 문장을 포함한다는 의미인 100의 배치 크기를 사용합니다. 각 배치에 대해 먼저 순방향 상태와 역방향 상태 모두에 대한 순방향 전달을 포함하는 양방향 LSTM-CRF 모델 순방향 전달을 실행합니다. LSTM의 결과적으로 우리는 모든 위치의 모든 태그에 대한 출력 점수 f&amp;theta;([x]T1 )를 얻습니다. 그런 다음 CRF 레이어 정방향 및 역방향 전달을 실행하여 네트워크 출력 및 &lt;u&gt;상태 전환 엣지(선)&lt;/u&gt;에 대한 기울기를 계산합니다. 그 후, 우리는 LSTM의 순방향 및 역방향 상태 모두에 대한 역방향 전달을 포함하여 출력에서 입력으로 오류를 역전파할 수 있습니다. 마지막으로 상태 전이 행렬 [A]i,j&amp;forall;i,j와 원래 양방향 LSTM 매개변수 &amp;theta;를 포함하는 네트워크 매개변수를 업데이트합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTBm7A/btsFiNUGtom/XsdCaHzV04aaBYz50Pkhf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTBm7A/btsFiNUGtom/XsdCaHzV04aaBYz50Pkhf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTBm7A/btsFiNUGtom/XsdCaHzV04aaBYz50Pkhf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTBm7A%2FbtsFiNUGtom%2FXsdCaHzV04aaBYz50Pkhf1%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;420&quot; height=&quot;271&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4 Experiments &lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.1 Data &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;저희는 PTB(Penn TreeBank) 데이터셋(&lt;a style=&quot;color: #000000;&quot; href=&quot;https://paperswithcode.com/dataset/penn-treebank&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://paperswithcode.com/dataset/penn-treebank&lt;/a&gt;)으로 POS 태깅, CoNLL 2000 청킹, CoNLL 2003 개체명 태깅의 세 가지 NLP 태깅 작업에 대해 LSTM, BI-LSTM, CRF, LSTM-CRF 모델을 테스트합니다. 표 1은 각각 훈련, 검증 및 테스트 세트에 대한 문장, 토큰 및 레이블의 크기를 보여줍니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;POS는 각 단어에 구문론적 역할을 나타내는 고유한 태그를 할당합니다. 청킹에서, 각 단어는 구문 유형으로 태그가 지정됩니다. 예를 들어, 태그 B-NP는 명사구를 시작하는 단어를 나타냅니다. NER 작업에서, 각 단어는 다른 또는 4가지 개체 유형(개인, 위치, 조직 또는 기타) 중 하나로 태그가 지정됩니다. 청킹 및 NER 작업에는 &lt;u&gt;BIO2 주석 표준&lt;/u&gt;을 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.2 Features &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;세&amp;nbsp;가지&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;동일한&amp;nbsp;유형의&amp;nbsp;특징을&amp;nbsp;추출합니다.&amp;nbsp;기능은&amp;nbsp;철자&amp;nbsp;기능과&amp;nbsp;컨텍스트&amp;nbsp;기능으로&amp;nbsp;그룹화될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;결과적으로&amp;nbsp;POS,&amp;nbsp;청킹&amp;nbsp;및&amp;nbsp;NER&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;각각&amp;nbsp;401K,&amp;nbsp;76K&amp;nbsp;및&amp;nbsp;341K&amp;nbsp;기능이&amp;nbsp;추출되었습니다.&amp;nbsp;이러한&amp;nbsp;특징은&amp;nbsp;Stanford&amp;nbsp;NER&amp;nbsp;도구(Finkel&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2005;&amp;nbsp;Wang&amp;nbsp;and&amp;nbsp;Manning,&amp;nbsp;2013)에서&amp;nbsp;추출된&amp;nbsp;특징과&amp;nbsp;유사합니다.&amp;nbsp;Senna&amp;nbsp;임베딩&amp;nbsp;사용을&amp;nbsp;제외하고는&amp;nbsp;POS&amp;nbsp;및&amp;nbsp;청킹&amp;nbsp;작업에&amp;nbsp;추가&amp;nbsp;데이터를&amp;nbsp;사용하지&amp;nbsp;않았습니다(섹션&amp;nbsp;4.2.3&amp;nbsp;참조).&amp;nbsp;NER&amp;nbsp;작업의&amp;nbsp;경우&amp;nbsp;철자&amp;nbsp;및&amp;nbsp;컨텍스트&amp;nbsp;기능을&amp;nbsp;사용하여&amp;nbsp;성능을&amp;nbsp;보고하고&amp;nbsp;Senna&amp;nbsp;임베딩&amp;nbsp;및&amp;nbsp;Gazetteer&amp;nbsp;기능을&amp;nbsp;점진적으로&amp;nbsp;사용하여&amp;nbsp;성능을&amp;nbsp;보고합니다1.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리는&amp;nbsp;세&amp;nbsp;개의&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;동일한&amp;nbsp;유형의&amp;nbsp;특성을&amp;nbsp;추출합니다.&amp;nbsp;이러한&amp;nbsp;특성들은&amp;nbsp;철자&amp;nbsp;특성과&amp;nbsp;문맥&amp;nbsp;특성으로&amp;nbsp;그룹화할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;결과적으로,&amp;nbsp;우리는&amp;nbsp;각각&amp;nbsp;POS,&amp;nbsp;청킹&amp;nbsp;및&amp;nbsp;개체명&amp;nbsp;인식(NER)&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;각각&amp;nbsp;401K,&amp;nbsp;76K&amp;nbsp;및&amp;nbsp;341K&amp;nbsp;개의&amp;nbsp;특성을&amp;nbsp;추출합니다.&amp;nbsp;이러한&amp;nbsp;특성들은&amp;nbsp;Stanford&amp;nbsp;NER&amp;nbsp;도구에서&amp;nbsp;추출된&amp;nbsp;특성과&amp;nbsp;유사합니다&amp;nbsp;(Finkel&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2005;&amp;nbsp;Wang&amp;nbsp;and&amp;nbsp;Manning,&amp;nbsp;2013).&amp;nbsp;POS&amp;nbsp;및&amp;nbsp;청킹&amp;nbsp;작업에&amp;nbsp;대해서는&amp;nbsp;&lt;u&gt;Senna(NLP Software) 임베딩&lt;/u&gt;을&amp;nbsp;사용하는&amp;nbsp;것을&amp;nbsp;제외하고&amp;nbsp;추가&amp;nbsp;데이터를&amp;nbsp;사용하지&amp;nbsp;않았습니다&amp;nbsp;(4.2.3&amp;nbsp;절&amp;nbsp;참조).&amp;nbsp;NER&amp;nbsp;작업의&amp;nbsp;경우,&amp;nbsp;우리는&amp;nbsp;철자와&amp;nbsp;문맥&amp;nbsp;특성을&amp;nbsp;사용하여&amp;nbsp;성능을&amp;nbsp;보고하며,&amp;nbsp;Senna&amp;nbsp;임베딩&amp;nbsp;및&amp;nbsp;&lt;u&gt;Gazetteer(사전) 특성&lt;/u&gt;을&amp;nbsp;추가하여&amp;nbsp;성능을&amp;nbsp;점진적으로&amp;nbsp;개선합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.2.1 Spelling features &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주어진&amp;nbsp;단어에&amp;nbsp;대해&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;특성을&amp;nbsp;추출합니다.&amp;nbsp;이는&amp;nbsp;소문자&amp;nbsp;단어&amp;nbsp;특성에&amp;nbsp;추가되는&amp;nbsp;것입니다.&lt;br /&gt;&amp;bull;&amp;nbsp;대문자로&amp;nbsp;시작하는지&amp;nbsp;여부&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;bull;&amp;nbsp;모두&amp;nbsp;대문자인지&amp;nbsp;여부&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;bull;&amp;nbsp;모두&amp;nbsp;소문자인지&amp;nbsp;여부&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;bull; 첫글자를 제외한 대문자가 포함되었는지 여부&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;bull; 문자와&amp;nbsp;숫자가&amp;nbsp;혼합되었는지&amp;nbsp;여부&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;구두점이&amp;nbsp;포함되었는지&amp;nbsp;여부&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;글자&amp;nbsp;접두사&amp;nbsp;및&amp;nbsp;접미사&amp;nbsp;(윈도우&amp;nbsp;크기가&amp;nbsp;2에서&amp;nbsp;5인&amp;nbsp;범위)&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;아포스트로피로&amp;nbsp;끝나는지&amp;nbsp;여부&amp;nbsp;('s)&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;글자만&amp;nbsp;포함하는지&amp;nbsp;여부,&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;I.&amp;nbsp;B.&amp;nbsp;M.을&amp;nbsp;IBM으로&amp;nbsp;변환&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;글자&amp;nbsp;이외의&amp;nbsp;것만&amp;nbsp;포함하는지&amp;nbsp;여부,&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;A.T.&amp;amp;T.을&amp;nbsp;..&amp;amp;로&amp;nbsp;변환&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;단어&amp;nbsp;패턴&amp;nbsp;특성,&amp;nbsp;대문자,&amp;nbsp;소문자&amp;nbsp;및&amp;nbsp;숫자를&amp;nbsp;각각&amp;nbsp;'A',&amp;nbsp;'a',&amp;nbsp;'0'으로&amp;nbsp;매핑하여&amp;nbsp;구성된&amp;nbsp;특성.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;D56y-3을&amp;nbsp;A00a-0으로&amp;nbsp;변환&lt;br /&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;bull;&amp;nbsp;&lt;/span&gt;단어 패턴 요약 특성, 단어 패턴 특성과 유사하지만 연속적으로 동일한 문자가 제거된 것. 예를 들어 D56y-3을 A0a-0으로 변환문자, 숫자 혼용 여부&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.2.2 Context features &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;세&amp;nbsp;가지&amp;nbsp;데이터&amp;nbsp;세트의&amp;nbsp;단어&amp;nbsp;기능에는&amp;nbsp;유니그램&amp;nbsp;기능과&amp;nbsp;바이그램&amp;nbsp;기능을&amp;nbsp;사용합니다.&amp;nbsp;CoNLL2000&amp;nbsp;데이터&amp;nbsp;세트의&amp;nbsp;POS&amp;nbsp;기능과&amp;nbsp;CoNLL2003&amp;nbsp;데이터&amp;nbsp;세트의&amp;nbsp;POS&amp;nbsp;&amp;amp;&amp;nbsp;CHUNK&amp;nbsp;기능의&amp;nbsp;경우&amp;nbsp;&lt;u&gt;유니그램,&amp;nbsp;바이그램&amp;nbsp;및&amp;nbsp;트라이그램&lt;/u&gt;&amp;nbsp;기능을&amp;nbsp;사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n-gram is basically set of occurring words within given window so when&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0c0d0e; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n=1 it is Unigram&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;n=2 it is bigram&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.2.3 Word embedding &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Collobert 등(2011)의 연구에서는 단어 임베딩이 시퀀스 태깅 성능을 향상시키는 데 중요한 역할을 한다는 것이 밝혀졌습니다. 이&amp;nbsp;연구에서는&amp;nbsp;130,000&amp;nbsp;개의&amp;nbsp;어휘&amp;nbsp;크기를&amp;nbsp;가진&amp;nbsp;임베딩이&amp;nbsp;다운로드되었고,&amp;nbsp;각&amp;nbsp;단어는&amp;nbsp;50차원의&amp;nbsp;임베딩&amp;nbsp;벡터로&amp;nbsp;표현되었습니다. 이 임베딩을 사용하려면 하나의 핫 인코딩 단어 표현을 해당 50차원 벡터로 바꾸면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.2.4 Features connection tricks &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리는 철자와 문맥 특성을 단어 특성과 동일하게 처리할 수 있습니다. 즉, 네트워크의 입력에는 단어, 철자 및 문맥 특성이 모두 포함됩니다. 그러나 철자와 문맥 특성에서 직접적인 연결을 출력에 만들면 훈련을 가속화하고 매우 유사한 태깅 정확도를 얻을 수 있다는 것을 발견했습니다. 그림 8은 이러한 네트워크를 보여주며, 특성들이 네트워크의 출력에 직접적으로 연결되어 있습니다. 우리는 이 연결을 사용하여 모든 태깅 정확도를 보고할 것입니다. 이러한 특성의 사용은 (Mikolov 등, 2011)에서 사용된 최대 엔트로피 특성과 유사한 특징을 가지고 있습니다. 차이점은 (Mikolov 등, 2011)에서 &lt;u&gt;특성 해싱 기술&lt;/u&gt;이 채택되어 특성 충돌이 발생할 수 있다는 것입니다. 시퀀스&amp;nbsp;태깅&amp;nbsp;데이터&amp;nbsp;세트의&amp;nbsp;출력&amp;nbsp;라벨은&amp;nbsp;언어&amp;nbsp;모델보다&amp;nbsp;적으므로(보통&amp;nbsp;수십만&amp;nbsp;개),&amp;nbsp;특성과&amp;nbsp;출력&amp;nbsp;간의&amp;nbsp;완전한&amp;nbsp;연결을&amp;nbsp;가질&amp;nbsp;수&amp;nbsp;있어&amp;nbsp;&lt;u&gt;특성&amp;nbsp;충돌&lt;/u&gt;을&amp;nbsp;피할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYyDB3/btsFlWJ47ZH/jBRqwEkKOq0R7dwNIwvNG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYyDB3/btsFlWJ47ZH/jBRqwEkKOq0R7dwNIwvNG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYyDB3/btsFlWJ47ZH/jBRqwEkKOq0R7dwNIwvNG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYyDB3%2FbtsFlWJ47ZH%2FjBRqwEkKOq0R7dwNIwvNG1%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;420&quot; height=&quot;279&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1626&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dezOTA/btsFhqyQth6/HYW9H0xQuReUtKvUo4SCEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dezOTA/btsFhqyQth6/HYW9H0xQuReUtKvUo4SCEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dezOTA/btsFhqyQth6/HYW9H0xQuReUtKvUo4SCEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdezOTA%2FbtsFhqyQth6%2FHYW9H0xQuReUtKvUo4SCEk%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;700&quot; height=&quot;227&quot; data-origin-width=&quot;1626&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.3 Results &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리는&amp;nbsp;각&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대해&amp;nbsp;LSTM,&amp;nbsp;BI-LSTM,&amp;nbsp;CRF,&amp;nbsp;LSTM-CRF&amp;nbsp;및&amp;nbsp;BI-LSTM-CRF&amp;nbsp;모델을&amp;nbsp;훈련합니다.&amp;nbsp;단어&amp;nbsp;임베딩을&amp;nbsp;초기화하는&amp;nbsp;방법에는&amp;nbsp;&lt;u&gt;Random과&amp;nbsp;Senna&lt;/u&gt;라는&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;방법이&amp;nbsp;있습니다.&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;카테고리에서는&amp;nbsp;단어&amp;nbsp;임베딩&amp;nbsp;벡터를&amp;nbsp;무작위로&amp;nbsp;초기화하고&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;카테고리에서는&amp;nbsp;Senna&amp;nbsp;단어&amp;nbsp;임베딩을&amp;nbsp;사용합니다.&amp;nbsp;각&amp;nbsp;카테고리에&amp;nbsp;대해&amp;nbsp;동일한&amp;nbsp;기능&amp;nbsp;세트를&amp;nbsp;사용하므로&amp;nbsp;다른&amp;nbsp;결과는&amp;nbsp;전적으로&amp;nbsp;다른&amp;nbsp;네트워크로&amp;nbsp;인해&amp;nbsp;발생합니다.&amp;nbsp;훈련&amp;nbsp;데이터를&amp;nbsp;사용하여&amp;nbsp;모델을&amp;nbsp;훈련하고&amp;nbsp;검증&amp;nbsp;데이터에&amp;nbsp;대한&amp;nbsp;성능을&amp;nbsp;모니터링합니다.&amp;nbsp;청크&amp;nbsp;데이터에는&amp;nbsp;검증&amp;nbsp;데이터&amp;nbsp;세트가&amp;nbsp;없으므로&amp;nbsp;검증&amp;nbsp;목적으로&amp;nbsp;훈련&amp;nbsp;데이터의&amp;nbsp;일부를&amp;nbsp;사용합니다.&lt;br /&gt;모델&amp;nbsp;학습에는&amp;nbsp;학습률&amp;nbsp;0.1을&amp;nbsp;사용합니다.&amp;nbsp;히든&amp;nbsp;레이어&amp;nbsp;크기를&amp;nbsp;300으로&amp;nbsp;설정한&amp;nbsp;결과&amp;nbsp;모델&amp;nbsp;성능이&amp;nbsp;히든&amp;nbsp;레이어&amp;nbsp;크기에&amp;nbsp;민감하지&amp;nbsp;않다는&amp;nbsp;것을&amp;nbsp;발견했습니다.&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;작업에&amp;nbsp;대한&amp;nbsp;훈련은&amp;nbsp;수렴하는&amp;nbsp;데&amp;nbsp;10개&amp;nbsp;미만의&amp;nbsp;epoch가&amp;nbsp;필요하며&amp;nbsp;일반적으로&amp;nbsp;몇&amp;nbsp;시간도&amp;nbsp;채&amp;nbsp;걸리지&amp;nbsp;않습니다.&amp;nbsp;우리는&amp;nbsp;Conv-CRF로&amp;nbsp;표시된&amp;nbsp;(Collobert&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2011)의&amp;nbsp;최상의&amp;nbsp;결과를&amp;nbsp;나열한&amp;nbsp;표&amp;nbsp;2의&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;세트에&amp;nbsp;대한&amp;nbsp;모델&amp;nbsp;성능을&amp;nbsp;보고합니다.&amp;nbsp;POS&amp;nbsp;작업은&amp;nbsp;단어당&amp;nbsp;정확도를&amp;nbsp;계산하여&amp;nbsp;평가되는&amp;nbsp;반면,&amp;nbsp;청크&amp;nbsp;및&amp;nbsp;NER&amp;nbsp;작업은&amp;nbsp;청크에&amp;nbsp;대한&amp;nbsp;F1&amp;nbsp;점수를&amp;nbsp;계산하여&amp;nbsp;평가됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.3.1 Comparison with Cov-CRF networks &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LSTM, BI-LSTM 및 CRF의 세 가지 기준이 있습니다. LSTM은 세 가지 데이터 세트 모두에 대해 가장 약한 기준선입니다. BI-LSTM은 POS 및 청킹 데이터 세트에서 CRF에 가까운 성능을 발휘하지만 NER 데이터 세트에서는 CRF보다 성능이 떨어집니다. CRF는 실험에서 강력한 기준선을 형성합니다. 랜덤&amp;nbsp;카테고리에서는,&amp;nbsp;CRF&amp;nbsp;모델이&amp;nbsp;세&amp;nbsp;데이터셋&amp;nbsp;모두에서&amp;nbsp;Conv-CRF&amp;nbsp;모델보다&amp;nbsp;우수한&amp;nbsp;성능을&amp;nbsp;보입니다.&amp;nbsp;Senna&amp;nbsp;카테고리에서는,&amp;nbsp;CRF가&amp;nbsp;POS&amp;nbsp;작업에서&amp;nbsp;Conv-CRF보다&amp;nbsp;우수한&amp;nbsp;성능을&amp;nbsp;보이는&amp;nbsp;반면,&amp;nbsp;청킹과&amp;nbsp;NER&amp;nbsp;작업에서는&amp;nbsp;성능이&amp;nbsp;낮습니다.&amp;nbsp;LSTM-CRF&amp;nbsp;모델은&amp;nbsp;랜덤과&amp;nbsp;Senna&amp;nbsp;카테고리&amp;nbsp;모두에서&amp;nbsp;모든&amp;nbsp;데이터셋에서&amp;nbsp;CRF&amp;nbsp;모델보다&amp;nbsp;우수한&amp;nbsp;성능을&amp;nbsp;보입니다. 위&amp;nbsp;결과는&amp;nbsp;순방향&amp;nbsp;상태&amp;nbsp;LSTM&amp;nbsp;구성&amp;nbsp;요소가&amp;nbsp;시퀀스&amp;nbsp;데이터를&amp;nbsp;모델링하는&amp;nbsp;데&amp;nbsp;효과적임을&amp;nbsp;보여줍니다.&amp;nbsp;BI-LSTM-CRF&amp;nbsp;모델은&amp;nbsp;LSTM-CRF&amp;nbsp;모델을&amp;nbsp;더&amp;nbsp;개선시키며,&amp;nbsp;POS&amp;nbsp;데이터의&amp;nbsp;경우&amp;nbsp;랜덤&amp;nbsp;카테고리에서&amp;nbsp;LSTM-CRF&amp;nbsp;모델이&amp;nbsp;우승한&amp;nbsp;것을&amp;nbsp;제외하고는&amp;nbsp;모든&amp;nbsp;경우에&amp;nbsp;최고의&amp;nbsp;태깅&amp;nbsp;성능을&amp;nbsp;보입니다.&amp;nbsp;Senna&amp;nbsp;카테고리의&amp;nbsp;CoNLL&amp;nbsp;2003의&amp;nbsp;괄호&amp;nbsp;안&amp;nbsp;숫자는&amp;nbsp;Gazetteer&amp;nbsp;특성을&amp;nbsp;사용하여&amp;nbsp;생성되었습니다.&lt;br /&gt;&lt;br /&gt;우리의&amp;nbsp;최고&amp;nbsp;모델인&amp;nbsp;BI-LSTM-CRF가&amp;nbsp;Conv-CRF&amp;nbsp;모델에&amp;nbsp;비해&amp;nbsp;Senna&amp;nbsp;단어&amp;nbsp;임베딩에&amp;nbsp;대한&amp;nbsp;의존성이&amp;nbsp;적다는&amp;nbsp;것은&amp;nbsp;흥미롭습니다.&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;랜덤과&amp;nbsp;Senna&amp;nbsp;카테고리&amp;nbsp;간의&amp;nbsp;태깅&amp;nbsp;차이는&amp;nbsp;POS,&amp;nbsp;청킹&amp;nbsp;및&amp;nbsp;NER&amp;nbsp;데이터셋에서&amp;nbsp;각각&amp;nbsp;0.12%,&amp;nbsp;0.33%,&amp;nbsp;4.57%입니다.&amp;nbsp;반면에&amp;nbsp;Conv-CRF&amp;nbsp;모델은&amp;nbsp;좋은&amp;nbsp;태깅&amp;nbsp;정확도를&amp;nbsp;얻기&amp;nbsp;위해&amp;nbsp;Senna&amp;nbsp;임베딩에&amp;nbsp;크게&amp;nbsp;의존합니다.&amp;nbsp;POS,&amp;nbsp;청킹&amp;nbsp;및&amp;nbsp;NER&amp;nbsp;데이터셋에서&amp;nbsp;랜덤과&amp;nbsp;Senna&amp;nbsp;카테고리&amp;nbsp;간의&amp;nbsp;태깅&amp;nbsp;차이는&amp;nbsp;각각&amp;nbsp;0.92%,&amp;nbsp;3.99%,&amp;nbsp;7.20%입니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.3.2 Model robustness &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모델의 엔지니어링된 특성(스펠링 및 문맥 특성)에 대한 모델의 견고성을 추정하기 위해, 우리는 단어 특성만을 사용하여 LSTM, BI-LSTM, CRF, LSTM-CRF 및 BI-LSTM-CRF 모델을 훈련시켰습니다(스펠링 및 문맥 특성 제거). Table 3은 제안된 모델들의 POS, 청킹 및 NER 데이터셋에 대한 태깅 성능을 보여줍니다. 괄호 안의 숫자는 동일한 모델을 사용하지만 &lt;u&gt;스펠링 및 문맥 특성을 사용하지 않았을 때의 성능 저하&lt;/u&gt;를 나타냅니다. CRF 모델의 성능은 스펠링 및 문맥 특성을 제거함으로써 크게 저하되었습니다. 이는 CRF 모델이 좋은 성능을 얻기 위해 엔지니어링된 특성에 크게 의존한다는 사실을 드러냅니다. 반면에, 특히 BI-LSTM 및 BI-LSTM-CRF 모델을 포함한 LSTM 기반 모델들은 더 견고하며, 엔지니어링 특성을 제거함으로써 덜 영향을 받습니다. 세 가지 작업 모두에서 BI-LSTM-CRF 모델이 가장 높은 태깅 정확도를 달성합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1620&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdch1g/btsFjXvVi1I/KeYon68KR24VURejk7wm4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdch1g/btsFjXvVi1I/KeYon68KR24VURejk7wm4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdch1g/btsFjXvVi1I/KeYon68KR24VURejk7wm4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdch1g%2FbtsFjXvVi1I%2FKeYon68KR24VURejk7wm4K%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;676&quot; height=&quot;272&quot; data-origin-width=&quot;1620&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, 스펠링 및 문맥 특성을 사용하지 않고도 동일한 모델을 적용할 때와 비교하여 CoNLL2000 청킹 작업에서 94.40의 F1 점수를 달성했습니다. 이는 약간의 저하(0.06)를 보입니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4.3.3 Comparison with existing systems &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;POS 데이터셋의 경우, 우리는 추가 데이터 리소스를 사용하든 사용하지 않더라도 최신의 태깅 정확도를 달성했습니다. POS 데이터셋은 광범위하게 테스트되었으며, 과거의 개선 사항은 표 4에서 확인할 수 있습니다. 우리의 테스트 정확도는 97.55%로, 95% 신뢰 수준에서 다른 모델들보다 상당히 우수합니다. 또한, 우리의 BI-LSTM-CRF 모델은 Senna 임베딩을 사용하지 않고도 이미 좋은 정확도에 도달했습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든&amp;nbsp;청킹&amp;nbsp;시스템의&amp;nbsp;성능은&amp;nbsp;표&amp;nbsp;5에&amp;nbsp;나와&amp;nbsp;있습니다.&amp;nbsp;Kudo&amp;nbsp;et&amp;nbsp;al.은&amp;nbsp;CoNLL&amp;nbsp;2000&amp;nbsp;챌린지에서&amp;nbsp;93.48%의&amp;nbsp;F1&amp;nbsp;점수로&amp;nbsp;우승했습니다.&amp;nbsp;그들의&amp;nbsp;접근&amp;nbsp;방식은&amp;nbsp;SVM&amp;nbsp;기반&amp;nbsp;분류기였습니다.&amp;nbsp;그들은&amp;nbsp;나중에&amp;nbsp;결과를&amp;nbsp;93.91%까지&amp;nbsp;개선했습니다.&amp;nbsp;최근의&amp;nbsp;작업에는&amp;nbsp;CRF&amp;nbsp;기반&amp;nbsp;모델들(Sha&amp;nbsp;and&amp;nbsp;Pereira,&amp;nbsp;2003;&amp;nbsp;McDonald&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2005;&amp;nbsp;Sun&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2008)이&amp;nbsp;포함됩니다.&amp;nbsp;더&amp;nbsp;최근에는&amp;nbsp;(Shen&amp;nbsp;and&amp;nbsp;Sarkar,&amp;nbsp;2005)가&amp;nbsp;각&amp;nbsp;분류기가&amp;nbsp;다른&amp;nbsp;태그&amp;nbsp;표현(IOB,&amp;nbsp;IOE&amp;nbsp;등)으로&amp;nbsp;훈련된&amp;nbsp;투표&amp;nbsp;분류기&amp;nbsp;체계를&amp;nbsp;사용하여&amp;nbsp;95.23%의&amp;nbsp;정확도를&amp;nbsp;달성했습니다.&amp;nbsp;우리&amp;nbsp;모델은&amp;nbsp;(Shen&amp;nbsp;and&amp;nbsp;Sarkar,&amp;nbsp;2005)를&amp;nbsp;제외하고&amp;nbsp;모든&amp;nbsp;보고된&amp;nbsp;시스템을&amp;nbsp;능가합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;NER에&amp;nbsp;대한&amp;nbsp;모든&amp;nbsp;시스템의&amp;nbsp;성능은&amp;nbsp;표&amp;nbsp;6에&amp;nbsp;나와&amp;nbsp;있습니다.&amp;nbsp;(Florian&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2003)는&amp;nbsp;NER&amp;nbsp;CoNLL&amp;nbsp;2003&amp;nbsp;챌린지에서&amp;nbsp;최고의&amp;nbsp;시스템을&amp;nbsp;제시했으며,&amp;nbsp;88.76%의&amp;nbsp;F1&amp;nbsp;점수를&amp;nbsp;기록했습니다.&amp;nbsp;그들은&amp;nbsp;다양한&amp;nbsp;머신&amp;nbsp;러닝&amp;nbsp;분류기의&amp;nbsp;조합을&amp;nbsp;사용했습니다.&amp;nbsp;CoNLL&amp;nbsp;2003에서&amp;nbsp;두&amp;nbsp;번째로&amp;nbsp;우수한&amp;nbsp;수행자(Chieu.,&amp;nbsp;2003)는&amp;nbsp;88.31%의&amp;nbsp;F1&amp;nbsp;점수로,&amp;nbsp;외부&amp;nbsp;개체&amp;nbsp;목록의&amp;nbsp;도움을&amp;nbsp;받았습니다.&amp;nbsp;나중에&amp;nbsp;(Ando&amp;nbsp;and&amp;nbsp;Zhang.,&amp;nbsp;2005)는&amp;nbsp;반지도&amp;nbsp;학습&amp;nbsp;접근&amp;nbsp;방식을&amp;nbsp;사용하여&amp;nbsp;89.31%의&amp;nbsp;F1을&amp;nbsp;달성했습니다.&amp;nbsp;90.90%의&amp;nbsp;최고&amp;nbsp;F1&amp;nbsp;점수는&amp;nbsp;(Passos&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2014)에서&amp;nbsp;보고되었으며,&amp;nbsp;이는&amp;nbsp;관련&amp;nbsp;사전에서&amp;nbsp;정보를&amp;nbsp;활용하여&amp;nbsp;표현을&amp;nbsp;개선할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;새로운&amp;nbsp;형태의&amp;nbsp;단어&amp;nbsp;임베딩을&amp;nbsp;사용했습니다.&amp;nbsp;우리&amp;nbsp;모델은&amp;nbsp;Senna&amp;nbsp;임베딩과&amp;nbsp;개체&amp;nbsp;목록&amp;nbsp;특성을&amp;nbsp;사용하여&amp;nbsp;최고의&amp;nbsp;F1&amp;nbsp;점수인&amp;nbsp;90.10을&amp;nbsp;달성할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이는&amp;nbsp;(Passos&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2014)보다&amp;nbsp;낮은&amp;nbsp;F1&amp;nbsp;점수이며,&amp;nbsp;이는&amp;nbsp;다른&amp;nbsp;단어&amp;nbsp;임베딩이&amp;nbsp;사용되었기&amp;nbsp;때문일&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;동일한&amp;nbsp;Senna&amp;nbsp;임베딩을&amp;nbsp;사용할&amp;nbsp;경우,&amp;nbsp;BI-LSTM-CRF는&amp;nbsp;Conv-CRF보다&amp;nbsp;약간&amp;nbsp;우수한&amp;nbsp;성능을&amp;nbsp;보입니다(90.10%&amp;nbsp;대&amp;nbsp;89.59%).&amp;nbsp;그러나&amp;nbsp;랜덤&amp;nbsp;임베딩을&amp;nbsp;사용하는&amp;nbsp;경우&amp;nbsp;BI-LSTM-CRF는&amp;nbsp;Conv-CRF를&amp;nbsp;크게&amp;nbsp;능가합니다(84.26%&amp;nbsp;대&amp;nbsp;81.47%).&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5 Discussions &lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우리의&amp;nbsp;작업은&amp;nbsp;둘&amp;nbsp;다&amp;nbsp;서열&amp;nbsp;태깅을&amp;nbsp;위해&amp;nbsp;심층&amp;nbsp;신경망을&amp;nbsp;활용했기&amp;nbsp;때문에&amp;nbsp;(Collobert&amp;nbsp;et&amp;nbsp;al.,&amp;nbsp;2011)의&amp;nbsp;작업과&amp;nbsp;유사합니다.&amp;nbsp;그들의&amp;nbsp;작업에서는&amp;nbsp;컨볼루션&amp;nbsp;신경망을&amp;nbsp;사용했지만&amp;nbsp;우리의&amp;nbsp;작업에서는&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;네트워크를&amp;nbsp;사용했습니다.&lt;br /&gt;우리의 작업은 모두 태깅을 위해 LSTM 네트워크를 사용했기 때문에 (Hammerton, 2003; Yao et al., 2014)의 작업과 유사합니다. (Hammerton, 2003)의 성과는 인상적이지 않았습니다. Yao et al., 2014의 연구에서는 양방향 LSTM 및 CRF 레이어를 사용하지 않았으므로 태깅 정확도가 저하될 수 있습니다.&lt;br /&gt;마지막으로,&amp;nbsp;우리의&amp;nbsp;연구는&amp;nbsp;(Wang&amp;nbsp;and&amp;nbsp;Manning,&amp;nbsp;2013)의&amp;nbsp;연구와&amp;nbsp;관련이&amp;nbsp;있습니다.&amp;nbsp;그&amp;nbsp;연구는&amp;nbsp;비선형&amp;nbsp;구조가&amp;nbsp;고차원&amp;nbsp;이산&amp;nbsp;특성&amp;nbsp;공간에서는&amp;nbsp;이점이&amp;nbsp;없다는&amp;nbsp;결론을&amp;nbsp;내렸습니다.&amp;nbsp;우리는&amp;nbsp;양방향&amp;nbsp;LSTM&amp;nbsp;CRF&amp;nbsp;모델로&amp;nbsp;일관되게&amp;nbsp;동일한&amp;nbsp;특성&amp;nbsp;집합을&amp;nbsp;사용한&amp;nbsp;단일&amp;nbsp;CRF&amp;nbsp;모델보다&amp;nbsp;더&amp;nbsp;나은&amp;nbsp;태깅&amp;nbsp;정확도를&amp;nbsp;얻었음을&amp;nbsp;보여주었습니다.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6 Conclusions &lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br /&gt;이 논문에서는 시퀀스 태깅을 위한 LSTM 네트워크 기반 모델의 성능을 체계적으로 비교했습니다. 우리는 NLP 벤치마크 시퀀스 태깅 데이터에 BI-LSTM-CRF 모델을 처음 적용한 작업을 제시했습니다. 우리의 모델은 POS, 청킹 및 NER 데이터셋에서 최신 기술(또는 근접한) 정확도를 달성할 수 있습니다. 게다가, 우리의 모델은 (Collobert et al., 2011)에서의 관찰과 비교해 단어 임베딩에 대한 의존성이 적습니다. 단어 임베딩에 의존하지 않고도 정확한 태깅 정확도를 달성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;1034&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVFFaZ/btsFhR318Ot/x8wKm6rA7us6PWZvLI6XEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVFFaZ/btsFhR318Ot/x8wKm6rA7us6PWZvLI6XEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVFFaZ/btsFhR318Ot/x8wKm6rA7us6PWZvLI6XEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVFFaZ%2FbtsFhR318Ot%2Fx8wKm6rA7us6PWZvLI6XEk%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;1578&quot; height=&quot;1034&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;1034&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHd6zM/btsFkISPQ3A/BT1qrE0mIZGUxs8CZT8AN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHd6zM/btsFkISPQ3A/BT1qrE0mIZGUxs8CZT8AN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHd6zM/btsFkISPQ3A/BT1qrE0mIZGUxs8CZT8AN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHd6zM%2FbtsFkISPQ3A%2FBT1qrE0mIZGUxs8CZT8AN1%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;1540&quot; height=&quot;1120&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/551</guid>
      <comments>https://9566.tistory.com/551#entry551comment</comments>
      <pubDate>Thu, 29 Feb 2024 04:25:01 +0900</pubDate>
    </item>
    <item>
      <title>Bidirectional-LSTM-CRF 논문 사전 용어 리스트</title>
      <link>https://9566.tistory.com/553</link>
      <description>&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;Sequence Tagging&lt;/span&gt; :&amp;nbsp; 입력 시퀀스(문장 또는 문서)의 각 요소(단어, 토큰, 또는 문자)에 대해 레이블 또는 태그를 할당
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Sequence Data : 말 그대로 순서(sequence)가 있는 데이터&lt;br /&gt;예시)&amp;nbsp;시계열&amp;nbsp;데이터,&amp;nbsp;텍스트&amp;nbsp;데이터&lt;br /&gt;특징) 각 시퀀스 원소들은 특정 순서를 가져 독립적이지 않다.&lt;/li&gt;
&lt;li&gt;Tagging : 텍스트에서 각 단어나 토큰에 레이블을 할당(&lt;a href=&quot;https://wikidocs.net/24682)&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wikidocs.net/24682)&lt;/a&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;품사 태깅(&lt;u&gt;POS&lt;/u&gt;, Part-of-Speech Tagging) : 각 단어가 명사, 동사, 형용사 등의 품사 중 어떤 품사를 가지는지를 분류&amp;nbsp;&amp;nbsp;&lt;br /&gt;ex) &quot;The cat is sleeping.&quot;에서 &quot;cat&quot;은 명사(NN), &quot;is&quot;는 동사(VB), &quot;sleeping&quot;은 형용사(JJ)로 태깅&lt;/li&gt;
&lt;li&gt;개체명 인식(&lt;u&gt;NER,&lt;/u&gt; Named Entity Recoginizer) : 문장에서 사람, 장소, 단체, 날짜 등의 개체를 식별&lt;br /&gt;ex) &quot;Steve Jobs founded Apple in 1976.&quot;에서 &quot;Steve Jobs&quot;는 PERSON, &quot;Apple&quot;은 ORGANIZATION으로 태깅&lt;/li&gt;
&lt;li&gt;구(&lt;u&gt;chunking&lt;/u&gt;) : 문장을 단어의 그룹(청크)으로 나누고, 각 청크에 레이블을 할당(&lt;a href=&quot;https://9566.tistory.com/552&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://9566.tistory.com/552&lt;/a&gt;)&lt;br /&gt;ex)&quot;[The quick brown fox] [jumps] [over] [the lazy dog].&quot; 각 청크는 대괄호로 묶여있으며, 명사구(NP), 동사(V), 전치사구(PP) 등의 레이블이 부여&lt;/li&gt;
&lt;li&gt;의존성 구문 분석(Dependency Parsing): 각 단어 간의 문법적인 의존 관계를 태깅&lt;br /&gt;ex) &quot;The cat is sleeping on the mat.&quot;에서 &quot;cat&quot;은 &quot;sleeping&quot;에 의존(DOBJ), &quot;sleeping&quot;은 &quot;is&quot;에 의존(COMP) 등으로 태깅&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;전형적인 NLP(자연어 처리) 작업 중 하나&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;NLP&amp;nbsp;benchmark&amp;nbsp;sequence&amp;nbsp;tagging&amp;nbsp;data&amp;nbsp;sets:&amp;nbsp;자연어&amp;nbsp;처리&amp;nbsp;모델의&amp;nbsp;&lt;u&gt;성능을 비교 평가&lt;/u&gt;하기&amp;nbsp;위해&amp;nbsp;사용되는&amp;nbsp;표준&amp;nbsp;데이터셋&lt;br /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;벤치마크는 컴퓨팅에서 특정 오브젝트에 대해 일반적으로 수많은 표준 테스트와 시도를 수행함으로써 오브젝트의 상대적인 성능 측정을 목적으로 컴퓨터 프로그램을 실행하는 행위 ex) 핸드폰 기종간 GeekBench Single Core 비교&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;sentence level tag information thanks to a CRF layer(&lt;a href=&quot;https://wikidocs.net/147234&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://wikidocs.net/147234&lt;/a&gt;)
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;sentence level tag information : &lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: left;&quot;&gt;시퀀스 태깅 작업에서 문장 전체의 구조나 의미를 나타내는 정보를 의미(문장의 의도나 주제, 문장 구조, 문장의 형식적 특성)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;CRF(Conditional Random Fields) layer : 모델이 생성한 시퀀스 레이블(예: 각 단어의 품사 태그)을 조정하여 문장 전체의 일관성을 높이는 역할을 합니다. 이를 통해 문장 수준의 태그 정보를 사용할 수 있게 됩니다. &lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;CRF 층을 추가하면 모델은 예측 개체명, 다시 말해 레이블 사이의 의존성을 고려할 수 있습니다.&lt;/span&gt;&lt;br /&gt;ex) &quot;The&amp;nbsp;cat&amp;nbsp;is&amp;nbsp;sleeping&amp;nbsp;on&amp;nbsp;the&amp;nbsp;mat&quot;이라는&amp;nbsp;문장에서&amp;nbsp;&quot;cat&quot;&amp;nbsp;다음에&amp;nbsp;오는&amp;nbsp;&quot;is&quot;는&amp;nbsp;동사(VB)일&amp;nbsp;가능성이&amp;nbsp;높습니다.&amp;nbsp;&quot;is&quot;&amp;nbsp;다음에&amp;nbsp;오는&amp;nbsp;&quot;sleeping&quot;&amp;nbsp;역시&amp;nbsp;동사일&amp;nbsp;가능성이&amp;nbsp;높고,&amp;nbsp;&quot;on&quot;&amp;nbsp;다음에&amp;nbsp;오는&amp;nbsp;&quot;the&quot;는&amp;nbsp;전치사(IN)일&amp;nbsp;가능성이&amp;nbsp;높습니다.&amp;nbsp;이런&amp;nbsp;&lt;u&gt;문장&amp;nbsp;내&amp;nbsp;단어&amp;nbsp;간의&amp;nbsp;일관된&amp;nbsp;관계를&amp;nbsp;고려&lt;/u&gt;하여&amp;nbsp;모델이&amp;nbsp;레이블을&amp;nbsp;예측하는데&amp;nbsp;도움&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Robust : 다양한 조건에서도 일관된 성능을 유지, 노이즈가 많거나 다양한 유형의 데이터셋에서도 잘 동작하여 신뢰성 있는 결과를 제공&lt;/li&gt;
&lt;li&gt;Less dependence on word embedding : 워드 임베딩에 대한 의존성을 줄인다 -&amp;gt; &lt;u&gt;단어 수준이 아닌 문자, 하위단어, 문맥 등 모델이 더 많은 정보를 학습하도록 한다.&lt;/u&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;워드 임베딩 : 단어를 밀집표현(사용자가 벡터의 차원(크기)을 맞춰 사용, 벡터값도 0,1이 아닌 실수값)한 것 (&lt;a href=&quot;https://9566.tistory.com/549&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://9566.tistory.com/549&lt;/a&gt;)&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Down streaming applications : tagger의 결과를 활용하여 다른 새로운 작업을 하는 것
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&quot;Bob&amp;nbsp;works&amp;nbsp;at&amp;nbsp;Google.&quot;이라는&amp;nbsp;문장에서&amp;nbsp;&quot;Google&quot;이&amp;nbsp;ORGANIZATION으로&amp;nbsp;인식되었을&amp;nbsp;때,&amp;nbsp;이&amp;nbsp;정보를&amp;nbsp;활용하여&amp;nbsp;구글에&amp;nbsp;관한&amp;nbsp;정보를&amp;nbsp;검색하거나&amp;nbsp;구글에&amp;nbsp;대한&amp;nbsp;뉴스를&amp;nbsp;찾는&amp;nbsp;등의&amp;nbsp;작업을&amp;nbsp;수행&amp;nbsp;&lt;/li&gt;
&lt;li&gt;개체명 인식기(Named Entity Recognizer) : 태깅된 결과를 사용하여 제품 정보를 식별하여 광고를 활성화할 수 있습니다.&lt;br /&gt;ex) 사용자 검색 쿼리에서 &quot;iPhone X&quot;라는 제품 이름을 인식하면, 이를 통해 해당 제품에 대한 광고를 트리거할 수 있습니다.&lt;/li&gt;
&lt;li&gt;검색 엔진(Search Engine)은 태그 정보를 사용하여 관련 웹 페이지를 찾을 수 있습니다.&lt;br /&gt;ex) 사용자가 &quot;최신 기술 트렌드&quot;라는 검색어를 입력하면, 개체명 인식기가 &quot;기술&quot;이라는 개체를 인식하고, 검색 엔진은 이를 기반으로 관련된 기술 블로그나 뉴스 기사를 검색하여 사용자에게 제공할 수 있습니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Down streaming task : 전이학습을 통해 pretrained-model로 원하는 model을 만들고자 한 것(&lt;a href=&quot;https://chan-lab.tistory.com/31&quot;&gt;https://chan-lab.tistory.com/31&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Linear statistical models
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;HMM(Hidden Markov Models)&lt;/li&gt;
&lt;li&gt;HEMMs(Maximum entropy Markov Models)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;CRF(Conditional Random Fields)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;위 순서대로 발전하였고 CRF는 HMM에 비해 복잡한 패턴과 문맥을 고려하여 더 좋은 성능을 보인다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Long distance feature : 과거 시간 단계에서 발생한 정보를 현재 시간 단계에서 사용, 모델이&amp;nbsp;문장이나&amp;nbsp;음성&amp;nbsp;데이터의&amp;nbsp;긴&amp;nbsp;의존성을&amp;nbsp;파악하고&amp;nbsp;이를&amp;nbsp;반영하여&amp;nbsp;예측을&amp;nbsp;수행&lt;/li&gt;
&lt;li&gt;Feedforward network(순방향 신경망) : 가장 기본이 되는 신경망 구조(하기 사진)&amp;nbsp;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Feedforward(순방향)&amp;nbsp;구조:&amp;nbsp;입력층에서&amp;nbsp;출력층으로&amp;nbsp;데이터가&amp;nbsp;한&amp;nbsp;방향으로만&amp;nbsp;흐르는&amp;nbsp;구조를&amp;nbsp;가집니다.&amp;nbsp;즉,&amp;nbsp;각&amp;nbsp;층의&amp;nbsp;출력은&amp;nbsp;그&amp;nbsp;다음&amp;nbsp;층의&amp;nbsp;입력이&amp;nbsp;되어&amp;nbsp;학습이&amp;nbsp;진행됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Backpropagation through time(BPTT) : 시퀀스&amp;nbsp;데이터의&amp;nbsp;각&amp;nbsp;시간&amp;nbsp;단계마다의&amp;nbsp;오차를&amp;nbsp;역방향으로&amp;nbsp;전파하여&amp;nbsp;가중치를&amp;nbsp;조정
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Backpropagation : feedforward network(순방향 신경망)에서 사용&lt;/li&gt;
&lt;li&gt;Backpropagation through time(BPTT) : RNN(순환 신경망), LSTM 등에서 사용&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Beam-like decoding : 기계 번역 및 자연어 처리 분야에서 사용되는 디코딩 방법 중 하나입니다. 여러 후보 문장을 생성하고, 각 후보 문장에 점수를 매기는 과정을 반복하면서 최적의 문장을 선택하는 방식입니다.(하기사진) -&amp;gt; maximum entropy classifer, MEMMs 모델이 이용
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Greedy Decoding : 단순하게 해당 시점에서 가장 확률이 높은 후보를 선택&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;Beam search :&lt;span&gt; Greedy Decoding을 어느정도 극복하기 위해 사용, 빔서치에서 고려하는 모든 확률은 누적 확률, 유망한 빔의 개수만큼 (이하 K) 골라서 진행&lt;/span&gt;&lt;/span&gt;(&lt;a href=&quot;https://blog.naver.com/sooftware/221809101199&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.naver.com/sooftware/221809101199&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;state transition matrix&lt;/span&gt; : 각&amp;nbsp;태그&amp;nbsp;상태&amp;nbsp;사이의&amp;nbsp;전이&amp;nbsp;확률을&amp;nbsp;나타내는&amp;nbsp;매개변수
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;전이 행렬 Qij : 상태 i에서 상태 j로 갈 확률(하기사진)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;generic SGD forward and backward training procedure : 모델 학습 과정에서 순방향,역방향 SGD 손실함수를 사용&amp;nbsp;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;SGD(Stochastic=Random Gradient Descent) : Loss Function(최적의 가중치값을 찾기 위해 사용)을 계산할 때, 전체 데이터(Batch) 대신 일부 데이터의 모음(Mini-Batch)를 사용하여 Loss Function을 계산한다. &lt;a href=&quot;https://mangkyu.tistory.com/62&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://mangkyu.tistory.com/62&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;GD(&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;Gradient Descent = 경사하강법)&lt;span&gt; : &lt;a href=&quot;https://www.youtube.com/watch?v=c7NURwHmM5k&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=c7NURwHmM5k&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;state transition edges
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;edge : 그래프 이론에서 사용되는 단어로, 그래프 노드 간을 연결하는 선을 의미&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;BIO2(Begin, Inside, Outside, Other) &lt;span style=&quot;color: #000000;&quot;&gt;annotation standard&lt;/span&gt;&lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;B (Begin): 개체명의 시작을 나타냅니다&lt;/li&gt;
&lt;li&gt;&amp;nbsp;I (Inside): 개체명의 내부를 나타냅니다.&lt;/li&gt;
&lt;li&gt;O (Outside): 개체명이 아닌 토큰을 나타냅니다.&lt;/li&gt;
&lt;li&gt;Other:&amp;nbsp;추가적인&amp;nbsp;레이블로,&amp;nbsp;개체명이&amp;nbsp;아니거나&amp;nbsp;특정한&amp;nbsp;태깅이&amp;nbsp;필요하지&amp;nbsp;않은&amp;nbsp;경우에&amp;nbsp;사용됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Senna Embedding : NLP Software 중 하나, &lt;span style=&quot;color: #000000;&quot;&gt;단어를 밀집 벡터로 표현하는 임베딩 기술 &amp;gt; 단어 간의 의미적 유사성을 파악하는 데 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Gazetteer features : 사전 종류 중 하나로&amp;nbsp;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;지리적 장소, 기관명, 인명 등과 같은 명명된 개체를 나열한 사전&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;N-gram&lt;/span&gt; : SLM(Statistical&amp;nbsp;Language&amp;nbsp;Model)&amp;nbsp;의&amp;nbsp;일종으로,&amp;nbsp;&amp;nbsp;이전에&amp;nbsp;등장한&amp;nbsp;모든&amp;nbsp;단어를&amp;nbsp;고려하지&amp;nbsp;않고,&amp;nbsp;&amp;nbsp;일부&amp;nbsp;n&amp;nbsp;개의&amp;nbsp;단어만&amp;nbsp;고려하는&amp;nbsp;방식
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Uni-gram : &amp;nbsp;&quot;apple&quot;,&amp;nbsp;&quot;banana&quot;,&amp;nbsp;&quot;orange&quot;와&amp;nbsp;같은&amp;nbsp;개별&amp;nbsp;단어를&amp;nbsp;나타냅니다.&lt;/li&gt;
&lt;li&gt;Bi-gram : &quot;apple&amp;nbsp;pie&quot;,&amp;nbsp;&quot;banana&amp;nbsp;split&quot;,&amp;nbsp;&quot;orange&amp;nbsp;juice&quot;와&amp;nbsp;같은&amp;nbsp;두&amp;nbsp;개의&amp;nbsp;단어&amp;nbsp;조합을&amp;nbsp;나타냅니다.&lt;/li&gt;
&lt;li&gt;Tri-gram : &quot;eat&amp;nbsp;an&amp;nbsp;apple&quot;,&amp;nbsp;&quot;peel&amp;nbsp;a&amp;nbsp;banana&quot;,&amp;nbsp;&quot;drink&amp;nbsp;orange&amp;nbsp;juice&quot;와&amp;nbsp;같은&amp;nbsp;세&amp;nbsp;개의&amp;nbsp;단어&amp;nbsp;조합을&amp;nbsp;나타냅니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Feature Hashing technique&lt;/li&gt;
&lt;li&gt;Feature collision&lt;/li&gt;
&lt;li&gt;to initialize word embedding: Random and Senna : 랜덤임베딩, Senna 임베딩&lt;/li&gt;
&lt;li&gt;Lexicons : 사전, 어휘집&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;baselines : &lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;특정 작업이나 문제에 대한 기본적인 비교 대상이나 기준을 의미. LSTM, BI-LSTM, CRF를 기준으로 사용하여 다른 모델들의 성능을 비교할 것임. 이 모델들은 해당 작업에 대한 기본적인 모델이며, 다른 모델들과의 성능 비교를 위한 출발점으로 사용됩니다. 따라서 이러한 모델들을 &quot;baselines&quot;로 간주하고, 다른 모델들과의 비교를 통해 해당 작업에 대한 효과적인 모델을 발견하고자 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&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;9.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1502&quot; data-origin-height=&quot;658&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y9Sxy/btsFofpmGJk/Eu9N6bHupxxw5vhbc2TBZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y9Sxy/btsFofpmGJk/Eu9N6bHupxxw5vhbc2TBZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y9Sxy/btsFofpmGJk/Eu9N6bHupxxw5vhbc2TBZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy9Sxy%2FbtsFofpmGJk%2FEu9N6bHupxxw5vhbc2TBZ1%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;1502&quot; height=&quot;658&quot; data-origin-width=&quot;1502&quot; data-origin-height=&quot;658&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1702&quot; data-origin-height=&quot;1408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WUBKM/btsFod6ikmY/WPbBOgbac1Ua0cdFG7cfc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WUBKM/btsFod6ikmY/WPbBOgbac1Ua0cdFG7cfc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WUBKM/btsFod6ikmY/WPbBOgbac1Ua0cdFG7cfc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWUBKM%2FbtsFod6ikmY%2FWPbBOgbac1Ua0cdFG7cfc1%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;643&quot; height=&quot;532&quot; data-origin-width=&quot;1702&quot; data-origin-height=&quot;1408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qgMw6/btsFitJBc1D/2Ibrn8Sf53ulEEouonjiIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qgMw6/btsFitJBc1D/2Ibrn8Sf53ulEEouonjiIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qgMw6/btsFitJBc1D/2Ibrn8Sf53ulEEouonjiIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqgMw6%2FbtsFitJBc1D%2F2Ibrn8Sf53ulEEouonjiIK%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;1002&quot; height=&quot;382&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/553</guid>
      <comments>https://9566.tistory.com/553#entry553comment</comments>
      <pubDate>Thu, 29 Feb 2024 04:24:46 +0900</pubDate>
    </item>
    <item>
      <title>청크 태깅 레이블</title>
      <link>https://9566.tistory.com/552</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;B-NP:&amp;nbsp;명사구(Noun&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-NP:&amp;nbsp;명사구(Noun&amp;nbsp;Phrase)의&amp;nbsp;내부&amp;nbsp;(첫&amp;nbsp;단어&amp;nbsp;이후의&amp;nbsp;명사구&amp;nbsp;요소들)&lt;br /&gt;B-VP:&amp;nbsp;동사구(Verb&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-VP:&amp;nbsp;동사구(Verb&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-PP:&amp;nbsp;전치사구(Prepositional&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-PP:&amp;nbsp;전치사구(Prepositional&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-ADJP:&amp;nbsp;형용사구(Adjective&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-ADJP:&amp;nbsp;형용사구(Adjective&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-ADVP:&amp;nbsp;부사구(Adverb&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-ADVP:&amp;nbsp;부사구(Adverb&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-SBAR:&amp;nbsp;부사절구(Subordinate&amp;nbsp;Clause)의&amp;nbsp;시작&lt;br /&gt;I-SBAR:&amp;nbsp;부사절구(Subordinate&amp;nbsp;Clause)의&amp;nbsp;내부&lt;br /&gt;B-CONJP:&amp;nbsp;접속사구(Conjunction&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-CONJP:&amp;nbsp;접속사구(Conjunction&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-INTJ:&amp;nbsp;감탄사구(Interjection&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-INTJ:&amp;nbsp;감탄사구(Interjection&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-UCP:&amp;nbsp;열거구(UnCoordinated&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-UCP:&amp;nbsp;열거구(UnCoordinated&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-PRT:&amp;nbsp;부사&amp;nbsp;동사구(Particle&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-PRT:&amp;nbsp;부사&amp;nbsp;동사구(Particle&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;B-LST:&amp;nbsp;리스트(List)의&amp;nbsp;시작&lt;br /&gt;I-LST:&amp;nbsp;리스트(List)의&amp;nbsp;내부&lt;br /&gt;B-CONJP:&amp;nbsp;합동구(Conjoined&amp;nbsp;Phrase)의&amp;nbsp;시작&lt;br /&gt;I-CONJP:&amp;nbsp;합동구(Conjoined&amp;nbsp;Phrase)의&amp;nbsp;내부&lt;br /&gt;O:&amp;nbsp;청크의&amp;nbsp;외부&amp;nbsp;(Outside)&amp;nbsp;-&amp;nbsp;청크가&amp;nbsp;아닌&amp;nbsp;다른&amp;nbsp;부분&lt;/p&gt;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/552</guid>
      <comments>https://9566.tistory.com/552#entry552comment</comments>
      <pubDate>Wed, 28 Feb 2024 00:49:15 +0900</pubDate>
    </item>
    <item>
      <title>cbow</title>
      <link>https://9566.tistory.com/550</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;
&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;1496&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ejFPQK/btsFhfKd0xR/YuGkyqm7ZaxcKEJkVcv0w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ejFPQK/btsFhfKd0xR/YuGkyqm7ZaxcKEJkVcv0w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ejFPQK/btsFhfKd0xR/YuGkyqm7ZaxcKEJkVcv0w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FejFPQK%2FbtsFhfKd0xR%2FYuGkyqm7ZaxcKEJkVcv0w0%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;297&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;w행렬의 두번째 행이 &quot;나는&quot;의 워드임베딩벡터&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;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/550</guid>
      <comments>https://9566.tistory.com/550#entry550comment</comments>
      <pubDate>Mon, 26 Feb 2024 17:32:49 +0900</pubDate>
    </item>
    <item>
      <title>워드 임베딩, cbow</title>
      <link>https://9566.tistory.com/549</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;임베딩 : 비정형화된&amp;nbsp;텍스트를&amp;nbsp;숫자로&amp;nbsp;바꿔줌으로써&amp;nbsp;사람의&amp;nbsp;언어를&amp;nbsp;컴퓨터&amp;nbsp;언어로&amp;nbsp;번역하는&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;날이라는&amp;nbsp;문서의&amp;nbsp;임베딩은&amp;nbsp;[2,&amp;nbsp;1,&amp;nbsp;1]입니다.&amp;nbsp;막걸리라는&amp;nbsp;단어의&amp;nbsp;임베딩은&amp;nbsp;[0,&amp;nbsp;1,&amp;nbsp;0,&amp;nbsp;0]이며,&amp;nbsp;사랑&amp;nbsp;손님과&amp;nbsp;어머니,&amp;nbsp;삼포&amp;nbsp;가는&amp;nbsp;길이&amp;nbsp;사용하는&amp;nbsp;단어&amp;nbsp;목록이&amp;nbsp;상대적으로&amp;nbsp;많이&amp;nbsp;겹치고&amp;nbsp;있는&amp;nbsp;것을&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RaciL/btsFgLP3a41/DdVPcIEkBr0gKJeDkmevrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RaciL/btsFgLP3a41/DdVPcIEkBr0gKJeDkmevrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RaciL/btsFgLP3a41/DdVPcIEkBr0gKJeDkmevrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRaciL%2FbtsFgLP3a41%2FDdVPcIEkBr0gKJeDkmevrK%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;351&quot; height=&quot;358&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&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;u&gt;비슷한 의미&lt;/u&gt;를 지닌 단어는 주변 단어 분포도 비슷하다는 가설.&lt;br /&gt;He&amp;nbsp;is&amp;nbsp;a&amp;nbsp;good&amp;nbsp;guy.&lt;br /&gt;He&amp;nbsp;is&amp;nbsp;a&amp;nbsp;cool&amp;nbsp;guy.&lt;br /&gt;위 문장에서 &lt;u&gt;good&lt;/u&gt;과 &lt;u&gt;cool&lt;/u&gt;은 해당 단어 주변에 분포한 단어(He, is, a, guy)가 유사하기 때문에 비슷한 의미를 지닐 것이라고 추측할 수 있습니다.&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OOd1p/btsFhqq2AKX/M9AA0vLrBDCIWTTNeNNXJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OOd1p/btsFhqq2AKX/M9AA0vLrBDCIWTTNeNNXJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OOd1p/btsFhqq2AKX/M9AA0vLrBDCIWTTNeNNXJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOOd1p%2FbtsFhqq2AKX%2FM9AA0vLrBDCIWTTNeNNXJK%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;439&quot; height=&quot;384&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;/figure&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;1. 문장이 길어지면 벡터의 크기가 기하급수적으로 증가하여 공간적 낭비&lt;br /&gt;2. 단어간 의미적, 구문적 유사도(코사인 유사도를 이용)를 평가하기 어려움&lt;br /&gt;-&amp;gt; 코사인 유사도는 두 벡터를 내적한 값을 분자로 사용합니다. 하지만, 원-핫 인코딩을 적용한 서로 다른 두 벡터의 내적은 항상 0입니다. 따라서 어떤 두 단어를 골라서 코사인 유사도를 구하더라도 그 값은 항상 0이 됩니다. 이렇게 두 단어 사이의 관계를 전혀 알 수 없다면, 모델의 유연성이 매우 떨어지게 됩니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NXW3s/btsFjX9xBck/6ZT2o9awMLrrWJWnIeVz7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NXW3s/btsFjX9xBck/6ZT2o9awMLrrWJWnIeVz7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NXW3s/btsFjX9xBck/6ZT2o9awMLrrWJWnIeVz7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNXW3s%2FbtsFjX9xBck%2F6ZT2o9awMLrrWJWnIeVz7k%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;357&quot; height=&quot;94&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밀집표현(임베딩 벡터) : 사용자가 벡터의 차원(크기)을 맞춰 사용, 벡터값도 0,1이 아닌 실수값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워드 임베딩 : 단어를 밀집표현한 것&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UE4Vq/btsFiM8fV5G/uCI72rjwlwqwcso46FlrV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UE4Vq/btsFiM8fV5G/uCI72rjwlwqwcso46FlrV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UE4Vq/btsFiM8fV5G/uCI72rjwlwqwcso46FlrV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUE4Vq%2FbtsFiM8fV5G%2FuCI72rjwlwqwcso46FlrV0%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;484&quot; height=&quot;384&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;384&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;Word2Vec&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분산표현 : 구글에서 개발한 Word2Vec은 분포 가설(distributional hypothesis)을 가정 하에 표현,&amp;nbsp;분포 가설에 맞춰 해당 단어들을 벡터화한다면 유사한 벡터값이 나올 것 = 의미적으로 가까운 단어이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비슷한&amp;nbsp;실수를&amp;nbsp;지닌&amp;nbsp;벡터는&amp;nbsp;비슷한&amp;nbsp;벡터&amp;nbsp;공간&amp;nbsp;안에&amp;nbsp;위치하게&amp;nbsp;되면서&amp;nbsp;단어&amp;nbsp;간의&amp;nbsp;유사성을&amp;nbsp;계산할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;됩니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Word2Vec은&amp;nbsp;주변&amp;nbsp;단어를&amp;nbsp;타겟으로&amp;nbsp;하여&amp;nbsp;중심&amp;nbsp;단어를&amp;nbsp;예측하는지,&amp;nbsp;혹은&amp;nbsp;중심&amp;nbsp;단어를&amp;nbsp;타겟으로&amp;nbsp;하여&amp;nbsp;주변&amp;nbsp;단어를&amp;nbsp;예측하는지에&amp;nbsp;따라&amp;nbsp;CBow와&amp;nbsp;Skip-gram으로&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;중심 단어를 예측하기 위해서 앞, 뒤로 몇 개의 단어를 볼지를 결정해야 하는데 이 범위를 윈도우(window)라고 합니다. 예를 들어 윈도우 크기가 2이고, 예측하고자 하는 중심 단어가 sat이라고 한다면 앞의 두 단어인 fat와 cat, 그리고 뒤의 두 단어인 on, the를 입력으로 사용합니다. 윈도우 크기가 n이라고 한다면, 실제 중심 단어를 예측하기 위해 참고하려고 하는 주변 단어의 개수는 2n입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BjRtL/btsFfXwCdWR/bR7X09FcL7aLttocR4f9U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BjRtL/btsFfXwCdWR/bR7X09FcL7aLttocR4f9U0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BjRtL/btsFfXwCdWR/bR7X09FcL7aLttocR4f9U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBjRtL%2FbtsFfXwCdWR%2FbR7X09FcL7aLttocR4f9U0%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;467&quot; height=&quot;300&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;슬라이딩 윈도우(sliding window) : &lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;윈도우를 옆으로 움직여서 주변 단어와 중심 단어의 선택을 변경해가며 학습을 위한 데이터 셋을 만드는 것&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;Word2Vec에서 입력은 모두 원-핫 벡터&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;출력층(Output layer)에서 예측하고자 하는 중간 단어의 원-핫 벡터가 레이블로서 필요합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;Word2Vec의 은닉층은 일반적인 은닉층과는 달리 활성화 함수가 존재하지 않으며 룩업 테이블이라는 연산을 담당하는 층으로 투사층(projection layer)이라고 부름 = 얉은 신경망 모델&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/squaY/btsFhpy4PQO/jGbYNyTd5ECHBVarSkjahK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/squaY/btsFhpy4PQO/jGbYNyTd5ECHBVarSkjahK/img.png&quot; data-alt=&quot;윈도우의 크기가 1일 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/squaY/btsFhpy4PQO/jGbYNyTd5ECHBVarSkjahK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsquaY%2FbtsFhpy4PQO%2FjGbYNyTd5ECHBVarSkjahK%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;646&quot; height=&quot;254&quot; data-origin-width=&quot;1268&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우의 크기가 1일 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;M(&lt;/span&gt;투사층의 크기) = 5 = 밀집표현(사용자가 지정하는 벡터의 크기) = 임베딩 벡터의 크기(차원)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;입력층과 투사층 사이의 가중치 W는 V &amp;times; M 행렬이며, 투사층에서 출력층사이의 가중치 W'는 M &amp;times; V 행렬이라는 점입니다. 여기서 V는 단어 집합의 크기를 의미&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;인공 신경망의 훈련 전에 이 가중치 행렬 W와 W'는 랜덤 값을 가지게 됩니다. CBOW는 주변 단어로 중심 단어를 더 정확히 맞추기 위해 계속해서 이 W와 W'를 학습해가는 구조&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N3KpN/btsFhrcBZo5/grjvZuX37jrMsQUR42S8oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N3KpN/btsFhrcBZo5/grjvZuX37jrMsQUR42S8oK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N3KpN/btsFhrcBZo5/grjvZuX37jrMsQUR42S8oK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN3KpN%2FbtsFhrcBZo5%2FgrjvZuX37jrMsQUR42S8oK%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;611&quot; height=&quot;328&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;722&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;입력 벡터와 가중치 W 행렬의 곱은 사실 W행렬의 i번째 행을 그대로 읽어오는 것과(lookup) 동일합니다. 이 작업을 룩업 테이블(lookup table)이라고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/llJzn/btsFiN0AAUB/vKcZtH1yWAJGeaupDk5Q7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/llJzn/btsFiN0AAUB/vKcZtH1yWAJGeaupDk5Q7K/img.png&quot; data-alt=&quot;윈도우의 크기가 2일 경우&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/llJzn/btsFiN0AAUB/vKcZtH1yWAJGeaupDk5Q7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FllJzn%2FbtsFiN0AAUB%2FvKcZtH1yWAJGeaupDk5Q7K%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;647&quot; height=&quot;364&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우의 크기가 2일 경우&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;투사층에서 벡터의 평균을 구함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdIp3X/btsFiutfLFr/EuHF7wn1uT1GiZiQ2lzuIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdIp3X/btsFiutfLFr/EuHF7wn1uT1GiZiQ2lzuIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdIp3X/btsFiutfLFr/EuHF7wn1uT1GiZiQ2lzuIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdIp3X%2FbtsFiutfLFr%2FEuHF7wn1uT1GiZiQ2lzuIk%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;1648&quot; height=&quot;478&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 구해진 평균 벡터는 두번째 가중치 행렬 W'와 곱해집니다. 곱셈의 결과로는 원-핫 벡터들과 차원이 V로 동일한 벡터가 나옵니다. 만약 입력 벡터의 차원이 7이었다면 여기서 나오는 벡터도 마찬가지입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CBOW는 소프트맥스(softmax) 함수를 지나면서 벡터의 각 원소들의 값은 0과 1사이의 실수로, 총 합은 1이 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBvFmI/btsFgK4OzPe/NeiKopXXmBeyhG5q6tB8Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBvFmI/btsFgK4OzPe/NeiKopXXmBeyhG5q6tB8Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBvFmI/btsFgK4OzPe/NeiKopXXmBeyhG5q6tB8Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBvFmI%2FbtsFgK4OzPe%2FNeiKopXXmBeyhG5q6tB8Zk%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;582&quot; height=&quot;241&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다중 클래스 분류 문제를 위한 일종의 스코어 벡터(score vector)입니다. 스코어 벡터의 j번째 인덱스가 가진 0과 1사이의 값은 j번째 단어가 중심 단어일 확률을 나타냅니다. 그리고 이 스코어 벡터의 값은 레이블에 해당하는 벡터인 중심 단어 원-핫 벡터의 값에 가까워져야 합니다. 스코어 벡터를&amp;nbsp; ^라고 하겠습니다. 중심 단어의 원-핫 벡터를&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;로 했을 때, 이 두 벡터값의 오차를 줄이기위해 CBOW는 손실 함수(loss function)로 크로스 엔트로피(cross-entropy) 함수를 사용합니다. 크로스 엔트로피 함수에 중심 단어인 원-핫 벡터와 스코어 벡터를 입력값으로 넣고, 이를 식으로 표현하면 다음과 같습니다. 아래의 식에서 V는 단어 집합의 크기입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;크로스 엔트로피 : 모델에서&amp;nbsp;예측한&amp;nbsp;확률값이&amp;nbsp;실제값과&amp;nbsp;비교했을&amp;nbsp;때&amp;nbsp;틀릴&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;정보량을&amp;nbsp;의미한다.&amp;nbsp;엔트로피와&amp;nbsp;마찬가지로&amp;nbsp;그&amp;nbsp;값이&amp;nbsp;적을&amp;nbsp;수록&amp;nbsp;모델이&amp;nbsp;데이터를&amp;nbsp;더&amp;nbsp;잘&amp;nbsp;예측하는&amp;nbsp;모델임을&amp;nbsp;의미한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qtp9J/btsFfxrpGVR/6KCKPqGWN8K489tV96Fsi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qtp9J/btsFfxrpGVR/6KCKPqGWN8K489tV96Fsi1/img.png&quot; data-alt=&quot;클래스에 대해 예측한 확률값을 q, 실제 값의 확률을 p&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qtp9J/btsFfxrpGVR/6KCKPqGWN8K489tV96Fsi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQtp9J%2FbtsFfxrpGVR%2F6KCKPqGWN8K489tV96Fsi1%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;564&quot; height=&quot;116&quot; data-origin-width=&quot;738&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클래스에 대해 예측한 확률값을 q, 실제 값의 확률을 p&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1)&lt;br /&gt;Q값: 0.0, 1.0, 1.0&lt;br /&gt;크로스 엔트로피: -(log 0 * 1 + log1 *0 + log1* 0)= Infinity&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2)&amp;nbsp;&lt;br /&gt;Q값: 0.8, 0.1, 0.1&lt;br /&gt;크로스 엔트로피: -(log 0.8 * 1 + log 0.1 * 0 + log 0.1 * 0) = 0.32&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3)&amp;nbsp;&lt;br /&gt;Q값: 1, 0, 0&lt;br /&gt;크로스 엔트로피: -(log 1 * 1 + log 0 * 0 + log 0* 0) = 0&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;엔트로피 : 불확실성의 크기&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQit6Y/btsFgrqG7pl/dKeDsypUpkDT71M9QW00mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQit6Y/btsFgrqG7pl/dKeDsypUpkDT71M9QW00mK/img.png&quot; data-alt=&quot;실제 값의 확률을 p&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQit6Y/btsFgrqG7pl/dKeDsypUpkDT71M9QW00mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQit6Y%2FbtsFgrqG7pl%2FdKeDsypUpkDT71M9QW00mK%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;517&quot; height=&quot;148&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제 값의 확률을 p&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동전을 던졌을 때 앞이 나올지 뒤가 나올지 예측하는 문제가 있다고 해보자. 앞이 나올 사건과 뒤가 나올 사건에 대해 예측한 확률 분포값에 따라 각각의 엔트로피를 구해보자.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1)&lt;br /&gt;앞이 나올 확률: 50%&lt;br /&gt;뒤가 나올 확률: 50%&lt;br /&gt;엔트로피: -(0.5 * log0.5 + 0.5*log0.5) = 1&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2)&amp;nbsp;&lt;br /&gt;앞이 나올 확률: 100%&lt;br /&gt;뒤가 나올 확률: 0%&lt;br /&gt;엔트로피: -(1*log1 + 0*log0)= 0&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3)&amp;nbsp;&lt;br /&gt;앞이 나올 확률: 90%&lt;br /&gt;뒤가 나올 확률: 10%&lt;br /&gt;엔트로피: -(0.9*log0.9 + 0.1*log0.1)= 0.47&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1번 케이스는 그만큼 어떤 면이 나올지 불확실하기 때문에 엔트로피 값이 가장 큰 1&lt;/b&gt;&lt;span style=&quot;color: #555555; text-align: start;&quot;&gt;이 나왔다. 반면 앞이 나올&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;확률이 100%이기 때문에 의심할 여지가없는 2번 케이스의 경우 엔트로피가 가장 낮은 0이&lt;/b&gt;&lt;span style=&quot;color: #555555; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;나왔다.&lt;span&gt; &lt;br /&gt;&lt;span style=&quot;color: #555555; text-align: start;&quot;&gt;분류해야하는 타겟의 클래스가 앞과 뒤, 두가지 였으므로 2^ 1=2로 엔트로의 최대값이 1이된다. 만일 구분해야하는 클래스가 8개라면 엔트로피의 최대값은 2^3=8로 3이 된다. 분류해야할 클래스가 32개라면 2^5= 32로 엔트로피 최대값은 5가 된다.&amp;nbsp;&lt;/span&gt;&lt;/span&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;&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;1598&quot; data-origin-height=&quot;846&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WH1ix/btsFjVjM0gZ/pZEIVPMsJNhygV7Aj3kzKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WH1ix/btsFjVjM0gZ/pZEIVPMsJNhygV7Aj3kzKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WH1ix/btsFjVjM0gZ/pZEIVPMsJNhygV7Aj3kzKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWH1ix%2FbtsFjVjM0gZ%2FpZEIVPMsJNhygV7Aj3kzKK%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;1598&quot; height=&quot;846&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;846&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;&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;</description>
      <category>&amp;lt;DL&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/549</guid>
      <comments>https://9566.tistory.com/549#entry549comment</comments>
      <pubDate>Sun, 25 Feb 2024 20:29:54 +0900</pubDate>
    </item>
    <item>
      <title>.aab .apk</title>
      <link>https://9566.tistory.com/547</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnPutt/btsA7xHxVlp/s5C2GmEBBqWJ0bvI8vjz01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnPutt/btsA7xHxVlp/s5C2GmEBBqWJ0bvI8vjz01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnPutt/btsA7xHxVlp/s5C2GmEBBqWJ0bvI8vjz01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnPutt%2FbtsA7xHxVlp%2Fs5C2GmEBBqWJ0bvI8vjz01%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;550&quot; height=&quot;535&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;Build APK(s) -&amp;gt; .apk(이미 완성된 안드로이드 앱 파일)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;Build Bundle(s) -&amp;gt; .aab(.apk를 완성해주는 요소를 담은 패키지)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;구글은 2021년 8월부터 '구글 플레이에 올라오는 모든 안드로이드 앱은 AAB 형식이어야한다'며 스토어 정책을 변경&lt;/span&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #777777; text-align: center;&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>.aab</category>
      <category>AAB</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/547</guid>
      <comments>https://9566.tistory.com/547#entry547comment</comments>
      <pubDate>Tue, 28 Nov 2023 15:00:24 +0900</pubDate>
    </item>
    <item>
      <title>맥에 리눅스 명령어 및 설치</title>
      <link>https://9566.tistory.com/546</link>
      <description>&lt;pre id=&quot;code_1694663909738&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/usr/bin/env bash

set -eu
wget https://srtm.csi.cgiar.org/wp-content/uploads/files/250m/SRTM_NE_250m_TIF.rar &amp;amp;&amp;amp; \
wget https://srtm.csi.cgiar.org/wp-content/uploads/files/250m/SRTM_SE_250m_TIF.rar &amp;amp;&amp;amp; \
wget https://srtm.csi.cgiar.org/wp-content/uploads/files/250m/SRTM_W_250m_TIF.rar &amp;amp;&amp;amp; \
unar -f SRTM_NE_250m_TIF.rar &amp;amp;&amp;amp; \
unar -f SRTM_SE_250m_TIF.rar &amp;amp;&amp;amp; \
unar -f SRTM_W_250m_TIF.rar&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;set -eu: 이 명령은 스크립트를 실행할 때 오류가 발생하면 스크립트를 중지하도록 설정합니다. -e 옵션은 오류(실패)가 발생하면 즉시 종료하고, -u 옵션은 정의되지 않은 변수를 사용하려고 할 때 오류를 발생시킵니다.&lt;/li&gt;
&lt;li&gt;wget 명령어: 이 명령어를 사용하여 웹에서 파일을 다운로드합니다. 각 wget 명령어는 SRTM 데이터 파일을 다운로드합니다.&lt;/li&gt;
&lt;li&gt;unar 명령어: 이 명령어는 unar를 사용하여 RAR 압축 파일을 해제합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1694664101057&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pwd # 현재위치 확인
brew install wget # wget 설치
which wget # wget 저장위치
wget -V # wget 버젼
brew install unar # unar 설치

chmod +x download-strm-data.sh # 권한 부여
./download-strm-data.sh # bash 파일 실행&lt;/code&gt;&lt;/pre&gt;</description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/546</guid>
      <comments>https://9566.tistory.com/546#entry546comment</comments>
      <pubDate>Thu, 14 Sep 2023 13:02:36 +0900</pubDate>
    </item>
    <item>
      <title>파이참 def 디버깅</title>
      <link>https://9566.tistory.com/545</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;파이참에서 디버그로 코드를 돌리는데&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1694599785035&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import numpy as np
import tensorflow as tf

# 학습 모델 종류 설정
model_prefix = &quot;lstm&quot;

total_length = 10000  # 10 km
window_size = int(total_length/link_length) 
shift_size = int(window_size/2) 

dp = DataPreprocessor(window_size=window_size, link_length=link_length, shift_size=shift_size, batch_size=1)&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;아래와 같이 def()형태로만 되어있는 코드가 돌아가는게 이해가 안갔다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1694599895447&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd
import requests
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
# @csrf_exempt 데코레이터는 Django 프레임워크에서 사용되며, Cross-Site Request Forgery (CSRF) 공격 방어 메커니즘을 해제하는 데 사용됩니다. 
# 이 데코레이터는 CSRF 보호를 해제하고 특정 뷰 또는 뷰 함수에서 CSRF 검사를 비활성화합니다. 
def get_road_info(request):
    lat_value = request.GET['lat']
    long_value = request.GET['long']

    key = &quot;&quot;
    url = &quot;https://apis.openapi.sk.com/tmap/routes?version=1&amp;amp;format=json&amp;amp;callback=result&quot;
    data = {&quot;appKey&quot;: key,
    return HttpResponse(res)&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;pre id=&quot;code_1694600556913&quot; class=&quot;gml&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def sum(x, y):
	return x+y

sum(1,3)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;처럼 def로 함수가 정의되고 최종적으로&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수를&lt;span&gt; &lt;/span&gt;실행하는&lt;span&gt; &lt;/span&gt;코드는&lt;span&gt; &lt;/span&gt;없지&lt;span&gt; &lt;/span&gt;않나?&lt;span&gt;&amp;nbsp;&lt;/span&gt;어떻게&lt;span&gt; &lt;/span&gt;실행되는&lt;span&gt; &lt;/span&gt;건가&lt;span&gt;? 등&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;코드가 돌아가지 않나 생각했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 아래 코드는 그냥 파이썬 파일이 아니라 장고 서버의 view 파일(모델&lt;span&gt;-&lt;/span&gt;뷰&lt;span&gt;-&lt;/span&gt;컨트롤러&lt;span&gt;(MVC) &lt;/span&gt;아키텍처)이었고&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;장고에서 뷰는 http로 요청을 받고 처리하는 역할을 하면서 함수/클래스 형식으로 정의된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/545</guid>
      <comments>https://9566.tistory.com/545#entry545comment</comments>
      <pubDate>Wed, 13 Sep 2023 19:58:18 +0900</pubDate>
    </item>
    <item>
      <title>json 트리구조 만들기</title>
      <link>https://9566.tistory.com/544</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jsonformatter.curiousconcept.com/#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jsonformatter.curiousconcept.com/#&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>json 트리구조</category>
      <category>json 트리구조 만들기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/544</guid>
      <comments>https://9566.tistory.com/544#entry544comment</comments>
      <pubDate>Wed, 13 Sep 2023 00:22:06 +0900</pubDate>
    </item>
    <item>
      <title>코랩 ip 주소 확인 코드</title>
      <link>https://9566.tistory.com/543</link>
      <description>&lt;pre id=&quot;code_1694532040730&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;!curl ipecho.net/plain&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IP주소</category>
      <category>코랩 ip</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/543</guid>
      <comments>https://9566.tistory.com/543#entry543comment</comments>
      <pubDate>Wed, 13 Sep 2023 00:21:21 +0900</pubDate>
    </item>
    <item>
      <title>Weather Observation Station 19</title>
      <link>https://9566.tistory.com/542</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Weather&amp;nbsp;Observation&amp;nbsp;Station&amp;nbsp;19 &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;DB2,&amp;nbsp;ORACLE,&amp;nbsp;MYSQL,&amp;nbsp;MS&amp;nbsp;SQL&amp;nbsp;SERVER &lt;br /&gt;SELECT &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CAST( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROUND( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SQRT(POWER((MAX(long_w)-MIN(long_W)),2)+POWER((MAX(lat_n)-MIN(lat_n)),2)),4 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;AS&amp;nbsp;DECIMAL(20,4)&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) &lt;br /&gt;FROM&amp;nbsp;STATION;&lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>&amp;lt;HackerRank&amp;gt;</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/542</guid>
      <comments>https://9566.tistory.com/542#entry542comment</comments>
      <pubDate>Wed, 19 Jul 2023 21:35:48 +0900</pubDate>
    </item>
    <item>
      <title>Weather Observation Station 18</title>
      <link>https://9566.tistory.com/541</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Weather&amp;nbsp;Observation&amp;nbsp;Station&amp;nbsp;18 &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;WITH&amp;nbsp;POINTS&amp;nbsp;as&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MIN(LAT_N)&amp;nbsp;AS&amp;nbsp;a, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MIN(LONG_W)&amp;nbsp;AS&amp;nbsp;b, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MAX(LAT_N)&amp;nbsp;AS&amp;nbsp;c, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MAX(LONG_W)&amp;nbsp;AS&amp;nbsp;d &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;STATION &lt;br /&gt;) &lt;br /&gt;SELECT&amp;nbsp;ROUND(ABS((a-c)+(b-d)),4) &lt;br /&gt;FROM&amp;nbsp;POINTS &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MS&amp;nbsp;SQL&amp;nbsp;SERVER &lt;br /&gt;SELECT&amp;nbsp;CAST(ABS((max(LAT_N)&amp;nbsp;-&amp;nbsp;min(LAT_N))&amp;nbsp;+&amp;nbsp;(max(LONG_W)&amp;nbsp;-&amp;nbsp;min(LONG_W)))&amp;nbsp;AS&amp;nbsp;decimal(10,4))&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;station &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;select&amp;nbsp;round(max(LAT_N)-min(LAT_N)+max(LONG_W)-min(LONG_W),4)&amp;nbsp;from&amp;nbsp;STATION; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;DB2 &lt;br /&gt;SELECT &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CAST( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROUND( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ABS(MIN(LAT_N)&amp;nbsp;-&amp;nbsp;MAX(LAT_N))&amp;nbsp;+ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ABS(MIN(LONG_W)&amp;nbsp;-&amp;nbsp;MAX(LONG_W)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;AS&amp;nbsp;DECIMAL(20,4)&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) &lt;br /&gt;FROM&amp;nbsp;STATION;&lt;/p&gt;</description>
      <category>&amp;lt;HackerRank&amp;gt;</category>
      <category>Weather Observation Station 18</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/541</guid>
      <comments>https://9566.tistory.com/541#entry541comment</comments>
      <pubDate>Mon, 17 Jul 2023 21:25:42 +0900</pubDate>
    </item>
    <item>
      <title>NEW Companies</title>
      <link>https://9566.tistory.com/540</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;NEW&amp;nbsp;Companies &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689336759539&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- MYSQL
SELECT 
    e.company_code,
    c.founder,
    count( DISTINCT e.lead_manager_code ),
    count( DISTINCT e.senior_manager_code ), 
    count( DISTINCT e.manager_code ), 
    count( DISTINCT e.employee_code )
FROM 
    Employee e, 
    Company c
WHERE e.company_code = c.company_code
GROUP BY company_code, founder;&lt;/code&gt;&lt;/pre&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1689336775133&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- oracle, db2
select c.company_code, 
       c.founder, 
       count(distinct e.lead_manager_code),
       count(distinct e.senior_manager_code),
       count(distinct e.manager_code),
       count(distinct e.employee_code)
from employee e
join company c on e.company_code = c.company_code
group by c.company_code, c.founder
order by c.company_code;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1689336785383&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- MS SQL Server
SELECT C.company_code
        , C.founder
        , COUNT(DISTINCT(E.lead_manager_code))
        , COUNT(DISTINCT(E.senior_manager_code))
        , COUNT(DISTINCT(E.manager_code))
        , COUNT(DISTINCT(E.employee_code))
FROM Company C
     LEFT JOIN Employee E ON E.company_code = C.company_code
GROUP BY C.company_code, C.founder
ORDER BY C.company_code ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>&amp;lt;HackerRank&amp;gt;</category>
      <category>New Companies</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/540</guid>
      <comments>https://9566.tistory.com/540#entry540comment</comments>
      <pubDate>Fri, 14 Jul 2023 21:13:25 +0900</pubDate>
    </item>
    <item>
      <title>Binary Tree Nodes</title>
      <link>https://9566.tistory.com/539</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Binary&amp;nbsp;Tree&amp;nbsp;Nodes &lt;br /&gt;--&amp;nbsp;DB2,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;N,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(CASE&amp;nbsp;WHEN&amp;nbsp;P&amp;nbsp;IS&amp;nbsp;NULL&amp;nbsp;THEN&amp;nbsp;'Root'&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;N&amp;nbsp;NOT&amp;nbsp;IN&amp;nbsp;(SELECT&amp;nbsp;NVL(P,0)&amp;nbsp;FROM&amp;nbsp;BST)&amp;nbsp;THEN&amp;nbsp;'Leaf'&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE&amp;nbsp;'Inner'&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;END)&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;BST&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;N; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL,&amp;nbsp;MS&amp;nbsp;SQL&amp;nbsp;SERVER &lt;br /&gt;SELECT&amp;nbsp;N&amp;nbsp;,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CASE&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;p&amp;nbsp;IS&amp;nbsp;NULL&amp;nbsp;THEN&amp;nbsp;&quot;Root&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;N&amp;nbsp;IN&amp;nbsp;(SELECT&amp;nbsp;DISTINCT&amp;nbsp;P&amp;nbsp;FROM&amp;nbsp;BST)&amp;nbsp;THEN&amp;nbsp;&quot;Inner&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE&amp;nbsp;&quot;Leaf&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;END &lt;br /&gt;FROM&amp;nbsp;BST&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;N;&lt;/p&gt;</description>
      <category>&amp;lt;HackerRank&amp;gt;</category>
      <category>Binary Tree Nodes</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/539</guid>
      <comments>https://9566.tistory.com/539#entry539comment</comments>
      <pubDate>Wed, 12 Jul 2023 21:36:26 +0900</pubDate>
    </item>
    <item>
      <title>DD</title>
      <link>https://9566.tistory.com/538</link>
      <description></description>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/538</guid>
      <comments>https://9566.tistory.com/538#entry538comment</comments>
      <pubDate>Wed, 12 Jul 2023 21:36:05 +0900</pubDate>
    </item>
    <item>
      <title>The PADS</title>
      <link>https://9566.tistory.com/537</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;The&amp;nbsp;PADS &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;DB2 &lt;br /&gt;SELECT&amp;nbsp;(name&amp;nbsp;||&amp;nbsp;'('&amp;nbsp;||&amp;nbsp;SUBSTR(occupation,1,1)&amp;nbsp;||&amp;nbsp;')')&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;occupations&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;name;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;('There&amp;nbsp;are&amp;nbsp;a&amp;nbsp;total&amp;nbsp;of&amp;nbsp;'&amp;nbsp;||&amp;nbsp;COUNT(occupation)&amp;nbsp;||&amp;nbsp;'&amp;nbsp;'&amp;nbsp;||&amp;nbsp;LOWER(occupation)&amp;nbsp;||&amp;nbsp;'s'&amp;nbsp;||&amp;nbsp;'.')&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;occupations&amp;nbsp; &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;occupation&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;COUNT(occupation),&amp;nbsp;occupation&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;SELECT&amp;nbsp;CONCAT(Name,&amp;nbsp;'(',&amp;nbsp;(SUBSTRING(Occupation,&amp;nbsp;1,&amp;nbsp;1)),&amp;nbsp;')') &lt;br /&gt;FROM&amp;nbsp;OCCUPATIONS &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;Name&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;CONCAT('There&amp;nbsp;are&amp;nbsp;a&amp;nbsp;total&amp;nbsp;of&amp;nbsp;',&amp;nbsp;COUNT(OCCUPATION),&amp;nbsp;'&amp;nbsp;',&amp;nbsp;LOWER(Occupation),&amp;nbsp;'s.') &lt;br /&gt;FROM&amp;nbsp;OCCUPATIONS &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;OCCUPATION &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;COUNT(OCCUPATION)&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;NAME&amp;nbsp;||&amp;nbsp;'('&amp;nbsp;||&amp;nbsp;SUBSTR(OCCUPATION,&amp;nbsp;1,1)&amp;nbsp;||&amp;nbsp;')'&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;OCCUPATIONS&amp;nbsp;&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;NAME&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;'There&amp;nbsp;are&amp;nbsp;a&amp;nbsp;total&amp;nbsp;of&amp;nbsp;'&amp;nbsp;||&amp;nbsp;COUNT(OCCUPATION)&amp;nbsp;||&amp;nbsp;'&amp;nbsp;'&amp;nbsp;||&amp;nbsp;LOWER(occupation)&amp;nbsp;||&amp;nbsp;'s.'&amp;nbsp;FROM&amp;nbsp;OCCUPATIONS&amp;nbsp; &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;OCCUPATION&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;COUNT(NAME),&amp;nbsp;OCCUPATION&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MSSQL&amp;nbsp;SERVER &lt;br /&gt;SELECT&amp;nbsp;CONCAT(Name,&amp;nbsp;'(',&amp;nbsp;(SUBSTRING(Occupation,&amp;nbsp;1,&amp;nbsp;1)),&amp;nbsp;')') &lt;br /&gt;FROM&amp;nbsp;OCCUPATIONS &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;Name&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;CONCAT('There&amp;nbsp;are&amp;nbsp;a&amp;nbsp;total&amp;nbsp;of&amp;nbsp;',&amp;nbsp;COUNT(OCCUPATION),&amp;nbsp;'&amp;nbsp;',&amp;nbsp;LOWER(Occupation),&amp;nbsp;'s.') &lt;br /&gt;FROM&amp;nbsp;OCCUPATIONS &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;OCCUPATION &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;COUNT(OCCUPATION)&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>&amp;lt;HackerRank&amp;gt;</category>
      <category>the PADS</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/537</guid>
      <comments>https://9566.tistory.com/537#entry537comment</comments>
      <pubDate>Mon, 10 Jul 2023 21:45:49 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 특정 옵션이 포함된 자동차 리스트 구하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/536</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;특정&amp;nbsp;옵션이&amp;nbsp;포함된&amp;nbsp;자동차&amp;nbsp;리스트&amp;nbsp;구하기 &lt;br /&gt;CAR_RENTAL_COMPANY_CAR&amp;nbsp;테이블에서&amp;nbsp;'네비게이션'&amp;nbsp;옵션이&amp;nbsp;포함된&amp;nbsp;자동차&amp;nbsp;리스트를&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;결과는&amp;nbsp;자동차&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;--&amp;nbsp;MYSQL,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;CAR_ID,&amp;nbsp;CAR_TYPE,&amp;nbsp;DAILY_FEE,&amp;nbsp;OPTIONS &lt;br /&gt;FROM&amp;nbsp;CAR_RENTAL_COMPANY_CAR &lt;br /&gt;WHERE&amp;nbsp;OPTIONS&amp;nbsp;LIKE&amp;nbsp;'%네비게이션%' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;CAR_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>SQL 프로그래머스 STRING</category>
      <category>특정 옵션이 포함된 자동차 리스트 구하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/536</guid>
      <comments>https://9566.tistory.com/536#entry536comment</comments>
      <pubDate>Sat, 8 Jul 2023 15:50:46 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 자동차 대여 기록에서 장기/단기 대여 구분하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/535</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자동차&amp;nbsp;대여&amp;nbsp;기록에서&amp;nbsp;장기/단기&amp;nbsp;대여&amp;nbsp;구분하기 &lt;br /&gt;CAR_RENTAL_COMPANY_RENTAL_HISTORY&amp;nbsp;테이블에서&amp;nbsp;대여&amp;nbsp;시작일이&amp;nbsp;2022년&amp;nbsp;9월에&amp;nbsp;속하는&amp;nbsp;대여&amp;nbsp;기록에&amp;nbsp;대해서&amp;nbsp;대여&amp;nbsp;기간이&amp;nbsp;30일&amp;nbsp;이상이면&amp;nbsp;'장기&amp;nbsp;대여'&amp;nbsp;그렇지&amp;nbsp;않으면&amp;nbsp;'단기&amp;nbsp;대여'&amp;nbsp;로&amp;nbsp;표시하는&amp;nbsp;컬럼(컬럼명:&amp;nbsp;RENT_TYPE)을&amp;nbsp;추가하여&amp;nbsp;대여기록을&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;결과는&amp;nbsp;대여&amp;nbsp;기록&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;HISTORY_ID,&amp;nbsp;CAR_ID,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DATE_FORMAT(START_DATE,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;AS&amp;nbsp;START_DATE,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DATE_FORMAT(END_DATE,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;AS&amp;nbsp;END_DATE, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CASE&amp;nbsp;WHEN&amp;nbsp;DATEDIFF(END_DATE,&amp;nbsp;START_DATE)+1&amp;nbsp;&amp;gt;=&amp;nbsp;'30'&amp;nbsp;THEN&amp;nbsp;'장기&amp;nbsp;대여'&amp;nbsp;ELSE&amp;nbsp;'단기&amp;nbsp;대여'&amp;nbsp;END&amp;nbsp;AS&amp;nbsp;RENT_TYPE &lt;br /&gt;FROM&amp;nbsp;CAR_RENTAL_COMPANY_RENTAL_HISTORY &lt;br /&gt;WHERE&amp;nbsp;DATE_FORMAT(START_DATE,&amp;nbsp;'%m')&amp;nbsp;=&amp;nbsp;'09' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;HISTORY_ID&amp;nbsp;DESC; &lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;HISTORY_ID,&amp;nbsp;CAR_ID,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TO_CHAR(START_DATE,&amp;nbsp;'YYYY-MM-DD')&amp;nbsp;AS&amp;nbsp;START_DATE,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TO_CHAR(END_DATE,&amp;nbsp;'YYYY-MM-DD')&amp;nbsp;AS&amp;nbsp;END_DATE, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CASE&amp;nbsp;WHEN&amp;nbsp;(END_DATE-START_DATE+1)&amp;nbsp;&amp;gt;=&amp;nbsp;'30'&amp;nbsp;THEN&amp;nbsp;'장기&amp;nbsp;대여'&amp;nbsp;ELSE&amp;nbsp;'단기&amp;nbsp;대여'&amp;nbsp;END&amp;nbsp;AS&amp;nbsp;RENT_TYPE &lt;br /&gt;FROM&amp;nbsp;CAR_RENTAL_COMPANY_RENTAL_HISTORY &lt;br /&gt;WHERE&amp;nbsp;TO_CHAR(START_DATE,&amp;nbsp;'MM')&amp;nbsp;=&amp;nbsp;'09' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;HISTORY_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>SQL 프로그래머스 STRING</category>
      <category>자동차 대여 기록에서 장기/단기 대여 구분하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/535</guid>
      <comments>https://9566.tistory.com/535#entry535comment</comments>
      <pubDate>Wed, 5 Jul 2023 21:10:42 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 조건에 맞는 회원수 구하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/534</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;조건에&amp;nbsp;맞는&amp;nbsp;회원수&amp;nbsp;구하기 &lt;br /&gt;USER_INFO&amp;nbsp;테이블에서&amp;nbsp;2021년에&amp;nbsp;가입한&amp;nbsp;회원&amp;nbsp;중&amp;nbsp;나이가&amp;nbsp;20세&amp;nbsp;이상&amp;nbsp;29세&amp;nbsp;이하인&amp;nbsp;회원이&amp;nbsp;몇&amp;nbsp;명인지&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;COUNT(USER_ID)&amp;nbsp;AS&amp;nbsp;USERS &lt;br /&gt;FROM&amp;nbsp;USER_INFO&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;DATE_FORMAT(JOINED,&amp;nbsp;'%Y')&amp;nbsp;=&amp;nbsp;'2021' &lt;br /&gt;AND&amp;nbsp;AGE&amp;nbsp;BETWEEN&amp;nbsp;20&amp;nbsp;AND&amp;nbsp;29 &lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;COUNT(USER_ID)&amp;nbsp;AS&amp;nbsp;USERS &lt;br /&gt;FROM&amp;nbsp;USER_INFO&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;TO_CHAR(JOINED,&amp;nbsp;'YYYY')&amp;nbsp;=&amp;nbsp;'2021' &lt;br /&gt;AND&amp;nbsp;AGE&amp;nbsp;BETWEEN&amp;nbsp;20&amp;nbsp;AND&amp;nbsp;29&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <category>조건에 맞는 회원수 구하기</category>
      <category>프로그래머스 select</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/534</guid>
      <comments>https://9566.tistory.com/534#entry534comment</comments>
      <pubDate>Sat, 1 Jul 2023 20:58:09 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 인기있는 아이스크림(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/533</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인기있는&amp;nbsp;아이스크림 &lt;br /&gt;상반기에&amp;nbsp;판매된&amp;nbsp;아이스크림의&amp;nbsp;맛을&amp;nbsp;총주문량을&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬하고&amp;nbsp;총주문량이&amp;nbsp;같다면&amp;nbsp;출하&amp;nbsp;번호를&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬하여&amp;nbsp;조회하는&amp;nbsp;SQL&amp;nbsp;문을&amp;nbsp;작성해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;FLAVOR &lt;br /&gt;FROM&amp;nbsp;FIRST_HALF&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;TOTAL_ORDER&amp;nbsp;DESC,&amp;nbsp;SHIPMENT_ID&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <category>인기있는 아이스크림</category>
      <category>프로그래머스 select</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/533</guid>
      <comments>https://9566.tistory.com/533#entry533comment</comments>
      <pubDate>Sat, 1 Jul 2023 19:18:48 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 12세 이하인 여자 환자 목록 출력하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/532</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;12세&amp;nbsp;이하인&amp;nbsp;여자&amp;nbsp;환자&amp;nbsp;목록&amp;nbsp;출력하기 &lt;br /&gt;PATIENT&amp;nbsp;테이블에서&amp;nbsp;12세&amp;nbsp;이하인&amp;nbsp;여자환자의&amp;nbsp;환자이름,&amp;nbsp;환자번호,&amp;nbsp;성별코드,&amp;nbsp;나이,&amp;nbsp;전화번호를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때&amp;nbsp;전화번호가&amp;nbsp;없는&amp;nbsp;경우,&amp;nbsp;'NONE'으로&amp;nbsp;출력시켜&amp;nbsp;주시고&amp;nbsp;결과는&amp;nbsp;나이를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬하고,&amp;nbsp;나이&amp;nbsp;같다면&amp;nbsp;환자이름을&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;SELECT&amp;nbsp;PT_NAME,&amp;nbsp;PT_NO,&amp;nbsp;GEND_CD,&amp;nbsp;AGE,&amp;nbsp;COALESCE(TLNO,&amp;nbsp;'NONE')&amp;nbsp;AS&amp;nbsp;TLNO &lt;br /&gt;FROM&amp;nbsp;PATIENT&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;AGE&amp;nbsp;&amp;lt;=&amp;nbsp;12 &lt;br /&gt;AND&amp;nbsp;GEND_CD&amp;nbsp;=&amp;nbsp;'W' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;AGE&amp;nbsp;DESC,&amp;nbsp;PT_NAME&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;PT_NAME,&amp;nbsp;PT_NO,&amp;nbsp;GEND_CD,&amp;nbsp;AGE,&amp;nbsp;NVL(TLNO,&amp;nbsp;'NONE')&amp;nbsp;AS&amp;nbsp;TLNO &lt;br /&gt;FROM&amp;nbsp;PATIENT&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;AGE&amp;nbsp;&amp;lt;=&amp;nbsp;12 &lt;br /&gt;AND&amp;nbsp;GEND_CD&amp;nbsp;=&amp;nbsp;'W' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;AGE&amp;nbsp;DESC,&amp;nbsp;PT_NAME&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>12세 이하인 여자 환자 목록 출력하기</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/532</guid>
      <comments>https://9566.tistory.com/532#entry532comment</comments>
      <pubDate>Thu, 29 Jun 2023 23:46:11 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 조건에 맞는 도서 리스트 출력하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/531</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;조건에&amp;nbsp;맞는&amp;nbsp;도서&amp;nbsp;리스트&amp;nbsp;출력하기 &lt;br /&gt;BOOK&amp;nbsp;테이블에서&amp;nbsp;2021년에&amp;nbsp;출판된&amp;nbsp;'인문'&amp;nbsp;카테고리에&amp;nbsp;속하는&amp;nbsp;도서&amp;nbsp;리스트를&amp;nbsp;찾아서&amp;nbsp;도서&amp;nbsp;ID(BOOK_ID),&amp;nbsp;출판일&amp;nbsp;(PUBLISHED_DATE)을&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요. &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;SELECT&amp;nbsp;BOOK_ID,&amp;nbsp;DATE_FORMAT(PUBLISHED_DATE,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;AS&amp;nbsp;PUBLISHED_DATE &lt;br /&gt;FROM&amp;nbsp;BOOK&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;DATE_FORMAT(PUBLISHED_DATE,&amp;nbsp;'%Y')&amp;nbsp;=&amp;nbsp;'2021' &lt;br /&gt;AND&amp;nbsp;CATEGORY&amp;nbsp;=&amp;nbsp;'인문' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;PUBLISHED_DATE&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;BOOK_ID,&amp;nbsp;TO_CHAR(PUBLISHED_DATE,&amp;nbsp;'YYYY-MM-DD')&amp;nbsp;AS&amp;nbsp;PUBLISHED_DATE &lt;br /&gt;FROM&amp;nbsp;BOOK&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;TO_CHAR(PUBLISHED_DATE,&amp;nbsp;'YYYY')&amp;nbsp;=&amp;nbsp;'2021' &lt;br /&gt;AND&amp;nbsp;CATEGORY&amp;nbsp;=&amp;nbsp;'인문' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;PUBLISHED_DATE&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <category>조건에 맞는 도서 리스트 출력하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/531</guid>
      <comments>https://9566.tistory.com/531#entry531comment</comments>
      <pubDate>Wed, 28 Jun 2023 20:15:56 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 평균 일일 대여 요금 구하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/530</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;평균&amp;nbsp;일일&amp;nbsp;대여&amp;nbsp;요금&amp;nbsp;구하기 &lt;br /&gt;CAR_RENTAL_COMPANY_CAR&amp;nbsp;테이블에서&amp;nbsp;자동차&amp;nbsp;종류가&amp;nbsp;'SUV'인&amp;nbsp;자동차들의&amp;nbsp;평균&amp;nbsp;일일&amp;nbsp;대여&amp;nbsp;요금을&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때&amp;nbsp;평균&amp;nbsp;일일&amp;nbsp;대여&amp;nbsp;요금은&amp;nbsp;소수&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;자리에서&amp;nbsp;반올림하고,&amp;nbsp;컬럼명은&amp;nbsp;AVERAGE_FEE&amp;nbsp;로&amp;nbsp;지정해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;ROUND(AVG(DAILY_FEE),&amp;nbsp;0)&amp;nbsp;AS&amp;nbsp;AVERAGE_FEE&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;CAR_RENTAL_COMPANY_CAR&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;CAR_TYPE&amp;nbsp;=&amp;nbsp;'SUV'&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <category>평균 일일 대여 요금 구하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/530</guid>
      <comments>https://9566.tistory.com/530#entry530comment</comments>
      <pubDate>Tue, 27 Jun 2023 23:39:10 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 흉부외과 또는 일반외과 의사 목록 출력하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/529</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;흉부외과&amp;nbsp;또는&amp;nbsp;일반외과&amp;nbsp;의사&amp;nbsp;목록&amp;nbsp;출력하기 &lt;br /&gt;DOCTOR&amp;nbsp;테이블에서&amp;nbsp;진료과가&amp;nbsp;흉부외과(CS)이거나&amp;nbsp;일반외과(GS)인&amp;nbsp;의사의&amp;nbsp;이름,&amp;nbsp;의사ID,&amp;nbsp;진료과,&amp;nbsp;고용일자를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때&amp;nbsp;결과는&amp;nbsp;고용일자를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬하고,&amp;nbsp;고용일자가&amp;nbsp;같다면&amp;nbsp;이름을&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주세요. &lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;SELECT&amp;nbsp;DR_NAME,&amp;nbsp;DR_ID,&amp;nbsp;MCDP_CD,&amp;nbsp;DATE_FORMAT(HIRE_YMD,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;AS&amp;nbsp;HIRE_YMD &lt;br /&gt;FROM&amp;nbsp;DOCTOR&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;MCDP_CD&amp;nbsp;IN&amp;nbsp;('CS',&amp;nbsp;'GS') &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;HIRE_YMD&amp;nbsp;DESC,&amp;nbsp;DR_NAME&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;DR_NAME,&amp;nbsp;DR_ID,&amp;nbsp;MCDP_CD,&amp;nbsp;TO_CHAR(HIRE_YMD,&amp;nbsp;'YYYY-MM-DD')&amp;nbsp;AS&amp;nbsp;HIRE_YMD &lt;br /&gt;FROM&amp;nbsp;DOCTOR&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;MCDP_CD&amp;nbsp;IN&amp;nbsp;('CS',&amp;nbsp;'GS') &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;HIRE_YMD&amp;nbsp;DESC,&amp;nbsp;DR_NAME&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <category>흉부외과 또는 일반외과 의사 목록 출력하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/529</guid>
      <comments>https://9566.tistory.com/529#entry529comment</comments>
      <pubDate>Sun, 25 Jun 2023 16:02:24 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 강원도에 위치한 생산공장 목록 출력하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/528</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;강원도에&amp;nbsp;위치한&amp;nbsp;생산공장&amp;nbsp;목록&amp;nbsp;출력하기 &lt;br /&gt;FOOD_FACTORY&amp;nbsp;테이블에서&amp;nbsp;강원도에&amp;nbsp;위치한&amp;nbsp;식품공장의&amp;nbsp;공장&amp;nbsp;ID,&amp;nbsp;공장&amp;nbsp;이름,&amp;nbsp;주소를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때&amp;nbsp;결과는&amp;nbsp;공장&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;FACTORY_ID,&amp;nbsp;FACTORY_NAME,&amp;nbsp;ADDRESS &lt;br /&gt;FROM&amp;nbsp;FOOD_FACTORY&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;ADDRESS&amp;nbsp;LIKE&amp;nbsp;'강원도%' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;FACTORY_ID&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>select</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>SQL 프로그래머스 SELECT</category>
      <category>강원도에 위치한 생산공장 목록 출력하기</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/528</guid>
      <comments>https://9566.tistory.com/528#entry528comment</comments>
      <pubDate>Sat, 24 Jun 2023 20:09:59 +0900</pubDate>
    </item>
    <item>
      <title>Google 검색 실적</title>
      <link>https://9566.tistory.com/527</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vRZ4G/btskKli052a/6dgbOaAM6MeRfj60Y1XBe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vRZ4G/btskKli052a/6dgbOaAM6MeRfj60Y1XBe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vRZ4G/btskKli052a/6dgbOaAM6MeRfj60Y1XBe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvRZ4G%2FbtskKli052a%2F6dgbOaAM6MeRfj60Y1XBe0%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;1780&quot; height=&quot;1022&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>&amp;lt;ETC&amp;gt;</category>
      <category>Google 검색 실적</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/527</guid>
      <comments>https://9566.tistory.com/527#entry527comment</comments>
      <pubDate>Tue, 20 Jun 2023 23:24:39 +0900</pubDate>
    </item>
    <item>
      <title>깃허브 잔디심기 3년</title>
      <link>https://9566.tistory.com/526</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brnI0U/btskiyQnd1U/KfrO8pia875BLQv7JlvPck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brnI0U/btskiyQnd1U/KfrO8pia875BLQv7JlvPck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brnI0U/btskiyQnd1U/KfrO8pia875BLQv7JlvPck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrnI0U%2FbtskiyQnd1U%2FKfrO8pia875BLQv7JlvPck%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;1100&quot; height=&quot;241&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/covCpI/btskk9pgFp2/CSMkvNxk7UpruXtkHihF8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/covCpI/btskk9pgFp2/CSMkvNxk7UpruXtkHihF8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/covCpI/btskk9pgFp2/CSMkvNxk7UpruXtkHihF8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcovCpI%2Fbtskk9pgFp2%2FCSMkvNxk7UpruXtkHihF8k%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;1103&quot; height=&quot;237&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1KImy/btsknvZTBhE/HBAkt68oVlkhhx5bkj9wW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1KImy/btsknvZTBhE/HBAkt68oVlkhhx5bkj9wW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1KImy/btsknvZTBhE/HBAkt68oVlkhhx5bkj9wW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1KImy%2FbtsknvZTBhE%2FHBAkt68oVlkhhx5bkj9wW0%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;1106&quot; height=&quot;226&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>&amp;lt;ETC&amp;gt;</category>
      <category>깃허브</category>
      <category>깃허브 잔디심기</category>
      <category>잔디</category>
      <category>잔디심기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/526</guid>
      <comments>https://9566.tistory.com/526#entry526comment</comments>
      <pubDate>Sat, 17 Jun 2023 16:34:49 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] DATETIME에서 DATE로 형 변환(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/525</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;DATETIME에서&amp;nbsp;DATE로&amp;nbsp;형&amp;nbsp;변환 &lt;br /&gt;ANIMAL_INS&amp;nbsp;테이블에&amp;nbsp;등록된&amp;nbsp;모든&amp;nbsp;레코드에&amp;nbsp;대해,&amp;nbsp;각&amp;nbsp;동물의&amp;nbsp;아이디와&amp;nbsp;이름,&amp;nbsp;들어온&amp;nbsp;날짜1를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때&amp;nbsp;결과는&amp;nbsp;아이디&amp;nbsp;순으로&amp;nbsp;조회해야&amp;nbsp;합니다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1686743506016&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;--MYSQL
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
-- SELECT ANIMAL_ID, NAME, SUBSTR(DATETIME, 1, 10) AS 날짜
-- SELECT ANIMAL_ID, NAME, LEFT(CONVERT(DATETIME, DATE), 10) AS 날짜
-- SELECT ANIMAL_ID, NAME, LEFT(DATETIME, 10) AS 날짜
-- SELECT ANIMAL_ID, NAME, SUBSTRING(DATETIME, 1, 10)  AS 날짜
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID;

-- ORACLE
SELECT ANIMAL_ID, NAME, TO_CHAR(DATETIME, 'YYYY-MM-DD') AS 날짜
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID;&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;이 SQL 쿼리는 ANIMAL_INS 테이블의 모든 레코드에 대해 각 동물의 아이디, 이름 및 들어온 날짜를 조회하는 것을 목표로 합니다. 결과는 아이디 순으로 정렬됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리의 구조를 살펴보겠습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;SELECT 문에서 다음 열을 선택합니다:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ANIMAL_ID: 동물의 아이디를 선택합니다.&lt;/li&gt;
&lt;li&gt;NAME: 동물의 이름을 선택합니다.&lt;/li&gt;
&lt;li&gt;DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜 (MySQL) 또는 TO_CHAR(DATETIME, 'YYYY-MM-DD') AS 날짜 (Oracle): DATETIME 열을 날짜 형식으로 변환하여 날짜 열로 표시합니다. MySQL의 경우 DATE_FORMAT 함수를 사용하여 날짜 형식을 지정합니다. Oracle의 경우 TO_CHAR 함수를 사용하여 날짜를 원하는 형식으로 변환합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;FROM 절에서 ANIMAL_INS 테이블을 선택합니다.&lt;/li&gt;
&lt;li&gt;ORDER BY 문에서 ANIMAL_ID를 기준으로 결과를 아이디 순으로 정렬합니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>DATETIME에서 DATE로 형 변환</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>SQL 프로그래머스</category>
      <category>프로그래머스 STRING</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/525</guid>
      <comments>https://9566.tistory.com/525#entry525comment</comments>
      <pubDate>Wed, 14 Jun 2023 20:41:15 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 조건에 부합하는 중고거래 상태 조회하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/524</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;조건에&amp;nbsp;부합하는&amp;nbsp;중고거래&amp;nbsp;상태&amp;nbsp;조회하기 &lt;br /&gt;USED_GOODS_BOARD&amp;nbsp;테이블에서&amp;nbsp;2022년&amp;nbsp;10월&amp;nbsp;5일에&amp;nbsp;등록된&amp;nbsp;중고거래&amp;nbsp;게시물의&amp;nbsp;게시글&amp;nbsp;ID,&amp;nbsp;작성자&amp;nbsp;ID,&amp;nbsp;게시글&amp;nbsp;제목,&amp;nbsp;가격,&amp;nbsp;거래상태를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;거래상태가&amp;nbsp;SALE&amp;nbsp;이면&amp;nbsp;판매중,&amp;nbsp;RESERVED이면&amp;nbsp;예약중,&amp;nbsp;DONE이면&amp;nbsp;거래완료&amp;nbsp;분류하여&amp;nbsp;출력해주시고,&amp;nbsp;결과는&amp;nbsp;게시글&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;BOARD_ID,&amp;nbsp;WRITER_ID,&amp;nbsp;TITLE,&amp;nbsp;PRICE,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CASE&amp;nbsp;WHEN&amp;nbsp;STATUS&amp;nbsp;=&amp;nbsp;'SALE'&amp;nbsp;THEN&amp;nbsp;'판매중' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;STATUS&amp;nbsp;=&amp;nbsp;'RESERVED'&amp;nbsp;THEN&amp;nbsp;'예약중' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE&amp;nbsp;'거래완료'&amp;nbsp;END&amp;nbsp;AS&amp;nbsp;STATUS &lt;br /&gt;FROM&amp;nbsp;USED_GOODS_BOARD &lt;br /&gt;WHERE&amp;nbsp;TO_CHAR(CREATED_DATE,'YYYY-MM-DD')&amp;nbsp;=&amp;nbsp;'2022-10-05'&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;BOARD_ID&amp;nbsp;DESC; &lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;SELECT&amp;nbsp;BOARD_ID,&amp;nbsp;WRITER_ID,&amp;nbsp;TITLE,&amp;nbsp;PRICE,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CASE&amp;nbsp;WHEN&amp;nbsp;STATUS&amp;nbsp;=&amp;nbsp;'SALE'&amp;nbsp;THEN&amp;nbsp;'판매중' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;STATUS&amp;nbsp;=&amp;nbsp;'RESERVED'&amp;nbsp;THEN&amp;nbsp;'예약중' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE&amp;nbsp;'거래완료'&amp;nbsp;END&amp;nbsp;AS&amp;nbsp;STATUS &lt;br /&gt;FROM&amp;nbsp;USED_GOODS_BOARD &lt;br /&gt;WHERE&amp;nbsp;DATE_FORMAT(CREATED_DATE,'%Y-%m-%d')&amp;nbsp;=&amp;nbsp;'2022-10-05'&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;BOARD_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>String</category>
      <category>조건에 부합하는 중고거래 상태 조회하기</category>
      <category>프로그래머스 STRING</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/524</guid>
      <comments>https://9566.tistory.com/524#entry524comment</comments>
      <pubDate>Sun, 11 Jun 2023 20:37:00 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 카테고리 별 상품 개수 구하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/523</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;카테고리&amp;nbsp;별&amp;nbsp;상품&amp;nbsp;개수&amp;nbsp;구하기 &lt;br /&gt;PRODUCT&amp;nbsp;테이블에서&amp;nbsp;상품&amp;nbsp;카테고리&amp;nbsp;코드(PRODUCT_CODE&amp;nbsp;앞&amp;nbsp;2자리)&amp;nbsp;별&amp;nbsp;상품&amp;nbsp;개수를&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;결과는&amp;nbsp;상품&amp;nbsp;카테고리&amp;nbsp;코드를&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;LEFT(PRODUCT_CODE,&amp;nbsp;2)&amp;nbsp;AS&amp;nbsp;CATEGORY,&amp;nbsp;COUNT(*)&amp;nbsp;AS&amp;nbsp;PRODUCT &lt;br /&gt;FROM&amp;nbsp;PRODUCT &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;CATEGORY &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;CATEGORY&amp;nbsp;ASC; &lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;SELECT&amp;nbsp;LEFT(PRODUCT_CODE,&amp;nbsp;2)&amp;nbsp;AS&amp;nbsp;CATEGORY,&amp;nbsp;COUNT(*)&amp;nbsp;AS&amp;nbsp;PRODUCT &lt;br /&gt;FROM&amp;nbsp;PRODUCT &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;SUBSTR(PRODUCT_CODE,1,2) &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;CATEGORY&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>String</category>
      <category>카테고리 별 상품 개수 구하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/523</guid>
      <comments>https://9566.tistory.com/523#entry523comment</comments>
      <pubDate>Sun, 11 Jun 2023 19:57:42 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 조건에 맞는 사용자 정보 조회하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/522</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;조건에&amp;nbsp;맞는&amp;nbsp;사용자&amp;nbsp;정보&amp;nbsp;조회하기 &lt;br /&gt;USED_GOODS_BOARD와&amp;nbsp;USED_GOODS_USER&amp;nbsp;테이블에서&amp;nbsp;중고&amp;nbsp;거래&amp;nbsp;게시물을&amp;nbsp;3건&amp;nbsp;이상&amp;nbsp;등록한&amp;nbsp;사용자의&amp;nbsp;사용자&amp;nbsp;ID,&amp;nbsp;닉네임,&amp;nbsp;전체주소,&amp;nbsp;전화번호를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때,&amp;nbsp;전체&amp;nbsp;주소는&amp;nbsp;시,&amp;nbsp;도로명&amp;nbsp;주소,&amp;nbsp;상세&amp;nbsp;주소가&amp;nbsp;함께&amp;nbsp;출력되도록&amp;nbsp;해주시고,&amp;nbsp;전화번호의&amp;nbsp;경우&amp;nbsp;xxx-xxxx-xxxx&amp;nbsp;같은&amp;nbsp;형태로&amp;nbsp;하이픈&amp;nbsp;문자열(-)을&amp;nbsp;삽입하여&amp;nbsp;출력해주세요.&amp;nbsp;결과는&amp;nbsp;회원&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;USER_ID,&amp;nbsp;NICKNAME,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CONCAT(CITY,&amp;nbsp;'&amp;nbsp;',&amp;nbsp;STREET_ADDRESS1,'&amp;nbsp;',STREET_ADDRESS2)&amp;nbsp;AS&amp;nbsp;전체주소, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CONCAT(SUBSTR(TLNO,1,3),'-',SUBSTR(TLNO,4,4),'-',SUBSTR(TLNO,8,4))&amp;nbsp;AS&amp;nbsp;전화번호 &lt;br /&gt;FROM&amp;nbsp;USED_GOODS_USER&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;USER_ID&amp;nbsp;IN&amp;nbsp;(SELECT&amp;nbsp;WRITER_ID&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;USED_GOODS_BOARD &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GROUP&amp;nbsp;BY&amp;nbsp;WRITER_ID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HAVING&amp;nbsp;COUNT(*)&amp;nbsp;&amp;gt;=&amp;nbsp;3) &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;USER_ID&amp;nbsp;DESC; &lt;br /&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;SELECT&amp;nbsp;USER_ID,&amp;nbsp;NICKNAME,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CITY||'&amp;nbsp;'||STREET_ADDRESS1||'&amp;nbsp;'||STREET_ADDRESS2&amp;nbsp;AS&amp;nbsp;전체주소, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SUBSTR(TLNO,0,3)||'-'||SUBSTR(TLNO,4,4)||'-'||SUBSTR(TLNO,8,4)&amp;nbsp;AS&amp;nbsp;전화번호 &lt;br /&gt;FROM&amp;nbsp;USED_GOODS_USER&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;USER_ID&amp;nbsp;IN&amp;nbsp;(SELECT&amp;nbsp;WRITER_ID&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;USED_GOODS_BOARD &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GROUP&amp;nbsp;BY&amp;nbsp;WRITER_ID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HAVING&amp;nbsp;COUNT(*)&amp;nbsp;&amp;gt;=&amp;nbsp;3) &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;USER_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>SQL 프로그래머스</category>
      <category>String</category>
      <category>조건에 맞는 사용자 정보 조회하기</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/522</guid>
      <comments>https://9566.tistory.com/522#entry522comment</comments>
      <pubDate>Sun, 11 Jun 2023 19:03:01 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 취소되지 않은 진료 예약 조회하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/521</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;취소되지&amp;nbsp;않은&amp;nbsp;진료&amp;nbsp;예약&amp;nbsp;조회하기 &lt;br /&gt;PATIENT,&amp;nbsp;DOCTOR&amp;nbsp;그리고&amp;nbsp;APPOINTMENT&amp;nbsp;테이블에서&amp;nbsp;2022년&amp;nbsp;4월&amp;nbsp;13일&amp;nbsp;취소되지&amp;nbsp;않은&amp;nbsp;흉부외과(CS)&amp;nbsp;진료&amp;nbsp;예약&amp;nbsp;내역을&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;진료예약번호,&amp;nbsp;환자이름,&amp;nbsp;환자번호,&amp;nbsp;진료과코드,&amp;nbsp;의사이름,&amp;nbsp;진료예약일시&amp;nbsp;항목이&amp;nbsp;출력되도록&amp;nbsp;작성해주세요.&amp;nbsp;결과는&amp;nbsp;진료예약일시를&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;BC.APNT_NO,&amp;nbsp;A.PT_NAME,&amp;nbsp;A.PT_NO,&amp;nbsp;BC.MCDP_CD,&amp;nbsp;BC.DR_NAME,&amp;nbsp;BC.APNT_YMD &lt;br /&gt;FROM&amp;nbsp;(SELECT&amp;nbsp;C.PT_NO,&amp;nbsp;C.MCDP_CD,&amp;nbsp;C.APNT_YMD,&amp;nbsp;B.DR_NAME,&amp;nbsp;C.APNT_NO &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;DOCTOR&amp;nbsp;B &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JOIN&amp;nbsp;APPOINTMENT&amp;nbsp;C &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON&amp;nbsp;B.DR_ID&amp;nbsp;=&amp;nbsp;C.MDDR_ID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;DATE_FORMAT(C.APNT_YMD,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;=&amp;nbsp;'2022-04-13' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;C.MCDP_CD&amp;nbsp;=&amp;nbsp;'CS' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;C.APNT_CNCL_YN&amp;nbsp;=&amp;nbsp;'N')&amp;nbsp;BC &lt;br /&gt;JOIN&amp;nbsp;PATIENT&amp;nbsp;A &lt;br /&gt;ON&amp;nbsp;A.PT_NO&amp;nbsp;=&amp;nbsp;BC.PT_NO &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;BC.APNT_YMD&amp;nbsp;ASC; &lt;br /&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;SELECT&amp;nbsp;BC.APNT_NO,&amp;nbsp;A.PT_NAME,&amp;nbsp;A.PT_NO,&amp;nbsp;BC.MCDP_CD,&amp;nbsp;BC.DR_NAME,&amp;nbsp;BC.APNT_YMD &lt;br /&gt;FROM&amp;nbsp;(SELECT&amp;nbsp;C.PT_NO,&amp;nbsp;C.MCDP_CD,&amp;nbsp;C.APNT_YMD,&amp;nbsp;B.DR_NAME,&amp;nbsp;C.APNT_NO &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;DOCTOR&amp;nbsp;B &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JOIN&amp;nbsp;APPOINTMENT&amp;nbsp;C &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON&amp;nbsp;B.DR_ID&amp;nbsp;=&amp;nbsp;C.MDDR_ID &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;TO_CHAR(C.APNT_YMD,&amp;nbsp;'YYYY-MM-DD')&amp;nbsp;=&amp;nbsp;'2022-04-13' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;C.MCDP_CD&amp;nbsp;=&amp;nbsp;'CS' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;C.APNT_CNCL_YN&amp;nbsp;=&amp;nbsp;'N')&amp;nbsp;BC &lt;br /&gt;JOIN&amp;nbsp;PATIENT&amp;nbsp;A &lt;br /&gt;ON&amp;nbsp;A.PT_NO&amp;nbsp;=&amp;nbsp;BC.PT_NO &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;BC.APNT_YMD&amp;nbsp;ASC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>String</category>
      <category>취소되지 않은 진료 예약 조회하기</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/521</guid>
      <comments>https://9566.tistory.com/521#entry521comment</comments>
      <pubDate>Sun, 11 Jun 2023 01:10:38 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/520</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;조회수가&amp;nbsp;가장&amp;nbsp;많은&amp;nbsp;중고거래&amp;nbsp;게시판의&amp;nbsp;첨부파일&amp;nbsp;조회하기 &lt;br /&gt;USED_GOODS_BOARD와&amp;nbsp;USED_GOODS_FILE&amp;nbsp;테이블에서&amp;nbsp;조회수가&amp;nbsp;가장&amp;nbsp;높은&amp;nbsp;중고거래&amp;nbsp;게시물에&amp;nbsp;대한&amp;nbsp;첨부파일&amp;nbsp;경로를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;첨부파일&amp;nbsp;경로는&amp;nbsp;FILE&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요.&amp;nbsp;기본적인&amp;nbsp;파일경로는&amp;nbsp;/home/grep/src/&amp;nbsp;이며,&amp;nbsp;게시글&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;디렉토리가&amp;nbsp;구분되고,&amp;nbsp;파일이름은&amp;nbsp;파일&amp;nbsp;ID,&amp;nbsp;파일&amp;nbsp;이름,&amp;nbsp;파일&amp;nbsp;확장자로&amp;nbsp;구성되도록&amp;nbsp;출력해주세요.&amp;nbsp;조회수가&amp;nbsp;가장&amp;nbsp;높은&amp;nbsp;게시물은&amp;nbsp;하나만&amp;nbsp;존재합니다. &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;SELECT&amp;nbsp; &lt;br /&gt;CONCAT('/home/grep/src/',&amp;nbsp;BOARD_ID,&amp;nbsp;'/',&amp;nbsp;FILE_ID,&amp;nbsp;FILE_NAME,&amp;nbsp;FILE_EXT)&amp;nbsp;AS&amp;nbsp;FILE_PATH &lt;br /&gt;FROM&amp;nbsp;USED_GOODS_BOARD&amp;nbsp;B &lt;br /&gt;JOIN&amp;nbsp;USED_GOODS_FILE&amp;nbsp;F &lt;br /&gt;ON&amp;nbsp;B.BOARD_ID&amp;nbsp;=&amp;nbsp;F.BOARD_ID &lt;br /&gt;WHERE&amp;nbsp;VIEWS&amp;nbsp;=&amp;nbsp;(SELECT&amp;nbsp;MAX(VIEWS)&amp;nbsp;FROM&amp;nbsp;USED_GOODS_BOARD&amp;nbsp;) &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;FILE_ID&amp;nbsp;DESC; &lt;br /&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;SELECT&amp;nbsp; &lt;br /&gt;'/home/grep/src/'&amp;nbsp;||&amp;nbsp;F.BOARD_ID&amp;nbsp;||&amp;nbsp;'/'&amp;nbsp;||&amp;nbsp;FILE_ID&amp;nbsp;||&amp;nbsp;FILE_NAME&amp;nbsp;||&amp;nbsp;FILE_EXT&amp;nbsp;AS&amp;nbsp;FILE_PATH &lt;br /&gt;FROM&amp;nbsp;USED_GOODS_BOARD&amp;nbsp;B &lt;br /&gt;JOIN&amp;nbsp;USED_GOODS_FILE&amp;nbsp;F &lt;br /&gt;ON&amp;nbsp;B.BOARD_ID&amp;nbsp;=&amp;nbsp;F.BOARD_ID &lt;br /&gt;WHERE&amp;nbsp;VIEWS&amp;nbsp;=&amp;nbsp;(SELECT&amp;nbsp;MAX(VIEWS)&amp;nbsp;FROM&amp;nbsp;USED_GOODS_BOARD&amp;nbsp;) &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;FILE_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>String</category>
      <category>조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/520</guid>
      <comments>https://9566.tistory.com/520#entry520comment</comments>
      <pubDate>Sat, 10 Jun 2023 21:43:42 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 STRING, DATE] 자동차 대여 기록 별 대여 금액 구하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/519</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자동차&amp;nbsp;대여&amp;nbsp;기록&amp;nbsp;별&amp;nbsp;대여&amp;nbsp;금액&amp;nbsp;구하기 &lt;br /&gt;CAR_RENTAL_COMPANY_CAR&amp;nbsp;테이블과&amp;nbsp;CAR_RENTAL_COMPANY_RENTAL_HISTORY&amp;nbsp;테이블과&amp;nbsp;CAR_RENTAL_COMPANY_DISCOUNT_PLAN&amp;nbsp;테이블에서&amp;nbsp;자동차&amp;nbsp;종류가&amp;nbsp;'트럭'인&amp;nbsp;자동차의&amp;nbsp;대여&amp;nbsp;기록에&amp;nbsp;대해서&amp;nbsp;대여&amp;nbsp;기록&amp;nbsp;별로&amp;nbsp;대여&amp;nbsp;금액(컬럼명:&amp;nbsp;FEE)을&amp;nbsp;구하여&amp;nbsp;대여&amp;nbsp;기록&amp;nbsp;ID와&amp;nbsp;대여&amp;nbsp;금액&amp;nbsp;리스트를&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;결과는&amp;nbsp;대여&amp;nbsp;금액을&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬하고,&amp;nbsp;대여&amp;nbsp;금액이&amp;nbsp;같은&amp;nbsp;경우&amp;nbsp;대여&amp;nbsp;기록&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL &lt;br /&gt;SELECT&amp;nbsp;HISTORY_ID,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROUND(DAILY_FEE*(DATEDIFF(END_DATE,&amp;nbsp;START_DATE)+1) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(100-IF(DISCOUNT_RATE&amp;nbsp;IS&amp;nbsp;NULL,&amp;nbsp;0,&amp;nbsp;DISCOUNT_RATE))/100)&amp;nbsp;AS&amp;nbsp;FEE &lt;br /&gt;FROM&amp;nbsp;CAR_RENTAL_COMPANY_CAR&amp;nbsp;AS&amp;nbsp;A&amp;nbsp; &lt;br /&gt;JOIN&amp;nbsp;CAR_RENTAL_COMPANY_RENTAL_HISTORY&amp;nbsp;AS&amp;nbsp;B&amp;nbsp; &lt;br /&gt;ON&amp;nbsp;A.CAR_ID&amp;nbsp;=&amp;nbsp;B.CAR_ID &lt;br /&gt;LEFT&amp;nbsp;OUTER&amp;nbsp;JOIN&amp;nbsp;CAR_RENTAL_COMPANY_DISCOUNT_PLAN&amp;nbsp;AS&amp;nbsp;C &lt;br /&gt;ON&amp;nbsp;A.CAR_TYPE&amp;nbsp;=&amp;nbsp;C.CAR_TYPE &lt;br /&gt;AND&amp;nbsp;C.DURATION_TYPE&amp;nbsp;=&amp;nbsp;(CASE&amp;nbsp;WHEN&amp;nbsp;DATEDIFF(END_DATE,START_DATE)+1&amp;gt;='90'&amp;nbsp;THEN&amp;nbsp;'90일&amp;nbsp;이상' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;DATEDIFF(END_DATE,START_DATE)+1&amp;gt;='30'&amp;nbsp;THEN&amp;nbsp;'30일&amp;nbsp;이상' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;DATEDIFF(END_DATE,START_DATE)+1&amp;gt;='7'&amp;nbsp;THEN&amp;nbsp;'7일&amp;nbsp;이상' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE&amp;nbsp;NULL&amp;nbsp;END) &lt;br /&gt;WHERE&amp;nbsp;1=1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;AND&amp;nbsp;A.CAR_TYPE&amp;nbsp;=&amp;nbsp;'트럭' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;FEE&amp;nbsp;DESC,&amp;nbsp;B.HISTORY_ID&amp;nbsp;DESC; &lt;br /&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;SELECT&amp;nbsp;HISTORY_ID,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(DAILY_FEE*(B.END_DATE-B.START_DATE+1))*NVL(1-DISCOUNT_RATE/100,&amp;nbsp;1)&amp;nbsp;AS&amp;nbsp;FEE&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;CAR_RENTAL_COMPANY_CAR&amp;nbsp;A&amp;nbsp; &lt;br /&gt;JOIN&amp;nbsp;CAR_RENTAL_COMPANY_RENTAL_HISTORY&amp;nbsp;B&amp;nbsp; &lt;br /&gt;ON&amp;nbsp;A.CAR_ID&amp;nbsp;=&amp;nbsp;B.CAR_ID &lt;br /&gt;LEFT&amp;nbsp;OUTER&amp;nbsp;JOIN&amp;nbsp;CAR_RENTAL_COMPANY_DISCOUNT_PLAN&amp;nbsp;C &lt;br /&gt;ON&amp;nbsp;A.CAR_TYPE&amp;nbsp;=&amp;nbsp;C.CAR_TYPE &lt;br /&gt;AND&amp;nbsp;C.DURATION_TYPE&amp;nbsp;=&amp;nbsp;(CASE&amp;nbsp;WHEN&amp;nbsp;(B.END_DATE-B.START_DATE+1)&amp;gt;='90'&amp;nbsp;THEN&amp;nbsp;'90일&amp;nbsp;이상' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;(B.END_DATE-B.START_DATE+1)&amp;gt;='30'&amp;nbsp;THEN&amp;nbsp;'30일&amp;nbsp;이상' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEN&amp;nbsp;(B.END_DATE-B.START_DATE+1)&amp;gt;='7'&amp;nbsp;THEN&amp;nbsp;'7일&amp;nbsp;이상' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ELSE&amp;nbsp;NULL&amp;nbsp;END) &lt;br /&gt;WHERE&amp;nbsp;1=1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;AND&amp;nbsp;A.CAR_TYPE&amp;nbsp;=&amp;nbsp;'트럭' &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;FEE&amp;nbsp;DESC,&amp;nbsp;B.HISTORY_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>date</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>String</category>
      <category>자동차 대여 기록 별 대여 금액 구하기</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/519</guid>
      <comments>https://9566.tistory.com/519#entry519comment</comments>
      <pubDate>Sat, 10 Jun 2023 17:45:30 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 재구매가 일어난 상품과 회원 리스트 구하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/518</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;재구매가&amp;nbsp;일어난&amp;nbsp;상품과&amp;nbsp;회원&amp;nbsp;리스트&amp;nbsp;구하기 &lt;br /&gt;ONLINE_SALE&amp;nbsp;테이블에서&amp;nbsp;동일한&amp;nbsp;회원이&amp;nbsp;동일한&amp;nbsp;상품을&amp;nbsp;재구매한&amp;nbsp;데이터를&amp;nbsp;구하여,&amp;nbsp;재구매한&amp;nbsp;회원&amp;nbsp;ID와&amp;nbsp;재구매한&amp;nbsp;상품&amp;nbsp;ID를&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;결과는&amp;nbsp;회원&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주시고&amp;nbsp;회원&amp;nbsp;ID가&amp;nbsp;같다면&amp;nbsp;상품&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;USER_ID,&amp;nbsp;PRODUCT_ID &lt;br /&gt;FROM&amp;nbsp;ONLINE_SALE &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;USER_ID,&amp;nbsp;PRODUCT_ID &lt;br /&gt;HAVING&amp;nbsp;COUNT(*)&amp;nbsp;&amp;gt;&amp;nbsp;1&amp;nbsp; &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;USER_ID&amp;nbsp;ASC,&amp;nbsp;PRODUCT_ID&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>select</category>
      <category>sql</category>
      <category>재구매가 일어난 상품과 회원 리스트 구하기</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/518</guid>
      <comments>https://9566.tistory.com/518#entry518comment</comments>
      <pubDate>Sat, 10 Jun 2023 15:31:20 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 오프라인/온라인 판매 데이터 통합하기(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/517</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오프라인/온라인&amp;nbsp;판매&amp;nbsp;데이터&amp;nbsp;통합하기 &lt;br /&gt;ONLINE_SALE&amp;nbsp;테이블과&amp;nbsp;OFFLINE_SALE&amp;nbsp;테이블에서&amp;nbsp;2022년&amp;nbsp;3월의&amp;nbsp;오프라인/온라인&amp;nbsp;상품&amp;nbsp;판매&amp;nbsp;데이터의&amp;nbsp;판매&amp;nbsp;날짜,&amp;nbsp;상품ID,&amp;nbsp;유저ID,&amp;nbsp;판매량을&amp;nbsp;출력하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;OFFLINE_SALE&amp;nbsp;테이블의&amp;nbsp;판매&amp;nbsp;데이터의&amp;nbsp;USER_ID&amp;nbsp;값은&amp;nbsp;NULL&amp;nbsp;로&amp;nbsp;표시해주세요.&amp;nbsp;결과는&amp;nbsp;판매일을&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주시고&amp;nbsp;판매일이&amp;nbsp;같다면&amp;nbsp;상품&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;오름차순,&amp;nbsp;상품ID까지&amp;nbsp;같다면&amp;nbsp;유저&amp;nbsp;ID를&amp;nbsp;기준으로&amp;nbsp;오름차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--&amp;nbsp;MYSQL &lt;br /&gt;(SELECT&amp;nbsp;DATE_FORMAT(SALES_DATE,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;AS&amp;nbsp;SALES_DATE,&amp;nbsp;PRODUCT_ID,&amp;nbsp;NULL&amp;nbsp;AS&amp;nbsp;USER_ID,&amp;nbsp;SALES_AMOUNT &lt;br /&gt;FROM&amp;nbsp;OFFLINE_SALE&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;DATE_FORMAT(SALES_DATE,&amp;nbsp;'%m')&amp;nbsp;=&amp;nbsp;'03') &lt;br /&gt;UNION&amp;nbsp;ALL &lt;br /&gt;(SELECT&amp;nbsp;DATE_FORMAT(SALES_DATE,&amp;nbsp;'%Y-%m-%d')&amp;nbsp;AS&amp;nbsp;SALES_DATE,&amp;nbsp;PRODUCT_ID,&amp;nbsp;USER_ID,&amp;nbsp;SALES_AMOUNT &lt;br /&gt;FROM&amp;nbsp;ONLINE_SALE &lt;br /&gt;WHERE&amp;nbsp;DATE_FORMAT(SALES_DATE,&amp;nbsp;'%m')&amp;nbsp;=&amp;nbsp;'03') &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;SALES_DATE,&amp;nbsp;PRODUCT_ID,&amp;nbsp;USER_ID;&lt;/p&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;--ORACLE &lt;br /&gt;(SELECT TO_CHAR(SALES_DATE, 'YYYY-MM-DD') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT &lt;br /&gt;FROM&amp;nbsp;OFFLINE_SALE&amp;nbsp; &lt;br /&gt;WHERE&amp;nbsp;TO_CHAR(SALES_DATE,&amp;nbsp;'MM')&amp;nbsp;=&amp;nbsp;'03') &lt;br /&gt;UNION&amp;nbsp;ALL &lt;br /&gt;(SELECT&amp;nbsp;TO_CHAR(SALES_DATE,&amp;nbsp;'YYYY-MM-DD')&amp;nbsp;AS&amp;nbsp;SALES_DATE,&amp;nbsp;PRODUCT_ID,&amp;nbsp;USER_ID,&amp;nbsp;SALES_AMOUNT &lt;br /&gt;FROM&amp;nbsp;ONLINE_SALE &lt;br /&gt;WHERE&amp;nbsp;TO_CHAR(SALES_DATE,&amp;nbsp;'MM')&amp;nbsp;=&amp;nbsp;'03') &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;SALES_DATE,&amp;nbsp;PRODUCT_ID,&amp;nbsp;USER_ID;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>select</category>
      <category>sql</category>
      <category>오프라인/온라인 판매 데이터 통합하기</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/517</guid>
      <comments>https://9566.tistory.com/517#entry517comment</comments>
      <pubDate>Sat, 10 Jun 2023 15:15:06 +0900</pubDate>
    </item>
    <item>
      <title>[SQL 프로그래머스 SELECT] 상위 n개 레코드(ORACLE, MYSQL)</title>
      <link>https://9566.tistory.com/516</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;서울에&amp;nbsp;위치한&amp;nbsp;식당&amp;nbsp;목록&amp;nbsp;출력하기 &lt;br /&gt;REST_INFO와&amp;nbsp;REST_REVIEW&amp;nbsp;테이블에서&amp;nbsp;서울에&amp;nbsp;위치한&amp;nbsp;식당들의&amp;nbsp;식당&amp;nbsp;ID,&amp;nbsp;식당&amp;nbsp;이름,&amp;nbsp;음식&amp;nbsp;종류,&amp;nbsp;즐겨찾기수,&amp;nbsp;주소,&amp;nbsp;리뷰&amp;nbsp;평균&amp;nbsp;점수를&amp;nbsp;조회하는&amp;nbsp;SQL문을&amp;nbsp;작성해주세요.&amp;nbsp;이때&amp;nbsp;리뷰&amp;nbsp;평균점수는&amp;nbsp;소수점&amp;nbsp;세&amp;nbsp;번째&amp;nbsp;자리에서&amp;nbsp;반올림&amp;nbsp;해주시고&amp;nbsp;결과는&amp;nbsp;평균점수를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주시고,&amp;nbsp;평균점수가&amp;nbsp;같다면&amp;nbsp;즐겨찾기수를&amp;nbsp;기준으로&amp;nbsp;내림차순&amp;nbsp;정렬해주세요. &lt;br /&gt;&lt;br /&gt;--MYSQL,&amp;nbsp;ORACLE &lt;br /&gt;SELECT&amp;nbsp;A.REST_ID,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.REST_NAME,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.FOOD_TYPE,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.FAVORITES,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A.ADDRESS,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ROUND(AVG(B.REVIEW_SCORE),2)&amp;nbsp;as&amp;nbsp;SCORE &lt;br /&gt;FROM&amp;nbsp;REST_INFO&amp;nbsp;A&amp;nbsp; &lt;br /&gt;INNER&amp;nbsp;JOIN&amp;nbsp;REST_REVIEW&amp;nbsp;B &lt;br /&gt;ON&amp;nbsp;A.REST_ID&amp;nbsp;=&amp;nbsp;B.REST_ID &lt;br /&gt;WHERE&amp;nbsp;A.ADDRESS&amp;nbsp;LIKE&amp;nbsp;'서울%' &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;A.REST_ID,&amp;nbsp;A.REST_NAME,&amp;nbsp;A.FOOD_TYPE,&amp;nbsp;A.FAVORITES,&amp;nbsp;A.ADDRESS &lt;br /&gt;ORDER&amp;nbsp;BY&amp;nbsp;SCORE&amp;nbsp;DESC,&amp;nbsp;A.FAVORITES&amp;nbsp;DESC;&lt;/p&gt;</description>
      <category>&amp;lt;프로그래머스 고득점 SQL Kit&amp;gt;</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>sql</category>
      <category>상위 n개 레코드</category>
      <category>프로그래머스</category>
      <author>9566</author>
      <guid isPermaLink="true">https://9566.tistory.com/516</guid>
      <comments>https://9566.tistory.com/516#entry516comment</comments>
      <pubDate>Fri, 9 Jun 2023 21:37:43 +0900</pubDate>
    </item>
  </channel>
</rss>