AIGC背后的技术分析 | 知识图谱

简介: 知识图谱是知识工程的一个分支,以知识工程中语义网络作为理论基础,并且结合了机器学习、自然语言处理以及知识表示和推理的最新成果,在大数据的推动下受到了业界和学术界的广泛关注。知识图谱对于解决大数据中文本分析和图像理解问题发挥了重要作用。下述内容使用知识图谱和深度学习进行数据分析,该案例需要使用pip工具安装以下第三方库:

640.jpg

pip install networkx
pip install node2vec
pip install jieba
pip install pypinyin
pip install scikit-learn

01、案例实践

1●导入所需的包

import pandas as pd
import numpy as np
import networkx as nx
import jieba
import matplotlib.pyplot as plt
%matplotlib inline
import pypinyin as pypy
from node2vec import Node2Vec
from scipy.spatial.distance import cosine

2●准备data.txt文件

今天美国众议院金融服务委员会针对Facebook Libra举行听证会,针对所担心的问题向Facebook Libra项目负责人大卫·马库斯(David Marcus)发问。这也是Libra面临的第二场听证会。

美国众议院金融服务委员会议员询问,第三方Libra钱包是否可以整合入WhatsApp和Facebook Messenger中,马库斯没有正面回应这一问题。综合昨日马库斯与美国参议院的听证会证词,第三方Libra钱包可能无法整合入WhatsApp和Facebook Messenger。
读取后的full_data变量如下:

{
  "libra": [
    ['今天', '美国', '众议院', '金融', '服务' ....],
        ['美国', '众议院', '金融', '服务' ....],
  ]
}

3●编写代码

下面一部分代码从data.txt文件读取若干段文本,构建文本中出现的单词的上下文图(以networkx库中的有向图表示)。

首先用jieba分词将每行文本转为单词序列,然后将单词作为节点加入上下文图,最后计算两个单词作为相邻单词出现的次数、并将次数作为节点之间连线的权重;调用PageRank算法计算节点的PageRank值;最后构建出每个节点的上下文关系数据集:

context1 {节点: 父节点 || 子节点}
context2 {节点: 父节点的父节点 || 子节点的子节点}

参考代码如下:

with open("data.txt","r") as f:
    data = f.readlines()
full_data = {}
title = None
for l in data:
    if l.startswith("#"):
        title = l.strip("#").strip("\n").strip()
        full_data[title]=[]
    else:
        if l!="\n":
            full_data[title].append(jieba.lcut(l.strip("\n")))
data = full_data["libra"]
G = nx.DiGraph()
for s in data:
    G.add_nodes_from(s)
    for i,w in enumerate(s[1:]):
        if (s[i],w) not in G.edges:
            G.add_edge(s[i],w,weight=1)
        else:
            G[s[i]][w]["weight"]+=1
plt.figure(figsize=(20,20))
nx.draw(G,with_label=True,font_weight="bold")
pd.Series(nx.pagerank(G)).sort_values(ascending=False)
left1 = {n:set() for n in G.nodes}
left2 = {n:set() for n in G.nodes}
right1 = {n:set() for n in G.nodes}
right2 = {n:set() for n in G.nodes}
for n in G.nodes:
    for l1 in G.predecessors(n):
        left1[n]|=set([l1])
        left2[n]|=set([l1])
        for l2 in G.predecessors(l1):
            left2[n]|=set([l2])
    for r1 in G.successors(n):
        right1[n]|=set([r1])
        right2[n]|=set([r1])
        for r2 in G.successors(r1):
            right2[n]|=set([r2])
context1 = {n:set() for n in G.nodes}
context2 = {n:set() for n in G.nodes}
for w in context1.keys():
    context1[w] = left1[w]|right1[w]
context2[w] = left2[w]|right2[w]

执行代码,所展示的单词节点上下文图如图1 所示。

640.png

图1 单词节点上下文图

在目标单词上下文中用jiacobian距离计算单词的相似性,意味着与目标单词紧挨着的两个词。

下面一部分代码基于上一步得到的context1和context2计算任意两个节点之间的相似性。基于context1计算相似性:节点a与节点b的相似性等于a的所有父子节点与b的所有父子节点的并集除以交集。输出相似性大于0.5的组合。基于context2计算相似性的方法与此类似。

similarity_matrix = pd.DataFrame(data=np.zeros((len(context1.keys()),len(context1.keys()))),index=list(context1.keys()),columns=list(context1.keys()))
for row in similarity_matrix.index:
    for col in similarity_matrix.columns:
        if row!=col:
            similarity_matrix.loc[row,col]=len(context1[row]&context1[col])/len(context1[row]|context1[col])
print("below are the found similar words with window size 1, left1 and right1")
for i,row in enumerate(similarity_matrix.index):
    for j,col in enumerate(similarity_matrix.columns):
        if i>j:
            if similarity_matrix.loc[row,col]>0.5:
                print(row,col,similarity_matrix.loc[row,col])

