01 데이터 입수 — 특허·논문·뉴스¶

목적. AI 기술 확산의 과거 추이를 세 갈래로 확인한다. 특허는 기술 공급, 논문은 연구 활동, 뉴스는 사회적 관심을 나타낸다.

자료 내용 수집 방법 재조회
FindIP 특허 IPC G06N(신경망 등 AI 계산 모델) 출원 건수, 한국·5개국, 2010–2025 MCP 조회(정확 집계 모드) 불가 — FINDIP_QUERY.md에 조건·시각 기록
OpenAlex 논문 AI 개념(전체·한국 기관), 생성형 AI·LLM 제목·초록 검색 REST API, 출판연도별 집계 ONLINE=1
PubMed 논문 MeSH 'Artificial Intelligence'·'Machine Learning' E-utilities, 연도별 건수 ONLINE=1
Event Registry 뉴스 영문 기사 중 'artificial intelligence' 일별 건수 REST API(timeAggr), 연 단위 11회 ONLINE=1(토큰 소모)
네이버 뉴스 '생성형AI' 일별 기사 수(시범 표본) 네이버 수집기(검색 결과 목록 수집) 수집기 별도 실행

기본 실행은 저장된 스냅샷을 쓴다. 특허는 출원 뒤 약 18개월이 지나야 공개되고 논문 색인도 늦게 채워지므로 2025년 값은 하한이다.

In [1]:
import os, hashlib
import numpy as np, pandas as pd
import config as C
import landscape as L
pd.set_option("display.float_format", lambda v: f"{v:,.2f}")
C.setup()
Python 3.12.10 · pandas 2.2.3 · numpy 2.4.6 · matplotlib 3.11.0
  ONLINE=0(스냅샷)  OpenAlex 키 없음  Event Registry 키 없음
  특허_연도            있음  data\inputs\findip_g06n_by_year.csv
  특허_국가            있음  data\inputs\findip_g06n_by_country.csv
  특허_동시분류          있음  data\inputs\findip_kr_g06n_coipc.csv
  특허_출원인           있음  data\inputs\findip_kr_g06n_applicants.csv
  논문_OpenAlex      있음  data\inputs\openalex_by_year.csv
  논문_PubMed        있음  data\inputs\pubmed_by_year.csv
  뉴스_EventRegistry 있음  data\inputs\eventregistry_ai_eng_daily.csv
  뉴스_네이버_표본        있음  data\inputs\naver_daily_counts_생성형AI_sample.csv

1. 스냅샷 확인¶

In [2]:
def sha256(p):
    with open(p, "rb") as f:
        return hashlib.sha256(f.read()).hexdigest()

rows = []
for k, p in C.FILES.items():
    d = pd.read_csv(p)
    rows.append({"자료": k, "행": len(d), "열": d.shape[1], "SHA-256": sha256(p)[:16] + "…"})
print(open(os.path.join(C.INPUTS, "RETRIEVED_AT.txt"), encoding="utf-8").read())
pd.DataFrame(rows)
OpenAlex·PubMed·Event Registry 조회 시각(KST): 2026-10-08 04:40

Out[2]:
자료 행 열 SHA-256
0 특허_연도 16 3 f6e79f9f95ebec5b…
1 특허_국가 5 2 a0ccd6c9b7c14156…
2 특허_동시분류 20 2 8fb4498e18bed076…
3 특허_출원인 10 2 e0fd9cb8fab9f867…
4 논문_OpenAlex 16 4 19811d9fa29793f3…
5 논문_PubMed 16 2 cfbfb9d25538da26…
6 뉴스_EventRegistry 4018 2 edaf04ea090e175f…
7 뉴스_네이버_표본 3 2 a0559c383ae09975…

2. 재조회(선택) — ONLINE=1¶

OpenAlex·PubMed·Event Registry를 다시 받아 스냅샷과 비교한다. 색인 갱신과 기사 추가로 최근 연도 값은 달라질 수 있다.

In [3]:
if C.ONLINE:
    oa_new = pd.DataFrame({k: L.openalex_by_year(f, 2010, 2025) for k, f in L.OPENALEX_QUERIES.items()})
    oa_old = pd.read_csv(C.FILES["논문_OpenAlex"], index_col=0)
    print("OpenAlex 변화율(%):"); display((100 * (oa_new / oa_old - 1)).round(2).tail(5))
    pm_new = L.pubmed_by_year(L.PUBMED_TERM, 2010, 2025)
    pm_old = pd.read_csv(C.FILES["논문_PubMed"], index_col=0).iloc[:, 0]
    print("PubMed 변화율(%):", (100 * (pm_new / pm_old - 1)).round(2).tail(5).to_dict())
    er_new = L.to_annual(L.eventregistry_daily("artificial intelligence", "eng", 2015, 2025))
    er_old = pd.read_csv(C.FILES["뉴스_EventRegistry"], index_col=0, parse_dates=True).iloc[:, 0]
    print("Event Registry 연간 변화율(%):", (100 * (er_new / L.to_annual(er_old) - 1)).round(2).to_dict())
else:
    print("ONLINE=0: 스냅샷만 사용한다.")
ONLINE=0: 스냅샷만 사용한다.