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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于汽车领域的知识图谱实战入门

發布時間:2024/4/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于汽车领域的知识图谱实战入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

根據https://www.bilibili.com/video/BV1iv411k7qG整理

01實體識別

基于nlp的g3語言去抽取實體對象和基于關系抽取的情境下,用到命名實體識別

命名實體識別通常有1通用領域:人名 地名 時間 貨幣等七種 2專有領域:醫療 汽車 教育

實體識別三個過程:中文分詞 詞性標注 識別結果和過程(過程常常涉及詞法和句法分析)

實體查詢
關系查詢

03項目業務需求分析

基于搜索引擎的商業數據分析


04項目總體架構設計








05知識圖譜模型設計方法



一個矩形框是一個本體對象,就是一個實體 一條線就是一個關系




語義關系設計要在關系抽取之前

06.知識圖譜語義類型設計

方法論:參照與對標 適配與裁剪 歸納與總結 抽象和提煉

概念實體:某某衛生組織
物理實體:看得見摸得見的東西 細胞
現象或過程:出現了 不一定是主動的行為 比如生病了感冒了 只有一方
活動:醫藥活動如診斷過程涉及活動的雙方—醫生和病人





長寬高是個指標 包括軸距論據車身結構 抽象成‘尺寸’或者‘xx指標’就是概念實體
把結構化數據里面的字段抽象出我們的實體對象(就是我們的本體)

車門數–座位 座位數–座椅 油箱容積–油箱 行李箱容積—行李箱 整備質量是屬性不是實體對象 整備質量可以作為指標抽取出來

如圖車身拆分為長度 寬度…整備質量等等就是底層明細適配法


以上就是汽車出現的現象和異常

07.知識圖譜語義關系設計


高層關系可復用


底層實例需歸納


底層實體需歸納,實體間的遍歷:比如找斷軸和自燃 斷軸和制動失靈 斷軸和導航黑屏 …以一個關系為起點遍歷與之所有關系的組合


底層實體需歸納,事件中抽取:
比如“凱越 發動機漏油,變速箱漏油”
事件對應是凱越品牌
發動機漏油:物理實體和現象
變速箱漏油:物理實體和現象

這樣就可以把對象的實體關系逐一抽取出來
技巧:在其中把所有與發動機相關的作為起點 比如發動機漏油 發動機異響 發動機滲漏等等等 就可以把發動機相對應的事件都抽取出來了

語義關系的設計在前抽取在后,設計依賴專業知識和現有信息的歸納,抽取是對基于已有的結構化數據資源、半結構化數據資源、文本數據資源

事件實例的抽取可以通過nlp進行抽象 抽象完以后 抽象之后填充到語義關系的實體對象


08開發環境的安裝和部署


1python網絡爬蟲開發環境的安裝部署
品牌的爬取和車系的爬取




09汽車品牌數據獲取

頁面元素分析 品牌數據爬取 數據結構化處理(利于本地存儲導入到圖數據庫)



26個字母下面對應了兩百多個品牌

爬取:左側列表對應cartree


banks=response.html.find('.cartree al li h3a') #因為返回是一個列表 所以遍歷整個列表 for bank in blanks:#獲取的文本是汽車品牌 對應的連接里面有相應的報價信息bk=bank.textstart=bank.find('(') #去掉品牌的括號end=bank.find(')')bank1=bk[0:start]Num=bk[(start+1):end]#品牌下的車型數量url2=url1+bank.arrts.get("href",None) #品牌鏈接數據獲取 獲取絕對地址print(url2)save2csc(writer,bank1,Num,url12)

現在汽車之家:

右鍵檢查會自動跳到對應的代碼

11汽車數據批量導入

品牌數據導入、車系數據導入、關系數據導入


汽車品牌數據導入數:
在import內存了品牌數據和車系數據
或者直接在可視化界面中導入

LOAD CSV WITH HEADERS FROM "file://bank.csv"AS line CREATE(:Bank{name:line.bank,count:line.count})#創建節點 Bank是結點名字

