dream

Форк
0
60 строк · 1.6 Кб
1
import logging
2
import re
3
import time
4
from os import getenv
5

6
import sentry_sdk
7
import spacy
8
from flask import Flask, request, jsonify
9

10

11
sentry_sdk.init(getenv("SENTRY_DSN"))
12

13
spacy_nlp = spacy.load(getenv("SPACY_MODEL"))
14
TOKEN_ATTRIBUTES = getenv("TOKEN_ATTRIBUTES").split("|")
15
ANNOTATE_BATCH_WITH_TOKENS_ONLY = getenv("ANNOTATE_BATCH_WITH_TOKENS_ONLY", False)
16

17
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.DEBUG)
18
logger = logging.getLogger(__name__)
19

20
app = Flask(__name__)
21

22

23
def remove_quotes(text):
24
    return re.sub(r"\s+", " ", re.sub(r"\'\"", " ", text)).strip()
25

26

27
def get_result(request, only_tokens=False):
28
    st_time = time.time()
29
    sentences = request.json["sentences"]
30
    result = []
31

32
    for uttr in sentences:
33
        doc = spacy_nlp(remove_quotes(uttr))
34
        curr_tokens = []
35
        for token in doc:
36
            curr_token = {"text": token.text}
37
            if not only_tokens:
38
                for attr in TOKEN_ATTRIBUTES:
39
                    curr_token[attr] = str(getattr(token, attr))
40
            curr_tokens += [curr_token]
41
        result += [curr_tokens]
42
    total_time = time.time() - st_time
43
    logger.info(f"spacy_annotator exec time: {total_time:.3f}s")
44
    return result
45

46

47
@app.route("/respond", methods=["POST"])
48
def respond():
49
    result = get_result(request)
50
    return jsonify(result)
51

52

53
@app.route("/respond_batch", methods=["POST"])
54
def respond_batch():
55
    result = get_result(request, only_tokens=ANNOTATE_BATCH_WITH_TOKENS_ONLY)
56
    return jsonify([{"batch": result}])
57

58

59
if __name__ == "__main__":
60
    app.run(debug=False, host="0.0.0.0", port=3000)
61

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.