日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python知识图谱关系抽取算法_知识图谱关系抽取之PCNN——tensorflow实现

發布時間:2023/12/31 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python知识图谱关系抽取算法_知识图谱关系抽取之PCNN——tensorflow实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知識圖譜( Knowledge Graph)以結構化的形式描述客觀世界中概念、實體及其關系,將互聯網的信息表達成更接近人類認知世界的形式,提供了一種更好地組織、管理和理解互聯網海量信息的能力。上述一大段是我從2018知識圖譜發展報告中copy下來的一段話,用普通人能聽懂的人話來描述:知識圖譜就是把去發現世間萬物的之間的聯系。 在技術上就是將數據以一個一個的的三元組形式存儲起來。

不知道大家有沒有這樣一種感受,如果你在某一領域的學習了解到很多的知識碎片,卻無法將他們關聯起來,這些知識碎片并不會加深你對這一領域的認知。而如果你能將他們聯系起來,串聯成一張知識網,那很有可能你就是這個領域決定的專家。因為你的腦中有這個領域的知識網,你就能知道這個領域的邊界在哪。知識圖譜就是要將知識串聯起來,形成一張知識網。

知識圖譜的應用場景:

知識圖譜主要分為兩類: 通用知識圖譜和領域知識圖譜。通用知識圖譜主要需要知識的廣度,而領域知識圖譜需要知識具有深度。 + 通用知識圖譜最普遍的應用場景就是:搜索引擎, + 領域知識圖譜的應用場景則比較豐富多樣:司法,醫療,金融,電商等各行各業都可以構建屬于自己行業的知識圖譜,而這些知識圖譜可以用于智能問答,輔助決策,風險規避等。

當然以上只是知識圖譜被應用最多的場景,還有一些很有潛力的應用場景,比如將知識圖譜和深度學習結合等。知識圖譜這個新的,年輕的概念還等著大家去探索更多的應用可能性。

知識圖譜的構建簡介

這里筆者就不介紹詳細版知識圖譜構建流程,直接拋出一個簡單粗暴版的構建流程。 + 實體抽取,實體鏈接(兩個實體同一個含義需要規整),目前最主流的算法就是CNN+LSTM+CRF進行實體識別。 + 實體間關系抽取,拿到知識圖譜最小單元三元組,比較經典算法的就是Piece-Wise-CNN和 LSTM+ Attention 。 + 知識存儲,一般采用圖數據庫(neo4j等)。

但是要注意的是,知識圖譜一定要最先定義好構建它是用來干什么,目標業務導向,定義好符合業務邏輯schema層才是最最重要的。有了schema之后接下來的任務就是實體抽取和關系抽取啰,其中關系抽取是把知識點串聯成一張知識網的重要過程,所以這里筆者著重介紹一下最近在知識圖譜領域很火的有監督的關系抽取任務的一個模型PCNN。

關系抽取之PCNN(Piece-Wise-CNN)

這里筆者仔細解釋一下有監督的關系抽取的任務的數據樣式,任務形式,以及PCNN(Piece-Wise-CNN)的思想和tensorflow實現。 關系抽取數據:

input : 句子 Steve Jobs was the co-founder of Apple Inc和兩個entities Steve Jobs 和 Apple Inc。 out: 實體之間關系 : /business/company/founder

所以我們可以將其抽象成一個分類問題,輸入句子和實體信息,然后讓模型分出這兩個實體之間的關系屬于哪一類。

PCNN

下圖清晰了顯示了PCNN的整個網絡架構,原文鏈接在這里,下面我對著下圖介紹一下PCNN的實現過程:

數據預處理:首先對數據進行位置編碼,按句子中各個詞離entity的距離進行編碼。 例如:“As we known,Steve Jobs was the co-founder of Apple Inc which is a great company in America.” 由于句子中有兩個entity,所以這條句子就會產生兩個和句子長度相同的編碼。 pos_1:[-4,-3,-2,-1,0,1,2,3......] ,其中0就是Steve Jobs的位置。 pos_2:[-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3......] 其中0就是Apple Inc的位置。

切分句子:其中最主要的就是將一條文本數據在兩個entity處各切一刀將文本且成了3段。 比如 As we known,Steve Jobs was the co-founder of Apple Inc which is a great company in America,將被切成: 1. As we known,Steve Jobs 2. Steve Jobs was the co-founder of Apple Inc 3. Apple Inc which is a great company in America. 注意,位置向量也同樣進行了切分操作。