汽車車系數據導入:

LOAD CSV WITH HEADERS FROM "file://series.csv"AS line CREATE(p:Serise{name:line.serise,count:line.count})#Series 是一個類 結點是series的實例


品牌/車系關系數據導入
構建關系:

LOAD CSV WITH HEADERS FROM "file://series.csv"AS line MATCH(entity1:Bank{name:line.bank}),(entity2:Serise{name:line.serise})#Match(),()查找bankh對應的品牌和serise對應的系列 match的過程是從對應的標簽類型去選擇對應的屬性和csv下存儲一致的地方,選擇出來并構建關系 CREATE(entity1)-[:Subtype{type:line.relation}]->(entity) #Subtype是關系類型 type的屬性是relation

汽車品牌/車型創建索引


結果展示

12汽車車型數據獲取

基于車系獲取車型信息



結果獲取了所有車系


可能有時候不能直接通過代碼獲取 因為是動態的
如下圖:頁面代碼中只有寶馬310w 2017款 1.5L 手動 缺少了‘舒適型’

13汽車配置數據獲取


首先要獲取基本參數信息(第一列),再把具體內容填充進去
找到網頁代碼 config_data處


下載基本參數的名稱 (第一列)
每個tab都有一個參數 對應一個基本參數 最好每個tab都分開處理


可以發現頁面代碼中 廠商的商字不見了 所以這需要人工去處理補齊
schema的獲取效果如下:就是每個基本參數的表頭


用具體內容將表頭信息補充完整

14.web前端框架設計

基于django的汽車知識圖譜web前端框架


1django


用戶訪問頁面的流程是從右到左按照箭頭執行的

路由途徑
對于不加任何東西的url 返回的是index_view.index


在命名實體識別的視圖文件ner_view.py有個命名實體識別的函數ner-post即當url中輸入的是ner-post時,調用的是ner-post這個方法,這個方法會調用模型層中neo4j_models的操作


15通用命名實體的識別

命名實體類型劃分 技術方案 開源框架






corenlp(可以自己了解一下) 可以對著以下代碼去寫
我們所用到的是通用和領域的命名實體識別

可以看出實體識別結果 【2017 林肯 雷克薩斯】林肯和雷克薩斯是汽車品牌 ,這其中有通用的也有專業領域的命名實體識別 可以發現2017后面帶的標簽是t 表示是時間

16.領域命名實體識別

汽車領域命名實體詞典設計和應用

汽車領域的詞典就是我們之前爬蟲下載下來的品牌和車系,并且把這些信息單獨摘出來,且給他編號和對應的類型說明,即每個類型有個對應的標識,
比如9就對應的是寶馬的這個品牌的某某車系
在模板層當有用戶請求命名實體識別的時候 對應的調取視圖層的函數


17.實體查詢程序設計

汽車領域實體查詢
neo4j開發驅動 py2neo開發框架




要學習和database和graph和cursor


run是graph的一個函數 返回的是一個游標對象 cursor,他有個對象叫.data

a:Person a代表變量 Person是一個label

18關系查詢程序設計

py2neo開源框架 實體關系查詢


1輸入實體一 輸入品牌
2實體二 輸入車系
3 選擇關系 關系查詢 輸入subbank


基于實體1+關系

基于關系+實體二


汽車實體關系查詢:實體1+實體2

19.知識圖譜數據可視化

數據可視化方案 Echart圖數據可視化





//一,數據的準備,基于查詢結果:初始化data和links列表,用于echarts可視化輸出 //第一部分對應的是可視化中的實體查詢和關系查詢,查詢完后的對象就存在entityrelation里面,之后進行解構,解構的結果放在data和links列表var ctx=[{(ctx|safe)}]; //{entity2,rel} var entityRelation=[{{entityRelation|Safe}}]: var data=[]; var links=[]; if(ctx.length==0)(...) //基于準備好的數據:data和links,設置echarts參數' var myChart=echarts.init(document.getElementById('graph')) //graph是一個html的一個頁面對象 option={//option就是echart的參數title:("text":"...),tooltip:{},animationDurationUpdate:1500,animationEasingUpdate:'quinticInOut',label:{...},legend:{"x":"center"...},series:{...} }; //設置echart的屬性 myChart.setOption(option)

