在Linux伺服器上部署中醫知識圖譜

一蓑烟雨度平生發表於2024-03-16

在Linux伺服器上部署中醫知識圖譜

配置Java環境

在Oracle官網或Open JDK官網下載JDK 17安裝包,選擇與作業系統及系統架構(32位或64位)相匹配的版本,此處使用Ubuntu系統進行演示。

使用以下命令解壓JDK安裝包:

tar -xvf jdk-17_linux-x64_bin.tar.gz

這將在當前目錄下建立一個名為jdk-17的目錄,並將JDK檔案提取到其中。

使用以下命令編輯環境變數:

export JAVA_HOME=/yldm0226/KG/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

注意將JAVA_HOME替換為你解壓JDK的實際路徑。

使用以下命令重新整理環境變數,使環境變數生效:

source ~/.bashrc

驗證是否安裝成功:

java -version

如果安裝成功,可以看到類似下面的輸出:

openjdk version "17" 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)

配置neo4j資料庫

在neo4j官網下載neo4j社群版的安裝包,選擇與作業系統及系統架構(32位或64位)相匹配的版本,此處使用Ubuntu系統進行演示。

使用以下命令解壓neo4j安裝包:

tar -xvf neo4j-community-5.17.0-unix.tar.gz

使用以下命令編輯環境變數:

export NEO4J_HOME=/yldm0226/KG/neo4j-community-5.17.0
export PATH=$NEO4J_HOME/bin:$PATH

使用以下命令重新整理環境變數,使環境變數生效:

source ~/.bashrc

如果想在命令列中執行neo4j,執行以下命令:

neo4j console

如果想在後臺執行neo4j,執行以下命令:

neo4j start

啟動成功後,可以看到以下輸出:

Directories in use:
home:         /yldm0226/KG/neo4j-community-5.17.0
config:       /yldm0226/KG/neo4j-community-5.17.0/conf
logs:         /yldm0226/KG/neo4j-community-5.17.0/logs
plugins:      /yldm0226/KG/neo4j-community-5.17.0/plugins
import:       /yldm0226/KG/neo4j-community-5.17.0/import
data:         /yldm0226/KG/neo4j-community-5.17.0/data
certificates: /yldm0226/KG/neo4j-community-5.17.0/certificates
licenses:     /yldm0226/KG/neo4j-community-5.17.0/licenses
run:          /yldm0226/KG/neo4j-community-5.17.0/run
Starting Neo4j.
Started neo4j (pid:12498). It is available at http://localhost:7474
There may be a short delay until the server is ready.

訪問知識圖譜

如果伺服器有圖形化介面,可以直接在瀏覽器中訪問http://localhost:7474。

如果伺服器沒有圖形化介面,需要藉助ssh埠對映實現本地訪問伺服器上部署的知識圖譜。

以Windows11系統為例,開啟兩個CMD視窗,分別輸入以下命令:

ssh -L 7474:localhost:7474 -p ssh埠 使用者名稱@ip

ssh -L 7687:localhost:7687 -p ssh埠 使用者名稱@ip

將ssh埠、使用者名稱和ip替換為自己的。

以上兩行命令將本地的7474埠和7687埠對映到了遠端伺服器的7474埠和7687埠,這樣就可以本地訪問伺服器上部署的知識圖譜了。

在本地瀏覽器中訪問http://localhost:7474,可以看到neo4j的Web頁面:

在第一次訪問http://localhost:7474時,預設的使用者名稱和密碼均為neo4j,在登入成功後,會要求我們修改一個密碼,請記好這個密碼,後面還要用到。

建立知識圖譜

拉取開源中醫知識圖譜專案:

git clone https://github.com/ywjawmw/TCM_KG

安裝py2neo:

pip install py2neo

開啟中醫知識圖譜專案中的Create_Graph.py,對程式碼做簡單的修改並將連線資料庫中的認證資訊改為自己,程式碼如下:

from py2neo import Graph, Node, Relationship, NodeMatcher, RelationshipMatcher
from tqdm import tqdm

# 連線資料庫
graph = Graph("http://localhost:7474", auth=("neo4j", "你設定的neo4j的密碼"),name="neo4j")

matcher_node = NodeMatcher(graph)
matcher_relation = RelationshipMatcher(graph)

with open("baseline_all_kg_triples.txt", "r", encoding="utf-8") as file:
    for line in tqdm(file.readlines()):
        entity_1, entity_2, relation = line.split("\t")
        node_1 = matcher_node.match(name=entity_1).first()
        if node_1 is None:
            node_1 = Node(name=entity_1)
            graph.create(node_1)

        node_2 = matcher_node.match(name=entity_2).first()
        if node_2 is None:
            node_2 = Node(relation, name=entity_2)
            graph.create(node_2)
        if not node_2.has_label(relation):
            node_2.add_label(relation)
            graph.push(node_2)

        r = Relationship(node_1, relation, node_2)
        graph.create(r)

執行以上程式碼,就可以完成知識圖譜的構建。

回到http://localhost:7474中,點選Database,就可以看到我們構建的知識圖譜的節點和節點之間的關係型別:

我們可以執行命令或者點選左側的標籤檢視知識圖譜中的節點和關係:

neo4j使用的是Cypher查詢語言(是一種專門用於圖資料庫的查詢語言),如果想進一步使用neo4j的命令查詢,可以去學習Cypher查詢語言。

相關文章