基於電影圖譜的智慧問答
阿新 • • 發佈:2020-09-24
一.簡介
電影知識圖譜問答,利用spark,neo4j以及hanlp完成一個簡易的電影問答。
二.要求
利用java-driver方式,使用cypher和apoc構建節點和關係,使用spark完成問句分類。
1.neo4j3.5.3
2.apoc3.5.0.13
3.jdk1.8
4.hanlp1.7.7 下載data(包括dictionary和model,配置hanlp.properties路徑)放在resources目錄下即可
5.spark3.0
三.模組使用,完整專案(https://github.com/jiangnanboy/movie_kg)
(一).建立節點和關係,這裡提供兩種方法,分別用cypher和apoc構建。 1.cypher構建node與relation(較慢,一個一個語句create) \src\main\java\com\sy\mainclass\GraphCypherBuild.java (1).構建節點 createNode(); (2).構建關係 createRelation(); 2.apoc批量構建node與relation(建議利用apoc構建,不需要stop neo4j,速度和資料量中等) \src\main\java\com\sy\mainclass\GraphApocBuild.java (1).構建節點 createNode(); (2).構建關係 createRelation(); (二).意圖識別為以下幾類(樣本較少,可以增加更多的資料以提高識別精度): * 0:電影評分 * 1:電影上映時間 * 2:電影型別 * 3:電影簡介 (暫時沒資料) * 4:電影演員列表 * 5:演員介紹 (暫時沒資料) * 6:演員參演的某型別的電影作品 * 7:演員的電影作品 * 8:演員參演評分大於x的電影 * 9:演員參演評分小於x的電影 * 10:演員參演演的電影型別有哪些 * 11:演員和演員合作電影有哪些 * 12:演員引數的電影數量 * 13:演員的出生日期 (暫時沒資料) \src\main\java\com\sy\mainclass\MovieQA.java(問答部分,問句意圖識別和模板匹配,並轉為查詢語句) 問答模型的程式在\src\main\java\com\sy\qa中,主要有 1.利用spark訓練意圖分類模型 2.對問句進行意圖識別和模板匹配 3.提取問答語句中的實體,包括人名和電影名 4.將問句模板和提取的實體轉為cypher或apoc語句進行查詢
四.資料
主要資料在resources中,資料中包含(資料來源http://www.openkg.cn/dataset/douban-movie-kg) 3類實體(節點): 實體型別 資料檔案 數量 說明 Movie Movie.csv 4587 電影實體 Person Person.csv 22937 人員實體 Country Country.csv 84 國家實體 4類關係: 關係型別 主語實體型別 賓語實體型別 資料檔案 數量 說明 ACTOR_OF Movie Person actor.csv 35257 電影的主演 COMPOSER_OF Movie Person composer.csv 8345 電影的編劇 DIRECTOR_OF Movie Person director.csv 5015 電影的導演 DISTRICT_OF Movie Country district.csv 6227 電影的製片國家/地區
五.流程圖
六.結果展示
1.關係圖
2.問答