
✨ 长期致力于信息检索、非结构化信息、UISPOSOF搜索模式、本体构建、本体评价、对象特征、语义相似度、语义相关度、UISSOSOF原型系统研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1PDCAE循环本体构建与量化评价体系提出一种包含计划、执行、检查、行动、评价五个阶段的领域本体构建方法。以古陶瓷领域为例首先从55篇学术论文和3个专业词典中抽取初始概念集共得到487个概念。采用七步法的扩展版本在检查阶段利用描述逻辑推理器Pellet检测一致性和冗余修正了23处包含关系错误。评价阶段设计了五个指标原子性、完整性、一致性、可扩展性和重用性每个指标由专家打分结合隶属度函数计算。给出了指标评价集隶属度算法将模糊评价转化为综合评分满分100分。构建的古陶瓷本体包含12个顶层类、68个子类、154个对象属性和209个数据属性综合评分为91.3分。将该本体用于信息检索相比未使用本体的关键字检索查准率提升42%。2融合路径与信息量的语义相似度计算提出一种联合计算语义相似度和相关度的模型记作PIR-Sim。相似度部分采用基于信息量的改进Lin公式引入概念深度权重因子Sim_IC(c1,c2)2*IC(LCS)/(IC(c1)IC(c2)) * (1log(depth(LCS)1)/log(depth_max1))。相关度部分考虑本体图中的最短路径和共同祖先的密度公式为Rel(c1,c2)1/(dist1) * (10.5*common_parents/ancestors_all)。在WordNet 3.0和Miller-Charles数据集上PIR-Sim与人工评分的Pearson相关系数达到0.902优于Resnik方法的0.878和Jiang-Conrath方法的0.891。将该方法用于查询扩展将用户输入的关键词映射到本体概念后检索平均精度均值提升至0.683比传统基于字符串匹配的扩展提高14.5%。3SVD-SIFT图像重要局部特征与分阶段语义搜索提出一种基于奇异值分解的尺度不变特征变换降维方法从每幅图像提取的128维SIFT特征向量中保留前20个最大奇异值对应的主成分将特征维度压缩至20计算速度提升3.2倍。联合图像的HSV颜色直方图(量化32级)和不变矩(7个Hu矩)作为全局特征。采用分阶段交互式搜索策略第一阶段仅使用本体概念进行语义检索返回候选集第二阶段用户提供示例图像系统提取SVD-SIFT特征与候选集中的图像进行相似度匹配相似度阈值设为0.75。在包含5000件古陶瓷图像的数据集上检索平均响应时间为0.8秒top-10准确率达到89.4%相比纯关键字搜索提高57%。原型系统UISSOSOF支持概念树浏览、示例图像上传和混合查询模式已封装为Web服务。import numpy as np from scipy.spatial.distance import cosine from skimage.feature import local_binary_pattern from skimage.color import rgb2hsv class PDCAEOntologyBuilder: def __init__(self, name): self.name name self.classes {} self.properties [] def extract_concepts(self, text_sources): concepts set() for src in text_sources: words src.split() concepts.update([w for w in words if w[0].isupper() and len(w)2]) return list(concepts) def add_class(self, cls_name, parentNone): self.classes[cls_name] {parent: parent, subs: []} if parent and parent in self.classes: self.classes[parent][subs].append(cls_name) def check_consistency(self, reasonerpellet): inconsistent [] for cls, info in self.classes.items(): parent info[parent] if parent and parent not in self.classes: inconsistent.append(cls) return inconsistent def evaluate_quality(self, metrics_weights): atomicity len(self.classes) / max(1, len(set(self.classes))) completeness 1 - len(self.check_consistency()) / max(1, len(self.classes)) score metrics_weights.get(atomicity,0.2)*atomicity metrics_weights.get(completeness,0.2)*completeness return score class PIRSimeSimilarity: def __init__(self, ontology_graph, ic_dict): self.graph ontology_graph self.ic ic_dict def information_content(self, concept): return self.ic.get(concept, 0.1) def lcs(self, c1, c2): ancestors_c1 set(self.graph.get_ancestors(c1)) ancestors_c2 set(self.graph.get_ancestors(c2)) common ancestors_c1.intersection(ancestors_c2) if not common: return None depths {c: len(self.graph.get_path(c)) for c in common} return max(depths, keydepths.get) def similarity(self, c1, c2): lcs_node self.lcs(c1, c2) if not lcs_node: return 0.0 depth_lcs len(self.graph.get_path(lcs_node)) depth_max max(len(self.graph.get_path(c)) for c in self.graph.all_concepts) ic_lcs self.information_content(lcs_node) ic_c1 self.information_content(c1) ic_c2 self.information_content(c2) sim 2 * ic_lcs / (ic_c1 ic_c2) depth_factor 1 np.log(depth_lcs1) / np.log(depth_max1) return sim * depth_factor def relatedness(self, c1, c2): dist self.graph.shortest_path(c1, c2) if dist float(inf): return 0.0 common_anc len(set(self.graph.get_ancestors(c1)) set(self.graph.get_ancestors(c2))) total_anc len(set(self.graph.get_ancestors(c1)) | set(self.graph.get_ancestors(c2))) density common_anc / max(1, total_anc) return 1.0/(dist1) * (1 0.5*density) class SVDSIFTFeature: def __init__(self, n_components20): self.n n_components self.svd_model None def extract_sift(self, image): from skimage.feature import SIFT sift SIFT() sift.detect_and_extract(image) return sift.descriptors def fit_svd(self, descriptor_list): all_desc np.vstack(descriptor_list) U, S, Vt np.linalg.svd(all_desc, full_matricesFalse) self.svd_model Vt[:self.n, :] def transform(self, descriptors): if descriptors.shape[1] self.svd_model.shape[1]: pad np.zeros((descriptors.shape[0], self.svd_model.shape[1] - descriptors.shape[1])) descriptors np.hstack([descriptors, pad]) return descriptors self.svd_model.T def global_features(self, image): hsv rgb2hsv(image) hist np.histogram(hsv[:,:,0], bins32, range(0,1))[0] hist hist / np.sum(hist) return hist class UISSOSOFRetriever: def __init__(self, ontology, feature_extractor): self.onto ontology self.fe feature_extractor self.index {} def concept_search(self, concept, top_k20): related self.onto.get_related_concepts(concept, depth2) candidates self.index.get_documents_by_concepts(related) return sorted(candidates, keylambda x: x[semantic_score], reverseTrue)[:top_k] def image_search(self, query_image, candidate_list, threshold0.75): q_feat self.fe.transform(self.fe.extract_sift(query_image)) scores [] for doc in candidate_list: doc_feat doc[svd_sift] sim 1 - cosine(q_feat.flatten(), doc_feat.flatten()) if sim threshold: scores.append((doc, sim)) return sorted(scores, keylambda x: x[1], reverseTrue) def hybrid_search(self, concept, image, alpha0.6, beta0.4): cand_concept self.concept_search(concept, top_k100) final self.image_search(image, cand_concept) for i, (doc, sim) in enumerate(final): doc[final_score] alpha * doc[semantic_score] beta * sim return sorted(final, keylambda x: x[final_score], reverseTrue)