夏志富,王晗璐,李玉平,曹 磊,夏 斌
(1. 上海海事大學(xué) 信息工程學(xué)院,上海 201306; 2. 同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804)
?
基于Django框架的智能商務(wù)監(jiān)控系統(tǒng)的設(shè)計(jì)*
夏志富1,王晗璐1,李玉平1,曹磊2,夏斌1
(1. 上海海事大學(xué) 信息工程學(xué)院,上海 201306; 2. 同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804)
摘要:隨著電子商務(wù)的迅速發(fā)展,商品在電商平臺(tái)的排名變化信息愈來愈受到大家的關(guān)注。市場(chǎng)上現(xiàn)有的排名查詢工具主要是基于C/S構(gòu)架,因?yàn)殡娚唐脚_(tái)的變化,需要頻繁更新軟件,使用較為不便。為了方便用戶對(duì)商品排名信息的查詢?cè)O(shè)計(jì)出一種基于B/S框架的排名查詢工具。該工具實(shí)現(xiàn)了同一商品的多關(guān)鍵詞實(shí)時(shí)排名查詢,并且能夠讓用戶自定義產(chǎn)品監(jiān)控列表并對(duì)列表中的產(chǎn)品排名變化情況進(jìn)行長(zhǎng)期監(jiān)控。本系統(tǒng)構(gòu)架采用Django來設(shè)計(jì),主要功能采用Python 2.7 語(yǔ)言來開發(fā),云端采用穩(wěn)定便捷的亞馬遜公司的AWS云計(jì)算平臺(tái)進(jìn)行服務(wù)器端的部署和搭建,經(jīng)過上線測(cè)試后發(fā)現(xiàn)系統(tǒng)達(dá)到了良好的效果。
關(guān)鍵詞:電子商務(wù); 爬蟲; 文本相似度; 云計(jì)算
引用格式:夏志富,王晗璐,李玉平,等. 基于Django框架的智能商務(wù)監(jiān)控系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(12):21-23,27.
0引言
電子商務(wù)的興起促進(jìn)了跨境貿(mào)易的發(fā)展,作為當(dāng)前最流行的跨境電商平臺(tái),阿里巴巴擁有數(shù)量龐大的用戶群體,約有40萬(wàn)家電子商務(wù)公司入駐阿里巴巴平臺(tái)。平臺(tái)上每家公司商品的銷量與其商品在阿里平臺(tái)上的排名情況緊密相連。商品排名越靠前,關(guān)注度就越高,銷量就會(huì)更好。因此提升商品排名是提升銷量的重要手段。
目前關(guān)于阿里國(guó)際站的產(chǎn)品排名查詢工具主要有兩類,一類是阿里后臺(tái)提供的排名查詢工具,但這個(gè)工具只能一次查詢一個(gè)關(guān)鍵詞,使用起來不太方便而且沒有自定義關(guān)鍵詞查詢排名功能。另外一類就是由第三方公司提供的排名查詢工具,但主要是C/S構(gòu)架,需要安裝客戶端軟件。因?yàn)榘⒗锇桶头?wù)器經(jīng)常會(huì)有變化,所以客戶端軟件也需要經(jīng)常更新,給用戶使用過程中帶來不便。并且此類軟件不具備長(zhǎng)期追蹤產(chǎn)品排名變化的功能,公司不能及時(shí)了解自己商品排名變化情況。因此本文設(shè)計(jì)了一個(gè)基于B/S構(gòu)架的產(chǎn)品排名查詢及監(jiān)控系統(tǒng),用戶通過瀏覽器登錄本系統(tǒng)就可以進(jìn)行商品排名查詢,并且可以長(zhǎng)期追蹤商品排名變化情況。
1系統(tǒng)設(shè)計(jì)
1.1系統(tǒng)架構(gòu)
系統(tǒng)基于Django架構(gòu)[1]的MVC模式:分為Model層、View層、Control層,將業(yè)務(wù)邏輯、顯示邏輯和數(shù)據(jù)邏輯以低耦合、高復(fù)用的形式展現(xiàn)出來,便于系統(tǒng)后期的擴(kuò)展和維護(hù)。
在View層,利用Django自帶的模板系統(tǒng)[2]跟前端開源框架Bootstrap結(jié)合,增強(qiáng)用戶的交互體驗(yàn)和提高前端頁(yè)面開發(fā)效率。在Model層,系統(tǒng)采用MySQL關(guān)系型數(shù)據(jù)庫(kù),并利用Django的ORM機(jī)制將MySQL中的數(shù)據(jù)以對(duì)象接口的方式進(jìn)行封裝,極大方便了數(shù)據(jù)的查詢和操作。在Control層,系統(tǒng)控制器通過分析請(qǐng)求、邏輯判斷、模型操作以及重定向視圖等將整個(gè)系統(tǒng)業(yè)務(wù)流串聯(lián)起來。系統(tǒng)結(jié)構(gòu)及邏輯流程如圖1所示。
圖1 系統(tǒng)組成結(jié)構(gòu)及邏輯流程圖
1.2系統(tǒng)功能結(jié)構(gòu)
該系統(tǒng)功能主要分為三個(gè)部分。
(1)顯示邏輯模塊
系統(tǒng)前端靜態(tài)頁(yè)面利用前端開源框架Bootstarp實(shí)現(xiàn),里面內(nèi)置了豐富的CSS樣式庫(kù),可以快遞開發(fā)優(yōu)美的頁(yè)面。系統(tǒng)動(dòng)態(tài)頁(yè)面采用Javascript開源框架Jquery實(shí)現(xiàn),能夠很方便地操控鼠標(biāo)點(diǎn)擊事件和后臺(tái)數(shù)據(jù)的異步傳輸。
(2)業(yè)務(wù)邏輯模塊
用戶注冊(cè)登錄后輸入商品名稱就可以直接檢索出該商品對(duì)應(yīng)的3個(gè)關(guān)鍵詞,并可以在下拉框中選擇備選商品,或者刪除備選商品。當(dāng)用戶輸入商品名發(fā)生錯(cuò)誤時(shí)可以通過糾錯(cuò)機(jī)制告知用戶,并利用相似度算法[3]自動(dòng)從數(shù)據(jù)庫(kù)中匹配出最相近的商品名,減少用戶輸入時(shí)間。在批量導(dǎo)入查詢模塊中,用戶可以上傳txt格式的待查詢商品名文件,系統(tǒng)會(huì)自動(dòng)檢索出其排名結(jié)果,并以Excel格式供用戶下載查看。在管理產(chǎn)品頁(yè)面中,用戶可以添加和刪改監(jiān)控的商品并觀察商品排名的變化趨勢(shì),可以按時(shí)間段選擇商品在指定日期的排名變化情況。
(3)數(shù)據(jù)邏輯模塊
通過后臺(tái)Celery定時(shí)任務(wù)設(shè)定閑時(shí)爬取數(shù)據(jù)[4],定期自動(dòng)地通過多線程并發(fā)更新數(shù)據(jù),并在后臺(tái)服務(wù)器計(jì)算好商品排名的變化情況,以便用戶可以立即從數(shù)據(jù)庫(kù)中調(diào)取數(shù)據(jù)查看,無需等待時(shí)間。
1.3數(shù)據(jù)處理流程
在查詢頁(yè)面中進(jìn)行商品查詢時(shí),如果用戶是首次查詢某個(gè)商品則系統(tǒng)進(jìn)行實(shí)時(shí)商品排名查詢,并將排名信息存入數(shù)據(jù)庫(kù)。這些信息被保存下來以后,系統(tǒng)后臺(tái)設(shè)置了每天定時(shí)任務(wù),會(huì)在設(shè)定的時(shí)間閑時(shí)爬取數(shù)據(jù)以更新排名和排名變化情況。當(dāng)用戶輸入以前查詢過的商品名時(shí)就可以直接從數(shù)據(jù)庫(kù)中調(diào)取其排名和排名變化數(shù)據(jù),這樣可以減少服務(wù)器在同一時(shí)間的壓力,提升系統(tǒng)查詢的響應(yīng)速度。系統(tǒng)數(shù)據(jù)處理流程圖如圖2所示。
圖2 系統(tǒng)數(shù)據(jù)處理流程圖
2系統(tǒng)實(shí)現(xiàn)
2.1獲取數(shù)據(jù)資源
網(wǎng)絡(luò)爬蟲是獲取數(shù)據(jù)最快速有效的方法,是構(gòu)建搜索引擎最重要的組成部分之一,通過對(duì)阿里國(guó)際站點(diǎn)爬蟲獲取數(shù)據(jù)是該系統(tǒng)構(gòu)建的基礎(chǔ)。
本系統(tǒng)獲取商品數(shù)據(jù)分為以下流程。
(1)通過用戶輸入的商品名在數(shù)據(jù)庫(kù)中檢索出其對(duì)應(yīng)的關(guān)鍵詞,根據(jù)其關(guān)鍵詞匹配出對(duì)應(yīng)搜索結(jié)果的URL列表集合。
(2)通過Python多線程爬蟲[5]獲取到URL列表集合對(duì)應(yīng)的網(wǎng)頁(yè)源代碼,并對(duì)每個(gè)網(wǎng)頁(yè)源代碼打好標(biāo)記后裝載于queue隊(duì)列中,以便后面將數(shù)據(jù)以原順序展示出來。
(3)取出queue隊(duì)列里的網(wǎng)頁(yè)源代碼,并使用Xpath解析工具通過多線程方式去解析網(wǎng)頁(yè)源代碼得到商品數(shù)據(jù)列表,然后通過原先打好的標(biāo)記對(duì)商品數(shù)據(jù)列表按照原網(wǎng)頁(yè)索引排序,最終得到以原順序輸出的商品列表,最后通過列表索引計(jì)算排名。
2.2數(shù)據(jù)庫(kù)設(shè)計(jì)
圖3 系統(tǒng)外鍵關(guān)聯(lián)表關(guān)系圖
系統(tǒng)中利用Django ORM對(duì)象設(shè)定表之間的外鍵關(guān)聯(lián),建立好數(shù)據(jù)之間的從屬關(guān)系,從而方便通過條件篩選出對(duì)應(yīng)的數(shù)據(jù)。本系統(tǒng)創(chuàng)建了8個(gè)數(shù)據(jù)表,主要通過loginuser(用戶信息表)和middleuser(查詢中間鍵表)作為橋梁與其他數(shù)據(jù)表建立外鍵關(guān)聯(lián)。通過loginuser表與其他表關(guān)聯(lián)使得用戶的查詢和數(shù)據(jù)信息管理可以通過外鍵把數(shù)據(jù)獨(dú)立起來,形成以每個(gè)用戶為單元的數(shù)據(jù)塊,以便于信息的維護(hù)和查詢速度的優(yōu)化。通過middleuser表和其他表的關(guān)聯(lián)可以使得用戶的下拉輸入框查詢變得容易處理,減少了前端javascript的交互邏輯,并且能夠記錄好用戶備選框中已經(jīng)添加了但還未得到查詢結(jié)果的商品列表,方便用戶下次直接一鍵查詢。
圖4 系統(tǒng)測(cè)試樣例圖
系統(tǒng)的外鍵關(guān)聯(lián)表關(guān)系圖如圖3所示。
2.3基于TF-IDF算法的相似度糾錯(cuò)檢測(cè)
2.3.1TF-IDF算法的原理
TF-IDF(Term Frequency-Inverse Document Frequency)是一種用于信息搜索和信息挖掘的常用加權(quán)技術(shù)[3]。TF-IDF模型的主要思想是:用一個(gè)具有很強(qiáng)區(qū)分能力的詞w將文章d與其他文章區(qū)分開來,該詞必須具備以下條件:在d文章中有很高的出現(xiàn)頻率并且該詞在其他文檔中較少出現(xiàn)。該模型主要包含了兩個(gè)因素:
(1)詞w在文檔d中的詞頻TF(Term Frequency),即詞w在文檔d中出現(xiàn)次數(shù)count(w,d)和文檔d中總詞數(shù)size(d)的比值:
tf(w,d)=count(w,d)/size(d)
(1)
(2)詞w在整個(gè)文檔集合中的逆向文檔頻率idf (Inverse Document Frequency)[6],即文檔總數(shù)n與詞w所出現(xiàn)文件數(shù)docs(w,D)比值的對(duì)數(shù):
idf=log(n/docs(w,D))
(2)
查詢串q與文檔d的匹配度可以由一個(gè)權(quán)重表示,該權(quán)重是通過tf-idf模型為每一個(gè)文檔d和由其關(guān)鍵詞w[1]…w[k]組成的查詢串q計(jì)算出來的:
tf-idf(q,d)
=sum{i=1..k/tf-idf(w[i],d)}
=sum{i=1..k/tf(w[i],d)*idf(w[i])}
(3)
2.3.2相似度檢測(cè)的實(shí)現(xiàn)
系統(tǒng)利用Python自然語(yǔ)言處理中的開源框架Gensim可以對(duì)文本進(jìn)行分詞,再對(duì)分詞進(jìn)行向量化處理并自動(dòng)提取特征,利用這些向量化特征構(gòu)建TF-IDF算法的模型從而計(jì)算出兩個(gè)文本之間的余弦夾角[7],夾角越小則相似度越高。按照此原理把用戶輸入的商品名與該用戶對(duì)應(yīng)的店鋪所有商品名進(jìn)行TF-IDF算法的相似度對(duì)比,對(duì)比值放在列表中,取出其最大值,則可得到相似度最大的商品名,實(shí)現(xiàn)了用戶的糾錯(cuò)檢測(cè)功能。
3系統(tǒng)測(cè)試
通過上線測(cè)試和每天監(jiān)控商品排名數(shù)據(jù)的變化情況,發(fā)現(xiàn)系統(tǒng)達(dá)到了預(yù)期效果。后臺(tái)定時(shí)爬蟲任務(wù)的數(shù)據(jù)能夠保證每天的更新,并且正常穩(wěn)定運(yùn)行。數(shù)據(jù)能夠準(zhǔn)確地反映真實(shí)商品的排名情況,并且能夠計(jì)算出每天的商品排名變化,通過手動(dòng)方式查詢對(duì)比符合真實(shí)情況的排名變化結(jié)果。系統(tǒng)部分測(cè)試效果如圖4所示。
4結(jié)論
通過將商品數(shù)據(jù)自動(dòng)抓取下來,并利用Django框架開發(fā)出一個(gè)智能化的商品排名監(jiān)控系統(tǒng),能有效監(jiān)控商品排名及其變化趨勢(shì),大大節(jié)約了眾多店鋪商的手工查詢時(shí)間,幫助他們實(shí)現(xiàn)更好的收益。本文利用互聯(lián)網(wǎng)技術(shù)簡(jiǎn)化了電子商務(wù)平臺(tái)上的繁雜性工作,并把相似度算法應(yīng)用于用戶輸入檢測(cè),便于輸入信息的檢索,實(shí)現(xiàn)了商務(wù)數(shù)據(jù)監(jiān)控的智能化。本系統(tǒng)能夠?qū)惩怆娚藤Q(mào)易者提供極大的便利,有很強(qiáng)的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 柴慶龍, 謝剛, 陳澤華, 等. 基于Django框架的故障診斷和安全評(píng)估平臺(tái)[J].電子技術(shù)應(yīng)用, 2015,43(4):19-21.
[2] 王曉斌,閆果,基于Django開發(fā)的橋梁健康監(jiān)控?cái)?shù)據(jù)查詢的Web應(yīng)用[J].電子技術(shù)與軟件工程,2009,24(4):23-24.
[3] XU W, CALLISON-BURCH C, DOLAN W B. SemEval-2015 task 1: Paraphrase and semantic similarity in Twitter (PIT)[C].Proceedings of the 9th International Workshop on Semantic Evaluation (SemEval), 2015.
[4] DETTINGER R D, KOLZ D P, STEVENS R J, et al. Automated data model extension through data crawler approach[P]. US: US8165989, 2012.
[5] SINGHAL N, DIXIT A, SHARMA A K. Design of a priority based frequency regulated incremental crawler[M]. LAP LAMBERT Academic Publishing, 2014.
[6] ROUL R K, DEVANAND O R, SAHAY S K. Web document clustering and ranking using TF-IDF based Apriori Approach[J]. arXiv Preprint arXiv,2014,10(1):55-56.
[7] 申劍博. 改進(jìn)的TF-IDF中文本特征詞加權(quán)算法研究[J]. 軟件導(dǎo)刊, 2015,32(4):16-18.
*基金項(xiàng)目:上海市科學(xué)技術(shù)委員會(huì)資助項(xiàng)目(14441900300);國(guó)家自然科學(xué)基金(61550110252);同濟(jì)大學(xué)嵌入式系統(tǒng)與服務(wù)計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室開放課題
中圖分類號(hào):TP391.9
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.19358/j.issn.1674- 7720.2016.12.008
(收稿日期:2016-01-28)
作者簡(jiǎn)介:
夏志富(1992-),男,碩士研究生,主要研究方向:云計(jì)算與智能信息處理。
王晗璐(1992-),女,碩士研究生,主要研究方向:機(jī)器學(xué)習(xí)與智能信息處理。
李玉平(1990-),男,碩士研究生,主要研究方向:腦電信號(hào)與睡眠數(shù)據(jù)研究。
The design of intelligent business monitoring system based on the Django framework
Xia Zhifu1,Wang Hanlu1,Li Yuping1,Cao Lei2,Xia Bin1
(1. College of Information Engineering, Shanghai Maritime University, Shanghai 201306, China;2. College of Electronics and Information Engineering, Tongji University,Shanghai 201804, China)
Abstract:With the rapid development of e-business, the changing information of the rank of the commodities becomes more and more important. The existing ranking query tools are mainly based on C/S architecture. Because of the change of the e-commerce platform, users need to frequently updated software, which brings much inconvenience. To provide a convenience query tool for the users, we developed a B/S framework based query tool, which is able to query multi-keywords of one commodity at same time. It allows user to manage the product list and support long term morning for the ranking information. The system architecture is designed with Django and the programming language is Python 2.7. The Amazon’s AWS Cloud computing platform is used as Cloud server in this system. After deployed on AWS, the online test result shows that the proposed system achieved all objectives with good performance.
Key words:e-business; the crawler; text similarity; Cloud computing