패스트캠퍼스 오프라인 강좌에서 S-P-O 분해 연습문제로 출제했던 시나리오의 풀이 노트를 공유합니다.

이 문제의 핵심은 두 가지입니다.

  1. 자연어 문장을 주어(Subject) - 술어(Predicate) - 목적어(Object) 트리플로 분해하기
  2. 관측 사실(Observation)가설(Hypothesis)을 명확히 분리하기

문제 페이지

아래는 당시 문제로 제시했던 페이지를 인라인 SVG로 재현한 것입니다.

S-P-O 분해 시나리오: 전력 모듈-센서 노이즈 간섭(재현) 문서 메타, 목표, 참가자, 사건/가설 섹션을 두 컬럼 카드 레이아웃으로 구성한 시나리오 페이지 [연습문제] S-P-O 분해 시나리오 문서 번호 ONT-SCN-2024-002 작성 일자 2024-10-15 목표 (Objective) 부품 간의 연결 관계(전력, 데이터)를 추적하여 장애의 근본 원인(Root Cause)과 파급 효과를 규명합니다. 참석자 (CHARACTERS) A Alice (앨리스) 전자 회로 설계자 (Electronics Engineer) B Bob (밥) 시스템 통합 담당자 (Integrator) 전력 모듈과 센서 간의 노이즈 간섭에 따른 시스템 오작동 분석 2024-10-15 10:00 101호 회의실 배경 상황 (Context) 자율주행 로봇이 장애물이 없는 곳에서 급정거하는 유령 멈춤(Phantom Stop) 현상을 해결하기 위해 아키텍처 킥오프 회의가 소집되었습니다. ! 주요 사건 (Incident) 메인 프로세서(AP) 로그 분석 결과, 라이더(LiDAR) 센서가 장애물 감지 신호를 보낸 것으로 확인되었습니다. 그러나 라이더 센서 단품 테스트 결과는 정상 이었습니다. ? 가설 및 원인 (Hypothesis) 앨리스는 전원 공급 모듈(DC-DC Converter)과 라이더 센서 사이의 연결 관계를 의심합니다. 전원 모듈에서 발생한 미세한 리플 노이즈(Ripple Noise) 가 센서의 민감도 허용 범위를 초과하여, 센서가 노이즈를 장애물로 오인했을 가능성을 제기했습니다.

문제 요약

  • 자율주행 로봇이 장애물이 없는 곳에서 급정거하는 유령 멈춤(Phantom Stop) 현상이 발생했습니다.
  • AP 로그 분석 결과 LiDAR 센서가 장애물 감지 신호를 보냈지만, LiDAR 단품 테스트는 정상이었습니다.
  • 앨리스는 DC-DC 컨버터의 리플 노이즈가 센서 민감도를 초과해 오탐을 유발했을 가능성을 제기했습니다.

풀이 접근법

S-P-O 분해는 다음 세 단계로 진행합니다.

Step 1. 개체(Entity) 식별

시나리오에서 고유한 이름을 가질 수 있는 것을 먼저 찾습니다. 사람, 장비, 이벤트, 문서 등이 모두 개체 후보입니다.

개체 유형 근거
Scenario_ONT_SCN_2024_002 시나리오 문서 문서 번호 ONT-SCN-2024-002
Alice 인물 전자 회로 설계자
Bob 인물 시스템 통합 담당자
Meeting_2024_10_15_1000 회의 이벤트 2024-10-15 10:00, 101호
Robot_Autonomous 시스템 자율주행 로봇
PhantomStopEvent 장애 이벤트 유령 멈춤 현상
AP_Log 데이터 소스 메인 프로세서 로그
LiDAR_Sensor 부품 라이더 센서
DCDC_Converter 부품 전원 공급 모듈
RippleNoise 물리 현상 리플 노이즈

Step 2. 관측 사실 vs. 가설 분류

문장을 읽으면서 측정/확인된 사실인지, 아직 검증되지 않은 추정인지 분류합니다. 이 구분이 S-P-O 분해의 핵심입니다.

관측 사실의 판별 기준:

  • 로그에 기록된 데이터 → 사실
  • 테스트 결과 → 사실
  • 문서에 명시된 메타데이터 → 사실

