【娱乐圈明星知识图谱2】信息抽取

目录

1. 项目介绍

2. 信息抽取介绍

3. ChatGPT 信息抽取代码实战

4. 信息抽取主逻辑

5. 项目源码


1. 项目介绍

利用爬虫项目中爬取的大量信息

【娱乐圈明星知识图谱1】百科爬虫_Encarta1993的博客-CSDN博客娱乐圈明星知识图谱百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫百度百科爬虫https://blog.csdn.net/u014147522/article/details/131160490从中抽取出可结构化的关键信息。

此项目中我们比较关注

姓名

性别

生日

出生地

毕业学校

主要作品

这6个信息点。

2. 信息抽取介绍

信息抽取任务是指从文本中识别和提取特定类型的信息。这些信息可以是实体(如人名、地点、组织机构等)、关系(如人物之间的关联、物品属性等)或事件(如时间、动作、状态等)等。信息抽取任务通常包括以下步骤:

1. 实体识别:识别文本中的实体,例如人名、地点、组织机构等。

2. 关系识别:识别实体之间的关系,例如人物之间的关联、物品属性等。

3. 事件识别:识别文本中描述的事件,例如时间、动作、状态等。

4. 信息提取:从文本中提取出需要的信息,例如一个公司的总部所在地、某个人的联系方式等。

由于现在是 2023 年,大模型元年,NLP 任务全部被大模型统一了。因此,本项目使用 ChatGPT 来做信息抽取。

  • 大模型

大语言模型(LLM)是一种预训练的深度学习模型,可以用于各种自然语言处理任务,包括信息抽取。信息抽取是从非结构化文本中提取结构化信息的过程。LLM可以通过学习大量的文本数据来提高其在信息抽取任务中的性能。LLM通常使用自监督学习来预训练,这意味着它可以从未标记的数据中学习,而不需要人工标注数据。LLM可以通过多种方式进行微调,以适应不同的信息抽取任务。

  • ChatGPT

ChatGPT是由OpenAI开发的人工智能聊天机器人,它使用了基于GPT-3.5和GPT-4的大型语言模型,能够理解和学习人类的语言,进行自然的对话和互动。ChatGPT不仅可以聊天,还能完成各种任务,如写邮件、视频脚本、文案、翻译、代码、论文等。

3. ChatGPT 信息抽取代码实战

大模型的交互主要是使用 Prompt。

Prompt是一种用于指导大型语言模型生成自然语言文本的文本片段。在使用大型语言模型时,我们需要提供一个Prompt,以指导模型产生符合我们期望的文本结果。Prompt可以是一个单词、一句话、一段话或一个完整的篇章。

import openaifrom utils import get_api_keyopenai.api_key = get_api_key()def call_gpt(context):prompt = "\n\n\n根据上文中给定的介绍细节,请仔细找出或推测出这个人的‘姓名、性别、生日、出生地、毕业学校、主要作品’这6个信息点,如果没有则用空字符串代替,并按照json格式输出,如果value有多个则按照jsonarray输出"content = context + promptmessages = [{'role': 'system', 'content': '你是一个自动信息抽取专家机器人。'}]messages.append({'role': 'user', 'content': content})response = openai.ChatCompletion.create(model='gpt-3.5-turbo',messages=messages,)return response["choices"][0]["message"]["content"]if __name__ == "__main__":context = "黄晓明,1977年11月13日出生于山东省青岛市市南区,中国内地影视男演员、流行乐歌手,毕业于北京电影学院表演系"result = call_gpt(context=context)print(result)

执行上面代码可得到:

{
  "姓名": "黄晓明",
  "性别": "男",
  "生日": "1977年11月13日",
  "出生地": "山东省青岛市市南区",
  "毕业学校": "北京电影学院",
  "主要作品": ""
}

可以看出非常满足我们信息抽取的要求。

4. 信息抽取主逻辑

本项目中主要是对前一项目中爬取的明星信息做抽取。以下是其中一条爬到的数据:

