江苏省建设网站首页html 修改 wordpress

张小明 2025/12/28 10:23:48
江苏省建设网站首页,html 修改 wordpress,建站快车凡科,南充建设机械网站KaoyanGraphQASystem#xff08;考研知识对话系统#xff09;系统功能考研知识对话系统是一个智能问答系统#xff0c;专为考研学生设计。它基于知识图谱和大语言模型#xff0c;从研招网爬取数据#xff0c;构建结构化知识图谱#xff0c;并通过对话管理模块回答用户关于…KaoyanGraphQASystem考研知识对话系统系统功能考研知识对话系统是一个智能问答系统专为考研学生设计。它基于知识图谱和大语言模型从研招网爬取数据构建结构化知识图谱并通过对话管理模块回答用户关于考研院校、专业、就业前景等问题。系统功能分为以下模块爬虫模块功能从研招网爬取院校信息、专业信息和就业前景信息。输出原始数据存储在data/raw/目录。示例爬取院校名称、专业代码、招生人数等。数据处理模块功能清洗和格式化爬取的数据移除无效值转换为结构化格式如JSON或CSV。输出处理后数据存储在data/processed/目录。知识图谱构建模块功能从处理后的数据中抽取实体如院校、专业和关系如开设、属于构建知识图谱。输出图谱结构文件存储在data/graph/目录。图数据库存储模块功能将知识图谱导入图数据库支持Neo4j和TuGraph执行查询操作。示例查找某院校开设的专业。大模型集成模块功能集成Qwen-plus大模型用于实体抽取、关系抽取或生成自然语言回答。示例调用API生成“计算机专业的就业前景”的回答。对话系统模块功能解析用户查询从图谱检索信息结合大模型生成回答并管理对话历史。示例用户问“清华大学有哪些计算机专业”系统解析意图检索图谱数据生成回答。系统支持多种扩展添加新数据源、集成其他图数据库或大模型并考虑性能如爬虫延迟和安全性API密钥加密。搭建过程搭建该系统需遵循项目结构使用Python 3.8环境。以下是核心步骤和代码示例步骤1: 环境设置依赖安装创建虚拟环境安装依赖包。# 核心依赖 requests2.31.0 beautifulsoup44.12.0 lxml4.9.0 pandas2.0.0 numpy1.24.0 # 图数据库客户端 py2neo2021.2.4 neo4j5.14.0 # TuGraph Python客户端如果有官方包需要安装 # 大模型API - 使用LangChain langchain0.1.0 langchain-community0.0.20 dashscope1.17.0 # 阿里云DashScope SDKQwen APILangChain依赖 # 配置和日志 pyyaml6.0 python-dotenv1.0.0 # Web框架可选用于Web接口 flask3.0.0 flask-cors4.0.0 # 工具库 tqdm4.66.0 jieba0.42.1 # 中文分词 zhconv1.4.2 # 中文繁简转换 # 测试 pytest7.4.0 pytest-cov4.1.0requirements.txt包含requests, beautifulsoup4, pandas, py2neo, dashscope, jieba。配置文件编辑config/config.yaml设置API密钥、数据库凭证等。# config/config.yaml 示例 neo4j: uri: bolt://localhost:7687 user: neo4j password: password qwen: api_key: your_api_key步骤2: 实现核心模块基于项目结构编写关键代码。以下是核心代码片段爬虫模块crawler/yan_zhao_wang.py功能爬取研招网院校信息。代码示例import requests from bs4 import BeautifulSoup import json class YanZhaoWangCrawler: def __init__(self, base_urlhttps://yz.chsi.com.cn): self.base_url base_url def crawl_schools(self): url f{self.base_url}/sch/ response requests.get(url) soup BeautifulSoup(response.text, html.parser) schools [] for item in soup.select(.school-list li): name item.select_one(.name).text.strip() code item.select_one(.code).text.strip() schools.append({name: name, code: code}) return schools def save_data(self, data, filename): with open(fdata/raw/{filename}.json, w, encodingutf-8) as f: json.dump(data, f, ensure_asciiFalse) # 使用示例 if __name__ __main__: crawler YanZhaoWangCrawler() schools crawler.crawl_schools() crawler.save_data(schools, schools)截图运行爬虫后 数据保存在data/raw/schools.json文件中2025-12-13 16:38:43,033 - __main__ - INFO - 2025-12-13 16:38:43,033 - __main__ - INFO - 开始爬取研招网数据 2025-12-13 16:38:43,033 - __main__ - INFO - 2025-12-13 16:38:43,033 - crawler.yan_zhao_wang - INFO - 开始全面爬取研招网信息... 2025-12-13 16:38:43,033 - crawler.yan_zhao_wang - INFO - 开始爬取院校信息...数据存放示例[ { name: 计算机科学与技术, code: 0812, school: 清华大学, degree_type: 学术型, research_direction: 人工智能, exam_subjects: [ 数学一, 英语一, 408计算机学科专业基础 ], enrollment_count: 50 }, { name: 计算机科学与技术, code: 0812, school: 北京大学, degree_type: 学术型, research_direction: 机器学习, exam_subjects: [ 数学一, 英语一, 408计算机学科专业基础 ], enrollment_count: 40 },知识图谱构建模块knowledge_graph/entity_extraction.py功能从数据抽取实体。代码示例class EntityExtractor: 实体抽取器 def __init__(self, entity_types: List[str]): 初始化实体抽取器 Args: entity_types: 实体类型列表 self.entity_types entity_types def extract_from_schools(self, schools: List[Dict]) - List[Dict]: 从院校数据中抽取实体 Args: schools: 院校数据列表 Returns: 实体列表每个实体包含id, type, name, properties entities [] entity_id 0 for school in schools: entity { id: fschool_{entity_id}, type: 院校, name: school.get(name, ), properties: { code: school.get(code, ), location: school.get(location, ), type: school.get(type, ), website: school.get(website, ) } } entities.append(entity) entity_id 1 logger.info(f从院校数据中抽取了 {len(entities)} 个实体) return entities截图实体抽取后的 JSON 文件{ entities: [ { id: major_0, type: 专业, name: 计算机科学与技术, properties: { code: 0812, degree_type: 学术型 } }, { id: direction_1, type: 研究方向, name: 人工智能, properties: {} }, { id: subject_2, type: 考试科目, name: 数学一, properties: {}图数据库存储模块storage/neo4j_client.py功能将实体导入Neo4j。代码示例class Neo4jClient: Neo4j客户端 def __init__(self, uri: str, user: str, password: str, database: str neo4j): 初始化Neo4j客户端 Args: uri: Neo4j数据库URI user: 用户名 password: 密码 database: 数据库名称 try: self.graph Graph(uri, auth(user, password), namedatabase) self.matcher NodeMatcher(self.graph) logger.info(f成功连接到Neo4j: {uri}) except Exception as e: logger.error(f连接Neo4j失败: {e}) raise def create_entity(self, entity: Dict) - Node: 创建实体节点 Args: entity: 实体字典包含id, type, name, properties Returns: 创建的节点 node Node( entity[type], identity[id], nameentity[name], **entity.get(properties, {}) ) self.graph.merge(node, entity[type], id) return node def create_relation(self, relation: Dict, source_entity: Dict, target_entity: Dict): 创建关系 Args: relation: 关系字典包含source, target, type, properties source_entity: 源实体字典 target_entity: 目标实体字典 try: source_node self.matcher.match(source_entity[type], idsource_entity[id]).first() target_node self.matcher.match(target_entity[type], idtarget_entity[id]).first() if source_node and target_node: rel Relationship(source_node, relation[type], target_node, **relation.get(properties, {})) self.graph.merge(rel) else: logger.warning(f无法创建关系: 找不到源节点或目标节点) except Exception as e: logger.error(f创建关系失败: {e})截图运行后Neo4j浏览器界面导入的节点。图数据库存储模块storage/tugraph_client.py功能将实体导入Tugraph。代码示例class TuGraphClient: TuGraph客户端 def __init__(self, host: str, port: int, user: str, password: str, graph_name: str): 初始化TuGraph客户端 Args: host: TuGraph服务器地址 port: 端口号 user: 用户名 password: 密码 graph_name: 图名称 self.base_url fhttp://{host}:{port} self.user user self.password password self.graph_name graph_name self.token None self._login() def _get_headers(self) - Dict: 获取请求头 return { Authorization: fBearer {self.token}, Content-Type: application/json } def create_entity(self, entity: Dict): 创建实体节点 Args: entity: 实体字典包含id, type, name, properties try: # TuGraph创建节点的Cypher语句 properties {k: v for k, v in entity.get(properties, {}).items() if v} props_str , .join([f{k}: {v} if isinstance(v, str) else f{k}: {v} for k, v in properties.items()]) cypher f MERGE (n:{entity[type]} {{id: {entity[id]}, name: {entity[name]}{, props_str if props_str else }}}) RETURN n self.execute_cypher(cypher) except Exception as e: logger.error(f创建实体失败 {entity.get(name)}: {e})截图运行后Tugraph浏览器界面导入的节点。对话系统模块chatbot/query_parser.py功能解析用户查询处理输入对话中关键词传递给大模型基于图谱进行问答。代码示例class GraphQA: 图谱问答器 def _answer_school_question(self, query: str, entities: List[Dict]) - Dict: 回答院校相关问题 # 提取院校名称 school_names [e[name] for e in entities if e.get(type) 院校] if not school_names: # 尝试从查询中提取 if 大学 in query or 学院 in query: school_names [s for s in query.split() if 大学 in s or 学院 in s] if school_names: school_name school_names[0] # 查询院校信息 nodes self.graph_client.find_entity_by_name(school_name, 院校) if nodes: related self.graph_client.get_related_entities(school_name) answer f关于{school_name}的信息\n answer f已找到相关院校信息。\n # 添加相关专业 majors [r for r in related if 专业 in str(r.get(types, []))] if majors: answer f该院校开设的专业包括{, .join([m[name] for m in majors[:10]])}\n evidence { entity: school_name, related_entities: related } return {answer: answer, evidence: evidence} return {answer: 抱歉我没有找到相关信息。, evidence: {}} def _answer_major_question(self, query: str, entities: List[Dict]) - Dict: 回答专业相关问题 # 提取专业名称 major_names [e[name] for e in entities if e.get(type) 专业] if major_names: major_name major_names[0] # 查询专业信息 nodes self.graph_client.find_entity_by_name(major_name, 专业) if nodes: related self.graph_client.get_related_entities(major_name) answer f关于{major_name}的信息\n # 添加相关院校 schools [r for r in related if 院校 in str(r.get(types, []))] if schools: answer f开设该专业的院校包括{, .join([s[name] for s in schools[:10]])}\n # 添加研究方向 directions [r for r in related if 研究方向 in str(r.get(types, []))] if directions: answer f研究方向包括{, .join([d[name] for d in directions[:5]])}\n evidence { entity: major_name, related_entities: related } return {answer: answer, evidence: evidence} return {answer: 抱歉我没有找到相关信息。, evidence: {}}class QueryParser: 查询解析器 def __init__(self): 初始化查询解析器 # 定义实体类型关键词 self.entity_keywords { 院校: [大学, 学院, 学校, 高校, 院校], 专业: [专业, 学科, 方向, 学硕, 专硕], 研究方向: [方向, 研究方向, 研究领域], 考试科目: [科目, 考试, 专业课, 公共课], 就业前景: [就业, 前景, 出路, 薪资, 工资] } # 定义关系类型关键词 self.relation_keywords { 开设: [开设, 有, 提供, 招收], 属于: [属于, 是, 在], 包含: [包含, 包括, 有], 研究方向: [研究方向, 方向是, 研究], 考试科目: [考, 考试, 科目], 就业方向: [就业, 去向, 从事] } def parse(self, query: str) - Dict: 解析用户查询 Args: query: 用户查询文本 Returns: 解析结果字典包含 - entities: 识别的实体列表 - intent: 查询意图 - keywords: 关键词列表 # 分词 words jieba.cut(query) keywords [w for w in words if len(w) 1] # 过滤单字 # 识别实体 entities self._extract_entities(query, keywords) # 识别意图 intent self._extract_intent(query, keywords) return { original_query: query, keywords: keywords, entities: entities, intent: intent }截图运行解析器后截图输出结果。步骤3: 集成和测试主程序main.py集成所有模块。def main(): 主函数 parser argparse.ArgumentParser(description考研知识对话系统) parser.add_argument( --mode, typestr, choices[crawl, process, build_graph, import_neo4j, import_tugraph, chat, all, generate_sample], defaultchat, help运行模式 ) parser.add_argument( --use_sample, actionstore_true, help使用示例数据在crawl或all模式时 ) parser.add_argument( --config, typestr, defaultconfig/config.yaml, help配置文件路径 )测试运行tests/中的单元测试确保各模块功能正常。pytest tests/截图截图用户输入问题和系统回答。步骤4: 部署和扩展安装Python依赖使用命令pip install -r requirements.txt可以安装项目所需的所有Python包。配置数据库Neo4j数据库如果您选择使用Neo4j需要先安装并启动它。配置信息如数据库URL、用户名和密码在config/config.yaml文件中设置。TuGraph数据库同样安装并启动TuGraph后在config/config.yaml中配置相关参数。这两个数据库是可选的如果您不使用它们可以跳过这一步。配置API在config/config.yaml文件中添加您的Qwen-plus API密钥。这确保项目能正确调用API服务。三种操作模式爬取数据运行python main.py --mode crawl启动数据爬取功能。构建知识图谱运行python main.py --mode build_graph根据爬取的数据构建知识图谱。启动对话系统运行python main.py --mode chat进入对话模式与系统交互。总结该系统从数据爬取到对话生成实现了全流程自动化。搭建过程涉及环境配置、模块编码和测试。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