特征提取:將位置特征和文本特征拼接之后,然后將上面三個數據分別通過CNN 提取特征,

關系分類:提取出來的特征通過maxpooling層之后進行拼接后送入softmax層,最終得到relation的分類。

從上面PCNN的流程我們可以發現,這個網絡結構很注重entitiy之間的距離信息,位置信息,以及entitiy之間或者左右的信息。其實這些都是是關系抽取中最重要的特征。 + 一般來說兩個entitiy之間距離越近,則他們有關系的可能性越大。 + 而透露出entities之間有關系的詞一般會出現在兩個entity之間,左側,或者右側。 例如:Steve Jobs was the co-founder of Apple Inc , 關系詞 co-founder就在兩個entity之間

tensorflow 代碼實現

由于之前對PCNN的整個流程有了比較詳細的解釋,這里筆者只是簡單的介紹一下代碼構成。 下方這一步是已經將文本向量和位置向量進行了切分,由于文本被兩個entity分成了左,中,右三段,再這三段加上各自的兩個位置向量。所以網絡一共有9個輸入,加上關系label輸出,一共需要定義10個placeholder。

import tensorflow as tf

import os

os.environ['CUDA_VISIBLE_DEVICES'] = '1'

tf.reset_default_graph()

word_ids_left = tf.placeholder(tf.float32, shape=[None, maxlen, word_emb_size])

word_ids_mid = tf.placeholder(tf.float32, shape=[None, maxlen, word_emb_size])

word_ids_right = tf.placeholder(tf.float32, shape=[None, maxlen, word_emb_size])

pos_l_1 = tf.placeholder(tf.int32, shape=[None, maxlen])

pos_l_2 = tf.placeholder(tf.int32, shape=[None, maxlen])

pos_m_1 = tf.placeholder(tf.int32, shape=[None, maxlen])

pos_m_2 = tf.placeholder(tf.int32, shape=[None, maxlen])

pos_r_1 = tf.placeholder(tf.int32, shape=[None, maxlen])

pos_r_2 = tf.placeholder(tf.int32, shape=[None, maxlen])

pos_r_2 = tf.placeholder(tf.int32, shape=[None, maxlen])

label = tf.placeholder(dtype=tf.int32,shape=[None,n_class])

下方代碼這是PCNN的實現,其中Piece_Wise_CNN函數是對PCNN的實現。

def get_sentence_emb(word_ids,pos_1,pos_2):

pos_emb_l1 = tf.keras.layers.Embedding(input_dim=498,output_dim=10,input_length=100)(pos_l_1)

pos_emb_l2 = tf.keras.layers.Embedding(input_dim=498,output_dim=10,input_length=100)(pos_l_2)

return tf.concat([word_ids,pos_emb_l1,pos_emb_l2],2)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]

def Piece_Wise_CNN(left_emb,mid_emb,right_emb,feature_map,n_class):

left = tf.keras.layers.Conv1D(filters=feature_map,kernel_size=3)(left_emb)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]

left = tf.keras.layers.GlobalMaxPool1D()(left)#[batch_size,feature_map]

mid = tf.keras.layers.Conv1D(filters=feature_map,kernel_size=3)(mid_emb)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]

mid = tf.keras.layers.GlobalMaxPool1D()(mid)#[batch_size,feature_map]

right = tf.keras.layers.Conv1D(filters=feature_map,kernel_size=3)(right_emb)#[batch_size,maxlen,word_emb_size+2*pos_emb_size(10)]

right = tf.keras.layers.GlobalMaxPool1D()(right)#[batch_size,feature_map]

final_feature = tf.concat([left,mid,right],1)#[batch_size,3*feature_map]

out = tf.keras.layers.Dense(n_class,activation="softmax")(final_feature) #[batch_size,n_class]

return out

def train_op(out,label,lr):

losses = tf.nn.softmax_cross_entropy_with_logits_v2(

logits=out, labels=label)

loss = tf.reduce_mean(losses)

train_op = tf.train.GradientDescentOptimizer(learning_rate=lr).minimize(loss)

return train_op,loss

這里是定義train_op部分。

