本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是一種基于環(huán)境感知與用戶反饋的垂直領(lǐng)域知識(shí)庫(kù)構(gòu)建方法。
背景技術(shù):
目前知識(shí)庫(kù)的構(gòu)建方法主要采用的是通過(guò)網(wǎng)絡(luò)爬蟲(chóng),對(duì)某一網(wǎng)站以及其子網(wǎng)站進(jìn)行關(guān)鍵內(nèi)容爬取,存儲(chǔ)到數(shù)據(jù)庫(kù)中。
主要實(shí)現(xiàn)流程是:
(1)確定該知識(shí)庫(kù)所需信息所在的URL。
(2)對(duì)該URL進(jìn)行網(wǎng)絡(luò)爬蟲(chóng)爬取,爬蟲(chóng)下載網(wǎng)絡(luò)資源。
(3)從資源中獲取該知識(shí)庫(kù)所需的數(shù)據(jù)。
(4)將所獲得的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。
(5)生成該垂直領(lǐng)域知識(shí)庫(kù)。
環(huán)境感知技術(shù)主要的應(yīng)用領(lǐng)域是在智能車(chē)輛的輔助駕駛領(lǐng)域或智能機(jī)器人等方向。目前,環(huán)境感知的傳感方法主要由以下幾種:
(1)雷達(dá)探測(cè)技術(shù)
雷達(dá)是一種主動(dòng)式傳感裝置,它的優(yōu)勢(shì)在于能夠直接給出環(huán)境深度信息,受光照的影響程度較低,能夠晝夜工作。常用的雷達(dá)包括:激光雷達(dá)、超聲波雷達(dá)、毫米波雷達(dá)等類(lèi)型?;诶走_(dá)的環(huán)境理解方法主要有云聚類(lèi)、幀匹配、特征提取和可通行區(qū)域分析等。
(2)機(jī)器視覺(jué)技術(shù)
機(jī)器視覺(jué)系統(tǒng)通過(guò)感知外部環(huán)境對(duì)光照的反射來(lái)獲取環(huán)境信息,和雷達(dá)系統(tǒng)相比,機(jī)器視覺(jué)系統(tǒng)具有信息量大、成本低廉等優(yōu)點(diǎn)。
(3)導(dǎo)航定位技術(shù)
當(dāng)今,全球定位系統(tǒng)(GPS:Global Position System)可以為車(chē)輛實(shí)時(shí)提供準(zhǔn)確的位置、速度、方向和加速度信息。GPS系統(tǒng)如配合電子地圖和匹配算法一起使用,更可以獲得當(dāng)前道路情況、交通規(guī)劃等信息。高精度差分GPS系統(tǒng)的定位精度可達(dá)到厘米級(jí),并被應(yīng)用于車(chē)輛定位和道路跟蹤領(lǐng)域。
使用網(wǎng)絡(luò)爬蟲(chóng)爬取數(shù)據(jù)的方法來(lái)進(jìn)行構(gòu)建知識(shí)庫(kù),如果所爬取的URL中所包含的子網(wǎng)站很多,會(huì)使得該知識(shí)庫(kù)的生成周期很長(zhǎng),同時(shí)也會(huì)影響所爬取的信息的準(zhǔn)確性與有效性,造成所創(chuàng)建的知識(shí)庫(kù)很冗余。
環(huán)境感知的幾種主要傳感方法,都會(huì)有相應(yīng)的缺點(diǎn):
雷達(dá)的缺點(diǎn)在于視野小、價(jià)格昂貴,在某些天氣如雨雪等環(huán)境中系統(tǒng)便無(wú)法工作。
機(jī)器視覺(jué)系統(tǒng)受環(huán)境影響較大,在能見(jiàn)度低或光照差等環(huán)境中效果不理想。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是,針對(duì)現(xiàn)有技術(shù)不足,提供一種基于環(huán)境感知與用戶反饋的垂直領(lǐng)域知識(shí)庫(kù)構(gòu)建方法。
為解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案是:一種基于環(huán)境感知與用戶反饋的垂直領(lǐng)域知識(shí)庫(kù)構(gòu)建方法,包括以下步驟:
1)獲取用戶當(dāng)前所在的位置坐標(biāo)信息;
2)對(duì)所述位置坐標(biāo)500米以內(nèi)進(jìn)行環(huán)境感知,確定該地區(qū)所屬垂直領(lǐng)域知識(shí)庫(kù);
3)在現(xiàn)有的知識(shí)庫(kù)中查找是否存在該垂直領(lǐng)域的知識(shí)庫(kù);
4)若該知識(shí)庫(kù)存在,則暫定用戶所在坐標(biāo)所使用的知識(shí)庫(kù)為步驟2)確定的垂直領(lǐng)域知識(shí)庫(kù);若該知識(shí)庫(kù)不存在,則創(chuàng)建一個(gè)新的垂直領(lǐng)域知識(shí)庫(kù)作為暫定的知識(shí)庫(kù),并進(jìn)入步驟5);
5)判斷暫定的知識(shí)庫(kù)所包含的信息是否符合用戶反饋,若符合,將該暫定的知識(shí)庫(kù)在用戶所在坐標(biāo)的權(quán)值提升;否則,判斷步驟1)所獲取的用戶所在坐標(biāo)位置是否另外存在新的知識(shí)庫(kù),若步驟1)所獲取的用戶當(dāng)前所在的坐標(biāo)位置需要?jiǎng)?chuàng)建新的知識(shí)庫(kù),則跳轉(zhuǎn)到步驟4),創(chuàng)建新的垂直領(lǐng)域知識(shí)庫(kù);若該坐標(biāo)位置不存在其他知識(shí)庫(kù),則將暫定的知識(shí)庫(kù)所含內(nèi)容進(jìn)行更新。
步驟2)中,確定垂直領(lǐng)域知識(shí)庫(kù)的主要過(guò)程為:根據(jù)步驟1)所確定的位置坐標(biāo)信息,通過(guò)地圖API對(duì)所在位置周?chē)h(huán)境進(jìn)行感知,獲取當(dāng)前位置附近的建筑、地標(biāo)名稱(chēng),并進(jìn)行統(tǒng)計(jì)匯總,將所獲取的建筑、地標(biāo)名稱(chēng)進(jìn)行分詞,得到地區(qū)所屬垂直領(lǐng)域知識(shí)庫(kù)。
步驟3)的具體實(shí)現(xiàn)過(guò)程為:搜索儲(chǔ)存所有知識(shí)庫(kù)的總數(shù)據(jù)庫(kù),遍歷查找總數(shù)據(jù)庫(kù)中是否存在步驟2)所述的垂直領(lǐng)域知識(shí)庫(kù),查找依據(jù)是所確定的垂直領(lǐng)域知識(shí)庫(kù)名拼音,去總數(shù)據(jù)庫(kù)中的knowledgeBaseList表中與kb_name進(jìn)行匹配,如果有多個(gè)結(jié)果,則再次對(duì)表中的kb_location進(jìn)行匹配,如果位置匹配經(jīng)緯度相差值小于或等于0.005,判斷為當(dāng)前所在地屬于的垂直領(lǐng)域知識(shí)庫(kù)。
步驟4)中,創(chuàng)建新的垂直領(lǐng)域知識(shí)庫(kù)的過(guò)程為:更新knowledgeBaseList表,在knowledgeBaseList表中添加一條新的記錄,kb_id字段進(jìn)行自增,kb_name字段的取值是步驟2)獲取的垂直領(lǐng)域知識(shí)庫(kù)名的中文拼音,kb_location字段的取值是將步驟1)中所獲得的當(dāng)前位置坐標(biāo)經(jīng)緯度信息轉(zhuǎn)化成”經(jīng)度數(shù)值,緯度數(shù)值”格式的字符串,kb_weight字段設(shè)置為初始值50;在數(shù)據(jù)庫(kù)中新建一個(gè)表,用來(lái)存放該垂直領(lǐng)域知識(shí)庫(kù)的信息資源,表的名稱(chēng)是字符串”kb”與knowledgeBaseList表中的該垂直領(lǐng)域數(shù)據(jù)項(xiàng)kb_id的值拼接在一起;在新建的表中插入數(shù)據(jù),所有數(shù)據(jù)的來(lái)源是通過(guò)網(wǎng)絡(luò)爬蟲(chóng)對(duì)該垂直領(lǐng)域知識(shí)庫(kù)名的官網(wǎng)上進(jìn)行爬取的,通過(guò)修改百度網(wǎng)址后面的參數(shù)進(jìn)行搜索,分析搜索結(jié)果的網(wǎng)頁(yè)的html文件,從中得到該垂直領(lǐng)域知識(shí)庫(kù)名的官網(wǎng)的url,再將這個(gè)url作為網(wǎng)絡(luò)爬蟲(chóng)進(jìn)行信息爬取的起點(diǎn),對(duì)該url以及內(nèi)部的子url進(jìn)行爬取,并同時(shí)將爬取的信息逐條插入到垂直領(lǐng)域知識(shí)庫(kù)所對(duì)應(yīng)的新建的數(shù)據(jù)表中。
與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明采用了環(huán)境感知與用戶反饋來(lái)創(chuàng)建垂直領(lǐng)域知識(shí)庫(kù),使得所創(chuàng)建某一垂直領(lǐng)域知識(shí)庫(kù)所包含內(nèi)容更加豐富,同時(shí)采用的構(gòu)建方法成本低廉,節(jié)省了創(chuàng)建垂直領(lǐng)域知識(shí)庫(kù)的開(kāi)銷(xiāo),提高了垂直領(lǐng)域知識(shí)庫(kù)的精確性。
附圖說(shuō)明
圖1為本發(fā)明方法流程圖。
具體實(shí)施方式
本發(fā)明所提出的垂直領(lǐng)域知識(shí)庫(kù)的構(gòu)建方法是將大量的垂直領(lǐng)域知識(shí)庫(kù)都會(huì)存放在一個(gè)總數(shù)據(jù)庫(kù)中。
首先,這個(gè)大型數(shù)據(jù)庫(kù)需要一個(gè)表來(lái)對(duì)所有垂直領(lǐng)域知識(shí)庫(kù)名進(jìn)行存儲(chǔ),使用knowledgeBaseList命名該表,knowledgeBaseList表所設(shè)計(jì)的結(jié)構(gòu)如表1:
表1 knowledgeBaseList表結(jié)構(gòu)
在這個(gè)垂直領(lǐng)域知識(shí)庫(kù)的總數(shù)據(jù)中的其他表均為存放每單個(gè)的知識(shí)庫(kù)的數(shù)據(jù),使用該垂直領(lǐng)域知識(shí)庫(kù)在knowledgeBaseList表中對(duì)應(yīng)的kb_id與kb拼接來(lái)作為每一個(gè)表的表名,如”kb1”,予以區(qū)分不同的垂直領(lǐng)域知識(shí)庫(kù),這樣可以很有效的避免因?yàn)槭褂闷匆舻挠⑽膩?lái)為知識(shí)庫(kù)命名而造成的同名的錯(cuò)誤。存放每一個(gè)垂直領(lǐng)域知識(shí)庫(kù)的表結(jié)構(gòu)如表2:
表2 單個(gè)垂直領(lǐng)域知識(shí)庫(kù)表結(jié)構(gòu)
本發(fā)明所提出的一種基于環(huán)境感知與用戶反饋的垂直領(lǐng)域知識(shí)庫(kù)構(gòu)建方法的主要流程如圖1。
具體的實(shí)現(xiàn)步驟如下:
(1)通過(guò)GPS獲取用戶當(dāng)前所在的位置坐標(biāo)信息
通過(guò)Android系統(tǒng)自帶的GPS系統(tǒng),使用onLocationChanged()方法的參數(shù)中由系統(tǒng)給予的Location位置對(duì)象進(jìn)行坐標(biāo)獲取,可以有效的避免了由于GPS定位不成功而造成的空指針異常,進(jìn)而獲取到用戶所在位置的經(jīng)度緯度、國(guó)家、省份、城市等信息,行精確地定位。
(2)對(duì)該坐標(biāo)附近進(jìn)行環(huán)境感知,確定該地區(qū)所屬垂直領(lǐng)域知識(shí)庫(kù)名
根據(jù)步驟(1)所確定的位置信息,通過(guò)第三方所提供的地圖API對(duì)所在位置周?chē)h(huán)境進(jìn)行感知,獲取當(dāng)前位置附近的建筑、地標(biāo)等名稱(chēng),并進(jìn)行統(tǒng)計(jì)匯總。如:k大學(xué)圖書(shū)館、k大學(xué)第一辦公樓、k大學(xué)學(xué)生公寓……講這些所獲取的周?chē)h(huán)境名稱(chēng)進(jìn)行分詞,便可以得到以下結(jié)果:k大學(xué)(3次)、圖書(shū)館、第一辦公樓、學(xué)生公寓等。對(duì)這個(gè)分詞結(jié)果進(jìn)行分析便可以得出該地區(qū)是屬于k大學(xué),便可以確定用戶當(dāng)前坐標(biāo)所屬的知識(shí)庫(kù)是k大學(xué)的垂直領(lǐng)域知識(shí)庫(kù)。
(3)在現(xiàn)有的知識(shí)庫(kù)中查找是否存在該垂直領(lǐng)域的知識(shí)庫(kù)
通過(guò)搜索儲(chǔ)存現(xiàn)所有知識(shí)庫(kù)的總數(shù)據(jù)庫(kù),遍歷查找總數(shù)據(jù)庫(kù)中是否存在前一步驟所確定的當(dāng)前坐標(biāo)位置的垂直領(lǐng)域知識(shí)庫(kù)。查找依據(jù)是所確定的庫(kù)名拼音的英文,去數(shù)據(jù)庫(kù)中的knowledgeBaseList表中與kb_name進(jìn)行匹配,如果有多個(gè)結(jié)果,則再次對(duì)表中的kb_location進(jìn)行匹配,如果位置匹配經(jīng)緯度相差值小于等于0.005,判斷是否為當(dāng)前所在地屬于的垂直領(lǐng)域知識(shí)庫(kù)。
(4)若該知識(shí)庫(kù)存在,則暫定用戶所在坐標(biāo)所使用的知識(shí)庫(kù)
若在總數(shù)據(jù)庫(kù)中找到了一致的垂直領(lǐng)域知識(shí)庫(kù),則暫定當(dāng)前坐標(biāo)位置所使用的垂直領(lǐng)域知識(shí)庫(kù)便是通過(guò)步驟(2)所確定的知識(shí)庫(kù),進(jìn)而用戶可以在該地區(qū)從所確定的垂直領(lǐng)域知識(shí)庫(kù)中獲取自身需要的相關(guān)信息。
(5)若該知識(shí)庫(kù)不存在,創(chuàng)建一個(gè)新的垂直領(lǐng)域知識(shí)庫(kù)
若在總數(shù)據(jù)庫(kù)中沒(méi)有找到一致的垂直領(lǐng)域知識(shí)庫(kù),則在總數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新的垂直領(lǐng)域知識(shí)庫(kù)。創(chuàng)建新的知識(shí)庫(kù)的步驟如下:
首先更新knowledgeBaseList表。在表knowledgeBaseList中添加一條新的記錄,kb_id字段進(jìn)行自增,kb_name字段的取值是步驟(2)獲取的知識(shí)庫(kù)名的中文拼音,kb_location字段的取值是將步驟1)中所獲得的當(dāng)前位置坐標(biāo)經(jīng)緯度信息轉(zhuǎn)化成”經(jīng)度數(shù)值,緯度數(shù)值”格式的字符串,kb_weight字段設(shè)置為初始值50。
在數(shù)據(jù)庫(kù)中新建一個(gè)表,專(zhuān)門(mén)用來(lái)存放該垂直領(lǐng)域的信息資源。表的名稱(chēng)是字符串”kb”與knowledgeBaseList表中的該垂直領(lǐng)域數(shù)據(jù)項(xiàng)kb_id的值拼接在一起(如”kb105”),并在新建表的時(shí)候賦予四個(gè)字段:
1.knowledge_id,int(16),not null,primary key,auto_increment
2.knowledge_content,varchar(50),not null
3.knowledge_type,varchar(10),not null
4.knowledge_remark,varchar(50),not null
還需要向這個(gè)剛剛進(jìn)行初始化的數(shù)據(jù)庫(kù)表中插入數(shù)據(jù),所有數(shù)據(jù)的來(lái)源是通過(guò)網(wǎng)絡(luò)爬蟲(chóng)對(duì)該垂直領(lǐng)域名稱(chēng)的官網(wǎng)上進(jìn)行爬取的??梢酝ㄟ^(guò)修改百度網(wǎng)址后面的參數(shù)進(jìn)行搜索,分析搜索結(jié)果的網(wǎng)頁(yè)的html文件,從中可以得到該名稱(chēng)垂直領(lǐng)域的官網(wǎng)的url。再將這個(gè)url作為網(wǎng)絡(luò)爬蟲(chóng)進(jìn)行信息爬取的起點(diǎn),對(duì)該url以及內(nèi)部的子url進(jìn)行爬取,并同時(shí)將爬取的信息逐條插入到新建的垂直領(lǐng)域知識(shí)庫(kù)所對(duì)應(yīng)的的數(shù)據(jù)表中。
(6)在暫定的知識(shí)庫(kù)所包含信息中查詢是否符合用戶反饋
當(dāng)用戶通過(guò)語(yǔ)音等其他方式在當(dāng)前所在位置進(jìn)行信息檢索的時(shí)候,對(duì)用戶的問(wèn)題進(jìn)行分詞,并將分詞的所得結(jié)果中的語(yǔ)氣詞排除掉,剩下的關(guān)鍵信息便會(huì)在暫定的垂直領(lǐng)域知識(shí)庫(kù)中的信息判斷是否可以找到用戶所需要的信息。
(7)若暫定的知識(shí)庫(kù)符合用戶反饋,將該知識(shí)庫(kù)在用戶所在坐標(biāo)的權(quán)值提升
如果步驟(5)中用戶反饋進(jìn)行信息檢索等操作都可以在當(dāng)前所確定的垂直領(lǐng)域知識(shí)庫(kù)中得到相應(yīng)的信息,那么即可以確定該垂直領(lǐng)域知識(shí)庫(kù)就是符合當(dāng)前坐標(biāo)位置的一個(gè)知識(shí)庫(kù)。所以便將總數(shù)據(jù)庫(kù)中knowledgeBaseList表中該垂直領(lǐng)域知識(shí)庫(kù)對(duì)應(yīng)的記錄的kb_weight字段的值上升0.1,從而達(dá)到將該垂直領(lǐng)域知識(shí)庫(kù)在該坐標(biāo)位置權(quán)值的提升的效果。如果在同一個(gè)地點(diǎn)存在多個(gè)類(lèi)似的垂直領(lǐng)域知識(shí)庫(kù),便可以通過(guò)對(duì)它們各自權(quán)值的判斷來(lái)進(jìn)行選取,減少了錯(cuò)誤率。
(8)若暫定的知識(shí)庫(kù)不符合用戶反饋,通過(guò)環(huán)境感知的方法判斷該坐標(biāo)位置是否另外存在新的知識(shí)庫(kù)
若暫定使用的垂直領(lǐng)域知識(shí)庫(kù)不能滿足用戶的反饋,那么就要重新判斷是否選擇了錯(cuò)的知識(shí)庫(kù),或者在該位置有其他沒(méi)有被記錄的知識(shí)庫(kù)。因?yàn)椴襟E(2)是根據(jù)分詞結(jié)果中最大出現(xiàn)頻率的詞作為該垂直領(lǐng)域知識(shí)庫(kù)的名字,進(jìn)行知識(shí)庫(kù)再確定的時(shí)候會(huì)選擇出現(xiàn)頻率次之的分詞結(jié)果到表knowledgeBaseList中進(jìn)行檢索,如果仍不存在,便會(huì)在表knowledgeBaseList中對(duì)當(dāng)前所在坐標(biāo)進(jìn)行檢索,根據(jù)坐標(biāo)位置判斷周?chē)欠裼衅渌R(shí)庫(kù)。如果這兩種檢索的結(jié)果都是為空,則判斷需要在該坐標(biāo)位置創(chuàng)建新的垂直領(lǐng)域知識(shí)庫(kù)。
(9)若該坐標(biāo)位置需要?jiǎng)?chuàng)建新的知識(shí)庫(kù),則跳轉(zhuǎn)到步驟(5),創(chuàng)建新的垂直領(lǐng)域知識(shí)庫(kù)
(10)若該坐標(biāo)位置不存在其他知識(shí)庫(kù),將暫定的知識(shí)庫(kù)所含內(nèi)容進(jìn)行更新
如果步驟(9)的判斷結(jié)果是該坐標(biāo)附近不存在其他垂直領(lǐng)域知識(shí)庫(kù),便需要對(duì)當(dāng)前所使用的知識(shí)庫(kù)進(jìn)行更新。將用戶所反饋的信息作為該知識(shí)庫(kù)表中的knowledge_content字段的內(nèi)容向該表中新插入一條數(shù)據(jù),并在knowledge_remark字段內(nèi)容設(shè)置成feedback,予以區(qū)分知識(shí)庫(kù)通過(guò)網(wǎng)絡(luò)爬取而獲得的資源和通過(guò)用戶反饋進(jìn)行更新的資源。