国内自动化网站建设湖南房地产加盟网站建设

百度网盘下载地址解析工具是一款专门用于获取百度网盘分享文件真实下载地址的实用程序。通过这款工具,你可以轻松突破官方客户端的下载限制,实现快速下载百度网盘文件的目标。无论你是需要下载单个文件还是批量处理文件夹,这款工具都能提供完…

张小明 2025/12/27 10:05:20 网站建设

长春网站建设中心单页营销式网站模板

如何快速解决Wav2Lip384面部动画的终极指南 【免费下载链接】metahuman-stream 项目地址: https://gitcode.com/GitHub_Trending/me/metahuman-stream 在实时交互流式数字人系统LiveTalking中,Wav2Lip384模型作为音频驱动面部动画的核心技术,在实…

张小明 2025/12/28 13:37:45 网站建设

网站建设要什么证件dedecms怎么做网站

Instinct智能代码编辑模型:开启编程效率新时代 【免费下载链接】instinct 项目地址: https://ai.gitcode.com/hf_mirrors/continuedev/instinct 在当今快节奏的软件开发环境中,如何保持高效的编码状态成为每个开发者面临的挑战。Continue团队最新…

张小明 2025/12/27 10:04:14 网站建设

如何给一个企业的网站做推广ipad怎么制作网站

Langchain-Chatchat能否支持数据库直连知识源? 在企业智能化转型的浪潮中,越来越多组织开始构建基于大模型的知识问答系统。然而,一个现实难题摆在面前:企业的核心知识往往并不存放在PDF或Word文档里,而是深藏于MySQL、…

张小明 2025/12/27 10:03:41 网站建设

廊坊做网站的公司网站建设开发方式包括一l丫

Dark Reader暗黑模式插件:2025年程序员必备的护眼神器 【免费下载链接】darkreader Dark Reader Chrome and Firefox extension 项目地址: https://gitcode.com/gh_mirrors/da/darkreader 作为一名长期与代码为伴的程序员,我深知在深夜工作时刺眼…

张小明 2025/12/27 10:02:35 网站建设