left_emb = get_sentence_emb(word_ids_left,pos_l_1,pos_l_2)

mid_emb = get_sentence_emb(word_ids_mid,pos_m_1,pos_m_2)

right_emb = get_sentence_emb(word_ids_right,pos_r_1,pos_r_2)

out = Piece_Wise_CNN(left_emb,mid_emb,right_emb,20,n_class)

train_op,loss = train_op(out,label,lr = 0.01)

結語

這里筆者主要是想通過PCNN這個經典的關系抽取網絡說明:其實有監督的關系抽取任務的關鍵是需要神經網絡理解兩個entity之間的語義連結,所以,而如何利用好句子中entity周圍的詞語的語義信息和entity之間的位置信息,可能是解決這類任務的關鍵。筆者在之前的文章中多次強調過自然語言處理最終目標還是希望算法能夠理解語義。像PCNN這個網絡則提出了切分句子,集中注意力關注句子提供關鍵信息的部分(自己的理解),也許是一個好的方向。

總結

以上是生活随笔為你收集整理的python知识图谱关系抽取算法_知识图谱关系抽取之PCNN——tensorflow实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色国产精品 | 色呦呦在线 | 激情欧美亚洲 | 亚洲精品无码专区 | 日本少妇一区二区三区 | 欧州一区 | 欧美性猛交性大交 | 色视频导航 | 福利在线一区二区三区 | 新超碰在线 | 欧美精品aa| 18视频在线观看男男 | 中国人妖和人妖做爰 | 偷拍一区二区三区 | 天狂传说之巴啦啦小魔仙 | 中文字幕丰满孑伦无码专区 | 我要操av| 国产一区二区视频播放 | 波多野结衣加勒比 | 艳母动漫在线播放 | 国产美女免费网站 | 女教师高潮黄又色视频 | 国产视频1区2区3区 国产欧美一区二区精品性色99 | 亚洲av无码一区二区三区dv | 69性视频| 久久婷婷网站 | 国产老女人乱淫免费可以 | 99999视频| 九九热九九爱 | 亚洲精品免费在线 | 成人77777 | 精品成人免费一区二区在线播放 | 日韩欧美高清一区 | 3d毛片 | 狠狠激情| 黑色丝袜吻戏亲胸摸腿 | 毛片a片免费看 | 传媒一区二区 | 欧美日韩影院 | 卡一卡二卡三 | 少妇丰满尤物大尺度写真 | 毛片网站免费在线观看 | 美女扒开尿口让男人桶 | 久久精品免费看 | 国产三级按摩推拿按摩 | 美女久久久 | 天堂激情网 | 午夜在线国产 | 超碰中文字幕 | 无码视频在线观看 | 国产激情91 | 亚洲日本影院 | 无人在线观看高清视频 | 亚洲再线 | 成年人黄色在线观看 | 少妇与公做了夜伦理69 | 男人舔女人下部高潮全视频 | 阿v视频免费在线观看 | 性色AV无码久久一区二区三 | 国产黄色免费大片 | 天天干天天操 | 天天操国产 | 亚洲最新av | 欧美偷拍一区二区 | 在哪里可以看毛片 | 羞羞答答一区 | 人妻精油按摩bd高清中文字幕 | 欧美三级久久久 | 国产污视频在线播放 | 8mav在线| 精品国产乱码久久久久久鸭王1 | 小镇姑娘高清播放视频 | 日本三级韩国三级三级a级中文 | 亚洲制服丝袜诱惑 | 国产网站无遮挡 | 日韩欧美黄色片 | 一区二区三区不卡在线 | 国产一av| 亚洲欧美日韩国产一区二区三区 | 在线伊人网 | 秋霞视频在线观看 | 麻豆传媒在线播放 | 国产91丝袜| 黄色片的网站 | 亚洲人午夜精品 | 乖女从小调教h尿便器小说 欧美韩一区二区 | 欧美黑人一区二区 | 日批视频免费 | 国产91麻豆视频 | 国产成人片 | 亚洲二区精品 | 国产白袜脚足j棉袜在线观看 | 一区二区视频在线观看免费 | 日本老肥婆bbbwbbbwzr | 夫妻毛片 | 一级a性色生活片久久毛片 爱爱高潮视频 | 欧美一性一交 | 毛片一级在线观看 | 2022av视频|