基於電影知識圖譜的智能問答系統系列章節傳送門:
基於電影知識圖譜的智能問答系統(一) -- Mysql數據準備
基於電影知識圖譜的智能問答系統(二) -- Neo4j導入CSV文件
基於電影知識圖譜的智能問答系統(三) -- Spark環境搭建
基於電影知識圖譜的智能問答系統(四) -- HanLP分詞器
基於電影知識圖譜的智能問答系統(五) -- Spark樸素貝葉斯分類器
基於電影知識圖譜的智能問答系統(六) -- 問題訓練樣本集敲定
基於電影知識圖譜的智能問答系統(七) -- Neo4j語句那點事
GitHub地址:https://github.com/kobeyk/Spring-Boot-Neo4j-Movies
注意最新代碼爲分支:v0.1.2
注:本篇不再過多的講解如何demo實現了,集成也很是簡單的,前面幾章也已經給本篇做足了鋪墊。項目中的代碼註釋也是非常的詳細,最後會附上整個項目的git倉庫地址。
一、效果預覽
(1)電影簡介
前端展示:
後臺效果:
(2)電影評分
前端展示:
後臺效果:
(3)電影演員列表
前端展示:
後臺效果:
(4)演員A和演員B合作過哪些電影
前端展示:
後端效果:
由於章子怡本來是一個完整的人名,但是HanLP分詞的時候,卻意外的“失手”了,因此導致最後查詢無果
我們再換個問題試驗一把
後臺效果:
(5)某演員出演過那種類型的電影或演過某種類型的電影有哪些
......etc,其餘不在做演示,下面直接來看如何利用Spring-Boot搭建我們的智能問答系統
二、項目目錄結構圖
三、Movie節點類
這裏只拿電影信息的節點類來進行演示,比如,movie對應的節點在Java中定義類如下:
package com.appleyk.node;
import java.util.List;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import com.fasterxml.jackson.annotation.JsonProperty;
@NodeEntity
public class Movie extends BaseEntity{
private Long mid;
private Double rating;
private String releasedate;
private String title;
private String introduction;
@Relationship(type = "is")
@JsonProperty("電影類型")
private List<Genre> genres;
public Movie() {
}
public Long getMid() {
return mid;
}
public void setMid(Long mid) {
this.mid = mid;
}
public Double getRating() {
return rating;
}
public void setRating(Double rating) {
this.rating = rating;
}
public String getReleasedate() {
return releasedate;
}
public void setReleasedate(String releasedate) {
this.releasedate = releasedate;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getIntroduction() {
return introduction;
}
public void setIntroduction(String introduction) {
this.introduction = introduction;
}
public List<Genre> getGenres() {
return genres;
}
public void setGenres(List<Genre> genres) {
this.genres = genres;
}
}
其中屬性和neo4j中的movie節點的屬性一一對應
電影信息節點裏面帶有關係is,對應neo4j中該電影的類型
通過Controller對外提供的查詢接口如下:
外部調用效果如下:
四、加載自定義帶詞性的字典數據
注:不要使用HanLP提供的自定義詞典路徑,因爲這個除了不能隨心所欲的定義分詞的詞性以外,還極容易出現分詞紊亂,詞性對不上的bug,爲了滿足我們對專有電影名、電影分數及電影類型詞性的定義,我們使用額外加載的方式設置HanLP的自定義分詞,application.properties中設置自定義詞典的路徑如下:
這三個文件的下載地址:https://pan.baidu.com/s/13PYsF2X3v7BzkPFG37kKuw
注:也可以根據自己的需求進行設置
五、項目完整地址
GitHub下載地址:Spring-Boot集成Neo4j並利用Spark的樸素貝葉斯分類器實現基於電影知識圖譜的智能問答系統
完結!!!
番外篇:如何將項目導入到IDEA並運行測試效果?
(1)IDEA項目結構圖(導入pom文件,配置好Maven後如下)
(2)項目配置文件
(3)內嵌html測試前端訪問頁面
(4)啓動項目
(5)瀏覽器訪問主頁Index.html