国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Java課程智能問答系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2018-02-13 01:38張華李超
計(jì)算機(jī)時(shí)代 2018年12期
關(guān)鍵詞:自然語言處理

張華 李超

摘? 要: 針對(duì)Java課程課堂答疑不能及時(shí)響應(yīng)的問題,提出了課程智能問答系統(tǒng)模型。通過自然語言處理、信息關(guān)聯(lián)、信息檢索等技術(shù)實(shí)現(xiàn)了答疑問題的分析、轉(zhuǎn)換與處理,并通過實(shí)例驗(yàn)證了模型的可行性。

關(guān)鍵詞: Java課程; 答疑; 智能問答系統(tǒng); 自然語言處理

中圖分類號(hào):TP311? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):1006-8228(2018)12-12-04

Abstract: Aiming at the problem that the Q&A in the Java course can't respond in time, the model of intelligent question & answer system is proposed. The analysis, transformation and processing of the Q&A questions are realized through natural language processing, information correlation and information retrieval, and the feasibility of the model is verified by an example.

Key words: Java Course; answer questions; intelligent question & answer system; natural language processing

0 引言

近年,云計(jì)算、大數(shù)據(jù)等高新技術(shù)也有了重大突破[1]。相比之下,Java課程答疑還是遵循傳統(tǒng)模式,即老師在上課時(shí)給出知識(shí)點(diǎn)及一些前沿動(dòng)態(tài),而學(xué)生的大部分問題都是在課下產(chǎn)生的,又不便隨時(shí)聯(lián)系老師,所以學(xué)生的疑問往往得不到及時(shí)解答。

本文提出一個(gè)Java課程智能問答系統(tǒng),實(shí)現(xiàn)了問題分析、問題轉(zhuǎn)化、信息檢索、答案返回四個(gè)子模塊。問題的答案在系統(tǒng)數(shù)據(jù)庫中檢索或動(dòng)態(tài)解析搜索引擎頁面可以獲取,并且針對(duì)不同類別的問題,設(shè)計(jì)不同答案格式,整個(gè)問答交互的響應(yīng)時(shí)間不超過1s。

1 智能問答系統(tǒng)現(xiàn)狀

在自然語言處理技術(shù)的發(fā)展過程中,國(guó)外開發(fā)了一些比較成熟的英文智能問答系統(tǒng),比如Start、AskJeeves自然語言檢索系統(tǒng)、AnswerBus系統(tǒng)等[2]。國(guó)內(nèi)對(duì)于智能問答系統(tǒng)也有很多地研究并應(yīng)用到實(shí)際中,國(guó)內(nèi)普遍的實(shí)現(xiàn)方法可以分為三類。第一類是將用戶輸入的問題構(gòu)建一個(gè)同類問題集合,然后通過計(jì)算句子語義的相似度,在建立的問題集合中找到相似的問題,最后將該問題的答案返回給用戶;第二類是將問題和答案的關(guān)聯(lián)預(yù)先設(shè)定在知識(shí)庫中,通過對(duì)問題關(guān)鍵字的匹配,直接返回該問題的答案給用戶;第三類是通過對(duì)問題進(jìn)行分詞處理,在分詞結(jié)果中提取問題關(guān)鍵字,通過關(guān)鍵字再結(jié)合全文檢索引擎匹配結(jié)果返回給用戶。這三類方法主要用在開放域智能問答系統(tǒng),但對(duì)于限制域的智能問答系統(tǒng)還不能做到精準(zhǔn)返回結(jié)果[3]。

2 需求分析

通過對(duì)該Java課程智能問答系統(tǒng)的研究?jī)?nèi)容進(jìn)行分析,結(jié)合目前國(guó)內(nèi)、外的技術(shù)發(fā)展的實(shí)際現(xiàn)狀,系統(tǒng)的功能性需求如下:

⑴ 用戶可以通過網(wǎng)頁以自然語言語句提問,并返回結(jié)果,整個(gè)過程在會(huì)話式的人機(jī)交互界面完成;

⑵ 在進(jìn)行結(jié)果檢索時(shí),能夠?qū)崟r(shí)在網(wǎng)絡(luò)上獲取結(jié)果返回;

⑶ 在返回結(jié)果時(shí),多條結(jié)果只顯示一條,其余信息以模態(tài)對(duì)話框的方式顯示,并且提供翻頁功能。

3 體系結(jié)構(gòu)設(shè)計(jì)

