from flask import Flask, request import classla import gc classla.download('sl') classla.download('sl', type='standard_jos') classla.download('sl', type='nonstandard') nlp_standard_UD = classla.Pipeline('sl', pos_use_lexicon=True) nlp_standard_JOS = classla.Pipeline('sl', pos_use_lexicon=True, type='standard_jos') nlp_nonstandard_UD = classla.Pipeline('sl', type='nonstandard') nlp_nonstandard_JOS = classla.Pipeline('sl', processors={ "tokenize": "nonstandard", "lemma": "nonstandard", "pos": "nonstandard", "depparse": "standard_jos", "ner": "nonstandard" }) app = Flask(__name__) @app.route('/') def hello_world(): return 'API is running...' @app.route('/custom-settings', methods=["POST"]) def custom_settings(): input_json = request.get_json(force=True) if 'settings' in input_json: settings = input_json['settings'] nlp = classla.Pipeline(**settings) # classla.Pipeline('sl', processors='tokenize,pos,lemma', pos_use_lexicon=True) result = nlp(input_json['text']).to_conll() del(nlp) gc.collect() else: return f'ERROR `settings` were not given!' return result @app.route('/standard-ud', methods=["POST"]) def standard_ud(): input_json = request.get_json(force=True) doc = nlp_standard_UD(input_json['text']) return doc.to_conll() @app.route('/standard-jos', methods=["POST"]) def standard_jos(): input_json = request.get_json(force=True) doc = nlp_standard_JOS(input_json['text']) return doc.to_conll() @app.route('/nonstandard-ud', methods=["POST"]) def nonstandard_ud(): input_json = request.get_json(force=True) doc = nlp_nonstandard_UD(input_json['text']) return doc.to_conll() @app.route('/nonstandard-jos', methods=["POST"]) def nonstandard_jos(): input_json = request.get_json(force=True) doc = nlp_nonstandard_JOS(input_json['text']) return doc.to_conll() if __name__ == '__main__': app.run(host="0.0.0.0")