{"title": "黄晓明","url": "https://baike.baidu.com/item/黄晓明/6597","summary": "\n黄晓明,1977年11月13日出生于山东省青岛市,中国内地男演员、歌手,毕业于北京电影学院表演系\n[1-2]  。1998年主演个人首部电视剧《爱情不是游戏》进入演艺圈\n[3] \n。2001年凭借古装剧《大汉天子》获得关注\n[4] \n。自2005年起连续10年入选“福布斯中国名人榜”\n[5] \n。2006年参演古装片《夜宴》\n[378] \n。2007年主演民国剧《新上海滩》\n[440] \n;同年发行个人首张专辑《It's Ming》\n[382] \n 。2009年凭借歌曲《好人卡》获得北京流行音乐典礼年度金曲奖\n[391] \n。2010年凭借谍战片《风声》获得第17届北京大学生电影节最受欢迎男演员奖\n[6] \n。2011年成立黄晓明工作室\n[383] \n。2013年凭借剧情片《中国合伙人》获得中国电影金鸡奖、中国电影华表奖、大众电影百花奖最佳男主角奖\n[7-9]   。2015年成为首位在好莱坞中国剧院留下手印的中国内地男演员\n[10] \n。2016年凭借史诗片《大唐玄奘》获得第13届中国长春电影节最佳男主角奖\n[11] \n。2017年主演古装剧《琅琊榜之风起长林》\n[12] \n。2018年主演爱情片《无问西东》上映\n[13] \n。2019年凭借剧情片《烈火英雄》该片获得第35届大众电影百花奖最佳男主角奖、第33届中国电影金鸡奖最佳男主角奖\n[15-16]  ;同年担任第32届中国电影金鸡奖评委\n[17] \n。2020年主演民国剧《鬓边不是海棠红》\n[380] \n。2021年主演年代剧《光荣与梦想》播出\n[377] \n。演艺事业外,他还热心于公益慈善\n[390] \n。2008年担任中国儿童少年基金会形象大使。2009年担任联合国儿童基金香港委员会儿童基金会爱心大使\n[18] \n。2014年当选山东省十大杰出青年\n[19] \n,同年成立“黄晓明明天爱心基金”。2016年担任中国保护大熊猫研究中心形象大使\n[20] \n。\n","basic-info": "\n\n中文名\n\n黄晓明\n\n外文名\n\nHuang Xiaoming\n\n别    名\n\n教主、猫、钢钉侠、熊猫明\n[376] \n、囧明\n\n国    籍\n\n中国\n\n民    族\n\n汉族\n\n出生地\n\n山东省青岛市市南区\n\n出生日期\n\n1977年11月13日\n\n星    座\n\n天蝎座\n\n血    型\n\nO型\n\n身    高\n\n179 cm\n[21] \n\n毕业院校\n\n北京电影学院\n\n职    业\n\n演员、歌手\n[22] \n\n经纪公司\n\n黄晓明工作室\n\n代表作品\n\n中国合伙人、风声、烈火英雄、无问西东、大唐玄奘、大上海、撒娇女人最好命、大汉天子、神雕侠侣、新上海滩、暗香、精忠岳飞、鬓边不是海棠红、匹夫、锦绣缘华丽冒险、琅琊榜之风起长林、赵氏孤儿、鹿鼎记、玫瑰之战、暗恋、什么都可以、缘、精忠传奇、就算没有明天\n\n\n\n主要成就\n\n第29届中国电影金鸡奖最佳男主角奖\n第32届大众电影百花奖最佳男主角奖\n第15届中国电影华表奖优秀男演员奖\n第32届中国电影金鸡奖评委\n第13届中国长春电影节最佳男主角奖\n\n展开\n\n\n\n主要成就\n\n第29届中国电影金鸡奖最佳男主角奖\n第32届大众电影百花奖最佳男主角奖\n第15届中国电影华表奖优秀男演员奖\n第32届中国电影金鸡奖评委\n第13届中国长春电影节最佳男主角奖\n\n第17届北京大学生电影节最受欢迎男演员\n第10届华语电影传媒大奖最具人气男演员\n第11届华语电影传媒大奖最受瞩目男演员\n山东省十大杰出青年称号\n[23] \n联合国艾滋病规划署中国亲善大使\n[24] \n中国电影家协会青年和新文艺群体工作委员会会长\n[25] \n第12届中国长春电影节最佳男主角奖\n第35届大众电影百花奖最佳男主角奖\n第33届中国电影金鸡奖最佳男主角奖\n[26] \n\n收起\n\n\n\n\n\n公益基金\n\n黄晓明明天爱心基金\n\n生    肖\n\n蛇\n\n影友会\n\n明教\n\n性    别\n\n男\n\n\n"
}

我们需要对每条爬到的数据依次进行抽取

import json
import random
import time
from tqdm import tqdm
from extractor import call_gptdef main():with open("data/person.jsonl", "r", encoding="utf-8") as f:data = [i.strip() for i in f.readlines() if i.strip()]with open("data/result.jsonl", "w", encoding="utf-8") as f:for line in tqdm(data):line = json.loads(line)query = line["title"] + "\n\n\n" + line["summary"] + "\n\n\n" + line["basic-info"] + "\n\n\n"url = line["url"]try:res = call_gpt(query)f.write(json.dumps(json.loads(res), ensure_ascii=False) + "\t" + url + "\n")except KeyboardInterrupt:breakexcept:print("error")time.sleep(120)continuetime.sleep(random.random() * 3)if __name__ == "__main__":main()

其中,person.jsonl 来自上一个爬虫项目中,执行完这个代码可以得到 result.jsonl,即信息抽取的结果。

5. 项目源码

https://gitee.com/hl0929/baike-extractor

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redisson分布式锁学习

什么是分布式锁? 当有多个线程并发访问同一共享数据时,如果多个线程同时都去修改这个共享数据,且修改操作不是原子操作,就很有可能出现线程安全问题,而产生线程安全问题的根本原因是缺乏对共享数据访问的同步和互斥。 为了解决这个问题,通常我们的做法…

【Golang 接口自动化07】struct转map的三种方式

