基於python的語言檢測服務

1.  Python環境安裝【目前使用版本爲:python2.7.5】javascript

2.  安裝服務啓動須要模塊html

yum install python-pip  :若是沒法直接經過下載安裝,請移步至官方下載: https://pypi.python.org/pypi/pip/;下載時使用版本pip-8.1.0.tar.gz

  若是下載本地環境的話,須要上傳至服務器:java

tar -zxvf pip-8.1.0.tar.gz
cd pip-8.1.0
python setup.py install

  安裝成功以下圖:python

      

3. 安裝依賴環境:json

  • pip install flask

    安裝成功效果以下圖:flask

    

    注:若是出現上圖中的黃色提示信息,請按提供進行pip版本的升級,執行命令:pip install --upgrade pip服務器

  • pip install validictory

    安裝成功效果圖:app

    

pip install logging

   安裝成功效果圖:python2.7

    

  • pip install langid

    安裝效果圖:ide

        

4. 啓動服務:nohup python Language_Detection.py &

   服務具體代碼以下:

# coding=utf8
'''
Created on 2015年4月17日

@author: Jack 傑之藍
'''
import langid
from flask import Flask, request, abort, Response
import logging
import json
import validictory


class Language_detection:
    def __init__(self,logger):
        self.logger = logger
    def post(self):
        if not request.json:
            abort(400)
        self.logger.info('Received new task [POST]')
        self.logger.info(request.json)
        result = self._dispatch_task(request.json)
        return self._wrap_result(result)
    def get(self):
        args = request.args.to_dict()
        self.logger.info(args)
        result = self._dispatch_task(args)
        self.logger.info('Received new task [GET]')
        return self._wrap_result(result)
    def _dispatch_task(self,task):
        result = {}
        try:
            self._validate(task)
        except ValueError as e:
            return {"errorCode":1, "errorMessage": str(e)}
        
        try:
            result['result'] = langid.classify(task['text'])[0]
        except ValueError as e:
            return {"errorCode":2, "errorMessage": str(e)}
        
        result['errorCode'] = 0
        result['errorMessage'] = 'Succeed'
        return result
    def _wrap_result(self,result):
        dump = json.dumps(result, encoding = 'utf-8', ensure_ascii=False, indent=4)
        callback = request.args.get('jsoncallback')
        if callback:
            return '%s(%s)' % (callback, dump)
        else:
            return Response(json.dumps(result, encoding='utf-8', ensure_ascii=False, indent=4), mimetype='application/javascript')
    def _validate(self,task):
        schema = {
                  'type': 'object',
                  'properties': {
                                 'text': {'type': "string"}
                                 },
                  }
        validictory.validate(task,schema)
    
def main():
    app = Flask(__name__)
    logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(name)s - %(message)s")
    logger = logging.getLogger('Language detection')
    detection = Language_detection(logger)
    app.route('/detection', methods = ['POST'])(detection.post)
    app.route('/detection')(detection.get)
    app.run(host = '', port = 9006, threaded = True)
if __name__ == "__main__":
    main()
    
View Code

5. 服務調用:

http://172.16.4.200:9006/detection?text=你好,傑之藍

調用結果:

{
    "errorCode": 0, 
    "errorMessage": "Succeed", 
    "result": "zh"
}
相關文章
相關標籤/搜索