가설의 판별 기준:

  • “의심합니다”, “가능성을 제기” 등 불확실성 표현 → 가설
  • 아직 측정하지 않은 인과 관계 → 가설

Step 3. 트리플 작성

각 문장에서 “무엇이(S) 어떠하다(P) 무엇과(O)” 구조를 추출합니다. 한 문장에서 여러 개의 트리플이 나올 수 있습니다.

“앨리스는 전원 공급 모듈(DC-DC Converter)과 라이더 센서 사이의 연결 관계를 의심합니다.”

이 문장 하나에서 다음 트리플들이 추출됩니다:

  • AlicesuspectsNoiseInterferenceHypothesis
  • NoiseInterferenceHypothesisinvolvesDCDC_Converter
  • NoiseInterferenceHypothesisinvolvesLiDAR_Sensor

“의심합니다”라는 표현이 있으므로, 이 트리플들은 모두 가설 그룹에 속합니다.

S-P-O 분해 결과: 관측 사실

# S P O
1 Scenario_ONT_SCN_2024_002 hasTitle “전력 모듈과 센서 간의 노이즈 간섭에 따른 시스템 오작동 분석”
2 Scenario_ONT_SCN_2024_002 hasDocumentNumber “ONT-SCN-2024-002”
3 Scenario_ONT_SCN_2024_002 hasDate “2024-10-15”
4 Scenario_ONT_SCN_2024_002 hasObjective “부품 간의 연결 관계를 추적하여 장애의 근본 원인과 파급 효과를 규명”
5 Scenario_ONT_SCN_2024_002 hasParticipant Alice
6 Alice hasRole “Electronics Engineer”
7 Scenario_ONT_SCN_2024_002 hasParticipant Bob
8 Bob hasRole “Integrator”
9 Meeting_2024_10_15_1000 scheduledAt “2024-10-15T10:00”
10 Meeting_2024_10_15_1000 locatedIn “101호 회의실”
11 Robot_Autonomous experienced PhantomStopEvent
12 AP_Log reported LiDAR_ObstacleSignal
13 LiDAR_UnitTest hasResult “normal”

S-P-O 분해 결과: 가설

# S P O
H1 Alice suspects NoiseInterferenceHypothesis
H2 NoiseInterferenceHypothesis involves DCDC_Converter
H3 NoiseInterferenceHypothesis involves LiDAR_Sensor
H4 DCDC_Converter produces RippleNoise
H5 RippleNoise exceedsToleranceOf LiDAR_Sensor
H6 RippleNoise causes FalseObstacleSignal
H7 FalseObstacleSignal leadsTo PhantomStopEvent

지식 그래프 시각화

위 트리플들을 그래프로 그려 보면 전체 인과 관계가 한눈에 보입니다. 파란 실선은 관측 사실, 빨간 점선은 가설입니다.

관측 사실 (Observation) Robot_Autonomous PhantomStopEvent experienced AP_Log LiDAR_ObstacleSignal reported LiDAR_UnitTest "normal" hasResult 가설 (Hypothesis) Alice NoiseInterference Hypothesis DCDC_Converter RippleNoise FalseObstacleSignal LiDAR_Sensor suspects involves involves produces exceedsTolerance causes leadsTo 관측 사실 가설 (미검증)

가설 체인(DCDC_ConverterRippleNoiseFalseObstacleSignalPhantomStopEvent)이 검증 대상 경로가 됩니다. 이 경로의 각 링크를 실측으로 확인하면 가설이 사실로 전환됩니다.

RDF 스케치 (Turtle)

@prefix ex:  <http://example.org/ontology/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# ── 시나리오 메타데이터 (관측 사실) ──
ex:Scenario_ONT_SCN_2024_002 a ex:Scenario ;
    ex:hasDocumentNumber "ONT-SCN-2024-002" ;
    ex:hasDate "2024-10-15"^^xsd:date ;
    ex:hasTitle "전력 모듈과 센서 간의 노이즈 간섭에 따른 시스템 오작동 분석" ;
    ex:hasObjective "부품 간의 연결 관계를 추적하여 장애의 근본 원인과 파급 효과를 규명" ;
    ex:hasParticipant ex:Alice, ex:Bob ;
    ex:hasContext ex:PhantomStopEvent ;
    ex:hasIncident ex:LiDARObstacleSignalIncident ;
    ex:hasHypothesis ex:NoiseInterferenceHypothesis .

