无图谱不AI之语义角色构建图谱

文章目录

  • 图谱的定义
  • 图谱的构建
  • 语义角色构建图谱
  • 代码

图谱的定义

所谓知识图谱,就是把非结构化的数据,转换成结构化的三元组的一个过程。知识图谱的应用场景包括推荐系统,人机问答、知识数据的展示,以及风控等等。

  • 数据模型层:有点像我们搞的字段
  • 数据和记录称为数据层

无图谱不AI之语义角色构建图谱_第1张图片

图谱的构建

无图谱不AI之语义角色构建图谱_第2张图片
而自下向上适合开放性的图谱构建,也适合公共性的数据,
无图谱不AI之语义角色构建图谱_第3张图片

语义角色构建图谱

  1. 分句
  2. 分词
  3. 词性标注/语义角色/依存语法分析

代码

from ltp import LTP

ltp = LTP()


# 使用语义角色标注构建和抽取关系
def srl_AtoA(sent):
    # 句子进行分词操作
    seg, hidden = ltp.seg([sent])
    seg = seg[0]
    print(seg)
    srl = ltp.srl(hidden, keep_empty=False)[0]
    print(srl)
    results = []
    for s in srl:
        key = s[0]
        values = s[1]
        start, end = '', ''
        for value in values:
            print('value:', value)
            if value[0] == 'A0':
                start = ''.join(seg[value[1]:value[2] + 1])
            if value[0] == 'A1':
                end = ''.join(seg[value[1]:value[2] + 1])
        if start != '' and end != '':
            results.append([start, seg[key], end])
    return results
# 分句操作
sents = ltp.sent_split(
    ["该僵尸网络包含至少35000个被破坏的Windows系统,攻击者和使用者正在秘密使用这些系统来开采Monero加密货币。该僵尸网络名为“ VictoryGate”,自2019年5月以来一直活跃。"])
for sent in sents:
    print(sent)
    results = srl_AtoA(sent)
    print('-' * 100)
    print(results)

过程

该僵尸网络包含至少35000个被破坏的Windows系统,攻击者和使用者正在秘密使用这些系统来开采Monero加密货币。
['该', '僵尸', '网络', '包含', '至少', '35000', '个', '被', '破坏', '的', 'Windows', '系统', ',', '攻击者', '和', '使用者', '正在', '秘密', '使用', '这些', '系统', '来', '开采', 'Monero加密', '货币', '。']
[(3, [('A0', 0, 2), ('A1', 4, 11)]), (8, [('A1', 10, 11)]), (18, [('A0', 13, 15), ('ARGM-ADV', 16, 16), ('ARGM-ADV', 17, 17), ('A1', 19, 20)]), (22, [('A0', 13, 15), ('ARGM-ADV', 16, 16), ('A1', 23, 24)])]
value: ('A0', 0, 2)
value: ('A1', 4, 11)
value: ('A1', 10, 11)
value: ('A0', 13, 15)
value: ('ARGM-ADV', 16, 16)
value: ('ARGM-ADV', 17, 17)
value: ('A1', 19, 20)
value: ('A0', 13, 15)
value: ('ARGM-ADV', 16, 16)
value: ('A1', 23, 24)
----------------------------------------------------------------------------------------------------
[['该僵尸网络', '包含', '至少35000个被破坏的Windows系统'], ['攻击者和使用者', '使用', '这些系统'], ['攻击者和使用者', '开采', 'Monero加密货币']]
该僵尸网络名为“ VictoryGate”,自20195月以来一直活跃。
['该', '僵尸', '网络名为', '“', 'VictoryGate', '”', ',', '自', '2019年', '5月', '以来', '一直', '活跃', '。']
[(12, [('ARGM-TMP', 7, 10), ('ARGM-ADV', 11, 11)])]
value: ('ARGM-TMP', 7, 10)
value: ('ARGM-ADV', 11, 11)
----------------------------------------------------------------------------------------------------
[]

你可能感兴趣的:(#,1.,自然语言处理&知识图谱,人工智能)