[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-smilelight--lightKG":3,"tool-smilelight--lightKG":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":10,"env_os":92,"env_gpu":93,"env_ram":94,"env_deps":95,"category_tags":101,"github_topics":104,"view_count":32,"oss_zip_url":80,"oss_zip_packed_at":80,"status":17,"created_at":112,"updated_at":113,"faqs":114,"releases":143},8766,"smilelight\u002FlightKG","lightKG","基于Pytorch和torchtext的知识图谱深度学习框架。","lightKG 是一个基于 PyTorch 和 torchtext 构建的轻量级知识图谱深度学习框架，旨在为开发者提供一套模块化、易上手的 NLP 解决方案。它专注于解决从非结构化文本到结构化知识的转化难题，覆盖了知识表示学习、实体识别与链接、关系抽取、事件检测及知识推理等核心环节。\n\n对于自然语言处理领域的研究人员和工程师而言，lightKG 极大地降低了构建知识图谱应用的门槛。用户无需从零搭建复杂模型，即可快速实现如 TransE 等经典翻译模型的训练，或利用 BiLSTM-CRF、TextCNN 等架构完成命名实体识别（NER）、语义角色标注（SRL）及关系抽取任务。框架支持标准的 CSV、BIO 及 CONLL 数据格式，并提供了直观的 API 用于模型训练、评估及概率预测（如推断头尾实体或潜在关系）。\n\n其独特亮点在于将知识图谱构建的全流程功能整合为六个清晰的功能模块（krl, erl, ere, ede, ksq, kr），既适合学术研究者进行算法验证与对比实验，也便于工程开发人员快速原型落地。如果你正在寻找一个灵活、开源且专注于中文场景的知识图谱基础工具，lightKG ","lightKG 是一个基于 PyTorch 和 torchtext 构建的轻量级知识图谱深度学习框架，旨在为开发者提供一套模块化、易上手的 NLP 解决方案。它专注于解决从非结构化文本到结构化知识的转化难题，覆盖了知识表示学习、实体识别与链接、关系抽取、事件检测及知识推理等核心环节。\n\n对于自然语言处理领域的研究人员和工程师而言，lightKG 极大地降低了构建知识图谱应用的门槛。用户无需从零搭建复杂模型，即可快速实现如 TransE 等经典翻译模型的训练，或利用 BiLSTM-CRF、TextCNN 等架构完成命名实体识别（NER）、语义角色标注（SRL）及关系抽取任务。框架支持标准的 CSV、BIO 及 CONLL 数据格式，并提供了直观的 API 用于模型训练、评估及概率预测（如推断头尾实体或潜在关系）。\n\n其独特亮点在于将知识图谱构建的全流程功能整合为六个清晰的功能模块（krl, erl, ere, ede, ksq, kr），既适合学术研究者进行算法验证与对比实验，也便于工程开发人员快速原型落地。如果你正在寻找一个灵活、开源且专注于中文场景的知识图谱基础工具，lightKG 值得尝试。","# lightKG，lightsmile个人的知识图谱技术框架\n\n## 说明\n\n最近忙着学别的，暂时没怎么管这个lib了，后续会持续更新的。\n\n## 前言\n\n根据知识图谱发展报告2018相关介绍，框架主要设计为有以下五大功能：\n\n- 知识表示学习， Knowledge Representation Learning\n- 实体识别与链接， Entity Recognition and Linking\n- 实体关系抽取， Entity Relation Extraction\n- 事件检测与抽取， Event Detection and Extraction\n- 知识存储与查询， Knowledge Storage and Query\n- 知识推理， Knowledge Reasoning\n\n因此将有六个主要的功能模块：krl（知识表示学习）、erl（实体识别与链接）、ere（实体关系抽取）、ede（实体检测与抽取）、ksq（知识存储与查询）、kr（知识推理）以及其他功能模块。\n\n## 当前已实现的功能\n\n### 知识表示学习\n\n- 基于翻译模型(Trans系列)的知识表示学习， TransE\n\n### 实体识别与链接\n\n- 命名实体识别， ner\n\n### 实体关系抽取\n\n- 关系抽取， re\n\n### 事件检测与抽取\n\n- 语义角色标注， srl\n\n### 知识存储与查询\n\n### 知识推理\n\n## 安装\n\n本项目基于Pytorch1.0\n\n```bash\npip install lightKG\n```\n\n建议使用国内源来安装，如使用以下命令：\n```bash\npip install -i https:\u002F\u002Fpypi.douban.com\u002Fsimple\u002F lightKG\n```\n\n### 安装依赖\n\n由于有些库如pytorch、torchtext并不在pypi源中或者里面只有比较老旧的版本，我们需要单独安装一些库。\n#### 安装pytorch\n\n具体安装参见[pytorch官网](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F)来根据平台、安装方式、Python版本、CUDA版本来选择适合自己的版本。\n\n#### 安装torchtext\n\n使用以下命令安装最新版本torchtext：\n```bash\npip install https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftext\u002Farchive\u002Fmaster.zip\n```\n\n## 模型\n\n- krl：TransE等\n- re: TextCNN\n- srl: BiLstm-CRF\n- ner: BiLstm-CRF\n\n## 训练数据说明\n\n#### krl\n\ncsv格式\n \n共三列，依次为`头实体`、`关系`、`尾实体`， 示例如下：\n \n ```bash\n科学,包涵,自然、社会、思维等领域\n科学,外文名,science\n科学,拼音,kē xué\n科学,中文名,科学\n科学,解释,发现、积累的真理的运用与实践\n语法学,外文名,syntactics\n语法学,中文名,语法学\n物理宇宙学,对象,大尺度结构和宇宙形成\n物理宇宙学,时间,二十世纪\n物理宇宙学,所属,天体物理学\n ```\n \n #### ner\n\nBIO\n\n训练数据示例如下：\n\n```bash\n清 B_Time\n明 I_Time\n是 O\n人 B_Person\n们 I_Person\n祭 O\n扫 O\n先 B_Person\n人 I_Person\n， O\n怀 O\n念 O\n追 O\n思 O\n的 O\n日 B_Time\n子 I_Time\n。 O\n\n正 O\n如 O\n宋 B_Time\n代 I_Time\n诗 B_Person\n人 I_Person\n```\n\n#### srl\n\nCONLL\n\n训练数据示例如下，其中各列分别为`词`、`词性`、`是否语义谓词`、`角色`，每句仅有一个谓语动词为语义谓词，即每句中第三列仅有一行取值为1，其余都为0.\n\n```bash\n宋浩京  NR      0       O\n转达    VV      0       O\n了      AS      0       O\n朝鲜    NR      0       O\n领导人  NN      0       O\n对      P       0       O\n中国    NR      0       O\n领导人  NN      0       O\n的      DEG     0       O\n亲切    JJ      0       O\n问候    NN      0       O\n，      PU      0       O\n代表    VV      0       O\n朝方    NN      0       O\n对      P       0       O\n中国    NR      0       B-ARG0\n党政    NN      0       I-ARG0\n领导人  NN      0       I-ARG0\n和      CC      0       I-ARG0\n人民    NN      0       E-ARG0\n哀悼    VV      1       rel\n金日成  NR      0       B-ARG1\n主席    NN      0       I-ARG1\n逝世    VV      0       E-ARG1\n表示    VV      0       O\n深切    JJ      0       O\n谢意    NN      0       O\n。      PU      0       O\n```\n\n#### re\n\n训练数据示例如下，其中各列分别为`实体1`、`实体2`、`关系`、`句子`\n\n```bash\n钱钟书\t辛笛\t同门\t与辛笛京沪唱和聽钱钟书与钱钟书是清华校友，钱钟书高辛笛两班。\n元武\t元华\tunknown\t于师傅在一次京剧表演中，选了元龙（洪金宝）、元楼（元奎）、元彪、成龙、元华、元武、元泰7人担任七小福的主角。\n```\n\n ## 使用\n \n ### krl\n\n#### 训练\n\n```python\nfrom lightkg.krl import KRL\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fkg\u002Fbaike\u002Ftrain.sample.csv'\ndev_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fkg\u002Fbaike\u002Ftest.sample.csv'\nmodel_type = 'TransE'\n\nkrl = KRL()\nkrl.train(train_path, model_type=model_type, dev_path=train_path, save_path='.\u002Fkrl_{}_saves'.format(model_type))\n```\n\n#### 测试\n\n```python\nkrl.load(save_path='.\u002Fkrl_{}_saves'.format(model_type), model_type=model_type)\nkrl.test(train_path)\n```\n\n#### 预测\n\n##### 根据头实体、关系、尾实体，预测其概率\n\n```python\nprint(krl.predict(head='编译器', rel='外文名', tail='Compiler'))\n```\n\n输出为：\n```bash\n0.998942494392395\n```\n##### 根据头实体和关系，预测训练集词表中topk(默认为3)个可能尾实体\n\n```python\nprint(krl.predict_tail(head='编译器', rel='外文名'))\n```\n\n输出为：\n```bash\n[('Compiler', 0.998942494392395), ('20世纪50年代末', 0.3786872327327728), ('译码器', 0.3767447769641876)]\n```\n##### 根据头实体和尾实体，预测训练集词表中topk(默认为3)个可能关系\n\n```python\nprint(krl.predict_rel(head='编译器', tail='Compiler'))\n```\n\n输出为：\n```bash\n[('外文名', 0.998942494392395), ('英译', 0.8240533471107483), ('拼音', 0.4082326292991638)]\n```\n##### 根据尾实体和关系，预测训练集词表中topk(默认为3)个可能头实体\n```python\nprint(krl.predict_head(rel='外文名', tail='Compiler'))\n```\n\n输出为：\n```bash\n[('编译器', 0.998942494392395), ('译码器', 0.36795616149902344), ('计算机，单片机，编程语言', 0.36788302659988403)]\n```\n\n### ner\n\n#### 训练\n\n```python\nfrom lightkg.erl import NER\n\n# 创建NER对象\nner_model = NER()\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fner\u002Ftrain.sample.txt'\ndev_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fner\u002Ftest.sample.txt'\nvec_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fembedding\u002Fchar\u002Ftoken_vec_300.bin'\n\n# 只需指定训练数据路径，预训练字向量可选，开发集路径可选，模型保存路径可选。\nner_model.train(train_path, vectors_path=vec_path, dev_path=dev_path, save_path='.\u002Fner_saves')\n```\n\n#### 测试\n\n```python\n# 加载模型，默认当前目录下的`saves`目录\nner_model.load('.\u002Fner_saves')\n# 对train_path下的测试集进行读取测试\nner_model.test(train_path)\n```\n\n#### 预测\n\n```python\nfrom pprint import pprint\n\npprint(ner_model.predict('另一个很酷的事情是，通过框架我们可以停止并在稍后恢复训练。'))\n```\n\n预测结果：\n\n```bash\n[{'end': 15, 'entity': '我们', 'start': 14, 'type': 'Person'}]\n```\n\n### re\n\n#### 训练\n\n```python\nfrom lightkg.ere import RE\n\nre = RE()\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FProjects\u002FNLP\u002FChineseNRE\u002Fdata\u002Fpeople-relation\u002Ftrain.sample.txt'\ndev_path = '\u002Fhome\u002Flightsmile\u002FProjects\u002FNLP\u002FChineseNRE\u002Fdata\u002Fpeople-relation\u002Ftest.sample.txt'\nvec_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fembedding\u002Fword\u002Fsgns.zhihu.bigram-char'\n\nre.train(train_path, dev_path=dev_path, vectors_path=vec_path, save_path='.\u002Fre_saves')\n\n```\n\n#### 测试\n\n```python\nre.load('.\u002Fre_saves')\nre.test(dev_path)\n```\n\n#### 预测\n\n```python\nprint(re.predict('钱钟书', '辛笛', '与辛笛京沪唱和聽钱钟书与钱钟书是清华校友，钱钟书高辛笛两班。'))\n```\n\n预测结果：\n\n```python\n(0.7306928038597107, '同门') # return格式为（预测概率，预测标签）\n```\n\n### srl\n\n#### 训练\n\n```python\nfrom lightkg.ede import SRL\n\nsrl_model = SRL()\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fsrl\u002Ftrain.sample.tsv'\ndev_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fsrl\u002Ftest.sample.tsv'\nvec_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fembedding\u002Fword\u002Fsgns.zhihu.bigram-char'\n\n\nsrl_model.train(train_path, vectors_path=vec_path, dev_path=dev_path, save_path='.\u002Fsrl_saves')\n```\n\n#### 测试\n\n```python\nsrl_model.load('.\u002Fsrl_saves')\n\nsrl_model.test(dev_path)\n```\n\n#### 预测\n\n```python\nword_list = ['代表', '朝方', '对', '中国', '党政', '领导人', '和', '人民', '哀悼', '金日成', '主席', '逝世', '表示', '深切', '谢意', '。']\npos_list = ['VV', 'NN', 'P', 'NR', 'NN', 'NN', 'CC', 'NN', 'VV', 'NR', 'NN', 'VV', 'VV', 'JJ', 'NN', 'PU']\nrel_list = [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]\n\nprint(srl_model.predict(word_list, pos_list, rel_list))\n```\n\n预测结果：\n\n```bash\n{'ARG0': '中国党政领导人和人民', 'rel': '哀悼', 'ARG1': '金日成主席逝世'}\n```\n\n## 项目组织结构\n\n### 项目架构\n- base\n    - config.py\n    - model.py\n    - module.py\n    - tool.py\n- common\n    - entity.py\n    - relation.py\n- ede\n    - srl, 语义角色标注\n- ere\n    - re， 关系抽取\n- erl\n    - ner， 命名实体识别\n- kr\n- krl，知识表示学习\n    - models\n        - transE\n    - utils\n- ksq\n- utils\n\n### 架构说明\n\n#### base目录\n放一些基础的模块实现，其他的高层业务模型以及相关训练代码都从此module继承相应父类。\n\n##### config\n存放模型训练相关的超参数等配置信息\n\n##### model\n模型的实现抽象基类，包含`base.model.BaseConfig`和`base.model.BaseModel`，包含`load`、`save`等方法\n\n##### module\n业务模块的训练验证测试等实现抽象基类，包含`base.module.Module`，包含`train`、`load`、`_validate`、`test`等方法\n\n##### tool\n业务模块的数据处理抽象基类，包含`base.tool.Tool`，包含`get_dataset`、`get_vectors`、`get_vocab`、`get_iterator`、`get_score`等方法\n\n#### common目录\n\n##### entity\n\n实体基类, 所有需要使用实体对象的使用此类或从此类继承子类\n\n##### relation\n\n关系基类, 所有需要使用关系对象的使用此类或从此类继承子类\n\n#### util目录\n放一些通用的方法\n\n## todo\n\n### 业务\n\n### 工程\n\n- [x] 重构项目结构，将相同冗余的地方合并起来，保持项目结构清晰\n- [ ] 增加断点重训功能。\n- [ ] 增加earlyStopping。\n- [ ] 现在模型保存的路径和名字默认一致，会冲突，接下来每个模型都有自己的`name`。\n\n### 功能\n\n- [x] 增加关系抽取相关模型以及训练预测代码\n- [x] 增加事件抽取相关模型以及训练预测代码\n- [x] 增加命名实体识别相关模型以及预测训练代码\n- [x] 增加基于翻译模型的知识表示学习相关模型以及训练预测代码\n- [x] 增加实体链接的知识表示学习相关模型以及训练预测代码\n\n## 参考\n\n### Deep Learning\n\n- [What's the difference between “hidden” and “output” in PyTorch LSTM?](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F48302810\u002Fwhats-the-difference-between-hidden-and-output-in-pytorch-lstm)\n- [What's the difference between LSTM() and LSTMCell()?](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F48187283\u002Fwhats-the-difference-between-lstm-and-lstmcell)\n- [深度学习框架技术剖析[转]](https:\u002F\u002Faiuai.cn\u002Faifarm904.html)\n\n### NLP\n\n- [基于表示学习的信息抽取方法浅析](https:\u002F\u002Fwww.jiqizhixin.com\u002Farticles\u002F2016-11-15-5)\n- [知识抽取-实体及关系抽取](http:\u002F\u002Fwww.shuang0420.com\u002F2018\u002F09\u002F15\u002F%E7%9F%A5%E8%AF%86%E6%8A%BD%E5%8F%96-%E5%AE%9E%E4%BD%93%E5%8F%8A%E5%85%B3%E7%B3%BB%E6%8A%BD%E5%8F%96\u002F)\n- [知识抽取-事件抽取](http:\u002F\u002Fwww.shuang0420.com\u002F2018\u002F10\u002F15\u002F%E7%9F%A5%E8%AF%86%E6%8A%BD%E5%8F%96-%E4%BA%8B%E4%BB%B6%E6%8A%BD%E5%8F%96\u002F)\n\n### 知识图谱\n\n- [翻译模型(Trans系列)的知识表示学习](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FSTflo3c8nyG6iHh9dEeKOQ)\n- [知识图谱向量化表示](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F30320631)\n\n### Pytorch教程\n\n- [PyTorch 常用方法总结4：张量维度操作（拼接、维度扩展、压缩、转置、重复……）](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F31495102)\n- [Pytorch中的RNN之pack_padded_sequence()和pad_packed_sequence()](https:\u002F\u002Fwww.cnblogs.com\u002Fsbj123456789\u002Fp\u002F9834018.html)\n- [pytorch学习笔记（二）：gradient](https:\u002F\u002Fblog.csdn.net\u002Fu012436149\u002Farticle\u002Fdetails\u002F54645162)\n- [torch.multinomial()理解](https:\u002F\u002Fblog.csdn.net\u002Fmonchin\u002Farticle\u002Fdetails\u002F79787621)\n- [Pytorch 细节记录](https:\u002F\u002Fwww.cnblogs.com\u002Fking-lps\u002Fp\u002F8570021.html)\n- [What does flatten_parameters() do?](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F53231571\u002Fwhat-does-flatten-parameters-do)\n- [关于Pytorch的二维tensor的gather和scatter_操作用法分析](https:\u002F\u002Fwww.cnblogs.com\u002FHongjianChen\u002Fp\u002F9450987.html)\n- [Pytorch scatter_ 理解轴的含义](https:\u002F\u002Fblog.csdn.net\u002Fqq_16234613\u002Farticle\u002Fdetails\u002F79827006)\n- [‘model.eval()’ vs ‘with torch.no_grad()’](https:\u002F\u002Fdiscuss.pytorch.org\u002Ft\u002Fmodel-eval-vs-with-torch-no-grad\u002F19615)\n- [到底什么是生成式对抗网络GAN？](https:\u002F\u002Fwww.msra.cn\u002Fzh-cn\u002Fnews\u002Ffeatures\u002Fgan-20170511)\n\n### torchtext介绍\n\n- [torchtext](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftext)\n- [A Tutorial on Torchtext](http:\u002F\u002Fanie.me\u002FOn-Torchtext\u002F)\n- [Torchtext 详细介绍](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F37223078)\n- [torchtext入门教程，轻松玩转文本数据处理](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F31139113)\n\n### 其他工具模块\n\n- [python的Tqdm模块](https:\u002F\u002Fblog.csdn.net\u002Flangb2014\u002Farticle\u002Fdetails\u002F54798823)\n- [pytorch-crf](https:\u002F\u002Fgithub.com\u002Fkmkurn\u002Fpytorch-crf)\n\n### 数据集\n\n- [Chinese-Literature-NER-RE-Dataset](https:\u002F\u002Fgithub.com\u002Flancopku\u002FChinese-Literature-NER-RE-Dataset)\n- [ChineseTextualInference](https:\u002F\u002Fgithub.com\u002Fliuhuanyong\u002FChineseTextualInference)\n\n### 表示学习\n\n- [TransE-Knowledge-Graph-Embedding](https:\u002F\u002Fgithub.com\u002FLapis-Hong\u002FTransE-Knowledge-Graph-Embedding)\n- [OpenKE-PyTorch](https:\u002F\u002Fgithub.com\u002FShulinCao\u002FOpenKE-PyTorch)\n- [【语料】2500万中文三元组！](https:\u002F\u002Fspaces.ac.cn\u002Farchives\u002F4359)\n\n### 命名实体识别\n\n- [sequence_tagging](https:\u002F\u002Fgithub.com\u002FAdolHong\u002Fsequence_tagging)\n\n### 关系抽取\n\n- [ChineseNRE](https:\u002F\u002Fgithub.com\u002Fbuppt\u002FChineseNRE)\n- [pytorch-pcnn](https:\u002F\u002Fgithub.com\u002FShomyLiu\u002Fpytorch-pcnn)\n- [关系抽取(分类)总结](http:\u002F\u002Fshomy.top\u002F2018\u002F02\u002F28\u002Frelation-extraction\u002F)\n\n### 事件抽取\n\n这里暂时粗浅的将语义角色标注技术实现等同于事件抽取任务。\n\n- [语义角色标注](http:\u002F\u002Fwiki.jikexueyuan.com\u002Fproject\u002Fdeep-learning\u002FwordSence-identify.html)\n- [iobes_iob 与 iob_ranges 函数借鉴](https:\u002F\u002Fgithub.com\u002Fglample\u002Ftagger\u002Fblob\u002Fmaster\u002Futils.py)\n- [BiRNN-SRL](https:\u002F\u002Fgithub.com\u002Fzxplkyy\u002FBiRNN-SRL)\n- [chinese_semantic_role_labeling](https:\u002F\u002Fgithub.com\u002FNrgeup\u002Fchinese_semantic_role_labeling)\n\n### 其他\n\n## 打赏\n\n如果该项目对您有所帮助，欢迎打赏~\n\n![UTOOLS1578660899400.jpg](https:\u002F\u002Flightsmile-img.oss-cn-beijing.aliyuncs.com\u002FUTOOLS1578660899400.jpg)\n","# lightKG，lightsmile个人的知识图谱技术框架\n\n## 说明\n\n最近忙着学别的，暂时没怎么管这个lib了，后续会持续更新的。\n\n## 前言\n\n根据知识图谱发展报告2018相关介绍，框架主要设计为有以下五大功能：\n\n- 知识表示学习， Knowledge Representation Learning\n- 实体识别与链接， Entity Recognition and Linking\n- 实体关系抽取， Entity Relation Extraction\n- 事件检测与抽取， Event Detection and Extraction\n- 知识存储与查询， Knowledge Storage and Query\n- 知识推理， Knowledge Reasoning\n\n因此将有六个主要的功能模块：krl（知识表示学习）、erl（实体识别与链接）、ere（实体关系抽取）、ede（实体检测与抽取）、ksq（知识存储与查询）、kr（知识推理）以及其他功能模块。\n\n## 当前已实现的功能\n\n### 知识表示学习\n\n- 基于翻译模型(Trans系列)的知识表示学习， TransE\n\n### 实体识别与链接\n\n- 命名实体识别， ner\n\n### 实体关系抽取\n\n- 关系抽取， re\n\n### 事件检测与抽取\n\n- 语义角色标注， srl\n\n### 知识存储与查询\n\n### 知识推理\n\n## 安装\n\n本项目基于Pytorch1.0\n\n```bash\npip install lightKG\n```\n\n建议使用国内源来安装，如使用以下命令：\n```bash\npip install -i https:\u002F\u002Fpypi.douban.com\u002Fsimple\u002F lightKG\n```\n\n### 安装依赖\n\n由于有些库如pytorch、torchtext并不在pypi源中或者里面只有比较老旧的版本，我们需要单独安装一些库。\n#### 安装pytorch\n\n具体安装参见[pytorch官网](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F)来根据平台、安装方式、Python版本、CUDA版本来选择适合自己的版本。\n\n#### 安装torchtext\n\n使用以下命令安装最新版本torchtext：\n```bash\npip install https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftext\u002Farchive\u002Fmaster.zip\n```\n\n## 模型\n\n- krl：TransE等\n- re: TextCNN\n- srl: BiLstm-CRF\n- ner: BiLstm-CRF\n\n## 训练数据说明\n\n#### krl\n\ncsv格式\n \n共三列，依次为`头实体`、`关系`、`尾实体`， 示例如下：\n \n ```bash\n科学,包涵,自然、社会、思维等领域\n科学,外文名,science\n科学,拼音,kē xué\n科学,中文名,科学\n科学,解释,发现、积累的真理的运用与实践\n语法学,外文名,syntactics\n语法学,中文名,语法学\n物理宇宙学,对象,大尺度结构和宇宙形成\n物理宇宙学,时间,二十世纪\n物理宇宙学,所属,天体物理学\n ```\n \n #### ner\n\nBIO\n\n训练数据示例如下：\n\n```bash\n清 B_Time\n明 I_Time\n是 O\n人 B_Person\n们 I_Person\n祭 O\n扫 O\n先 B_Person\n人 I_Person\n， O\n怀 O\n念 O\n追 O\n思 O\n的 O\n日 B_Time\n子 I_Time\n。 O\n\n正 O\n如 O\n宋 B_Time\n代 I_Time\n诗 B_Person\n人 I_Person\n```\n\n#### srl\n\nCONLL\n\n训练数据示例如下，其中各列分别为`词`、`词性`、`是否语义谓词`、`角色`，每句仅有一个谓语动词为语义谓词，即每句中第三列仅有一行取值为1，其余都为0.\n\n```bash\n宋浩京  NR      0       O\n转达    VV      0       O\n了      AS      0       O\n朝鲜    NR      0       O\n领导人  NN      0       O\n对      P       0       O\n中国    NR      0       O\n领导人  NN      0       O\n的      DEG     0       O\n亲切    JJ      0       O\n问候    NN      0       O\n，      PU      0       O\n代表    VV      0       O\n朝方    NN      0       O\n对      P       0       O\n中国    NR      0       B-ARG0\n党政    NN      0       I-ARG0\n领导人  NN      0       I-ARG0\n和      CC      0       I-ARG0\n人民    NN      0       E-ARG0\n哀悼    VV      1       rel\n金日成  NR      0       B-ARG1\n主席    NN      0       I-ARG1\n逝世    VV      0       E-ARG1\n表示    VV      0       O\n深切    JJ      0       O\n谢意    NN      0       O\n。      PU      0       O\n```\n\n#### re\n\n训练数据示例如下，其中各列分别为`实体1`、`实体2`、`关系`、`句子`\n\n```bash\n钱钟书\t辛笛\t同门\t与辛笛京沪唱和聽钱钟书与钱钟书是清华校友，钱钟书高辛笛两班。\n元武\t元华\tunknown\t于师傅在一次京剧表演中，选了元龙（洪金宝）、元楼（元奎）、元彪、成龙、元华、元武、元泰7人担任七小福的主角。\n```\n\n ## 使用\n \n ### krl\n\n#### 训练\n\n```python\nfrom lightkg.krl import KRL\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fkg\u002Fbaike\u002Ftrain.sample.csv'\ndev_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fkg\u002Fbaike\u002Ftest.sample.csv'\nmodel_type = 'TransE'\n\nkrl = KRL()\nkrl.train(train_path, model_type=model_type, dev_path=train_path, save_path='.\u002Fkrl_{}_saves'.format(model_type))\n```\n\n#### 测试\n\n```python\nkrl.load(save_path='.\u002Fkrl_{}_saves'.format(model_type), model_type=model_type)\nkrl.test(train_path)\n```\n\n#### 预测\n\n##### 根据头实体、关系、尾实体，预测其概率\n\n```python\nprint(krl.predict(head='编译器', rel='外文名', tail='Compiler'))\n```\n\n输出为：\n```bash\n0.998942494392395\n```\n##### 根据头实体和关系，预测训练集词表中topk(默认为3)个可能尾实体\n\n```python\nprint(krl.predict_tail(head='编译器', rel='外文名'))\n```\n\n输出为：\n```bash\n[('Compiler', 0.998942494392395), ('20世纪50年代末', 0.3786872327327728), ('译码器', 0.3767447769641876)]\n```\n##### 根据头实体和尾实体，预测训练集词表中topk(默认为3)个可能关系\n\n```python\nprint(krl.predict_rel(head='编译器', tail='Compiler'))\n```\n\n输出为：\n```bash\n[('外文名', 0.998942494392395), ('英译', 0.8240533471107483), ('拼音', 0.4082326292991638)]\n```\n##### 根据尾实体和关系，预测训练集词表中topk(默认为3)个可能头实体\n```python\nprint(krl.predict_head(rel='外文名', tail='Compiler'))\n```\n\n输出为：\n```bash\n[('编译器', 0.998942494392395), ('译码器', 0.36795616149902344), ('计算机，单片机，编程语言', 0.36788302659988403)]\n```\n\n### ner\n\n#### 训练\n\n```python\nfrom lightkg.erl import NER\n\n# 创建NER对象\nner_model = NER()\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fner\u002Ftrain.sample.txt'\ndev_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fner\u002Ftest.sample.txt'\nvec_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fembedding\u002Fchar\u002Ftoken_vec_300.bin'\n\n# 只需指定训练数据路径，预训练字向量可选，开发集路径可选，模型保存路径可选。\nner_model.train(train_path, vectors_path=vec_path, dev_path=dev_path, save_path='.\u002Fner_saves')\n```\n\n#### 测试\n\n```python\n# 加载模型，默认当前目录下的`saves`目录\nner_model.load('.\u002Fner_saves')\n# 对train_path下的测试集进行读取测试\nner_model.test(train_path)\n```\n\n#### 预测\n\n```python\nfrom pprint import pprint\n\npprint(ner_model.predict('另一个很酷的事情是，通过框架我们可以停止并在稍后恢复训练。'))\n```\n\n预测结果：\n\n```bash\n[{'end': 15, 'entity': '我们', 'start': 14, 'type': 'Person'}]\n```\n\n### re\n\n#### 训练\n\n```python\nfrom lightkg.ere import RE\n\nre = RE()\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FProjects\u002FNLP\u002FChineseNRE\u002Fdata\u002Fpeople-relation\u002Ftrain.sample.txt'\ndev_path = '\u002Fhome\u002Flightsmile\u002FProjects\u002FNLP\u002FChineseNRE\u002Fdata\u002Fpeople-relation\u002Ftest.sample.txt'\nvec_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fembedding\u002Fword\u002Fsgns.zhihu.bigram-char'\n\nre.train(train_path, dev_path=dev_path, vectors_path=vec_path, save_path='.\u002Fre_saves')\n\n```\n\n#### 测试\n\n```python\nre.load('.\u002Fre_saves')\nre.test(dev_path)\n```\n\n#### 预测\n\n```python\nprint(re.predict('钱钟书', '辛笛', '与辛笛京沪唱和聽钱钟书与钱钟书是清华校友，钱钟书高辛笛两班。'))\n```\n\n预测结果：\n\n```bash\n(0.7306928038597107, '同门') # return格式为（预测概率，预测标签）\n```\n\n### srl\n\n#### 训练\n\n```python\nfrom lightkg.ede import SRL\n\nsrl_model = SRL()\n\ntrain_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fsrl\u002Ftrain.sample.tsv'\ndev_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fcorpus\u002Fsrl\u002Ftest.sample.tsv'\nvec_path = '\u002Fhome\u002Flightsmile\u002FNLP\u002Fembedding\u002Fword\u002Fsgns.zhihu.bigram-char'\n\n\nsrl_model.train(train_path, vectors_path=vec_path, dev_path=dev_path, save_path='.\u002Fsrl_saves')\n```\n\n#### 测试\n\n```python\nsrl_model.load('.\u002Fsrl_saves')\n\nsrl_model.test(dev_path)\n```\n\n#### 预测\n\n```python\nword_list = ['代表', '朝方', '对', '中国', '党政', '领导人', '和', '人民', '哀悼', '金日成', '主席', '逝世', '表示', '深切', '谢意', '。']\npos_list = ['VV', 'NN', 'P', 'NR', 'NN', 'NN', 'CC', 'NN', 'VV', 'NR', 'NN', 'VV', 'VV', 'JJ', 'NN', 'PU']\nrel_list = [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]\n\nprint(srl_model.predict(word_list, pos_list, rel_list))\n```\n\n预测结果：\n\n```bash\n{'ARG0': '中国党政领导人和人民', 'rel': '哀悼', 'ARG1': '金日成主席逝世'}\n```\n\n## 项目组织结构\n\n### 项目架构\n- base\n    - config.py\n    - model.py\n    - module.py\n    - tool.py\n- common\n    - entity.py\n    - relation.py\n- ede\n    - srl， 语义角色标注\n- ere\n    - re， 关系抽取\n- erl\n    - ner， 命名实体识别\n- kr\n- krl，知识表示学习\n    - models\n        - transE\n    - utils\n- ksq\n- utils\n\n### 架构说明\n\n#### base目录\n放一些基础的模块实现，其他的高层业务模型以及相关训练代码都从此module继承相应父类。\n\n##### config\n存放模型训练相关的超参数等配置信息\n\n##### model\n模型的实现抽象基类，包含`base.model.BaseConfig`和`base.model.BaseModel`，包含`load`、`save`等方法\n\n##### module\n业务模块的训练验证测试等实现抽象基类，包含`base.module.Module`，包含`train`、`load`、`_validate`、`test`等方法\n\n##### tool\n业务模块的数据处理抽象基类，包含`base.tool.Tool`，包含`get_dataset`、`get_vectors`、`get_vocab`、`get_iterator`、`get_score`等方法\n\n#### common目录\n\n##### entity\n\n实体基类, 所有需要使用实体对象的使用此类或从此类继承子类\n\n##### relation\n\n关系基类, 所有需要使用关系对象的使用此类或从此类继承子类\n\n#### util目录\n放一些通用的方法\n\n## todo\n\n### 业务\n\n### 工程\n\n- [x] 重构项目结构，将相同冗余的地方合并起来，保持项目结构清晰\n- [ ] 增加断点重训功能。\n- [ ] 增加earlyStopping。\n- [ ] 现在模型保存的路径和名字默认一致，会冲突，接下来每个模型都有自己的`name`。\n\n### 功能\n\n- [x] 增加关系抽取相关模型以及训练预测代码\n- [x] 增加事件抽取相关模型以及训练预测代码\n- [x] 增加命名实体识别相关模型以及预测训练代码\n- [x] 增加基于翻译模型的知识表示学习相关模型以及训练预测代码\n- [x] 增加实体链接的知识表示学习相关模型以及训练预测代码\n\n## 参考\n\n### Deep Learning\n\n- [What's the difference between “hidden” and “output” in PyTorch LSTM?](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F48302810\u002Fwhats-the-difference-between-hidden-and-output-in-pytorch-lstm)\n- [What's the difference between LSTM() and LSTMCell()?](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F48187283\u002Fwhats-the-difference-between-lstm-and-lstmcell)\n- [深度学习框架技术剖析[转]](https:\u002F\u002Faiuai.cn\u002Faifarm904.html)\n\n### NLP\n\n- [基于表示学习的信息抽取方法浅析](https:\u002F\u002Fwww.jiqizhixin.com\u002Farticles\u002F2016-11-15-5)\n- [知识抽取-实体及关系抽取](http:\u002F\u002Fwww.shuang0420.com\u002F2018\u002F09\u002F15\u002F%E7%9F%A5%E8%AF%86%E6%8A%BD%E5%8F%96-%E5%AE%9E%E4%BD%93%E5%8F%8A%E5%85%B3%E7%B3%BB%E6%8A%BD%E5%8F%96\u002F)\n- [知识抽取-事件抽取](http:\u002F\u002Fwww.shuang0420.com\u002F2018\u002F10\u002F15\u002F%E7%9F%A5%E8%AF%86%E6%8A%BD%E5%8F%96-%E4%BA%8B%E4%BB%B6%E6%8A%BD%E5%8F%96\u002F)\n\n### 知识图谱\n\n- [翻译模型(Trans系列)的知识表示学习](https:\u002F\u002Fmp.weixin.qq.com\u002Fs\u002FSTflo3c8nyG6iHh9dEeKOQ)\n- [知识图谱向量化表示](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F30320631)\n\n### Pytorch教程\n\n- [PyTorch 常用方法总结4：张量维度操作（拼接、维度扩展、压缩、转置、重复……）](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F31495102)\n- [Pytorch中的RNN之pack_padded_sequence()和pad_packed_sequence()](https:\u002F\u002Fwww.cnblogs.com\u002Fsbj123456789\u002Fp\u002F9834018.html)\n- [pytorch学习笔记（二）：gradient](https:\u002F\u002Fblog.csdn.net\u002Fu012436149\u002Farticle\u002Fdetails\u002F54645162)\n- [torch.multinomial()理解](https:\u002F\u002Fblog.csdn.net\u002Fmonchin\u002Farticle\u002Fdetails\u002F79787621)\n- [Pytorch 细节记录](https:\u002F\u002Fwww.cnblogs.com\u002Fking-lps\u002Fp\u002F8570021.html)\n- [What does flatten_parameters() do?](https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F53231571\u002Fwhat-does-flatten-parameters-do)\n- [关于Pytorch的二维tensor的gather和scatter_操作用法分析](https:\u002F\u002Fwww.cnblogs.com\u002FHongjianChen\u002Fp\u002F9450987.html)\n- [Pytorch scatter_ 理解轴的含义](https:\u002F\u002Fblog.csdn.net\u002Fqq_16234613\u002Farticle\u002Fdetails\u002F79827006)\n- [‘model.eval()’ vs ‘with torch.no_grad()’](https:\u002F\u002Fdiscuss.pytorch.org\u002Ft\u002Fmodel-eval-vs-with-torch-no-grad\u002F19615)\n- [到底什么是生成式对抗网络GAN？](https:\u002F\u002Fwww.msra.cn\u002Fzh-cn\u002Fnews\u002Ffeatures\u002Fgan-20170511)\n\n### torchtext介绍\n\n- [torchtext](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftext)\n- [A Tutorial on Torchtext](http:\u002F\u002Fanie.me\u002FOn-Torchtext\u002F)\n- [Torchtext 详细介绍](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F37223078)\n- [torchtext入门教程，轻松玩转文本数据处理](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F31139113)\n\n### 其他工具模块\n\n- [python的Tqdm模块](https:\u002F\u002Fblog.csdn.net\u002Flangb2014\u002Farticle\u002Fdetails\u002F54798823)\n- [pytorch-crf](https:\u002F\u002Fgithub.com\u002Fkmkurn\u002Fpytorch-crf)\n\n### 数据集\n\n- [Chinese-Literature-NER-RE-Dataset](https:\u002F\u002Fgithub.com\u002Flancopku\u002FChinese-Literature-NER-RE-Dataset)\n- [ChineseTextualInference](https:\u002F\u002Fgithub.com\u002Fliuhuanyong\u002FChineseTextualInference)\n\n### 表示学习\n\n- [TransE-Knowledge-Graph-Embedding](https:\u002F\u002Fgithub.com\u002FLapis-Hong\u002FTransE-Knowledge-Graph-Embedding)\n- [OpenKE-PyTorch](https:\u002F\u002Fgithub.com\u002FShulinCao\u002FOpenKE-PyTorch)\n- [【语料】2500万中文三元组！](https:\u002F\u002Fspaces.ac.cn\u002Farchives\u002F4359)\n\n### 命名实体识别\n\n- [sequence_tagging](https:\u002F\u002Fgithub.com\u002FAdolHong\u002Fsequence_tagging)\n\n### 关系抽取\n\n- [ChineseNRE](https:\u002F\u002Fgithub.com\u002Fbuppt\u002FChineseNRE)\n- [pytorch-pcnn](https:\u002F\u002Fgithub.com\u002FShomyLiu\u002Fpytorch-pcnn)\n- [关系抽取(分类)总结](http:\u002F\u002Fshomy.top\u002F2018\u002F02\u002F28\u002Frelation-extraction\u002F)\n\n### 事件抽取\n\n这里暂时粗浅的将语义角色标注技术实现等同于事件抽取任务。\n\n- [语义角色标注](http:\u002F\u002Fwiki.jikexueyuan.com\u002Fproject\u002Fdeep-learning\u002FwordSence-identify.html)\n- [iobes_iob 与 iob_ranges 函数借鉴](https:\u002F\u002Fgithub.com\u002Fglample\u002Ftagger\u002Fblob\u002Fmaster\u002Futils.py)\n- [BiRNN-SRL](https:\u002F\u002Fgithub.com\u002Fzxplkyy\u002FBiRNN-SRL)\n- [chinese_semantic_role_labeling](https:\u002F\u002Fgithub.com\u002FNrgeup\u002Fchinese_semantic_role_labeling)\n\n### 其他\n\n## 打赏\n\n如果该项目对您有所帮助，欢迎打赏~\n\n![UTOOLS1578660899400.jpg](https:\u002F\u002Flightsmile-img.oss-cn-beijing.aliyuncs.com\u002FUTOOLS1578660899400.jpg)","# lightKG 快速上手指南\n\nlightKG 是一个基于 PyTorch 的个人知识图谱技术框架，涵盖知识表示学习、实体识别、关系抽取及事件检测等核心功能。\n\n## 1. 环境准备\n\n- **系统要求**：支持 Linux \u002F macOS \u002F Windows\n- **Python 版本**：建议 Python 3.6+\n- **核心依赖**：\n  - PyTorch 1.0+（需根据本地 CUDA 版本自行安装）\n  - torchtext（需从源码安装最新版）\n\n> **注意**：由于 `torchtext` 在部分 pip 源中版本过旧或缺失，建议按以下步骤手动安装。\n\n## 2. 安装步骤\n\n### 第一步：安装 PyTorch\n请访问 [PyTorch 官网](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F) 选择适合你平台、CUDA 版本的安装命令。例如：\n```bash\npip install torch torchvision\n```\n\n### 第二步：安装 torchtext\n使用以下命令从 GitHub 安装最新版本：\n```bash\npip install https:\u002F\u002Fgithub.com\u002Fpytorch\u002Ftext\u002Farchive\u002Fmaster.zip\n```\n\n### 第三步：安装 lightKG\n推荐使用国内镜像源（如豆瓣源）加速安装：\n```bash\npip install -i https:\u002F\u002Fpypi.douban.com\u002Fsimple\u002F lightKG\n```\n\n## 3. 基本使用\n\n以下以**知识表示学习 (KRL)** 模块为例，展示最简训练与预测流程。其他模块（NER, RE, SRL）用法类似。\n\n### 3.1 数据准备\n训练数据需为 CSV 格式，包含三列：`头实体 `,` 关系 `,` 尾实体`。\n示例 (`train.csv`)：\n```csv\n科学，包涵，自然、社会、思维等领域\n科学，外文名，science\n编译器，外文名，Compiler\n```\n\n### 3.2 代码示例\n\n#### 训练模型\n```python\nfrom lightkg.krl import KRL\n\n# 初始化\nkrl = KRL()\n\n# 配置路径\ntrain_path = '.\u002Ftrain.csv'\ndev_path = '.\u002Ftrain.csv'  # 演示用，实际请区分验证集\nmodel_type = 'TransE'\n\n# 开始训练\nkrl.train(\n    train_path, \n    model_type=model_type, \n    dev_path=dev_path, \n    save_path='.\u002Fkrl_transE_saves'\n)\n```\n\n#### 加载模型并预测\n```python\n# 加载已保存的模型\nkrl.load(save_path='.\u002Fkrl_transE_saves', model_type='TransE')\n\n# 场景 1: 预测三元组概率\nprob = krl.predict(head='编译器', rel='外文名', tail='Compiler')\nprint(f\"概率：{prob}\")\n\n# 场景 2: 给定头实体和关系，预测可能的尾实体 (Top 3)\ntails = krl.predict_tail(head='编译器', rel='外文名')\nprint(f\"可能尾实体：{tails}\")\n\n# 场景 3: 给定头尾实体，预测可能的关系 (Top 3)\nrels = krl.predict_rel(head='编译器', tail='Compiler')\nprint(f\"可能关系：{rels}\")\n```\n\n### 其他模块简述\n- **命名实体识别 (NER)**: 导入 `lightkg.erl.NER`，输入 BIO 格式文本进行训练与预测。\n- **关系抽取 (RE)**: 导入 `lightkg.ere.RE`，输入包含两个实体及句子的数据进行分类。\n- **语义角色标注 (SRL)**: 导入 `lightkg.ede.SRL`，输入词序列、词性序列及谓词标记进行事件结构抽取。\n\n详细数据格式（BIO, CONLL 等）及对应 API 请参考项目官方文档。","某电商公司的数据团队正致力于从海量商品评论和客服对话中构建“用户 - 商品知识图谱”，以支持智能推荐和故障归因分析。\n\n### 没有 lightKG 时\n- **开发门槛高**：团队需分别寻找并整合独立的 NER、关系抽取和表示学习代码库，环境配置冲突频发，耗时数周仍无法跑通基线。\n- **流程割裂严重**：实体识别、关系抽取与图谱推理由不同脚本处理，数据格式转换繁琐，导致从原始文本到可用图谱的周期长达数天。\n- **缺乏统一推理能力**：仅能存储显式提取的关系，无法利用 TransE 等模型预测潜在关联（如推断“编译器”的外文名），限制了知识发现的深度。\n- **维护成本巨大**：各模块依赖版本不一，缺乏统一框架管理，一旦上游数据变动，整个流水线极易崩溃且难以调试。\n\n### 使用 lightKG 后\n- **一站式开箱即用**：通过 `pip install lightKG` 即可获取基于 PyTorch 的统一框架，内置 NER、关系抽取及 TransE 模型，半天内完成环境搭建与基线训练。\n- **全流程无缝衔接**：利用 `erl` 模块提取实体，`ere` 模块抽取关系，直接接入 `krl` 模块进行向量化表示，数据在框架内自动流转，构建效率提升 80%。\n- **具备深度推理能力**：调用 `predict_tail` 或 `predict_rel` 接口，不仅能存储已知事实，还能高概率预测缺失链接（如自动补全商品属性的外文名），激活沉睡数据价值。\n- **架构稳定易扩展**：所有功能模块标准化封装，训练数据格式清晰（CSV\u002FBIO\u002FCONLL），后续新增事件检测模块只需按文档补充数据，维护难度大幅降低。\n\nlightKG 将原本碎片化、高门槛的知识图谱构建过程，转化为一条高效、可推理的标准化流水线，让中小团队也能轻松驾驭深度学习驱动的图谱应用。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsmilelight_lightKG_5b85994c.png","smilelight","Defang Li","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsmilelight_a63bea7b.png","专注Agent领域，偏好Agent记忆方向，对Agent进化赛道感兴趣","Baidu","Beijing","iamlightsmile@qq.com",null,"https:\u002F\u002Fwww.lightsmile.cn","https:\u002F\u002Fgithub.com\u002Fsmilelight",[84],{"name":85,"color":86,"percentage":87},"Python","#3572A5",100,614,149,"2025-12-16T02:19:04","Apache-2.0","Linux, macOS, Windows","非必需（取决于是否使用 CUDA 加速的 PyTorch 版本），具体型号和显存未说明，需根据 PyTorch 官网选择对应的 CUDA 版本","未说明",{"notes":96,"python":97,"dependencies":98},"该项目基于较旧的 PyTorch 1.0 版本。torchtext 无法通过标准 pip 源安装最新版，需从 GitHub 源码安装。用户需自行前往 PyTorch 官网根据操作系统、Python 版本和 CUDA 版本选择合适的 PyTorch 安装命令。训练数据需准备为特定的 CSV、BIO 或 CONLL 格式。","未说明（需兼容 PyTorch 1.0）",[99,100,64],"torch==1.0","torchtext (最新开发版)",[16,102,35,103,15],"视频","音频",[105,106,107,108,109,110,111],"knowledge-graph","kg","trane","ner","named-entity-recognition","srl","semantic-role-labeling","2026-03-27T02:49:30.150509","2026-04-18T09:20:13.407859",[115,120,124,129,134,139],{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},39320,"安装 lightKG 时提示找不到 torch==1.0.0 版本怎么办？","该错误通常是因为环境中没有安装指定版本的 PyTorch。请确保先通过 Anaconda 或 pip 安装兼容的 torch 版本（如 1.0.0），然后再安装 lightKG。如果官方源找不到该版本，可以尝试从 PyTorch 历史版本页面下载对应 wheel 文件手动安装，或者调整 lightKG 的依赖配置以适配当前已安装的 torch 版本。","https:\u002F\u002Fgithub.com\u002Fsmilelight\u002FlightKG\u002Fissues\u002F7",{"id":121,"question_zh":122,"answer_zh":123,"source_url":119},39321,"更换为大规模开源三元组数据集后训练速度急剧下降是什么原因？","这是因为 lightKG 中的程序目前是实验性的，其超参数并未针对大批量数据集进行优化。框架本身可能更适用于小规模数据。若要处理大规模数据集，用户需要自行调整超参数（如 batch size、学习率等）以提升处理速度和训练效率。",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},39322,"如何从代码中的 vocab 对象获取实体对应的词向量（vectors）？","vocab 对象包含一个 vectors 属性，用于存储相关向量信息。你可以尝试访问 `self._entity_vocab.vectors` 来获取向量。如果打印结果为 None，可能是因为构建 vocab 时未正确加载预训练向量。建议检查 `rl_tool.get_vocab` 函数中 `ENTITY.build_vocab` 的调用方式，确保传入了包含向量信息的参数，并参考 torchtext 官方教程确认向量加载流程。同时可查阅 `lightkg\u002Fkrl\u002Futils\u002Fscore_func.py` 了解具体的向量使用方式。","https:\u002F\u002Fgithub.com\u002Fsmilelight\u002FlightKG\u002Fissues\u002F8",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},39323,"项目示例代码中引用的数据集（如 train.sample.csv）在哪里可以下载？","维护者已将几个任务的测试版数据集上传至项目的 `data` 目录下（https:\u002F\u002Fgithub.com\u002Fsmilelight\u002FlightKG\u002Ftree\u002Fmaster\u002Fdata）。用户只需下载这些数据，并修改 `examples` 目录下的代码中的文件路径指向新位置，即可运行示例代码。","https:\u002F\u002Fgithub.com\u002Fsmilelight\u002FlightKG\u002Fissues\u002F6",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},39324,"在 Windows 上训练 NER 模型时报错 'method detach already has a docstring' 如何解决？","该错误是由于 Windows 环境下某些 PyTorch 版本与代码存在兼容性问题导致的。建议尝试升级或降级 PyTorch 到一个稳定版本（如 1.0.0 或 1.1.0），或者检查代码中是否重复定义了 `detach` 方法。若问题依旧，可考虑在 Linux 环境或使用 Docker 容器运行代码以避免平台差异。","https:\u002F\u002Fgithub.com\u002Fsmilelight\u002FlightKG\u002Fissues\u002F3",{"id":140,"question_zh":141,"answer_zh":142,"source_url":128},39325,"lightKG 是否支持基于梯度攻击的知识图谱对抗样本生成？","虽然项目代码未直接提供完整的对抗攻击示例，但用户可以通过计算 head+relation-tail 关于 head 的导数来确定扰动方向。具体实现需利用实体词向量进行运算，建议参考 `lightkg\u002Fkrl\u002Futils\u002Fscore_func.py` 中的评分函数实现，并结合 torchtext 的 vectors 属性提取实体向量后进行梯度计算。",[]]