单词相似性:
管制 数字 1.0
上线 都 1.0
事实 提问 1.0
阻止 要求 1.0
瑞士 日内瓦 1.0
称 表示 1.0

参考代码如下:

similarity_matrix = pd.DataFrame(data=np.zeros((len(context2.keys()),len(context2.keys()))),index=list(context2.keys()),columns=list(context2.keys()))
for row in similarity_matrix.index:
    for col in similarity_matrix.columns:
        if row!=col:
            similarity_matrix.loc[row,col]=len(context2[row]&context2[col])/len(context2[row]|context2[col])
print("below are the found similar words with window size 2, left2 and right2")
for i,row in enumerate(similarity_matrix.index):
    for j,col in enumerate(similarity_matrix.columns):
        if i>j:
            if similarity_matrix.loc[row,col]>0.9:
                print(row,col,similarity_matrix.loc[row,col])

单词相似性:

需要 但 0.9166666666666666
需要 现在 0.9166666666666666
据 需要 0.9166666666666666
上线 强调 0.9090909090909091
事实 提问 1.0
那么 需要 0.9166666666666666
今天 需要 0.9166666666666666
对 需要 0.9166666666666666
透露 手续费 0.9090909090909091
透露 中 0.9090909090909091
透露 强调 0.9523809523809523
透露 上线 0.9523809523809523
透露 报道 0.9090909090909091
透露 日讯 0.9090909090909091
瑞士 日内瓦 1.0
称 表示 1.0
具体 需要 0.9166666666666666
时 透露 0.9090909090909091

node2vec和word2vec是等价图。不同的是在对如上所示的同样的单词上下文图运行了不同的算法。

node2vec = Node2Vec(G, dimensions=32, walk_length=30, num_walks=200, workers=4)
model = node2vec.fit(window=10, min_count=1, batch_words=4)
G.nodes
NodeView(('成为', '具有', '微信', '加密', '工具', '希望', '多少', '国家', '。', '提问', '众议院', '美元', '篮子', '综合', '手续费', '这', '但', '主权', '中', '货币', 'WhatsApp', '“', '现在', '委员会', '担心', '服务', '向', 'Messenger', '支付', 'Libra', '没有', '证词', '有', '面临', '方法', '为', '和', '数字', '一种', '需要', '不同', '它', '非常', '成', '事实', '马库斯', '显然', '如何', '为时过早', '你们', '更', '与', '行使主权', '据', 'Calibra', '项目', '将', '强调', '出现', '上线', '新浪', '监管', '日内瓦', '要求', '金融', '金融服务', '都', '表示', '可能', '、', '正面', '整合', 'PingWest', '地区', '报道', '那么', '试图', '兑换', '日讯', '竞争', '或', '了', '并', 'David', '(', '美国财政部', '月', '听证会', '默认', '称', '挂钩', '针对', '再次', '遵守', 'Facebook', '品玩', '是', '不会', '询问', '/', '网络', '今天', '对', 'Marcus', '回应', '?', ',', '将会', '18', '要', '可以', '所', '阻止', '许多', '第三方', '在', '入', '有人', '·', '科技', '如果', '支付宝', '讨论', ')', '央行', '这一', '第二场', '大卫', '为了', '同时', '把', '为何', '美国参议院', '交易所', '高质量', '取决于', '来说', '议员', '对于', '职责', '7', '不是', '其他', '无论', '我们', '产生', '银行', '证券', '这个', '制裁', '透露', '商品', '瑞士', '逃避', '发展', '举行', '管制', '运行', '具体', '什么样', '美国', '无法', 'ETF', '注册', '是否', '钱包', '美国众议院', '的', '少量', '合作', '也', '昨日', '时', '一', 'Blaine', '负责人', '适合', '问题', '”', '会', ' ', '愿意', '发问'))
def compare_words(w1,w2,model=model):
    return cosine(model.wv.get_vector(w1),model.wv.get_vector(w2))
def get_top_similar_words(w,words,k=5,model=model):
    distances = []
    for tw in words:
        if tw!=w:
            distances.append([tw,compare_words(w,tw)])
    results = pd.DataFrame(data=distances,columns=["top_{}_words".format(k),"scores"])
    return results.sort_values(["scores"])[:k]

正如所见两个单词出现时彼此位置很近。

compare_words("日内瓦","瑞士")
0.0016219019889831543

并且为“表示”而选出的最相近前5个单词也是有意义的,如表1所示。

get_top_similar_words('表示',list(G.nodes))

表1 单词相似性


640.png

