From 8832f561d2fc4fc779ffcd2b9ac0f1ed3b5a9d31 Mon Sep 17 00:00:00 2001 From: Miraitowa <16208497+qjy200012@user.noreply.gitee.com> Date: Mon, 29 Dec 2025 14:03:03 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20Z25070051=E9=82=B1?= =?UTF-8?q?=E5=BB=BA=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Z25070051\351\202\261\345\273\272\344\270\232/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Z25070051\351\202\261\345\273\272\344\270\232/.keep" diff --git "a/Z25070051\351\202\261\345\273\272\344\270\232/.keep" "b/Z25070051\351\202\261\345\273\272\344\270\232/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From f6316780a8e95b7fe6c8ccca35182958d4209a9d Mon Sep 17 00:00:00 2001 From: Miraitowa <16208497+qjy200012@user.noreply.gitee.com> Date: Mon, 29 Dec 2025 14:03:21 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miraitowa <16208497+qjy200012@user.noreply.gitee.com> --- ...1\351\202\261\345\273\272\344\270\232.docx" | Bin 0 -> 147338 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "Z25070051\351\202\261\345\273\272\344\270\232/Z25070051\351\202\261\345\273\272\344\270\232.docx" diff --git "a/Z25070051\351\202\261\345\273\272\344\270\232/Z25070051\351\202\261\345\273\272\344\270\232.docx" "b/Z25070051\351\202\261\345\273\272\344\270\232/Z25070051\351\202\261\345\273\272\344\270\232.docx" new file mode 100644 index 0000000000000000000000000000000000000000..5adf727d51afa8f15ee659b41bfad37710409138 GIT binary patch literal 147338 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 literal 0 HcmV?d00001 -- Gitee From 5cac1c05cfd7de2837b38ee29783d7fe44d19d44 Mon Sep 17 00:00:00 2001 From: Miraitowa <16208497+qjy200012@user.noreply.gitee.com> Date: Mon, 29 Dec 2025 14:03:33 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miraitowa <16208497+qjy200012@user.noreply.gitee.com> --- .../\345\271\266\350\241\214.py" | 1097 +++++++++++++++++ 1 file changed, 1097 insertions(+) create mode 100644 "Z25070051\351\202\261\345\273\272\344\270\232/\345\271\266\350\241\214.py" diff --git "a/Z25070051\351\202\261\345\273\272\344\270\232/\345\271\266\350\241\214.py" "b/Z25070051\351\202\261\345\273\272\344\270\232/\345\271\266\350\241\214.py" new file mode 100644 index 0000000..99ba515 --- /dev/null +++ "b/Z25070051\351\202\261\345\273\272\344\270\232/\345\271\266\350\241\214.py" @@ -0,0 +1,1097 @@ +class Config: + """配置参数类""" + + # 路径提取参数 + MAX_PATH_LENGTH = 3 + MAX_PATHS_PER_PAIR = 50 + BEAM_WIDTH = 100 + + # 嵌入参数 + EMBEDDING_DIM = 100 + MARGIN = 1.0 + LEARNING_RATE = 0.001 + + # 模型参数 + ATTENTION_HEADS = 4 + DROPOUT_RATE = 0.1 + + # 训练参数 + BATCH_SIZE = 64 + EPOCHS = 50 + VALIDATION_SPLIT = 0.1 + + # 数据路径 + DATA_DIR = "./data/" + MODEL_DIR = "./models/" + + +import numpy as np +from collections import deque, defaultdict +from typing import List, Tuple, Set, Dict +import heapq + + +class PathExtractor: + """基于双向BFS的路径提取算子""" + + def __init__(self, triplets: List[Tuple], max_length: int = 3, max_paths: int = 50): + """ + 初始化路径提取器 + + Args: + triplets: 知识图谱三元组列表 [(头实体, 关系, 尾实体)] + max_length: 最大路径长度 + max_paths: 每对实体最大提取路径数 + """ + self.max_length = max_length + self.max_paths = max_paths + self.entity_to_relations = defaultdict(set) + self.relation_to_entities = defaultdict(set) + self._build_graph(triplets) + + def _build_graph(self, triplets: List[Tuple]): + """构建图结构""" + for h, r, t in triplets: + self.entity_to_relations[(h, 'out')].add((r, t)) + self.entity_to_relations[(t, 'in')].add((r, h)) + self.relation_to_entities[r].add((h, t)) + + def extract_paths(self, head: str, tail: str) -> List[List[str]]: + """ + 提取头尾实体间的所有关系路径 + + Args: + head: 头实体 + tail: 尾实体 + + Returns: + 关系路径列表,每条路径是关系序列 + """ + if head == tail: + return [] + + # 双向BFS搜索 + forward_paths = self._bfs_search(head, tail, direction='forward') + backward_paths = self._bfs_search(tail, head, direction='backward') + + # 合并路径并去重 + all_paths = forward_paths + backward_paths + unique_paths = self._remove_duplicate_paths(all_paths) + + # 限制路径数量 + return unique_paths[:self.max_paths] + + def _bfs_search(self, start: str, target: str, direction: str = 'forward') -> List[List[str]]: + """BFS搜索路径""" + queue = deque([(start, [])]) + visited = set([(start, tuple())]) + found_paths = [] + + while queue: + current_entity, current_path = queue.popleft() + + # 检查路径长度限制 + if len(current_path) >= self.max_length: + continue + + # 获取当前实体的邻居 + neighbors = self._get_neighbors(current_entity, direction) + + for relation, next_entity in neighbors: + new_path = current_path + [relation] + path_key = (next_entity, tuple(new_path)) + + if path_key in visited: + continue + + visited.add(path_key) + + # 找到目标实体 + if next_entity == target: + found_paths.append(new_path) + if len(found_paths) >= self.max_paths: + return found_paths + + # 继续搜索 + queue.append((next_entity, new_path)) + + return found_paths + + def _get_neighbors(self, entity: str, direction: str) -> Set[Tuple]: + """获取实体的邻居""" + if direction == 'forward': + return self.entity_to_relations.get((entity, 'out'), set()) + else: + return self.entity_to_relations.get((entity, 'in'), set()) + + def _remove_duplicate_paths(self, paths: List[List[str]]) -> List[List[str]]: + """去除重复路径""" + seen = set() + unique_paths = [] + + for path in paths: + path_tuple = tuple(path) + if path_tuple not in seen: + seen.add(path_tuple) + unique_paths.append(path) + + return unique_paths + + def extract_all_pairs_paths(self, entity_pairs: List[Tuple[str, str]]) -> Dict[Tuple[str, str], List[List[str]]]: + """ + 批量提取实体对之间的路径 + + Args: + entity_pairs: 实体对列表 [(头实体, 尾实体)] + + Returns: + 字典:实体对 -> 路径列表 + """ + results = {} + for head, tail in entity_pairs: + paths = self.extract_paths(head, tail) + if paths: + results[(head, tail)] = paths + + return results + + +import torch +import torch.nn as nn +import torch.nn.functional as F +import numpy as np +from typing import List, Dict + + +class PathEncoder(nn.Module): + """基于TransE的路径编码算子""" + + def __init__(self, num_relations: int, embedding_dim: int = 100): + super(PathEncoder, self).__init__() + self.embedding_dim = embedding_dim + + # 关系嵌入层 + self.relation_embeddings = nn.Embedding( + num_relations + 1, # +1 for padding + embedding_dim, + padding_idx=num_relations # 最后一维作为padding + ) + + # 位置编码 + self.position_embeddings = nn.Embedding(10, embedding_dim) # 支持最大路径长度10 + + # 自注意力层 + self.attention = nn.MultiheadAttention( + embed_dim=embedding_dim, + num_heads=4, + dropout=0.1, + batch_first=True + ) + + # 前馈网络 + self.feed_forward = nn.Sequential( + nn.Linear(embedding_dim, embedding_dim * 2), + nn.ReLU(), + nn.Linear(embedding_dim * 2, embedding_dim) + ) + + # 层归一化 + self.layer_norm1 = nn.LayerNorm(embedding_dim) + self.layer_norm2 = nn.LayerNorm(embedding_dim) + + def forward(self, path_indices: torch.Tensor, path_lengths: torch.Tensor) -> torch.Tensor: + """ + 编码路径 + + Args: + path_indices: 路径索引 [batch_size, max_path_len] + path_lengths: 路径实际长度 [batch_size] + + Returns: + 路径编码向量 [batch_size, embedding_dim] + """ + batch_size, max_len = path_indices.shape + + # 获取关系嵌入 + relation_embeds = self.relation_embeddings(path_indices) # [batch, seq_len, dim] + + # 添加位置编码 + positions = torch.arange(max_len, device=path_indices.device).unsqueeze(0).expand(batch_size, -1) + position_embeds = self.position_embeddings(positions) + embeddings = relation_embeds + position_embeds + + # 创建注意力mask + attention_mask = self._create_attention_mask(path_lengths, max_len, path_indices.device) + + # 自注意力编码 + attn_output, _ = self.attention( + embeddings, embeddings, embeddings, + key_padding_mask=attention_mask + ) + embeddings = self.layer_norm1(embeddings + attn_output) + + # 前馈网络 + ff_output = self.feed_forward(embeddings) + embeddings = self.layer_norm2(embeddings + ff_output) + + # 池化得到路径表示(考虑路径长度) + mask = (torch.arange(max_len, device=path_indices.device).unsqueeze(0) + < path_lengths.unsqueeze(1)).float().unsqueeze(-1) + masked_embeddings = embeddings * mask + + # 平均池化 + path_encodings = torch.sum(masked_embeddings, dim=1) / path_lengths.unsqueeze(1).clamp(min=1) + + return path_encodings + + def _create_attention_mask(self, lengths: torch.Tensor, max_len: int, device: torch.device) -> torch.Tensor: + """创建注意力mask""" + mask = torch.zeros(len(lengths), max_len, device=device, dtype=torch.bool) + for i, length in enumerate(lengths): + mask[i, length:] = True + return mask + + def compute_path_similarity(self, head: torch.Tensor, tail: torch.Tensor, + path_encoding: torch.Tensor) -> torch.Tensor: + """ + 计算路径相似度得分(基于TransE) + + Args: + head: 头实体嵌入 [batch_size, dim] + tail: 尾实体嵌入 [batch_size, dim] + path_encoding: 路径编码 [batch_size, dim] + + Returns: + 相似度得分 [batch_size] + """ + # 计算 h + path ≈ t + predicted_tail = head + path_encoding + similarity = -torch.norm(predicted_tail - tail, p=2, dim=1) + return similarity + + +import torch +import torch.nn as nn +import torch.nn.functional as F +import numpy as np +from typing import List, Tuple + + +class PathScorer(nn.Module): + """基于注意力机制的路径评分算子""" + + def __init__(self, embedding_dim: int = 100): + super(PathScorer, self).__init__() + self.embedding_dim = embedding_dim + + # 注意力网络 + self.query = nn.Linear(embedding_dim * 3, embedding_dim) + self.key = nn.Linear(embedding_dim, embedding_dim) + self.value = nn.Linear(embedding_dim, embedding_dim) + + # 评分网络 + self.scoring_network = nn.Sequential( + nn.Linear(embedding_dim * 3, embedding_dim), + nn.ReLU(), + nn.Dropout(0.1), + nn.Linear(embedding_dim, 1) + ) + + # 路径类型编码 + self.path_type_embeddings = nn.Embedding(5, embedding_dim) # 5种路径类型 + + def forward(self, head_emb: torch.Tensor, tail_emb: torch.Tensor, + path_encodings: List[torch.Tensor], path_types: torch.Tensor = None) -> Tuple[ + torch.Tensor, torch.Tensor]: + """ + 对多条路径进行评分 + + Args: + head_emb: 头实体嵌入 [batch_size, dim] + tail_emb: 尾实体嵌入 [batch_size, dim] + path_encodings: 路径编码列表,每个元素形状为 [num_paths_i, dim] + path_types: 路径类型 [total_paths] 或 None + + Returns: + scores: 路径得分 [total_paths] + attention_weights: 注意力权重 [batch_size, max_paths_per_pair] + """ + batch_size = head_emb.shape[0] + + # 准备输入 + all_scores = [] + all_attention_weights = [] + + for i in range(batch_size): + if len(path_encodings[i]) == 0: + # 如果没有路径,添加虚拟路径 + dummy_path = torch.zeros(1, self.embedding_dim, device=head_emb.device) + path_encodings[i] = dummy_path + + num_paths = len(path_encodings[i]) + paths = path_encodings[i] # [num_paths, dim] + + # 复制头尾实体 + h_i = head_emb[i].unsqueeze(0).expand(num_paths, -1) # [num_paths, dim] + t_i = tail_emb[i].unsqueeze(0).expand(num_paths, -1) # [num_paths, dim] + + # 添加路径类型信息 + if path_types is not None: + start_idx = sum([len(p) for p in path_encodings[:i]]) + types = path_types[start_idx:start_idx + num_paths] + type_emb = self.path_type_embeddings(types) + paths = paths + type_emb + + # 计算注意力得分 + attention_scores = self._compute_attention(h_i, t_i, paths) # [num_paths] + + # 计算综合得分 + combined = torch.cat([h_i, paths, t_i], dim=1) # [num_paths, dim*3] + path_scores = self.scoring_network(combined).squeeze(-1) # [num_paths] + + # 结合注意力 + final_scores = path_scores * torch.sigmoid(attention_scores) + + all_scores.append(final_scores) + all_attention_weights.append(torch.softmax(attention_scores, dim=0)) + + # 合并所有得分 + scores = torch.cat(all_scores, dim=0) + + return scores, all_attention_weights + + def _compute_attention(self, head: torch.Tensor, tail: torch.Tensor, + paths: torch.Tensor) -> torch.Tensor: + """计算注意力得分""" + # 构建查询向量 + query_input = torch.cat([head, tail, paths], dim=1) # [num_paths, dim*3] + query = self.query(query_input) # [num_paths, dim] + + # 键和值 + key = self.key(paths) # [num_paths, dim] + value = self.value(paths) # [num_paths, dim] + + # 缩放点积注意力 + scale = self.embedding_dim ** 0.5 + attention_logits = torch.matmul(query, key.transpose(0, 1)) / scale # [num_paths, num_paths] + + # 自注意力 + attention_weights = torch.softmax(attention_logits, dim=1) + + # 聚合值 + context = torch.matmul(attention_weights, value) # [num_paths, dim] + + # 计算注意力得分 + attention_scores = torch.sum(query * context, dim=1) # [num_paths] + + return attention_scores + + def aggregate_path_scores(self, scores: torch.Tensor, path_counts: List[int]) -> torch.Tensor: + """ + 聚合同一实体对的多条路径得分 + + Args: + scores: 所有路径得分 [total_paths] + path_counts: 每个实体对的路径数量列表 + + Returns: + 聚合后的得分 [batch_size] + """ + aggregated = [] + start_idx = 0 + + for count in path_counts: + if count == 0: + # 如果没有路径,得分为0 + aggregated.append(torch.tensor(0.0, device=scores.device)) + else: + # 使用log-sum-exp聚合 + pair_scores = scores[start_idx:start_idx + count] + # 软最大值聚合 + aggregated_score = torch.logsumexp(pair_scores, dim=0) + aggregated.append(aggregated_score) + start_idx += count + + return torch.stack(aggregated) + + +import torch +import torch.nn as nn +import torch.nn.functional as F +import numpy as np +from typing import List, Tuple, Dict + + +class RelationPredictor(nn.Module): + """基于路径的关系预测算子""" + + def __init__(self, num_relations: int, embedding_dim: int = 100): + super(RelationPredictor, self).__init__() + self.num_relations = num_relations + + # 关系分类器 + self.relation_classifier = nn.Sequential( + nn.Linear(embedding_dim * 3, embedding_dim * 2), + nn.ReLU(), + nn.Dropout(0.2), + nn.Linear(embedding_dim * 2, embedding_dim), + nn.ReLU(), + nn.Linear(embedding_dim, num_relations) + ) + + # 路径到关系的映射网络 + self.path_to_relation = nn.Sequential( + nn.Linear(embedding_dim, embedding_dim * 2), + nn.ReLU(), + nn.Linear(embedding_dim * 2, num_relations) + ) + + # 关系兼容性网络 + self.compatibility_network = nn.Sequential( + nn.Linear(embedding_dim * 2, embedding_dim), + nn.ReLU(), + nn.Linear(embedding_dim, 1) + ) + + def forward(self, head_emb: torch.Tensor, tail_emb: torch.Tensor, + path_encodings: torch.Tensor, candidate_relations: torch.Tensor = None) -> Tuple[torch.Tensor, Dict]: + """ + 预测头尾实体间的关系 + + Args: + head_emb: 头实体嵌入 [batch_size, dim] + tail_emb: 尾实体嵌入 [batch_size, dim] + path_encodings: 路径聚合编码 [batch_size, dim] + candidate_relations: 候选关系索引,如果为None则预测所有关系 + + Returns: + relation_scores: 关系得分 [batch_size, num_relations] 或 [batch_size, num_candidates] + prediction_info: 预测相关信息字典 + """ + batch_size = head_emb.shape[0] + + # 方法1: 基于实体和路径的直接预测 + combined = torch.cat([head_emb, path_encodings, tail_emb], dim=1) # [batch_size, dim*3] + direct_scores = self.relation_classifier(combined) # [batch_size, num_relations] + + # 方法2: 基于路径的关系映射 + path_based_scores = self.path_to_relation(path_encodings) # [batch_size, num_relations] + + # 方法3: 关系兼容性得分 + relation_embeddings = self._get_relation_embeddings() # [num_relations, dim] + relation_embeddings = relation_embeddings.unsqueeze(0).expand(batch_size, -1, + -1) # [batch_size, num_relations, dim] + + head_expanded = head_emb.unsqueeze(1).expand(-1, self.num_relations, -1) # [batch_size, num_relations, dim] + tail_expanded = tail_emb.unsqueeze(1).expand(-1, self.num_relations, -1) # [batch_size, num_relations, dim] + + compatibility_input = torch.cat([ + head_expanded + relation_embeddings, + tail_expanded + ], dim=-1) # [batch_size, num_relations, dim*2] + + compatibility_scores = self.compatibility_network(compatibility_input).squeeze( + -1) # [batch_size, num_relations] + + # 综合三种方法 + final_scores = (direct_scores + path_based_scores + compatibility_scores) / 3.0 + + # 如果有候选关系,只返回候选关系的得分 + if candidate_relations is not None: + candidate_scores = torch.gather( + final_scores, + 1, + candidate_relations + ) + final_scores = candidate_scores + + # 准备预测信息 + prediction_info = { + 'direct_scores': direct_scores, + 'path_based_scores': path_based_scores, + 'compatibility_scores': compatibility_scores, + 'final_scores': final_scores + } + + return final_scores, prediction_info + + def _get_relation_embeddings(self) -> torch.Tensor: + """获取关系嵌入权重""" + # 这里假设关系嵌入已经学习好,实际中需要从嵌入层获取 + return self.relation_classifier[0].weight[:self.num_relations, :self.relation_classifier[0].in_features // 3] + + def predict_with_explanation(self, head: str, tail: str, paths: List[List[str]], + head_emb: torch.Tensor, tail_emb: torch.Tensor, + path_encodings: torch.Tensor, top_k: int = 5) -> Dict: + """ + 预测关系并提供可解释的结果 + + Args: + head: 头实体 + tail: 尾实体 + paths: 路径列表 + head_emb: 头实体嵌入 + tail_emb: 尾实体嵌入 + path_encodings: 路径编码 + top_k: 返回前k个预测 + + Returns: + 包含预测和解释的字典 + """ + # 预测关系 + relation_scores, pred_info = self.forward( + head_emb.unsqueeze(0), + tail_emb.unsqueeze(0), + path_encodings.unsqueeze(0) + ) + + # 获取top-k关系 + scores = relation_scores.squeeze(0) + top_scores, top_indices = torch.topk(scores, min(top_k, len(scores))) + + # 分析路径贡献 + path_contributions = self._analyze_path_contributions( + head_emb, tail_emb, path_encodings, paths, top_indices + ) + + # 构建解释 + explanation = { + 'head_entity': head, + 'tail_entity': tail, + 'num_paths_found': len(paths), + 'top_predictions': [ + { + 'relation_id': idx.item(), + 'score': score.item(), + 'confidence': torch.sigmoid(score).item() + } + for idx, score in zip(top_indices, top_scores) + ], + 'path_contributions': path_contributions, + 'prediction_components': { + 'direct_component': pred_info['direct_scores'].mean().item(), + 'path_based_component': pred_info['path_based_scores'].mean().item(), + 'compatibility_component': pred_info['compatibility_scores'].mean().item() + } + } + + return explanation + + def _analyze_path_contributions(self, head_emb: torch.Tensor, tail_emb: torch.Tensor, + path_encodings: torch.Tensor, paths: List[List[str]], + relation_indices: torch.Tensor) -> List[Dict]: + """分析每条路径对不同关系的贡献""" + contributions = [] + + for i, path in enumerate(paths): + path_emb = path_encodings[i].unsqueeze(0) + + # 计算该路径对不同关系的支持度 + path_scores = [] + for rel_idx in relation_indices: + # 简化的贡献度计算 + rel_emb = self._get_relation_embeddings()[rel_idx].unsqueeze(0) + compatibility = -torch.norm(head_emb + rel_emb - tail_emb, p=2) + path_similarity = torch.cosine_similarity(path_emb, rel_emb.unsqueeze(0)) + contribution = (compatibility + path_similarity) / 2 + path_scores.append(contribution.item()) + + contributions.append({ + 'path': ' → '.join(path), + 'length': len(path), + 'relation_support': dict(zip(relation_indices.tolist(), path_scores)), + 'most_supported_relation': relation_indices[torch.argmax(torch.tensor(path_scores))].item() + }) + + return contributions + + +import torch +import torch.nn as nn +import torch.optim as optim +from torch.utils.data import Dataset, DataLoader +import numpy as np +import json +from typing import List, Tuple, Dict +import logging +from datetime import datetime + +from operators.path_extractor import PathExtractor +from operators.path_encoder import PathEncoder +from operators.path_scorer import PathScorer +from operators.relation_predictor import RelationPredictor +from models.transE import TransE +from utils.graph_utils import KnowledgeGraph +from utils.metrics import calculate_metrics +from config import Config + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +class KGDataset(Dataset): + """知识图谱数据集""" + + def __init__(self, triplets: List[Tuple], entity_vocab: Dict, relation_vocab: Dict): + self.triplets = triplets + self.entity_vocab = entity_vocab + self.relation_vocab = relation_vocab + + def __len__(self): + return len(self.triplets) + + def __getitem__(self, idx): + h, r, t = self.triplets[idx] + return { + 'head': self.entity_vocab[h], + 'relation': self.relation_vocab[r], + 'tail': self.entity_vocab[t], + 'head_str': h, + 'relation_str': r, + 'tail_str': t + } + + +class PathReasoningModel(nn.Module): + """完整的路径推理模型""" + + def __init__(self, num_entities: int, num_relations: int, config: Config): + super(PathReasoningModel, self).__init__() + self.config = config + + # TransE嵌入模型 + self.transE = TransE(num_entities, num_relations, config.EMBEDDING_DIM) + + # 路径编码器 + self.path_encoder = PathEncoder(num_relations, config.EMBEDDING_DIM) + + # 路径评分器 + self.path_scorer = PathScorer(config.EMBEDDING_DIM) + + # 关系预测器 + self.relation_predictor = RelationPredictor(num_relations, config.EMBEDDING_DIM) + + def forward(self, head_ids: torch.Tensor, tail_ids: torch.Tensor, + paths_list: List[List[List[int]]], path_lengths_list: List[List[int]]): + """前向传播""" + # 获取实体嵌入 + head_emb = self.transE.entity_embeddings(head_ids) + tail_emb = self.transE.entity_embeddings(tail_ids) + + # 编码路径 + batch_path_encodings = [] + for paths, lengths in zip(paths_list, path_lengths_list): + if len(paths) == 0: + batch_path_encodings.append(torch.zeros(0, self.config.EMBEDDING_DIM)) + continue + + # 将路径转换为张量 + max_len = max(lengths) + padded_paths = [] + for path in paths: + padded = path + [self.path_encoder.relation_embeddings.num_embeddings - 1] * (max_len - len(path)) + padded_paths.append(padded) + + paths_tensor = torch.tensor(padded_paths, dtype=torch.long) + lengths_tensor = torch.tensor(lengths, dtype=torch.long) + + # 编码路径 + path_encodings = self.path_encoder(paths_tensor, lengths_tensor) + batch_path_encodings.append(path_encodings) + + # 评分路径 + path_scores, attention_weights = self.path_scorer( + head_emb, tail_emb, batch_path_encodings + ) + + # 聚合路径表示 + aggregated_path_encodings = [] + path_counts = [] + for encodings in batch_path_encodings: + path_counts.append(len(encodings)) + if len(encodings) == 0: + aggregated = torch.zeros(self.config.EMBEDDING_DIM) + else: + # 加权平均聚合 + weights = attention_weights[len(aggregated_path_encodings)] + aggregated = torch.sum(encodings * weights.unsqueeze(-1), dim=0) + aggregated_path_encodings.append(aggregated) + + aggregated_embeddings = torch.stack(aggregated_path_encodings) + + # 预测关系 + relation_scores, pred_info = self.relation_predictor( + head_emb, tail_emb, aggregated_embeddings + ) + + return { + 'relation_scores': relation_scores, + 'path_scores': path_scores, + 'attention_weights': attention_weights, + 'prediction_info': pred_info, + 'aggregated_path_embeddings': aggregated_embeddings + } + + +class PathReasoningPipeline: + """路径推理管道""" + + def __init__(self, config: Config): + self.config = config + self.model = None + self.path_extractor = None + self.entity_vocab = None + self.relation_vocab = None + + def load_data(self, data_path: str): + """加载数据""" + logger.info("加载数据...") + + # 加载三元组 + with open(f"{data_path}/train.txt", 'r') as f: + train_triplets = [line.strip().split('\t') for line in f] + + with open(f"{data_path}/valid.txt", 'r') as f: + valid_triplets = [line.strip().split('\t') for line in f] + + with open(f"{data_path}/test.txt", 'r') as f: + test_triplets = [line.strip().split('\t') for line in f] + + # 构建词汇表 + all_entities = set() + all_relations = set() + + for triplets in [train_triplets, valid_triplets, test_triplets]: + for h, r, t in triplets: + all_entities.add(h) + all_entities.add(t) + all_relations.add(r) + + self.entity_vocab = {e: i for i, e in enumerate(all_entities)} + self.relation_vocab = {r: i for i, r in enumerate(all_relations)} + + logger.info(f"实体数量: {len(self.entity_vocab)}") + logger.info(f"关系数量: {len(self.relation_vocab)}") + logger.info(f"训练三元组: {len(train_triplets)}") + logger.info(f"验证三元组: {len(valid_triplets)}") + logger.info(f"测试三元组: {len(test_triplets)}") + + return train_triplets, valid_triplets, test_triplets + + def prepare_paths(self, triplets: List[Tuple]) -> Dict: + """准备路径数据""" + logger.info("提取路径...") + + # 初始化路径提取器 + self.path_extractor = PathExtractor( + triplets, + max_length=self.config.MAX_PATH_LENGTH, + max_paths=self.config.MAX_PATHS_PER_PAIR + ) + + # 提取实体对 + entity_pairs = [(h, t) for h, _, t in triplets] + + # 提取路径 + paths_dict = self.path_extractor.extract_all_pairs_paths(entity_pairs) + + # 转换为索引格式 + indexed_paths = {} + for (h, t), paths in paths_dict.items(): + indexed_paths[(self.entity_vocab[h], self.entity_vocab[t])] = [ + [self.relation_vocab[r] for r in path] + for path in paths + ] + + logger.info(f"提取了 {len(indexed_paths)} 个实体对的路径") + + return indexed_paths + + def train(self, train_triplets: List[Tuple], valid_triplets: List[Tuple], + train_paths: Dict, valid_paths: Dict): + """训练模型""" + logger.info("开始训练模型...") + + # 初始化模型 + self.model = PathReasoningModel( + len(self.entity_vocab), + len(self.relation_vocab), + self.config + ) + + # 优化器 + optimizer = optim.Adam(self.model.parameters(), lr=self.config.LEARNING_RATE) + + # 损失函数 + criterion = nn.CrossEntropyLoss() + + # 训练循环 + best_val_loss = float('inf') + patience = 10 + patience_counter = 0 + + for epoch in range(self.config.EPOCHS): + self.model.train() + total_loss = 0 + + # 分批训练 + batch_size = self.config.BATCH_SIZE + num_batches = (len(train_triplets) + batch_size - 1) // batch_size + + for batch_idx in range(num_batches): + start_idx = batch_idx * batch_size + end_idx = min((batch_idx + 1) * batch_size, len(train_triplets)) + + batch_triplets = train_triplets[start_idx:end_idx] + + # 准备批数据 + head_ids = [] + tail_ids = [] + relation_ids = [] + paths_list = [] + path_lengths_list = [] + + for h, r, t in batch_triplets: + h_idx = self.entity_vocab[h] + t_idx = self.entity_vocab[t] + r_idx = self.relation_vocab[r] + + head_ids.append(h_idx) + tail_ids.append(t_idx) + relation_ids.append(r_idx) + + # 获取路径 + if (h_idx, t_idx) in train_paths: + paths = train_paths[(h_idx, t_idx)] + paths_list.append(paths) + path_lengths_list.append([len(p) for p in paths]) + else: + paths_list.append([]) + path_lengths_list.append([]) + + # 转换为张量 + head_tensor = torch.tensor(head_ids, dtype=torch.long) + tail_tensor = torch.tensor(tail_ids, dtype=torch.long) + relation_tensor = torch.tensor(relation_ids, dtype=torch.long) + + # 前向传播 + outputs = self.model(head_tensor, tail_tensor, paths_list, path_lengths_list) + relation_scores = outputs['relation_scores'] + + # 计算损失 + loss = criterion(relation_scores, relation_tensor) + + # 反向传播 + optimizer.zero_grad() + loss.backward() + optimizer.step() + + total_loss += loss.item() + + if batch_idx % 100 == 0: + logger.info(f"Epoch {epoch + 1}, Batch {batch_idx}/{num_batches}, Loss: {loss.item():.4f}") + + avg_train_loss = total_loss / num_batches + logger.info(f"Epoch {epoch + 1}, Average Train Loss: {avg_train_loss:.4f}") + + # 验证 + val_loss = self.validate(valid_triplets, valid_paths, criterion) + logger.info(f"Epoch {epoch + 1}, Validation Loss: {val_loss:.4f}") + + # 早停 + if val_loss < best_val_loss: + best_val_loss = val_loss + patience_counter = 0 + # 保存最佳模型 + torch.save(self.model.state_dict(), f"{self.config.MODEL_DIR}/best_model.pt") + else: + patience_counter += 1 + if patience_counter >= patience: + logger.info(f"早停在 epoch {epoch + 1}") + break + + logger.info("训练完成") + + def validate(self, triplets: List[Tuple], paths: Dict, criterion) -> float: + """验证模型""" + self.model.eval() + total_loss = 0 + + with torch.no_grad(): + for h, r, t in triplets: + h_idx = self.entity_vocab[h] + t_idx = self.entity_vocab[t] + r_idx = self.relation_vocab[r] + + # 获取路径 + if (h_idx, t_idx) in paths: + paths_list = [paths[(h_idx, t_idx)]] + path_lengths_list = [[len(p) for p in paths[(h_idx, t_idx)]]] + else: + paths_list = [[]] + path_lengths_list = [[]] + + # 转换为张量 + head_tensor = torch.tensor([h_idx], dtype=torch.long) + tail_tensor = torch.tensor([t_idx], dtype=torch.long) + relation_tensor = torch.tensor([r_idx], dtype=torch.long) + + # 前向传播 + outputs = self.model(head_tensor, tail_tensor, paths_list, path_lengths_list) + relation_scores = outputs['relation_scores'] + + # 计算损失 + loss = criterion(relation_scores, relation_tensor) + total_loss += loss.item() + + return total_loss / len(triplets) + + def predict(self, head: str, tail: str, top_k: int = 5) -> Dict: + """预测头尾实体间的关系""" + if head not in self.entity_vocab or tail not in self.entity_vocab: + raise ValueError(f"实体 {head} 或 {tail} 不在词汇表中") + + self.model.eval() + + # 获取实体索引 + h_idx = self.entity_vocab[head] + t_idx = self.entity_vocab[tail] + + # 提取路径 + paths = self.path_extractor.extract_paths(head, tail) + indexed_paths = [[self.relation_vocab[r] for r in path] for path in paths] + + # 转换为模型输入格式 + paths_list = [indexed_paths] + path_lengths_list = [[len(p) for p in indexed_paths]] + + # 获取实体嵌入 + head_tensor = torch.tensor([h_idx], dtype=torch.long) + tail_tensor = torch.tensor([t_idx], dtype=torch.long) + + with torch.no_grad(): + # 获取预测结果 + outputs = self.model(head_tensor, tail_tensor, paths_list, path_lengths_list) + + # 使用关系预测器的解释功能 + head_emb = self.model.transE.entity_embeddings(head_tensor).squeeze(0) + tail_emb = self.model.transE.entity_embeddings(tail_tensor).squeeze(0) + path_encodings = outputs['aggregated_path_embeddings'].squeeze(0) + + explanation = self.model.relation_predictor.predict_with_explanation( + head, tail, paths, head_emb, tail_emb, path_encodings, top_k + ) + + return explanation + + def evaluate(self, test_triplets: List[Tuple], test_paths: Dict) -> Dict: + """评估模型性能""" + logger.info("评估模型...") + + self.model.eval() + all_predictions = [] + all_labels = [] + + with torch.no_grad(): + for h, r, t in test_triplets: + h_idx = self.entity_vocab[h] + t_idx = self.entity_vocab[t] + r_idx = self.relation_vocab[r] + + # 获取路径 + if (h_idx, t_idx) in test_paths: + paths_list = [test_paths[(h_idx, t_idx)]] + path_lengths_list = [[len(p) for p in test_paths[(h_idx, t_idx)]]] + else: + paths_list = [[]] + path_lengths_list = [[]] + + # 转换为张量 + head_tensor = torch.tensor([h_idx], dtype=torch.long) + tail_tensor = torch.tensor([t_idx], dtype=torch.long) + + # 预测 + outputs = self.model(head_tensor, tail_tensor, paths_list, path_lengths_list) + relation_scores = outputs['relation_scores'] + + # 获取预测结果 + pred_probs = torch.softmax(relation_scores, dim=1) + pred_label = torch.argmax(pred_probs, dim=1) + + all_predictions.append(pred_label.item()) + all_labels.append(r_idx) + + # 计算指标 + from utils.metrics import calculate_metrics + metrics = calculate_metrics(all_predictions, all_labels) + + logger.info(f"评估结果: {metrics}") + return metrics + + +def main(): + """主函数""" + config = Config() + + # 创建管道 + pipeline = PathReasoningPipeline(config) + + # 加载数据 + train_triplets, valid_triplets, test_triplets = pipeline.load_data(config.DATA_DIR) + + # 准备路径 + logger.info("准备训练路径...") + train_paths = pipeline.prepare_paths(train_triplets) + + logger.info("准备验证路径...") + valid_paths = pipeline.prepare_paths(valid_triplets) + + logger.info("准备测试路径...") + test_paths = pipeline.prepare_paths(test_triplets) + + # 训练模型 + pipeline.train(train_triplets, valid_triplets, train_paths, valid_paths) + + # 加载最佳模型 + pipeline.model.load_state_dict(torch.load(f"{config.MODEL_DIR}/best_model.pt")) + + # 评估模型 + metrics = pipeline.evaluate(test_triplets, test_paths) + + # 保存评估结果 + with open(f"{config.MODEL_DIR}/evaluation_results.json", 'w') as f: + json.dump(metrics, f, indent=2) + + # 示例预测 + if len(test_triplets) > 0: + sample = test_triplets[0] + head, true_rel, tail = sample + + logger.info(f"\n示例预测:") + logger.info(f"头实体: {head}") + logger.info(f"尾实体: {tail}") + logger.info(f"真实关系: {true_rel}") + + try: + prediction = pipeline.predict(head, tail, top_k=3) + + logger.info(f"预测结果:") + for pred in prediction['top_predictions']: + # 查找关系名称 + rel_name = [k for k, v in pipeline.relation_vocab.items() if v == pred['relation_id']][0] + logger.info(f" 关系: {rel_name}, 得分: {pred['score']:.4f}, 置信度: {pred['confidence']:.4f}") + + logger.info(f"找到的路径数: {prediction['num_paths_found']}") + + # 保存预测示例 + with open(f"{config.MODEL_DIR}/prediction_example.json", 'w') as f: + json.dump(prediction, f, indent=2, default=str) + + except Exception as e: + logger.error(f"预测失败: {e}") + + logger.info("实验完成") + + +if __name__ == "__main__": + main() \ No newline at end of file -- Gitee