通過之前查詢語句的解讀我們取他的名字 去設置他的結點是否允許拖拽,去設置他所隸屬的類型,之后設置關系,關系的語言,關系的目標,關系的類型,設置完以后就會生成一個data和links的列表



20.推薦系統基本原理和實現機制

基于交易歷史 基于行為軌跡 基于kg

協同過濾就是關聯分析 就是一個概率方程,
基于交易歷史:比如尿布和啤酒一起買,冷啟動:就是沒有交易歷史
基于行為歷史:搜索引擎,基于用戶對商品的搜索,屬于數據密集型,收集用戶的搜索和訪問的歷史,進行漏斗,把用戶舍棄和聚焦的品牌形成競爭分析矩陣,最后把用戶聚焦的點找出來,這個過程依賴龐大的用戶行為日志
基于知識圖譜:對以上二者的一個結合,相似計算,只需要掌握部分數據即可,劣勢是知識建模,在垂直領域需要很強的專業性


環境畫像信息:比如用的手機app 手機型號–小米4 用的WiFi
用戶畫像:出生日期 性別 職業 過往的行為信息
設備信息:判斷登錄否 是哪個用戶
三者加和形成媒體訪問行為-----流量特征
結合內容畫像(比如這文章是什么行業 )其中的關鍵詞結合各種推薦策略的模型形成初始的推薦結果之后做排序



21.知識圖譜與推薦系統融合的模式


1基于實體屬性的推薦算法:實體相似,比如我搜索寶馬x3,推薦的是奧迪a6,把正確的推薦給正確的人,實體屬性就是本身的含義,沒有用向量表示
2基于實體關系的推薦算法:也稱為了基于路徑,實體相關,寶馬x3,與之相關的同一品牌的不同系列,寶馬x5,x7,案例:同一品牌或同一車系或同一廠商

1、2是基于直接相關,3是基于協同過濾,用戶感興趣的東西再進行拓展,找到與之關聯的實體,基于屬性關聯和關系關聯結合起來,只是計算的時候采用是用向量計算

3基于特征向量的推薦算法,把kg中實體的關系用向量表示,表示成對應的相關的向量,水波計算,就是基于協同過濾,把你搜索的過感興趣的東西進行延伸擴散計算出一個概率就是對某個商品的感興趣程度,再進行推薦。

22.基于KGE的開源推薦系統框架

RippleNet基于KGE的推薦框架工作原理和實現機制
kge與word2v相似


RippleNet是基于圖書的評論數據 來自亞馬遜


這個知識圖譜就是基于用戶已訪問的實體結點,加上實體結點與外部實體間的關系來進行相關性的計算
每一跳(hop)都是在kg中以點擊過的某個結點為中心去找他的出度的結點

(h,r)->t h是頭部r是關系 r是關系的尾部,ripple是水波擴散,其實用戶的向量(user embedding )就是基于用戶點擊的歷史 (user click history),以及在用戶歷史之后進行水波擴散的特征來進行表示的,所以用戶向量表示的含義就是用戶對商品的關注度,此時再把商品代入(item),二者結合計算相應的概率模型,基于概率推測用戶對這個商品感不感興趣


cd RippleNet-master cd src python preprocess.py--dataset movie python main.py--dataset movie

23.RippleNet開源框架源碼剖析

RippleNet框架源碼結構、程序邏輯和流程



main.py->data_loader.py->train.py->model.py
main函數數據加載,模型訓練的調度、調用模型里面具體的執行程序








總結

以上是生活随笔為你收集整理的关于汽车领域的知识图谱实战入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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