• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Django的中文關(guān)鍵詞提取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2019-07-08 02:23張少迪鄭炅艾山·吾買爾趙全軍
      電腦知識(shí)與技術(shù) 2019年13期
      關(guān)鍵詞:安裝包配置文件文件夾

      張少迪 鄭炅 艾山·吾買爾 趙全軍

      摘要:隨著機(jī)器學(xué)習(xí)的不斷興起,python編程語(yǔ)言也逐漸的被更多人所知和使用,而Django作為由python編寫的Web應(yīng)用框架,也開始被更多的工程和項(xiàng)目所使用。但是隨著互聯(lián)網(wǎng)進(jìn)程的不斷推進(jìn),人們對(duì)于速度的要求也在逐漸加大,多線程的成為了各大企業(yè)和機(jī)構(gòu)不可或缺的需要,而傳統(tǒng)的Django在多線程上的拙劣表現(xiàn)也讓人大失所望,因此,本系統(tǒng)采用了Django+uWSGI+Nginx的框架,很好的解決了多線程和高并發(fā)的問(wèn)題,而且還擁有了負(fù)載均衡的功能,使得中文關(guān)鍵詞提取系統(tǒng)的速度提升到了一個(gè)新的高度。

      關(guān)鍵詞:python;Django;多線程;uWSGI;Nginx

      中圖分類號(hào):TP391 ? 文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2019)13-0220-03

      Abstract: With the rising of machine learning, python programming language is gradually known and used by more people, and Django, as a web application framework written by python, is also beginning to be used by more projects and projects. However, with the continuous advancement of the Internet process, people's demand for speed is also increasing. Multithreading has become an indispensable requirement for major enterprises and institutions. The poor performance of traditional Django on multithreading is also disappointing. Therefore, the system adopts the framework of Django+uWSGI+Nginx, which solves the problems of multithreading and high concurrency very well. With the function of load balancing, the speed of Chinese keyword extraction system has been raised to a new level.

      Key Words: python; Django; multithreading; uWSGI; Nginx

      1 引言

      隨著互聯(lián)網(wǎng)進(jìn)程的加快,人們產(chǎn)生的信息也在面臨指數(shù)級(jí)的增漲,如何從日益龐大的數(shù)據(jù)中過(guò)濾出關(guān)鍵的信息成為學(xué)者們逐漸關(guān)注的課題,信息抽取任務(wù)也因此應(yīng)運(yùn)而生。信息抽取包括文本摘要提取、文本關(guān)鍵短語(yǔ)提取、文本關(guān)鍵詞提取[1]等任務(wù),關(guān)鍵詞提取作為最基礎(chǔ)也是需求量最大的一環(huán),也成為學(xué)者們研究的最多也最為透徹的一環(huán)。

      本文設(shè)計(jì)的中文關(guān)鍵詞提取系統(tǒng)是一個(gè)基于Django[2]的關(guān)鍵詞提取接口,當(dāng)用戶調(diào)用該接口之時(shí),會(huì)對(duì)用戶輸入的文本進(jìn)行關(guān)鍵詞提取,并將結(jié)果返回給用戶。該系統(tǒng)采用了Django+uWSGI+Nginx的開源開發(fā)框架來(lái)進(jìn)行web[3]設(shè)計(jì)的,需要分別對(duì)Django[4]、uWSGI以及Nginx[5]來(lái)進(jìn)行配置,從而使得這三者能夠連接在一起,共同進(jìn)行接口的調(diào)用。該關(guān)鍵詞提取系統(tǒng)的工作流程如圖1所示。

      2 關(guān)鍵詞提取系統(tǒng)服務(wù)器環(huán)境配置

      本文中關(guān)鍵詞提取系統(tǒng)使用的編程語(yǔ)言為pytthon語(yǔ)言為python3.5.2,操作系統(tǒng)為centos7.2。以下為關(guān)鍵詞提取系統(tǒng)服務(wù)器的配置過(guò)程,包括Anaconda的安裝,核心算法依賴包的安裝,Django的安裝與配置,uWSGI的安裝與配置以及Nginx的安裝與配置:

      2.1 Anaconda的安裝

      Anaconda指的是一個(gè)開源的Python發(fā)行版本,其中包含了conda、Python、numpy、pandas等180多個(gè)科學(xué)包及其依賴項(xiàng),而且也可以用于在同一個(gè)機(jī)器上安裝不同版本的軟件包及依賴,能夠在不同的環(huán)境之間切換。

      1) 下載Anaconda3-4.2.0-Linux-x86_64.sh版本。

      2) 在安裝包目錄輸入以下指令

      #bash Anaconda3-4.2.0-Linux-x86_64.sh

      //同意許可證

      #yes

      //同意將Anaconda添加進(jìn)環(huán)境變量

      #yes

      3) 安裝完成后,輸入python,顯示python版本和Anaconda版本即為安裝成功。

      2.2 依賴包的安裝

      1)安裝依賴包jieba 0.39

      2)下載jieba 0.39的安裝包

      3)在安裝包的目錄下打開命令行輸入以下指令

      #pip install jieba-0.39.tar.gz

      4)安裝networkx 1.11

      5)下載networkx1.11的安裝包

      6)在安裝包的目錄下打開命令行輸入以下指令

      #pip install networkx-1.11.tar.gz

      2.3 Django的安裝

      1)下載Django-1.11.17.tar.gz

      2)在安裝包的目錄下打開命令行輸入以下指令

      #pip install Django-1.11.17.tar.gz

      2.4 uWSGI的安裝

      1)下載uwsgi-2.0.17.1.tar.gz

      2)在安裝包的目錄下打開命令行輸入以下指令

      #pip install uwsgi-2.0.17.1.tar.gz

      2.5 Nginx的安裝

      1)下載Nginx的安裝包,nginx-1.12.2.tar.gz

      2)在安裝包目錄下打開命令行輸入以下指令

      //解壓安裝包

      #tar -zxvf nainx-1.12.2.tar.gz

      //進(jìn)入nginx文件目錄

      #cd nginx-1.12.2

      #./configure

      #make

      #make install

      3)運(yùn)行Nginx

      //進(jìn)入Nginx的目錄

      #cd /usr/local/nginx/sbin

      //啟動(dòng)Nginx

      #sudo ./nginx

      4)打開瀏覽器,輸入本機(jī)地址,127.0.0.1,如果看到頁(yè)面上顯示“Welcome to nginx”即為安裝成功。

      3 項(xiàng)目部署

      配置整個(gè)中文關(guān)鍵詞提取系統(tǒng)需要配置三方面內(nèi)容,包括配置Django,配置uWSGI以及配置Nginx。

      3.1 配置Django

      配置Django需要先創(chuàng)建Django工程,修改相關(guān)的視圖函數(shù)以及url,同時(shí)修改settings.py的設(shè)置。具體操作如下:

      1)創(chuàng)建一個(gè)Django工程zh_KeyExtraction

      #django-admin.py startproject zhKeyExtraction

      創(chuàng)建成功后會(huì)在目錄下生成文件夾zh_KeyExtraction以及文件manage.py,文件夾zh_KeyExtraction下有__init__.py,settings.py,urls.py,wsgi.py。

      2)新建一個(gè)名為keyextraction_app的app

      #django-admin.py startapp keyextraction_app

      創(chuàng)建成功后會(huì)生成keyextraction_app的文件夾,其中包含admin.py,apps.py,__init__.py,models.py,tests.py以及views.py。

      4) 將核心代碼放入keyextraction_app文件夾中,并配置views.py,創(chuàng)建get請(qǐng)求和post請(qǐng)求,以及json格式數(shù)據(jù)的解析和封裝,核心代碼如下:

      #k_w = Key_Word_Extraction()

      #def processkey(request):

      # ? ?if request.method == 'GET':

      # ? ? ? ?text = request.GET.get('text')

      # ? ? ? ?retdata=k_w.keywordextraction(text)

      # ? return HttpResponse(Tojson(retdata), charset='utf8')

      # ? ?else:

      # ? ? ? ?dt = request.body.decode()

      # ? ? ? ?jsdt = json.loads(dt)

      #return HttpResponse(Tojson(jsdt['text']), charset='utf8')

      #def Tojson(data):

      # ? ?dt={}

      # ? ?dt['code']=200

      # ? ?dt['data']=data

      # ? ?return json.dumps(dt,ensure_ascii=False)

      4)配置zh_KeyExtraction文件夾下的urls.py文件,具體如下:

      #urlpatterns = [

      # ? url(r'^admin/', admin.site.urls),

      # ? url(r'^keyextraction$', views.processkey,name='keyextraction$')]

      5)配置settings.py文件,具體如下:

      //將ALLOWED_HOSTS改為*可以保證該服務(wù)在不同ip的服務(wù)器上也可以順利運(yùn)行。

      #ALLOWED_HOSTS = ['*']

      //注釋掉MIDDLEWARE可以有效防止post請(qǐng)求時(shí),檢測(cè)到?jīng)]有csrf字符串而產(chǎn)生報(bào)錯(cuò)。

      # #'django.middleware.csrf.CsrfViewMiddleware'

      至此,Django就全部配置完成了。

      3.2 配置uWSGI

      配置uWSGI需要在django項(xiàng)目的根目錄下創(chuàng)建配置文件,uwsgi.ini,配置文件的內(nèi)容如下:

      [uwsgi]

      // 對(duì)外提供 http 服務(wù)的端口

      #http = :10920 #這里改為自己的

      //用于和 nginx 進(jìn)行數(shù)據(jù)交互的端口

      #socket = 127.0.0.1:10930

      //django 程序的主目錄

      #chdir=/home/zsd/zh_KeyExtraction

      //django中wsgi.py文件的目錄

      #wsgi-file=/home/zsd/zh_KeyExtraction/KeyExtraction/wsgi.py

      //最大的進(jìn)程數(shù)

      #processes = 4

      //每個(gè)進(jìn)程中的線程數(shù)

      #threads = 2

      3.3配置Nginx

      配置Nginx需要進(jìn)如Nginx的文件夾下,配置相應(yīng)的配置文件,并重啟Nginx。

      1)進(jìn)入Nginx的目錄

      #cd /usr/local/nginx/conf/

      2)創(chuàng)建文件夾conf.d用于存放配置文件

      #mkdir conf.d

      3)進(jìn)入conf.d文件夾下并創(chuàng)建配置文件zh_kw.conf

      #cd conf.d

      #sudo vim zh_kw.conf

      4)編輯配置文件,配置內(nèi)容如下

      #upstream zh_kw{

      //假設(shè)有兩臺(tái)服務(wù)器,而且都部署有相同的服務(wù),兩臺(tái)服務(wù)器ip分別為10.11.12.3和10.11.12.4,設(shè)置nginx可以將請(qǐng)求平均分配到這兩個(gè)端口號(hào)上,即可將效率大幅提升。

      #server 10.11.12.3:10910

      #server 10.11.12.4:10910 }

      #server {

      # ? listen ? ?10940;

      # ? server_name localhost;

      # ? location / {

      # ? ? ? proxy_set_header Host $http_host;

      # ? ? ? proxy_pass http://zh_kw;

      # include /usr/local/nginx/conf/uwsgi_params;}}

      # server {

      # ? ? listen ? ? ? 10910;

      # ? ? server_name ?localhost;

      # ? ? location / {

      # ? ? ? ? uwsgi_pass 127.0.0.1:12130;

      # ? ? ? ? uwsgi_send_timeout 600;

      # ? ? ? ? uwsgi_connect_timeout 600;

      # ? ? ? ? uwsgi_read_timeout 600;

      # ? ? ? ? client_max_body_size 500m;

      # ? ? ? ? client_body_buffer_size 1024k;

      # include /usr/local/nginx/conf/uwsgi_params;}

      # error_page ? 500 502 503 504 ?/50x.html;

      # ? ? location = /50x.html {

      # ? ? ? ? root ? etc/nginx/default-site/;}}

      5)重新啟動(dòng)Nginx

      //進(jìn)入nginx啟動(dòng)程序的目錄

      #cd /usr/local/nginx/sbin

      //啟動(dòng)nginx

      #sudo ./nginx

      4 遠(yuǎn)程測(cè)試

      經(jīng)過(guò)以上的配置,中文關(guān)鍵詞提取系統(tǒng)已經(jīng)完成,啟動(dòng)服務(wù)后即可進(jìn)行測(cè)試,啟動(dòng)方式如下:

      //進(jìn)入django項(xiàng)目的根目錄下

      #cd /home/zsd/zh_KeyExtraction

      //啟動(dòng)django項(xiàng)目

      #uwsgi --ini uwsgi.ini

      啟動(dòng)完成后,打開瀏覽器,在地址欄輸入以下數(shù)據(jù):

      #127.0.0.1:10910/extraction?text=”我感謝中國(guó)共產(chǎn)黨的領(lǐng)導(dǎo)?!?/p>

      得到以下結(jié)果:

      {“code”:200,”data”:{“中國(guó)”,”共產(chǎn)黨”,”領(lǐng)導(dǎo)”,”感謝”}}

      可以發(fā)現(xiàn)該服務(wù)已經(jīng)正常啟動(dòng)了,用戶可以通過(guò)上述方式的get請(qǐng)求對(duì)該接口進(jìn)行訪問(wèn),或者通過(guò)post請(qǐng)求對(duì)該接口進(jìn)行訪問(wèn),提取所需的中文關(guān)鍵詞。

      此外,我們選擇從騰訊大豫網(wǎng)上面爬取了10000篇中文新聞作為測(cè)試語(yǔ)料,對(duì)該接口的速度進(jìn)行并發(fā)性測(cè)試,測(cè)試數(shù)據(jù)如下表所示:

      由上表可知,Django+uWSGI+Nginx在一定的范圍內(nèi),多線程的效果提升非常顯著,當(dāng)達(dá)到硬件的瓶頸后,速度不再提升,但是仍然十分穩(wěn)定,所有的請(qǐng)求都能夠成功返回。

      5 總結(jié)

      綜上所述,基于Django的中文關(guān)鍵詞提取系統(tǒng),在加入了uWSGI和Nginx之后,在多線程方面的表現(xiàn)非常出色,有效的解決了Django在多線程方面的缺陷,使得關(guān)鍵詞提取的速度更加的快捷,極大的提升了使用者的工作效率。

      參考文獻(xiàn):

      [1] 趙京勝,朱巧明,周國(guó)棟,等.自動(dòng)關(guān)鍵詞抽取研究綜述[J].軟件學(xué)報(bào),2017,28(09):2431-2449.

      [2] 郭鹍,蔣曉龍,趙甲文.基于Django框架的電子海圖服務(wù)器設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2018,14(19):61-63.

      [3] 楊改紅,趙冬,鄧豪,等.基于WEB的遠(yuǎn)程體育教學(xué)平臺(tái)的開發(fā)與設(shè)計(jì)[J].電子設(shè)計(jì)工程,2018,26(22):10-13+18.

      [4] 楊剛.基于Django的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2016,12(14):40-42.

      [5] 戴偉,馬明棟,王得玉.基于Nginx的負(fù)載均衡技術(shù)研究與優(yōu)化[J/OL].計(jì)算機(jī)技術(shù)與發(fā)展,2019(03):1-7[2019-03-02].http://kns.cnki.net/kcms/detail/61.1450.TP.20181219.1511.038.html.

      【通聯(lián)編輯:梁書】

      猜你喜歡
      安裝包配置文件文件夾
      忘記ESXi主機(jī)root密碼怎么辦
      打印機(jī)設(shè)置
      掛在墻上的文件夾
      CentOS用yum方式裝MySQL
      濮阳市| 新田县| 临澧县| 台中市| 忻州市| 桃源县| 视频| 南雄市| 五河县| 襄汾县| 婺源县| 望奎县| 华池县| 赞皇县| 磐石市| 濉溪县| 柞水县| 临沭县| 安图县| 固安县| 金阳县| 滦平县| 乐清市| 防城港市| 南陵县| 瓦房店市| 肥东县| 遵义市| 天祝| 祁阳县| 金溪县| 抚宁县| 舞钢市| 乐亭县| 盐池县| 普洱| 安吉县| 云梦县| 凤庆县| 丁青县| 永吉县|