# preference 模块说明 ## 模块作用 从 LLM 输出中解析出结构化的挖掘参数(min_participation、max_pattern_size、priority 等),并提供基于用户向量的模式打分函数(基线余弦相似度、可选学习模型打分、以及多模式批量打分)。 ## 文件与接口 | 文件 | 内容 | 说明 | |------|------|------| | parser.py | PreferenceParser | 从文本中解析 JSON/正则提取参数 | | scorer.py | 函数 | 构建用户向量、单模式/多模式打分 | --- ## 接口说明 ### 1. PreferenceParser(parser.py) #### `__init__(default_params: Dict[str, Any] = None)` - **传入参数**:`default_params`,默认参数字典(如 min_participation、max_pattern_size、priority、min_confidence);缺省则用类默认值。 - **传出参数**:无。 #### `parse_preference(text: str) -> Dict[str, Any]` - **传入参数**:`text`,LLM 返回的原始文本。 - **传出参数**:解析并补全后的参数字典,包含 `min_participation`、`max_pattern_size`、`priority`、`min_confidence` 等。 --- ### 2. scorer.py 中的函数 #### `build_user_vector(memory: Dict[str, Any], dim: int = 384) -> np.ndarray` - **传入参数**: - `memory`:用户记忆,包含 `positive`、`negative` 向量列表。 - `dim`:向量维度。 - **传出参数**:用户偏好向量 u = mean(positive) - mean(negative)。 #### `score_with_baseline(pattern_vec: np.ndarray, user_vec: np.ndarray) -> float` - **传入参数**:`pattern_vec` 模式嵌入向量,`user_vec` 用户向量。 - **传出参数**:余弦相似度标量。 #### `score_with_model(pattern_vec, user_vec, model=None) -> float` - **传入参数**:`pattern_vec`、`user_vec` 同上;`model` 为可选的 PreferenceEncoder。 - **传出参数**:经模型投影后的余弦相似度;无模型时退回 baseline。 #### `score_patterns(patterns: List[Dict], user_vec: np.ndarray, model=None, alpha: float = 0.7) -> List[float]` - **传入参数**: - `patterns`:模式列表,每项需含可编码的 pattern 信息。 - `user_vec`:用户向量。 - `model`:可选偏好编码模型。 - `alpha`:偏好分数与置信度的融合权重。 - **传出参数**:与 `patterns` 等长的分数列表。