本系統(tǒng)采用MVC模式開發(fā),在服務(wù)器端搭建ICTCLAS運(yùn)行環(huán)境[4]。處理用戶提交的自然語言的問句,然后返回問題對(duì)應(yīng)的答案。服務(wù)器端后臺(tái)另外一個(gè)功能就是自動(dòng)導(dǎo)入數(shù)據(jù)文件,然后通過實(shí)時(shí)分析維護(hù)問答數(shù)據(jù)庫,在自動(dòng)處理數(shù)據(jù)的基礎(chǔ)上提供手動(dòng)維護(hù)功能,系統(tǒng)體系結(jié)構(gòu)如圖1所示。

本系統(tǒng)體系結(jié)構(gòu)主要有數(shù)據(jù)采集層、文件管理層、數(shù)據(jù)處理層、數(shù)據(jù)持久層、數(shù)據(jù)交換層、數(shù)據(jù)顯示層。數(shù)據(jù)采集層主要通過互聯(lián)網(wǎng)采集Java問答數(shù)據(jù),包括網(wǎng)頁、論壇、博客、論文等信息,并將這些信息整理后按特定結(jié)構(gòu)打包成txt文件;文件管理層主要負(fù)責(zé)將數(shù)據(jù)從采集平臺(tái)轉(zhuǎn)移到數(shù)據(jù)處理層等待處理;數(shù)據(jù)處理層則對(duì)Java問答數(shù)據(jù)進(jìn)行識(shí)別、關(guān)聯(lián)、特征提取后,將數(shù)據(jù)存儲(chǔ)在問答數(shù)據(jù)庫中;數(shù)據(jù)持久層是整個(gè)問答系統(tǒng)知識(shí)庫模型。數(shù)據(jù)交互層分為數(shù)據(jù)交換格式和數(shù)據(jù)傳輸協(xié)議,本系統(tǒng)數(shù)據(jù)交換格式使用JSON,數(shù)據(jù)傳輸協(xié)議采用TCP/IP;數(shù)據(jù)顯示層為用戶提供操作界面,一方面是用戶輸入問題語句的入口,另一方面則是問答服務(wù)返回結(jié)果的出口。

4 功能結(jié)構(gòu)設(shè)計(jì)

系統(tǒng)功能主要實(shí)現(xiàn)自動(dòng)問答,而在限制域的自動(dòng)問答系統(tǒng)的應(yīng)用中,主要包含問題分析、信息檢索、答案抽取、用戶點(diǎn)評(píng)四個(gè)步驟,本系統(tǒng)在實(shí)際需求背景下對(duì)常規(guī)問答系統(tǒng)中的自動(dòng)問答功能模塊進(jìn)行重新設(shè)計(jì),主要包括問題分析、問題轉(zhuǎn)化、信息檢索、答案返回四個(gè)模塊。系統(tǒng)功能結(jié)構(gòu)如圖2所示。

從圖2中可以看出,問題分析模塊主要通過自然語言處理理解用戶檢索意圖,處理步驟包括問題預(yù)處理、分詞、問題分類、關(guān)鍵詞抽取;問題轉(zhuǎn)換模塊利用問題分析產(chǎn)生的中間結(jié)果生成對(duì)應(yīng)的SQL語句,對(duì)于無法生成查詢語句的問題分析結(jié)果需要生成在網(wǎng)絡(luò)獲取相關(guān)答案的接口,生成的接口將在信息檢索中調(diào)用;而信息檢索的主要功能則是執(zhí)行前述SQL語句封裝結(jié)果,特殊地對(duì)于無法在問答數(shù)據(jù)庫中查詢到答案的問題,將調(diào)用在問題轉(zhuǎn)換中生成的接口解析結(jié)果;答案返回中主要對(duì)檢索到的答案內(nèi)容進(jìn)行統(tǒng)一格式處理,其中包括用戶操作異常提示。

5 功能模塊設(shè)計(jì)

主要有問題分析、問題轉(zhuǎn)換、信息檢索、答案返回四個(gè)功能模塊。

5.1 問題分析

問題分析是理解用戶檢索意圖的核心處理步驟。主要是將用戶問句進(jìn)行分析之后,把結(jié)果封裝在Question對(duì)象中。問題分析算法的核心是自然語言處理技術(shù),在本系統(tǒng)的實(shí)現(xiàn)中主要用到的是ICTCLAS,自然語言處理技術(shù)主要應(yīng)用在中文分詞、詞性標(biāo)注、命名實(shí)體識(shí)別、用戶自定義詞典、關(guān)鍵字提取等環(huán)節(jié)。

在分析用戶問題時(shí),通過以下五個(gè)步驟完成。

