基於學者網資訊和知識圖譜的智慧問答系統

辰溪0502發表於2020-10-03

知識圖譜 之 python 操作neo4j (匯入CSV操作)
知識圖譜之python操作Neo4j匯入CSV構建複雜的知識圖譜
基於python的Django框架和Neo4j的知識圖譜視覺化

大家可以先看看這幾篇文章 在這裡面我已經把我們需要的知識圖譜給構建好了。然後就是我們的問答環節。因為我們構建的知識圖譜就是基於學者網上面的學者資訊,所以我們的問答系統也只能回答關於學者網上學者的資訊問題。而我們構建的圖譜獲取的資訊有姓名,學位,研究方向,所在學校這四類資訊。所以我們只要能從使用者所問的問題中提取到關鍵詞,那麼就能根據關鍵詞獲取使用者想要的資訊。

例如:在使用者的問題裡面出現學者名字的時候我們會獲取到這個資訊,通過neo4j圖資料庫查詢這個學者是否在我們的資料庫中。再根據後面出現的關鍵詞確定使用者想要查詢的是哪方面的資訊,例如:陳小波是那個學校的老師。這句話的關鍵詞是 :陳小波和學校。如果有這個人則返回他所在學校,如果沒有則輸出查無此人。

姓名,學校,學歷,學位,研究方向這些都是關鍵詞,只要我們能從使用者的問題中準確的獲取到這些關鍵詞,那我們就能根據關鍵詞通過資料庫獲取使用者想要了解的資訊並返回給使用者。

在這裡插入圖片描述

怎麼獲取關鍵詞就成為了重點,這次我們用到了jieba分詞器,它不僅可以幫我們分詞還可以幫我們標註詞性,但需要注意的是結巴分詞分的並不是很準確,例如華南師範大學 就會被分割成 華南 和師範大學兩個詞。這時候我們就應該自己建立一個分詞庫定義一些自己的分詞方法。例如:我會把 研究 學校 學位 這類詞的詞性自己設定為 relation。把我們需要的關鍵詞單獨設定為一種詞性,當使用者的問題中有這些關鍵詞的時候我們就很容易的提取出來。
在這裡插入圖片描述

import jieba.posseg as pseg #詞性標註
import jieba
jieba.load_userdict('E:\\python\\基於學者網資訊的知識圖譜問答系統\\fenci.txt')
def ner(s):
    words = pseg.cut(s)
    d = {}
    for word, flag in words:      #結巴分詞 把我們的關鍵詞提取處理
        if flag == 'nr':
            d['nr'] = word
        if flag == 'relation':
            d['relation'] = word

        if flag == 'major':
            d['major'] = word

        if flag == 'nt':
            d['nt'] = word
        #print(word,flag)
    k = []
    for i in d.keys():
        k.append(i)
    if len(k) == 0:                           #一個關鍵詞都沒有  說明問的問題可能與學者網的學者無關
        print('對不起沒有查詢到你要的資訊')
    if len(k) == 1:                           #只有一個關鍵詞 可能是姓名 可能是 研究方向 或者是學校
        print(d[k[0]])
    if 'nr' in k and 'nt' in k:               #有兩個關鍵字
        print(d['nr'], d['nt'])

    if 'nr' in k and 'major' in k:
        print(d['nr'], d['major'])

    if 'nr' in k and 'relation' in k:
        print(d['nr'], d['relation'])
    if 'nt' in k and 'major' in k:
        print(d['nt'], d['major'])
    if 'relation' in k and 'major' in k:
        print(d['relation'], d['major'])

在這裡插入圖片描述

這是我列舉出來的部分情況,根據不同的關鍵詞,我們很容易的能反推出使用者想要問什麼問題。
例如:使用者只輸入中只有知識圖譜一個關鍵詞 就是想知道有哪些人研究它
使用者輸入中有姓名和學校就是像知道該學者是否是這個學校的
我們根據不同的關鍵詞把從我們的資料庫中獲取不同的資訊並返回給使用者。

在這裡插入圖片描述

由於是基於學者網的問答系統,所以它能詢問的問題也就是哪幾類,只要我們認真的梳理清楚各關鍵詞之間的聯絡,完全可以把該問答系統做的很成功。準確率也會很高。

相關文章