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

news2024/12/27 12:53:20

目录

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 openai

from utils import get_api_key


openai.api_key = get_api_key()


def call_gpt(context):
    prompt = "\n\n\n根据上文中给定的介绍细节,请仔细找出或推测出这个人的‘姓名、性别、生日、出生地、毕业学校、主要作品’这6个信息点,如果没有则用空字符串代替,并按照json格式输出,如果value有多个则按照jsonarray输出"
    content = context + prompt

    messages = [
        {
            '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_gpt


def 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:
                break
            except:
                print("error")
                time.sleep(120)
                continue
            
            time.sleep(random.random() * 3)
            


if __name__ == "__main__":
    main()

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

5. 项目源码

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

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

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

相关文章

【vue】 vue2 监听滚动条滚动事件

代码 直接上代码&#xff0c;vue单文件 index.vue <template><div class"content" scroll"onScroll"><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容…

java 定时任务不按照规定时间执行

这里写目录标题 使用异步启动可能出现的问题排查代码中添加的定时任务步骤是否正确排查是否任务阻塞&#xff0c;如果定时任务出现异常阻塞后&#xff0c;将不会在次执行java中多个Scheduled定时器不执行为了让Scheduled效率更高&#xff0c;我们可以通过两种方法将定时任务变成…

springboot 整合代码块实现访问

一 springboot整个代码块实 2.访问

补充JDK源码-IDEA集成工具

在阅读JDK8源码的时候发现&#xff0c;只有一小部分常用包是存在源码及其注释的&#xff0c;而很多内部包是没有源码&#xff0c;class文件在阅读的时候对阅读者十分不友好。在网上搜集了很多资料都没有解决问题。 解决问题办法&#xff1a;参考文档。本文主要是根据这篇文章记…

语义检索系统【一】:基于无监督预训练语义索引召回:SimCSE、Diffcse

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

VB6: 安装界面中文乱码,打开项目中文乱码

Win11环境下的VB6开发&#xff0c;遇到中文乱码问题。 1.在安装VB6开发环境的时候&#xff0c;对话框各种乱码 2.安装完&#xff0c;或者用绿色版VB6&#xff0c;打开现有项目的时候&#xff0c;中文内容出现乱码 解决方法&#xff1a; 参考这篇文章&#xff1a;Windows: 文…

cc2652主协处理器分时控制同一个外设的问题

问题已提交TI论坛&#xff0c;我是提交到的中文论坛&#xff0c;然后fae给转到英文论坛了。 简单描述就是&#xff0c;怎么让这个单片机一会用主处理器控制SPI设备&#xff0c;一会再用协处理器控制同一个设备。 主处理器的spi配置使用 CCS studio配置的 协处理器使用Sensor Co…

监控对象都有哪些分类

1、业务监控 这类指标是管理层非常关注的&#xff0c;代表企业营收&#xff0c;或者跟客户主流程相关&#xff0c;类似 BI 数据。不过相比 BI 数据&#xff0c;业务监控指标有两点不同。 对精确度要求没有那么高&#xff1a;因为监控只要发现趋势异常就可以&#xff0c;至于是…

Spring Boot的自动配置原理

一.原理解释 Spring Boot的自动配置是Spring框架的一个重要特性&#xff0c;它旨在简化应用程序的开发和部署过程。自动配置通过基于类路径中的依赖关系和配置文件内容来预先配置Spring应用程序的各种组件和功能。这样&#xff0c;我们可以在无需显式配置大量参数的情况下&…

springboot中配置bpmnjs插件-activiti7流程图绘制插件/IDEA中运行bpmnjs

BPMNJS的安装和使用需要依赖nodejs插件,需要先安装NODEJS,因为bpmnjs插件的运行需要使用到NODEJS中的npm命令。 安装nodejs 安装和使用bpmnjs插件,绘制activiti工作流需要的流程图。 1、安装和配置nodejs 2.1、下载nodejs https://nodejs.org/en 1.2、安装nodejs,默认安…

通用指令(汇编)

一、数据处理指令1&#xff09;数学运算数据运算指令的格式数据搬移指令立即数伪指令加法指令带进位的加法指令减法指令带借位的减法指令逆向加法指令乘法指令数据运算指令的扩展 2&#xff09;逻辑运算按位与指令按位或指令按位异或指令左移指令右移指令位清零指令 3&#xff…

RabbitMQ-API

这里写目录标题 Hello word 模式添加依赖生产者消费者获取信道工具类 Work Queues模式消费者代码 C1开启多线程运行启动 消费者代码 C2生产者代码 消息应答自动应答消息应答的方法Multiple 的解释消息自动重新入队消息手动应答代码消费者API 队列持久化消息持久化不公平分发消息…

思科模拟器配置静态路由(下一跳使用IP)

Router0配置代码&#xff1a;##端口配置 Router(config)#int fastEthernet 0/0 Router(config-if)#ip address 192.168.10.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#int fastEthernet 0/1 Router(config-if)#ip address 192.168.20.1 255.255.255.2…

拼多多海外版Temu商业模式分析

拼多多于2022 年 9 月在美国上线跨境平台 Temu&#xff0c;发布仅2个月就成为北美下载量最高的应用程序&#xff0c;持续霸榜。 这篇文章帮你快速了解下Temu&#xff1a; 商业模式如何竞争情况如何有哪些优势和挑战后期业务如何发展 一、Temu商业模式 Temu平台拥有对商品的最…

如何一目了然地监控远程 Linux 系统

动动发财的小手&#xff0c;点个赞吧&#xff01; Glances 是一款免费的开源、现代、跨平台、实时 top 和类似 htop 的系统监控工具&#xff0c;与同类工具相比&#xff0c;它提供了先进的功能&#xff0c;并且可以在不同的模式下运行&#xff1a;作为独立模式、客户端/服务器模…

32.利用fmincon 解决 最小费用问题(matlab程序)

1.简述 fmincon函数非线性约束下的最优化问题 fmincon函数&#xff0c;既是求最小约束非线性多变量函数 该函数被用于求如下函数的最小值 语法如下: x fmincon(fun,x0,A,b) x fmincon(fun,x0,A,b,Aeq,beq) x fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x fmincon(fun,x0,A,b,Aeq…

软件测试分类总结

目录 1.根据源代码可见度划分 1.1黑盒测试 1.2白盒测试 1.3灰盒测试 2.根据开发阶段划分 2.1单元测试 2.2集成测试 2.3系统测试 2.4验收测试 3.按照实施组织划分 3.1α测试 3.2β测试 3.3第三方测试 4.按照是否运行程序划分 4.1静态测试 4.2动态测试 5.根据软件测试工作的…

centos7 部署Tomcat和jpress应用

目录 一、静态、动态、伪静态 二、Web 1.0 和 Web 2.0 三、centos7 部署Tomcat 3.1 安装、配置jdk 3.2 安装 Tomcat 3.3 配置服务启动脚本 3.3.1 创建用户和组 3.3.2 创建tomcat.conf文件 3.3.3 创建服务脚本(tomcat.service) 3.3.4 重新加载守护进程并且测试 四、部…

P3373 【模板】线段树 2

题目 思路 作为线段树模板题&#xff0c;这题主要考查了对lazytag以及先乘后加的使用&#xff0c; 因为是模板&#xff0c;所以这里证明略 代码 #include<bits/stdc.h> using namespace std; #define int long long const int maxn1e55; int n,m,p; int a[maxn]; stru…

输出菱形的程序填空题补充代码问题

ABBBCCCCCDDDDDDDEEEF 如上图所示&#xff0c;补充以下代码&#xff0c;输出这个图形。 #include<stdio.h> #define N 7//图案共N行 #define L (80-N)/2//整个图案据屏幕左边L列&#xff0c;使其居中 int main() {char cA;int i,j,p;for(i1;i<N;i, ){if(i<(…