目录
相关文章
|
搜索推荐
师资培训|AIGC在高校教学中的应用场景与案例分析-某产教科技公司
北京新大陆时代科技有限公司举办新一代信息技术名家大讲坛系列培训,旨在提升教师专业素质,加强“双师型”教师队伍建设。TsingtaoAI作为培训伙伴,提供全面支持。培训涵盖AIGC在高校教学的应用场景、教案生成及个性化教学资源定制等内容,助力提升教学质量与人才培养。
328 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC技术深度解析:生成式AI的革命性突破与产业应用实战
蒋星熠Jaxonic,AI技术探索者,深耕生成式AI领域。本文系统解析AIGC核心技术,涵盖Transformer架构、主流模型对比与实战应用,分享文本生成、图像创作等场景的实践经验,展望技术趋势与产业前景,助力开发者构建完整认知体系,共赴AI原生时代。
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC技术发展与应用实践(一文读懂AIGC)
AIGC(人工智能生成内容)是利用AI技术生成文本、图像、音频、视频等内容的重要领域。其发展历程包括初期探索、应用拓展和深度融合三大阶段,核心技术涵盖数据收集、模型训练、内容生成、质量评估及应用部署。AIGC在内容创作、教育、医疗、游戏、商业等领域广泛应用,未来将向更大规模、多模态融合和个性化方向发展。但同时也面临伦理法律和技术瓶颈等挑战,需在推动技术进步的同时加强规范与监管,以实现健康可持续发展。
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
师资培训|AIGC工具搜集和分析教学反馈-某教育科技集团
近日,TsingtaoAI为某教育科技集团交付AIGC赋能教师教学创新课程《AIGC工具搜集和分析教学反馈》,本师资培训旨在为高校教师提供系统化、实战化的AIGC应用指南,助力教师在教学过程中实现智能化、个性化的转变。本课程通过深入浅出的案例分析、项目实践和实操演练,全面覆盖AIGC工具的收集、应用与反馈分析方法。
446 32
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
技术创新领域,AI(AIGC)是否会让TRIZ“下岗”?
法思诺创新直播间探讨了AI(AIGC)是否将取代TRIZ的问题。专家赵敏认为,AI与TRIZ在技术创新领域具有互补性,结合两者更务实。TRIZ提供结构化分析框架,AI加速数据处理和方案生成。DeepSeek、Gemini等AI也指出,二者各有优劣,应在复杂创新中协同使用。企业应建立双轨知识库,重构人机混合创新流程,实现全面升级。结论显示,AI与TRIZ互补远超竞争,结合二者是未来技术创新的关键。
261 0
|
10月前
|
人工智能 自然语言处理 搜索推荐
【潜意识Java】了解并详细分析Java与AIGC的结合应用和使用方式
本文介绍了如何将Java与AIGC(人工智能生成内容)技术结合,实现智能文本生成。
780 5
|
10月前
|
人工智能 搜索推荐 数据库
实时云渲染技术赋能AIGC,开启3D内容生态黄金时代
在AIGC技术革命的推动下,3D内容生态将迎来巨大变革。实时云渲染与Cloud XR技术将在三维数字资产的上云、交互及传播中扮演关键角色,大幅提升生产效率并降低门槛。作为云基础设施厂商,抓住这一机遇将加速元宇宙的构建与繁荣。AIGC不仅改变3D内容的生成方式,从手工转向自动生成,还将催生更多3D创作工具和基础设施,进一步丰富虚拟世界的构建。未来,通过文本输入即可生成引人注目的3D环境,多模态模型的应用将极大拓展创作的可能性。
|
人工智能 自然语言处理 数据可视化
什么是AIGC?如何使用AIGC技术辅助办公?
2分钟了解AIGC技术及其如何提高日常办公效率!
3725 4
什么是AIGC?如何使用AIGC技术辅助办公?
|
10月前
|
编解码 人工智能 算法
国家扶持超高清产业背景下:视频云AIGC的超高清技术实践
本次分享由阿里云视频云高级产品解决方案架构师陈震主讲,聚焦国家扶持超高清产业背景下,视频云AIGC的超高清技术实践。内容涵盖超高清产业发展趋势与挑战、阿里视频云的应对方案及应用案例。通过全链路超高清解决方案,结合AI、云计算等技术,提供从内容生产、传输到播放的完整支持,助力行业应对超高清视频带来的技术与市场挑战。
385 0
|
10月前
|
人工智能 编解码 安全
全球AI新浪潮:智能媒体服务的技术创新与AIGC加速出海
本文介绍了智能媒体服务的国际化产品技术创新及AIGC驱动的内容出海技术实践。首先,探讨了媒体服务在视频应用中的升级引擎作用,分析了国际市场的差异与挑战,并提出模块化产品方案以满足不同需求。其次,重点介绍了AIGC技术如何推动媒体服务2.0智能化进化,涵盖多模态内容理解、智能生产制作、音视频处理等方面。最后,发布了阿里云智能媒体服务的国际产品矩阵,包括媒体打包、转码、实时处理和传输服务,支持多种广告规格和效果追踪分析,助力全球企业进行视频化创新。
358 0

热门文章

最新文章