|
|
@@ -62,7 +62,7 @@ class Seg(BaseModel):
|
|
|
class Segment(BaseModel):
|
|
|
"""语义片段(Round 0语义分段结果)"""
|
|
|
text: str # 片段文本
|
|
|
- type: str # 语义类型: 疑问标记/核心动作/修饰短语/中心名词/逻辑连接
|
|
|
+ type: str # 语义维度: 动作目/修饰词/中心名词
|
|
|
score_with_o: float = 0.0 # 与原始问题的评分
|
|
|
reason: str = "" # 评分理由
|
|
|
from_o: str = "" # 原始问题
|
|
|
@@ -219,7 +219,7 @@ class RunContext(BaseModel):
|
|
|
class SemanticSegment(BaseModel):
|
|
|
"""单个语义片段"""
|
|
|
segment_text: str = Field(..., description="片段文本")
|
|
|
- segment_type: str = Field(..., description="语义类型(疑问标记/核心动作/修饰短语/中心名词/逻辑连接)")
|
|
|
+ segment_type: str = Field(..., description="语义维度(动作目标/修饰词/中心名词)")
|
|
|
reasoning: str = Field(..., description="分段理由")
|
|
|
|
|
|
|
|
|
@@ -230,27 +230,110 @@ class SemanticSegmentation(BaseModel):
|
|
|
|
|
|
|
|
|
semantic_segmentation_instructions = """
|
|
|
-你是语义分段专家。给定一个搜索query,将其拆分成不同语义类型的片段。
|
|
|
+你是语义分段专家。给定一个搜索query,将其拆分成3种语义维度的片段。
|
|
|
|
|
|
-## 语义类型定义
|
|
|
-1. **疑问引导**:如何、怎么、什么、哪里等疑问词
|
|
|
-2. **核心动作**:关键动词,如获取、制作、拍摄、寻找等
|
|
|
-3. **修饰短语**:形容词、副词等修饰成分
|
|
|
-4. **中心名词**:核心名词
|
|
|
-5. **逻辑连接**:并且、或者、以及等连接词(较少出现)
|
|
|
+## 语义定义
|
|
|
+
|
|
|
+### 1. 动作目标
|
|
|
+**定义**:表达"想要做什么"的完整语义单元
|
|
|
+**包含**:
|
|
|
+- 疑问词:如何、什么、哪些、有没有、怎么
|
|
|
+- 动作词:获取、制作、拍摄、寻找、学习、规划
|
|
|
+
|
|
|
+**示例**:
|
|
|
+- "如何获取" → 动作目标
|
|
|
+- "有哪些" → 动作目标(完整疑问表达)
|
|
|
+- "寻找" → 动作目标
|
|
|
+
|
|
|
+**注意**:疑问词和动作词应该作为一个完整的语义单元,不要拆分
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 2. 修饰词
|
|
|
+**定义**:对中心名词的限定和修饰的完整语义单元
|
|
|
+**包含**:形容词、时间词、地点词、程度词
|
|
|
+
|
|
|
+**注意**:多个连续的修饰词可以组合成一个片段
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 3. 中心名词
|
|
|
+**定义**:动作和目标的核心对象
|
|
|
+**包含**:
|
|
|
+- 核心名词:素材、梗图、表情包、教程
|
|
|
+- 复合名词:摄影素材、风光摄影素材、表情包梗图
|
|
|
+
|
|
|
+---
|
|
|
|
|
|
## 分段原则
|
|
|
-1. **语义完整性**:每个片段应该是一个完整的语义单元,如"如何制作猫咪表情包梗图"可以拆分为"如何"、"制作"、"猫咪表情包梗图"三个片段,每一段有完整语义
|
|
|
-2. **类型互斥**:每个片段只能属于一种类型
|
|
|
+
|
|
|
+1. **语义完整性**:每个片段应该是完整的语义单元
|
|
|
+ - 动作目标:疑问词+动作词应该合并
|
|
|
+ - 修饰词:连续的修饰成分可以合并
|
|
|
+ - 中心名词:复合名词保持完整
|
|
|
+
|
|
|
+2. **维度互斥**:每个片段只能属于一种维度
|
|
|
+
|
|
|
3. **保留原文**:片段文本必须保留原query中的字符,不得改写
|
|
|
+
|
|
|
4. **顺序保持**:片段顺序应与原query一致
|
|
|
|
|
|
+---
|
|
|
+
|
|
|
+## 输出格式(严格遵守)
|
|
|
+```json
|
|
|
+{
|
|
|
+ "segments": [
|
|
|
+ {
|
|
|
+ "segment_text": "分段结果文本1",
|
|
|
+ "segment_type": "语义类型",
|
|
|
+ "reasoning": ""
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "segment_text": "分段结果文本2",
|
|
|
+ "segment_type": "语义类型",
|
|
|
+ "reasoning": ""
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "segment_text": "分段结果文本3",
|
|
|
+ "segment_type": "语义类型",
|
|
|
+ "reasoning": ""
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ "overall_reasoning": ""
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**Query**: "职场相关的网络热梗有哪些"
|
|
|
|
|
|
+**分段结果**:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "segments": [
|
|
|
+ {
|
|
|
+ "segment_text": "职场相关的网络热",
|
|
|
+ "segment_type": "修饰词",
|
|
|
+ "reasoning": "多个修饰词组合,限定了梗的类型和范围"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "segment_text": "梗",
|
|
|
+ "segment_type": "中心名词",
|
|
|
+ "reasoning": "核心对象"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "segment_text": "有哪些",
|
|
|
+ "segment_type": "动作目标",
|
|
|
+ "reasoning": "完整的疑问表达,表达寻找/列举的动机"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "overall_reasoning": "修饰词+名词+疑问表达的结构"
|
|
|
+}
|
|
|
+```
|
|
|
|
|
|
## 输出要求
|
|
|
- segments: 片段列表
|
|
|
- segment_text: 片段文本(必须来自原query)
|
|
|
- - segment_type: 语义类型(从5种类型中选择)
|
|
|
+ - segment_type: 语义维度(动作目标/修饰词/中心名词)
|
|
|
- reasoning: 为什么这样分段
|
|
|
- overall_reasoning: 整体分段思路
|
|
|
|