--- id: textrank title: "TextRank" category: "AI_and_ML" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["TextRank", "텍스트랭크", "추출적 요약", "Extractive Summarization", "그래프 기반 키워드 추출", "비지도 키워드 산출"] duplicate_of: "" source_trust_level: "A" confidence_score: 0.90 created_at: 2026-06-09 updated_at: 2026-06-09 review_reason: "" merge_history: [] tags: ["research", "키워드 산출 방법", "NLP", "Graph_Algorithm"] raw_sources: ["TextRank를 이용한 키워드 및 핵심 문장 추출 | PageRank의 이해, TextRank 구현", "기계학습 기반 언어분석 기술을 통해, 텍스트 안에 문장 전체를 요약문으로 추출하는 시스템에 - DBpia", "GitHub - lovit/soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리입니다."] applied_in: ["KR-WordRank", "추출적 요약 시스템", "soykeyword"] github_commit: "" --- # [[TextRank]] ## 🎯 한 줄 통찰 (One-line insight) TextRank는 단어 간의 공생 관계를 그래프 구조로 모델링하고 PageRank의 재귀적 중요도 전파 원리를 적용하여, 별도의 학습 데이터 없이 문서 내 핵심 키워드를 식별하는 비지도 학습 알고리즘이다. [S5],[S54] ## 🧠 핵심 개념 (Core concepts) 1. **추출적 요약 (Extractive Summarization):** 기존 문서에서 중요도가 높은 단어나 문장을 그대로 선택하여 요약하는 방식으로, 새로운 어휘를 생성하지 않는다. [S47],[S97] 2. **그래프 기반 랭킹 (Graph-based Ranking):** 단어를 노드로, 단어 간의 공생(Co-occurrence) 관계를 엣지로 설정하여 네트워크를 구축한다. [S51],[S58] 3. **재귀적 중요도 (Recursive Importance):** 특정 단어의 중요도는 그와 연결된 다른 중요 단어들의 점수에 의해 결정되며, 이는 "영향력 있는 페이지가 인용할수록 순위가 올라간다"는 PageRank의 논리를 계승한다. [S49],[S56] 4. **비지도 학습 (Unsupervised Learning):** 대규모 사전 학습 말뭉치 없이 단일 문서 또는 소규모 문서 집합 내의 구조적 통계만으로 작동한다. [S51],[S58] ## 🧩 추출된 패턴 (Extracted patterns) - **POS 필터링 패턴:** 텍스트를 토큰화한 후, 명사나 동사와 같이 의미를 내포한 특정 품사만을 키워드 후보(노드)로 선별하여 분석 효율을 높인다. [S51],[S52] - **슬라이딩 윈도우 공생 패턴:** 하나 이상의 단어로 구성된 시퀀스(n-gram) 사이의 인접성 또는 공생 빈도를 통해 엣지의 가중치를 정의한다. [S51],[S58] - **수렴 반복 패턴:** 모든 노드의 초기 중요도를 1로 설정하고, 노드 점수의 변화가 일정 기준 이하로 수렴할 때까지 알고리즘을 반복 계산한다. [S52],[S59] ## ⚖️ 비교 및 선택 기준 (Comparison & decision criteria) | 항목 (Option) | 장점 | 단점 | 언제 선택 | |---|---|---|---| | **추출적 요약 (TextRank)** | 원문의 의미 왜곡이 없고 학습 데이터 요구량이 적음. [S47],[S97] | 문장 간 연결이 다소 부자연스러울 수 있음. [S47] | 핵심 키워드와 문장을 원문 그대로 보존해야 할 때. [S101] | | **추상적 요약 (Abstractive)** | 사람이 요약하는 것과 유사하게 자연스러운 문장 생성 가능. [S47],[S101] | 방대한 양의 학습 데이터가 필요하며 할루시네이션 위험이 있음. [S97] | 고도의 가독성과 요약문의 창의성이 필요할 때. | | **TF-IDF** | 구현이 매우 간단하고 통계적으로 명확함. [S98] | 단어 간의 문맥적/구조적 관계(네트워크)를 반영하지 못함. | 대규모 문서 집합에서 단순 빈도 기반 중요도를 뽑을 때. [S102] | ## 📖 세부 내용 (Details) ### 1. 알고리즘의 기원과 수리적 구조 - TextRank는 2004년에 제안되었으며, 1998년 세르게이 브린과 래리 페이지가 발표한 구글 검색 엔진의 핵심 알고리즘인 **PageRank**를 기반으로 한다. [S47],[S54] - PageRank의 수식 $PR(A) = \frac{(1-d)}{N} + d(\frac{PR(T1)}{C(T1)} + ... + \frac{PR(Tn)}{C(Tn)})$을 활용하며, 여기서 $d$(Damping Factor)는 일반적으로 0.85로 설정되어 사용자가 무작위로 링크를 클릭할 확률을 반영한다. [S50],[S57] - 단순 합산이 아닌 **정규화된 값**을 사용하는데, 이는 특정 단어(혹은 페이지)가 링크를 많이 가질수록 개별 연결에 기여하는 비중이 낮아짐을 의미한다. [S49],[S56] ### 2. 키워드 추출 프로세스 - **토큰화 및 필터링:** 문장을 단어 단위로 나누고 POS 태깅을 통해 불필요한 불용어를 제거한다. [S51],[S58] - **그래프 구축:** 필터링된 단어 시퀀스를 노드로 추가하고, 정해진 윈도우 크기 내에서 함께 등장하는 단어들 사이에 엣지를 연결한다. [S51],[S52] - **반복 계산 및 정렬:** 모든 노드에 대해 중요도를 재귀적으로 계산하여 값이 수렴하면, 최종 점수를 기준으로 정렬하여 Top N개의 키워드를 산출한다. [S52],[S59] ### 3. 추출적 요약의 특징 - TextRank는 새로운 단어를 생성하지 않고 기존 문서 내에서 '중요도가 높은 문장'을 그대로 추출하므로 의미 왜곡의 위험이 낮다. [S47],[S54] - 이는 특히 학습 데이터가 부족한 환경에서 고성능의 요약 서비스를 제공하는 데 유용하다. [S97],[S101] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) - **PageRank 수식의 오류 지적:** 초기 논문에서는 모든 웹페이지 PR 값의 합이 1이 된다고 설명했으나, 실제 수식 구조상 합이 전체 페이지 수(N)가 되는 모순이 발견되어 위키피디아 등에서 수정된 수식이 제안되었다. [S50],[S57] ## 🛠️ 적용 사례 (Applied in summary) - **KR-WordRank:** TextRank의 원리를 활용하되, 토크나이저 학습 없이도 HITS 알고리즘을 통해 substring graph에서 키워드를 추출하는 라이브러리로 구현되었다. [S4],[S16] - **추출 요약 시스템:** Seq4Word와 같은 기법과 결합하여, TF-IDF로 계산된 가중치를 바탕으로 키워드가 포함된 문장을 역으로 선정해 요약문을 구성하는 시스템에 적용된다. [S99],[S103] ## 💻 코드 패턴 (Code patterns) 소스 내에 직접적인 TextRank 알고리즘 구현 코드는 명시되지 않았으나, 관련 라이브러리인 `KR-WordRank`의 사용 환경은 다음과 같다. ```bash # TextRank 원리를 활용한 한국어 키워드 추출 라이브러리 설치 pip install krwordrank ``` [S16],[S34] ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual (PageRank 이론 및 학술 논문의 추출 요약 방법론 기반) - **출처 신뢰도:** A (구글 창립자의 논문 원리 설명 및 DBpia 등재 학술 자료) - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 관련 문서 링크 (Related document links) ### 상위/유사 개념 - [[키워드 산출 방법]] — TextRank가 속한 구체적인 기술 도메인. - [[자연어 처리 (NLP)]] — 텍스트 분석을 위한 상위 기술 체계. [S47] - [[PageRank]] — TextRank 알고리즘의 수리적 모태가 되는 랭킹 알고리즘. [S48] ### 심층 후속 질문 (Deeper Research Questions) - 덤핑 팩터(d) 값을 0.85에서 한국어 텍스트 특성에 맞춰 조정할 경우 키워드 추출의 정확도는 어떻게 변하는가? - TextRank에서 윈도우 크기(Window Size) 설정이 단어 간 의미적 관계 형성에 미치는 영향은 무엇인가? - 문장 요약 시 단순 단어 빈도 기반인 TF-IDF 가중치와 TextRank의 그래프 중심성 점수를 결합할 때의 시너지 효과는? [S99] - 한국어의 교착어적 특성(조사, 어미)을 고려한 POS 필터링의 최적 조합은 무엇인가? [S52] ### 실무 적용 맥락 - **Implementation:** `KR-WordRank` 등을 활용하여 사전 없이도 실시간 트렌드 키워드 추출 가능. [S16] - **System Design:** 대규모 문서의 경우 그래프 구축 및 수렴 계산을 위한 연산 자원 최적화 설계 필요. [S50] - **Operation / Maintenance:** 문서의 성격(뉴스, 댓글 등)에 따라 적절한 필터링 규칙과 윈도우 크기를 튜닝해야 함. [S5] ### 인접 주변 주제 - [[언어 네트워크 분석]] — 단어 간 관계를 시각화하고 중심성을 측정하는 유사 분석 기법. [S145] - [[토픽 모델링]] — 문서 집합 내의 잠재적 주제를 분류하는 기법. ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[키워드 산출 방법]] - **관련 개념:** [[PageRank]], [[추출적 요약]], [[공생 관계(Co-occurrence)]], [[비지도 학습]] - **참조 맥락:** 본 지식은 뉴스 요약 시스템, 검색 엔진의 핵심어 도출 알고리즘, 대규모 텍스트 마이닝 작업에서 참조된다. ## 📚 출처 (Sources) - [S5, S47-S52, S54-S60] TextRank를 이용한 키워드 및 핵심 문장 추출 (soyyeong 기술 블로그) - [S11, S97-S104] 기계학습 기반 언어분석 기술 및 추출 요약 연구 (DBpia, 김분도) - [S4, S16, S22, S34] lovit/soynlp 및 관련 라이브러리 가이드 (GitHub 공식 문서) ## 📝 변경 이력 (Change history) - 2026-06-09: Initial draft generated via Datacollector_MAC P-Reinforce engine. PageRank의 수학적 원리와 추출적 요약의 알고리즘 프로세스를 통합하여 작성.