ex:Alice a ex:Person ;
    ex:hasRole "Electronics Engineer" .

ex:Bob a ex:Person ;
    ex:hasRole "Integrator" .

ex:Meeting_2024_10_15_1000 a ex:Meeting ;
    ex:partOf ex:Scenario_ONT_SCN_2024_002 ;
    ex:scheduledAt "2024-10-15T10:00:00"^^xsd:dateTime ;
    ex:locatedIn "101호 회의실" .

# ── 관측된 사건 ──
ex:Robot_Autonomous a ex:System ;
    ex:experienced ex:PhantomStopEvent .

ex:PhantomStopEvent a ex:IncidentEvent ;
    ex:description "장애물이 없는 곳에서 급정거" .

ex:AP_Log a ex:DataSource ;
    ex:reported ex:LiDAR_ObstacleSignal .

ex:LiDAR_UnitTest a ex:TestResult ;
    ex:hasResult "normal" .

# ── 가설 (검증 대상) ──
ex:NoiseInterferenceHypothesis a ex:Hypothesis ;
    ex:suspectedBy ex:Alice ;
    ex:involves ex:DCDC_Converter, ex:LiDAR_Sensor .

ex:DCDC_Converter a ex:Component ;
    ex:produces ex:RippleNoise .        # 가설

ex:RippleNoise a ex:PhysicalPhenomenon ;
    ex:exceedsToleranceOf ex:LiDAR_Sensor ; # 가설
    ex:causes ex:FalseObstacleSignal .      # 가설

ex:FalseObstacleSignal a ex:Signal ;
    ex:leadsTo ex:PhantomStopEvent .        # 가설

흔한 실수

강좌에서 수강생분들이 자주 빠지는 함정 세 가지를 정리합니다.

1. 관측 사실과 가설을 섞는다

“DC-DC 컨버터가 리플 노이즈를 발생시켰다.”

아직 측정하지 않았으므로 사실이 아니라 가설입니다. 시나리오에서 “의심합니다”, “가능성을 제기” 같은 표현이 보이면, 그 뒤에 나오는 인과 관계는 전부 가설 그룹으로 분류해야 합니다.

2. 주어를 문자열로 쓴다

S: “앨리스” / P: suspects / O: “노이즈 간섭”

주어와 목적어가 고유한 개체라면 URI(리소스 식별자)로 표현해야 합니다. 문자열 리터럴("앨리스")은 이름이지, 개체 자체가 아닙니다. Alice라는 리소스로 지정해야 다른 트리플과 연결됩니다.

3. 한 문장에서 트리플 하나만 뽑는다

“앨리스는 전원 공급 모듈과 라이더 센서 사이의 연결 관계를 의심합니다.”

이 문장에는 최소 3개의 트리플(suspects, involves × 2)이 담겨 있습니다. 자연어 한 문장이 반드시 트리플 하나에 대응하지 않습니다. 명사구와 동사구를 꼼꼼히 분해해야 합니다.

다음 단계: 가설에서 검증으로

S-P-O 분해가 끝나면, 가설 체인의 각 링크가 자연스럽게 검증 과제가 됩니다.

가설 트리플 검증 방법
DCDC_ConverterproducesRippleNoise 오실로스코프로 DC-DC 출력단 리플 측정
RippleNoiseexceedsToleranceOfLiDAR_Sensor 센서 데이터시트의 전원 허용 리플 스펙과 비교
RippleNoisecausesFalseObstacleSignal 리플 주입 테스트 후 센서 출력 관찰
FalseObstacleSignalleadsToPhantomStopEvent 로그 타임스탬프 교차 확인

관측 사실은 검증된 데이터로 묶고, 가설은 검증 대상으로 명확히 분리합니다. 이렇게 분해해 두면 “다음에 뭘 확인해야 하지?”라는 질문에 그래프가 바로 답해줍니다.