| name | field-keywords |
| description | Domain-specific keyword mappings for research report generation. Includes ROS2, AI/ML, and general engineering keywords for chapter classification and content mapping. |
Field Keywords Skill
Overview
This skill provides domain-specific keyword mappings for automatic research domain detection and chapter content mapping. It includes three domain keyword sets:
- ROS2: Robot Operating System 2 development
- AI/ML: Artificial Intelligence and Machine Learning
- GENERAL: Generic engineering/research (fallback)
ROS2 Keywords
{
"domain": "ROS2",
"description": "ROS2 (Robot Operating System 2) ๊ธฐ๋ฐ ๋ก๋ด ์์คํ
๊ฐ๋ฐ ๋ถ์ผ",
"chapter_keywords": {
"chapter_1_hardware": {
"title": "ํ๋์จ์ด ํตํฉ ๋ฐ ์ผ์ ์ตํฉ",
"primary_keywords": ["CAN", "SocketCAN", "CANopen", "์ผ์", "๊ฒฝ์ฌ๊ณ", "inclinometer", "์๋ ฅ์ผ์", "์ ์", "ํต์ ", "์ธํฐํ์ด์ค"],
"secondary_keywords": ["can_bridge", "SDO", "PDO", "๋นํธ๋ ์ดํธ", "๋ฒ์ค", "๋ฉํฐ์ค๋ ๋", "ํ์์คํฌํ", "๋๊ธฐํ"]
},
"chapter_2_computation": {
"title": "๊ธฐ๊ตฌํ ์ฐ์ฐ ์์คํ
",
"primary_keywords": ["๊ธฐ๊ตฌํ", "kinematics", "์ ๊ธฐ๊ตฌํ", "์ญ๊ธฐ๊ตฌํ", "forward", "inverse", "DOF", "์์ ๋"],
"secondary_keywords": ["๋ณํ", "์ขํ", "๊ด์ ", "๋งํฌ", "์๋ณด", "elbow", "ํด์์ ", "์์น์ "]
},
"chapter_3_generation": {
"title": "๊ถค์ ์์ฑ ์์คํ
",
"primary_keywords": ["๊ถค์ ", "trajectory", "๊ฒฝ๋ก", "path", "๊ณํ", "planning", "์์ฑ", "generator"],
"secondary_keywords": ["์ํ์ค", "์ค์ผ์ค๋ง", "๋ฐฐ์น", "batch", "ํฌ์ธํธ", "์จ์ดํฌ์ธํธ"]
},
"chapter_4_control": {
"title": "์ ์ด ์์คํ
",
"primary_keywords": ["์ ์ด", "control", "PI", "PID", "๊ฒ์ธ", "gain", "ํผ๋๋ฐฑ", "feedback"],
"secondary_keywords": ["Kp", "Ki", "Kd", "์ค์ผ์ค๋ง", "ํ๋", "threshold", "์ค์ฐจ", "error"]
},
"chapter_5_ai": {
"title": "AI ๊ฐํํ์ต ์์คํ
",
"primary_keywords": ["AI", "๊ฐํํ์ต", "reinforcement", "learning", "์ ์ฑ
", "policy", "์ํผ์๋", "episode"],
"secondary_keywords": ["๊ด์ธก", "observation", "์ก์
", "action", "๋ฆฌ์๋", "reward", "๋คํธ์ํฌ", "์ถ๋ก ", "inference"]
},
"chapter_6_interface": {
"title": "ROS2 ํต์ ์ธํฐํ์ด์ค",
"primary_keywords": ["๋ฉ์์ง", "msg", "์๋น์ค", "service", "์ก์
", "action", "ํ ํฝ", "topic"],
"secondary_keywords": ["publisher", "subscriber", "client", "server", "QoS", "callback", "executor"]
},
"chapter_7_integration": {
"title": "์์คํ
ํตํฉ ๋ฐ ๊ฒ์ฆ",
"primary_keywords": ["HMI", "GUI", "์๋ฎฌ๋ ์ด์
", "simulation", "ํ
์คํธ", "test", "๊ฒ์ฆ", "validation"],
"secondary_keywords": ["PyQt", "Rviz", "Gazebo", "๋ชจ๋ํฐ๋ง", "์๊ฐํ", "visualization"]
},
"chapter_8_safety": {
"title": "์์ ์ฑ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ",
"primary_keywords": ["์์ ", "safety", "๋น์", "emergency", "์๋ฌ", "error", "๋ณต๊ตฌ", "recovery"],
"secondary_keywords": ["์ฌ์๋", "retry", "ํ์์์", "timeout", "๋ฐฑ์คํ", "backoff", "์๊ณ๊ฐ", "threshold"]
}
},
"domain_specific_terms": {
"generic_to_domain": {
"๋ชจ๋": "๋
ธ๋(node)",
"์ฒ๋ฆฌ": "ํผ๋ธ๋ฆฌ์(publish)",
"์ค์ ": "ํ๋ผ๋ฏธํฐ(parameter)",
"์ฐ๊ฒฐ": "ํ ํฝ/์๋น์ค(topic/service)",
"์
๋ ฅ": "๊ตฌ๋
(subscribe)",
"์ถ๋ ฅ": "๋ฐํ(publish)",
"ํจ์ ํธ์ถ": "์๋น์ค ํธ์ถ(service call)",
"๋น๋๊ธฐ ์์
": "์ก์
(action)"
}
},
"common_packages": [
"excavator_msgs",
"excavator_signal_manager",
"excavator_trajectory_planning",
"excavator_control",
"excavator_task_management"
],
"common_file_extensions": [".py", ".cpp", ".hpp", ".yaml", ".launch.py", ".msg", ".srv", ".action"]
}
AI/ML Keywords
{
"domain": "AI_ML",
"description": "AI/ML (์ธ๊ณต์ง๋ฅ/๋จธ์ ๋ฌ๋) ๊ธฐ๋ฐ ์์คํ
๊ฐ๋ฐ ๋ถ์ผ",
"chapter_keywords": {
"chapter_1_hardware": {
"title": "๋ฐ์ดํฐ ์์ง ๋ฐ ์ ์ฒ๋ฆฌ ์์คํ
",
"primary_keywords": ["๋ฐ์ดํฐ", "data", "์์ง", "collection", "์ ์ฒ๋ฆฌ", "preprocessing", "ํ์ดํ๋ผ์ธ", "pipeline"],
"secondary_keywords": ["๋ฐฐ์น", "batch", "์คํธ๋ฆฌ๋ฐ", "streaming", "ETL", "์ ๊ทํ", "normalization"]
},
"chapter_2_computation": {
"title": "๋ชจ๋ธ ์ํคํ
์ฒ ์ค๊ณ",
"primary_keywords": ["๋ชจ๋ธ", "model", "์ํคํ
์ฒ", "architecture", "๋ ์ด์ด", "layer", "๋คํธ์ํฌ", "network"],
"secondary_keywords": ["CNN", "RNN", "Transformer", "attention", "embedding", "encoder", "decoder"]
},
"chapter_3_generation": {
"title": "ํ์ต ๋ฐ์ดํฐ ์์ฑ ์์คํ
",
"primary_keywords": ["์์ฑ", "generation", "augmentation", "์ฆ๊ฐ", "ํฉ์ฑ", "synthetic", "์ํ๋ง", "sampling"],
"secondary_keywords": ["๋ผ๋ฒจ๋ง", "labeling", "์ด๋
ธํ
์ด์
", "annotation", "๋ฐธ๋ฐ์ฑ", "balancing"]
},
"chapter_4_control": {
"title": "ํ์ต ํ๋ก์ธ์ค ์ ์ด",
"primary_keywords": ["ํ์ต", "training", "์ต์ ํ", "optimization", "์์ค", "loss", "์ญ์ ํ", "backpropagation"],
"secondary_keywords": ["ํ์ต๋ฅ ", "learning_rate", "์ํญ", "epoch", "๋ฐฐ์น", "batch_size", "๊ทธ๋๋์ธํธ", "gradient"]
},
"chapter_5_ai": {
"title": "์ถ๋ก ๋ฐ ๋ฐฐํฌ ์์คํ
",
"primary_keywords": ["์ถ๋ก ", "inference", "๋ฐฐํฌ", "deployment", "์๋น", "serving", "์์ธก", "prediction"],
"secondary_keywords": ["ONNX", "TensorRT", "์์ํ", "quantization", "๊ฐ์ํ", "acceleration"]
},
"chapter_6_interface": {
"title": "API ๋ฐ ์๋น์ค ์ธํฐํ์ด์ค",
"primary_keywords": ["API", "REST", "gRPC", "์๋ํฌ์ธํธ", "endpoint", "์์ฒญ", "request", "์๋ต", "response"],
"secondary_keywords": ["FastAPI", "Flask", "Docker", "Kubernetes", "๋ง์ดํฌ๋ก์๋น์ค"]
},
"chapter_7_integration": {
"title": "๋ชจ๋ธ ํ๊ฐ ๋ฐ ๊ฒ์ฆ",
"primary_keywords": ["ํ๊ฐ", "evaluation", "๊ฒ์ฆ", "validation", "ํ
์คํธ", "test", "๋ฉํธ๋ฆญ", "metric"],
"secondary_keywords": ["์ ํ๋", "accuracy", "์ ๋ฐ๋", "precision", "์ฌํ์จ", "recall", "F1", "AUC"]
},
"chapter_8_safety": {
"title": "๋ชจ๋ธ ์์ ์ฑ ๋ฐ ๋ชจ๋ํฐ๋ง",
"primary_keywords": ["๋ชจ๋ํฐ๋ง", "monitoring", "๋๋ฆฌํํธ", "drift", "์ด์ํ์ง", "anomaly", "๋ก๊น
", "logging"],
"secondary_keywords": ["MLOps", "๋ฒ์ ๊ด๋ฆฌ", "versioning", "๋กค๋ฐฑ", "rollback", "A/Bํ
์คํธ"]
}
},
"domain_specific_terms": {
"generic_to_domain": {
"๋ชจ๋": "๋ชจ๋/๋ ์ด์ด(module/layer)",
"์ฒ๋ฆฌ": "์ถ๋ก (inference)",
"์ค์ ": "ํ์ดํผํ๋ผ๋ฏธํฐ(hyperparameter)",
"์ฐ๊ฒฐ": "๋ ์ด์ด ์ฐ๊ฒฐ(layer connection)",
"์
๋ ฅ": "์
๋ ฅ ํ
์(input tensor)",
"์ถ๋ ฅ": "์ถ๋ ฅ ํ
์(output tensor)",
"๋ฐ๋ณต": "์ํญ(epoch)",
"์ ์ฅ": "์ฒดํฌํฌ์ธํธ(checkpoint)"
}
},
"common_frameworks": [
"PyTorch",
"TensorFlow",
"Keras",
"scikit-learn",
"Hugging Face",
"JAX"
],
"common_file_extensions": [".py", ".ipynb", ".onnx", ".pt", ".pth", ".h5", ".yaml", ".json"]
}
GENERAL Keywords
{
"domain": "GENERAL",
"description": "๋ฒ์ฉ ์ฐ๊ตฌ/๊ฐ๋ฐ ๋ถ์ผ (ํน์ ๋๋ฉ์ธ ๊ฐ์ง ์คํจ ์ ์ ์ฉ)",
"chapter_keywords": {
"chapter_1_hardware": {
"title": "์์คํ
์ธํ๋ผ ๊ตฌ์ถ",
"primary_keywords": ["์ผ์", "sensor", "ํ๋์จ์ด", "hardware", "์ธํฐํ์ด์ค", "interface", "ํต์ ", "communication"],
"secondary_keywords": ["ํ๋กํ ์ฝ", "protocol", "์ฐ๊ฒฐ", "connection", "๋๋ผ์ด๋ฒ", "driver", "ํฌํธ", "port"]
},
"chapter_2_computation": {
"title": "ํต์ฌ ์ฐ์ฐ ๋ชจ๋",
"primary_keywords": ["์๊ณ ๋ฆฌ์ฆ", "algorithm", "์ฐ์ฐ", "computation", "์ฒ๋ฆฌ", "processing", "๋ณํ", "transformation"],
"secondary_keywords": ["ํจ์", "function", "๊ณ์ฐ", "calculation", "์์", "formula", "๋ชจ๋ธ", "model"]
},
"chapter_3_generation": {
"title": "๋ฐ์ดํฐ/๊ฒฐ๊ณผ ์์ฑ ์์คํ
",
"primary_keywords": ["์์ฑ", "generation", "๊ณํ", "planning", "์ค์ผ์ค", "schedule", "์ํ์ค", "sequence"],
"secondary_keywords": ["ํ์ดํ๋ผ์ธ", "pipeline", "์ํฌํ๋ก์ฐ", "workflow", "์๋ํ", "automation"]
},
"chapter_4_control": {
"title": "์ ์ด ๋ฐ ์กฐ์ ์์คํ
",
"primary_keywords": ["์ ์ด", "control", "์กฐ์ ", "regulation", "ํผ๋๋ฐฑ", "feedback", "๋ฃจํ", "loop"],
"secondary_keywords": ["์ค์ ๊ฐ", "setpoint", "์ค์ฐจ", "error", "๋ณด์ ", "correction", "์์ ํ", "stabilization"]
},
"chapter_5_ai": {
"title": "์ง๋ฅํ ์์คํ
",
"primary_keywords": ["AI", "ML", "ํ์ต", "learning", "์์ธก", "prediction", "๋ถ๋ฅ", "classification"],
"secondary_keywords": ["๋ชจ๋ธ", "model", "ํ๋ จ", "training", "์ถ๋ก ", "inference", "๋ฐ์ดํฐ", "data"]
},
"chapter_6_interface": {
"title": "์ธํฐํ์ด์ค ์ค๊ณ",
"primary_keywords": ["API", "์ธํฐํ์ด์ค", "interface", "ํ๋กํ ์ฝ", "protocol", "ํต์ ", "communication"],
"secondary_keywords": ["๋ฉ์์ง", "message", "์์ฒญ", "request", "์๋ต", "response", "ํฌ๋งท", "format"]
},
"chapter_7_integration": {
"title": "์์คํ
ํตํฉ ๋ฐ ๊ฒ์ฆ",
"primary_keywords": ["ํ
์คํธ", "test", "๊ฒ์ฆ", "verification", "ํตํฉ", "integration", "์๋ฎฌ๋ ์ด์
", "simulation"],
"secondary_keywords": ["์ ๋", "unit", "E2E", "์ฑ๋ฅ", "performance", "๋ฒค์น๋งํฌ", "benchmark"]
},
"chapter_8_safety": {
"title": "์์ ์ฑ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ",
"primary_keywords": ["์์ ", "safety", "์ค๋ฅ", "error", "์์ธ", "exception", "๋ณต๊ตฌ", "recovery"],
"secondary_keywords": ["๋ก๊น
", "logging", "๋ชจ๋ํฐ๋ง", "monitoring", "์๋ฆผ", "alert", "๋ฐฑ์
", "backup"]
}
},
"domain_specific_terms": {
"generic_to_domain": {
"๋ชจ๋": "๋ชจ๋(module)",
"์ฒ๋ฆฌ": "์ฒ๋ฆฌ(processing)",
"์ค์ ": "์ค์ (configuration)",
"์ฐ๊ฒฐ": "์ฐ๊ฒฐ(connection)",
"์
๋ ฅ": "์
๋ ฅ(input)",
"์ถ๋ ฅ": "์ถ๋ ฅ(output)"
}
},
"detection_hints": {
"ros2_indicators": ["ROS", "ros2", "node", "topic", "service", "action", "msg", "launch"],
"ai_ml_indicators": ["PyTorch", "TensorFlow", "model", "training", "inference", "neural", "deep learning"],
"physics_indicators": ["quantum", "particle", "field", "energy", "wave", "equation"],
"biotech_indicators": ["gene", "protein", "cell", "DNA", "RNA", "assay", "sequencing"]
}
}
Usage
Domain Detection
Use keyword frequency analysis to detect research domain:
1. Count keyword occurrences in research notes
2. Calculate domain scores:
- primary_keyword * 3 points
- secondary_keyword * 1 point
3. Select domain with highest score
4. If score difference < 30%, use GENERAL
Chapter Mapping
Use chapter keywords to map content to chapters:
1. For each file, calculate chapter relevance scores
2. Match file headers/keywords to chapter keywords
3. Assign files to chapters with highest scores
4. Calculate sufficiency score (0-100) per chapter
5. Skip chapters with score < 30
Domain-Specific Term Substitution
Replace generic terms with domain-specific terms in generated reports:
ROS2: "๋ชจ๋" โ "๋
ธ๋(node)"
AI/ML: "๋ชจ๋" โ "๋ชจ๋/๋ ์ด์ด(module/layer)"
GENERAL: "๋ชจ๋" โ "๋ชจ๋(module)"
File Naming Convention
Keyword files follow the pattern: {domain_normalized}_keywords.json
Normalization rules:
- Lowercase domain name
- Replace "/" with "_"
- Examples:
- "ROS2" โ "ros2_keywords.json"
- "AI/ML" โ "ai_ml_keywords.json"
- "GENERAL" โ "general_keywords.json"