concordia-preprocessor/server/lemmatizer_resource.py

46 lines
1.4 KiB
Python

from flask import request
from flask_restful import Resource
import requests, json, re, pickle
class LemmatizerResource(Resource):
def __init__(self, **kwargs):
self.lemmatizer = kwargs['lemmatizer']
self.dictionary = kwargs['dictionary']
def post(self):
json_data = request.get_json(force=True)
if not 'language' in json_data:
return {'error':'Missing parameter: language'}, 400
if not 'sentences' in json_data:
return {'error':'Missing parameter: sentences'}, 400
language = json_data['language']
sentences = []
for sentence in json_data['sentences']:
sentences.append(self.processSentence(sentence, language))
result = {
'processed_sentences':sentences
}
return result, 200
def processSentence(self, sentence, language):
tokens = [self.lemmatizeWord(token, language) for token in sentence.split()]
return {'tokens':' '.join(tokens)}
def lemmatizeWord(self, word, language):
if len(word) == 1:
return word
lemma = None
if language == 'pl':
lemma = self.dictionary.get(word, None)
if lemma is None:
lemma = word
elif language == 'en':
doc = self.lemmatizer(word)
lemma = doc[0].lemma_
return lemma