⑴ 將自然語言進(jìn)行分析并轉(zhuǎn)化到數(shù)據(jù)結(jié)構(gòu)question中,同時(shí)將問題定性為統(tǒng)計(jì)或查詢。如果碰到“總共”、“一共”、“數(shù)量”、“多少”類型的詞語就說明為統(tǒng)計(jì)型類型,將question.type設(shè)為count,如果不含有這種詞語,將question.type設(shè)為query。

⑵ 接下來就是從問題中識(shí)別出范圍屬性,例如:知識(shí)點(diǎn)、熱點(diǎn)、崗位、視頻、薪資等等,然后分別將其存入到對(duì)應(yīng)范圍變量中,如:question.knowledge、question.hot、question.job等,然后定義用戶字典信息,添加一些特定的表示數(shù)據(jù)源的詞語包含其中,然后通過分詞確定問題所要查找的數(shù)據(jù)源,比如在用戶字典中添加“大?!?,“大牛信息”,“大牛簡(jiǎn)介”就可以確定查找的數(shù)據(jù)源為“expert”,又比如“崗位”,“崗位信息”就可基本上確定數(shù)據(jù)源為“job”,同樣的方式確定其他類型的數(shù)據(jù)源。

⑶ 采用與上面的同樣的方式確定用戶查詢的字段名,比如輸入“姓名”就可以確定字段為“expert_name”,“大牛興趣”確定查詢字段為“expert_interesting”。

⑷ 去掉句子段落之間的冗余字段,如標(biāo)點(diǎn)符號(hào)、連詞等等。

⑸ 確定關(guān)鍵詞,查詢的關(guān)鍵詞就是字段對(duì)應(yīng)的信息,比如大牛姓名為“張三的信息”,關(guān)鍵詞就是其中的“張三”,獲取的方式也是通過關(guān)鍵字提取算法和特定的位置進(jìn)行提取。

經(jīng)過上述處理之后,問題分析完畢,但是問題還沒有完全解答,只是得到了一個(gè)中間結(jié)果,還需要將問題進(jìn)一步分析得到最終答案。

5.2 問題轉(zhuǎn)換

在這個(gè)模塊中,把問題分析的結(jié)果進(jìn)行處理,將得到的中間結(jié)果組裝成可以進(jìn)行檢索的SQL語句,問題轉(zhuǎn)換的處理流程經(jīng)過以下六步處理就可以生成相應(yīng)的SQL語句。

⑴ 明確問題分析只是為了查找數(shù)據(jù),并不是為了增加數(shù)據(jù)和修改更新數(shù)據(jù),因而直接初始化sql為“select”。

⑵ 判斷問題的數(shù)據(jù)源(source)是否為null,如果為null,說明數(shù)據(jù)源不存在,這樣就超越本身數(shù)據(jù)所能查找的領(lǐng)域,就將sql初始化為null,然后返回,此時(shí)后續(xù)采用的辦法為從網(wǎng)絡(luò)中獲取需要的數(shù)據(jù)。

⑶ 確定查詢的屬性,如果“type”為null說明查詢屬性不存在,默認(rèn)查詢所有,確定為*,如果存在,則繼續(xù)判斷查詢類型為統(tǒng)計(jì)型還是查詢型,如果為統(tǒng)計(jì)型,就確定為“select count”,同時(shí)判定attr屬性是否為空,如果不為null,就確定sql語句為“select count(attr)”,如果不存在,就確定為“select count(*)”,同時(shí)如果不是統(tǒng)計(jì)型,就確定為“select attr”。

⑷ 確定數(shù)據(jù)源,由于數(shù)據(jù)源前面已經(jīng)進(jìn)行了判空運(yùn)算,所以直接確定sql語句為“select XXXX from source”。

⑸ 判定是否需要與數(shù)據(jù)表進(jìn)行連接運(yùn)算,判斷屬性不為null就與相應(yīng)數(shù)據(jù)表進(jìn)行連接運(yùn)算。

⑹ 判斷是否有where條件,如果屬性信息有兩個(gè)不為空,則增加where條件,完成question向sql語句的轉(zhuǎn)化。

5.3 信息檢索

5.3.1 一般問題答案

對(duì)于一般問題答案,可以在專家數(shù)據(jù)庫中檢索到,因此只需將答案內(nèi)容封裝成JSON對(duì)象即可。

5.3.2 網(wǎng)絡(luò)答案獲取

對(duì)于網(wǎng)絡(luò)答案,需要經(jīng)過以下五步處理。

⑴ 經(jīng)過問題分析之后得到特定數(shù)據(jù)結(jié)果question,接著判斷問題為何種類型,如果為解釋型,則采用解釋型問題分析流程,如果是概念型或者其他類型,就采用概念型流程。由于此兩種流程基本上相似,因此下文只對(duì)其中的一套流程進(jìn)行說明,若有不同之處再詳細(xì)說明。