目录 背景 struct转map 使用json模块 使用reflect模块 使用第三方库 测试 总结 资料获取方法 背景 我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法&am…

PHM的设备故障模型如何构建?

预测性维护与健康管理(Prognostics Health Management,PHM)是现代工业中的一个关键概念,它旨在通过使用数据和先进的分析技术,实现设备故障的早期预测和预防,从而最大限度地提高设备的可用性和可靠性。而在…

如何运行疑难解答程序来查找和修复Windows 10中的常见问题

如果Windows 10中出现问题,运行疑难解答可能会有所帮助。疑难解答人员可以为你找到并解决许多常见问题。 一、在控制面板中运行疑难解答 1、打开控制面板(图标视图),然后单击“疑难解答”图标。 2、单击“疑难解答”中左上角的…

大牛练成记:用JavaScript徒手写出一个日期选择插件

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:100个JavaScript的小应用。 🎉欢迎 👍点赞✍评论⭐收…

【C语言】初识指针

【C语言】初识指针 一、指针是什么?二、指针和指针类型1. 指针-整数2. 指针的解引用三、野指针1.野指针成因2 .如何规避野指针四、指针运算五、二级指针七、指针数组 🎈个人主页:库库的里昂🎐CSDN新晋作者🎉欢迎 &…

ansible安装及rhel8仓库配置

目录 一、本地仓库 问题: 解决: 1.创建一个仓库: 内容: 2.挂载: 挂载: 测试: 3.或者直接使用阿里云的源 二.配置ansible仓库 1.下载: 2.检查 一、本地仓库 问题: 当…

vue3+uniapp自定义tabbar

首先把tabbar中的元素写在一个list中用v-for进行渲染 用一个interface进行定义接口,这样别人在review你的代码就可以清晰知道你的tabbar包含什么元素。 利用typescript特性进行类型定义,可以省去很多麻烦 import { reactive } from "vue" imp…

docker快速入门

文章目录 简介:组成:安装:运行:原理:常用命令:1.帮助启动类命令2.镜像命令3.容器命令4.命令交互图5.将镜像打包发布到阿里云1.将本地容器制作为镜像2.登录阿里云3.创建个人实例4.创建镜像仓库5.将镜像推送到…

马上解锁 StarRocks 存算分离,降本增效无需等!

StarRocks 于 4 月底正式发布了 3.0 版本,该里程碑版本带来了大家期盼已久的新特性--存算分离。此新功能一推出,立即受到社区热情追捧,用户纷纷开始在自己的业务中评估和测试存算分离效果。从芒果TV、聚水潭、网易邮箱、浪潮、天道金科等数十…

桥接模式——处理多维度变化

1、简介 1.1、概述 桥接模式是一种很实用的结构型设计模式。如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合单一职责原则。与多层继承方案不同,它将两个独…

游戏APP开发:创新设计的秘诀

在游戏 APP开发中,创新设计是游戏开发公司的一大追求,为了可以为用户带来更好的游戏体验,这就需要对游戏 APP开发进行创新设计。那么,游戏 APP开发中的创新设计是什么呢?接下来,我们就一起来看看吧。 想要…

mongodb docker 及常用命令

MongoDB属于非关系型数据库,它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇: centos7 mongodb 4.0.28…

SSL原理详解

SSL协议结构: SSL协议分为两层,下层为SSL记录协议,上层为SSL握手协议、SSL密码变化协议和SSL警告协议。 1.下层为SSL记录协议,主要作用是为高层协议提供基本的安全服务 建立在可靠的传输之上,负责对上层的数据进行分块…

Vue3+Vite+TypeScript常用项目模块详解

目录 1.Vue3ViteTypeScript 概述 1.1 vue3 1.1.1 Vue3 概述 1.1.2 vue3的现状与发展趋势 1.2 Vite 1.2.1 现实问题 1.2 搭建vite项目 1.3 TypeScript 1.3.1 TypeScript 定义 1.3.2 TypeScript 基本数据类型 1.3.3 TypeScript语法简单介绍 2. 项目配置简单概述 2.…

小白到运维工程师自学之路 第六十三集 (dockerfile安装sshd、httpd、nginx)

一、概述 Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。构建指令用于构建image,其指定的操作不会在运行image的容器上执行;设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。 1、FROM 镜像:T…

em3288 linux_4.19 sd卡调试

默认配置,根据实际配置即可。

Maven-学习笔记

文章目录 1. Maven简介2.Maven安装和基础配置3.Maven基本使用4.Maven坐标介绍 1. Maven简介 概念 Maven是专门用于管理和构建Java项目的工具 主要功能有: 提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,…

语音识别 — 特征提取 MFCC 和 PLP

一、说明 语音识别是一种技术,通过计算机和软件系统,将人们的口头语言转换为计算机可读的文本或命令。它使用语音信号处理算法来识别和理解人类语言,并将其转换为计算机可处理的格式。语音识别技术被广泛应用于许多领域,如语音助手…

什么是图像特征?如何让计算机理解图像特征?

图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时,我们要寻找一些唯一的特征,这…