⑵ 獲取關(guān)鍵字的主題信息,然后對(duì)其進(jìn)行編碼,此處編碼的作用是將漢語進(jìn)行編碼,因?yàn)樵诎俣劝倏坪桶俣戎乐凶ト⌒畔⒑騻魅雲(yún)?shù)是經(jīng)過編碼的,因而此處必須對(duì)檢索信息進(jìn)行編碼。

⑶ 經(jīng)過編碼之后就將百度百科或百度知道的鏈接與當(dāng)前編碼之后的參數(shù)值進(jìn)行組合,組合的鏈接將作為獲取數(shù)據(jù)的URL地址。

⑷ 通過該URL地址獲取文檔對(duì)象,獲取時(shí)有可能拋出異常,這里又有三種不同的情況:0代表網(wǎng)絡(luò)錯(cuò)誤,1表示網(wǎng)絡(luò)正常且正確獲取數(shù)據(jù),2代表網(wǎng)絡(luò)正常但無答案,這里兩套流程請(qǐng)求的URL地址不同,解釋型請(qǐng)求的是百度知道,其他兩種類型請(qǐng)求的是百度百科。

⑸ 對(duì)獲取的文檔對(duì)象進(jìn)行格式分析,之后獲取指定問題的答案并返回。

5.4 答案返回

將信息檢索結(jié)果和問題分析中的問題分類結(jié)果返回給用戶,在返回給用戶之前將答案內(nèi)容進(jìn)行統(tǒng)一格式化處理。特別地,錯(cuò)誤信息直接當(dāng)作字符串答案類型處理,具體錯(cuò)誤描述即為字符串內(nèi)容。

6 系統(tǒng)實(shí)現(xiàn)

主界面用于用戶提問和觀察返回結(jié)果。界面布局類似QQ、微信的聊天界面,上部是所有功能的導(dǎo)航欄,下部為自動(dòng)問答系統(tǒng)的交互界面。如圖3所示。

7 結(jié)束語

本文通過對(duì)Java課程答疑現(xiàn)狀的分析,結(jié)合筆者及所在團(tuán)隊(duì)的教學(xué)實(shí)踐,提出了Java課程智能問答系統(tǒng),然后以分詞技術(shù)為基礎(chǔ),將系統(tǒng)劃分為問題分析、問題轉(zhuǎn)換、信息檢索、答案返回四個(gè)模塊,最終通過答疑知識(shí)庫返回預(yù)期結(jié)果,響應(yīng)時(shí)間在1s內(nèi),實(shí)際使用效果良好。

參考文獻(xiàn)(References):

[1] 羅軍舟,吳文甲,楊明.移動(dòng)互聯(lián)網(wǎng):終端、網(wǎng)絡(luò)與服務(wù)[J].計(jì)算機(jī)學(xué)報(bào),2011.34(11):2029-2051

[2] A Bordes,S Chopra. Question Answering with SubgraphEmbeddings[J]. Computer Science,2014.

[3] 王正華,韓永國(guó).自動(dòng)問答系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2014.9:111-113

[4] 毛先領(lǐng),李曉明.問答系統(tǒng)研究綜述[J].計(jì)算機(jī)科學(xué)與探索,2012.6(3):193-207

猜你喜歡
自然語言處理
基于LSTM自動(dòng)編碼機(jī)的短文本聚類方法
自然語言處理與司法案例
國(guó)外基于知識(shí)庫的問答系統(tǒng)相關(guān)研究進(jìn)展及其啟示
基于依存句法的實(shí)體關(guān)系抽取
基于組合分類算法的源代碼注釋質(zhì)量評(píng)估方法
面向機(jī)器人導(dǎo)航的漢語路徑自然語言組塊分析方法研究
詞向量的語義學(xué)規(guī)范化
漢哈機(jī)器翻譯中的文字轉(zhuǎn)換技術(shù)研究
HowNet在自然語言處理領(lǐng)域的研究現(xiàn)狀與分析
寿阳县| 凤山县| 自贡市| 云梦县| 静海县| 庆云县| 广昌县| 涿鹿县| 绥芬河市| 汝城县| 陆良县| 塔城市| 泽州县| 沈丘县| 登封市| 南乐县| 西宁市| 青海省| 洛南县| 九寨沟县| 汉阴县| 神农架林区| 石阡县| 博白县| 盐城市| 永仁县| 通化市| 施甸县| 凌海市| 和田市| 陆丰市| 高雄县| 社旗县| 泾阳县| 涿州市| 安达市| 凤凰县| 丹棱县| 禹州市| 平阴县| 奉贤区|