Esempio n. 1
0
def normalize_word(word):
    word = word.replace(get_node_value("normalize:replacements"), "")

    url = get_node_value("normalize:normalization_url")
    file = urllib.request.urlopen(url.format(urllib.parse.quote(word)))
    res = json.loads(file.read().decode())
    return res['root']
Esempio n. 2
0
def translate_sentence(sentence):
    if get_node_value("translation:enabled"):
        return Translator().translate(
            text=sentence,
            src=get_node_value("translation:languages:from"),
            dest=get_node_value("translation:languages:to")).text
    else:
        return sentence
Esempio n. 3
0
def get_answer_from_api(question, tag, original):
    data = load_response(question, tag)

    keywords = question.split()

    # Take questions that have been answered and that are relevant to the language we are looking for
    filtered = list(
        filter(lambda data: data["is_answered"] and tag in data["tags"], data))

    if (len(data) == 0):
        return get_node_value("answer:not_found"), 0.0

    if len(filtered) == 0:
        filtered = data

    contains_keywords = group_by_keywords(keywords, filtered)

    relevance = sorted(contains_keywords.keys(), reverse=True)[0]
    best_option = contains_keywords[relevance]

    if ('accepted_answer_id' not in best_option):

        return 0.0, form_nice_answer(best_option, "Puudub", original), False

    else:
        accepted_answer = best_option['accepted_answer_id']
        answer = load_answer(accepted_answer)

        return relevance, form_nice_answer(best_option, answer,
                                           original), False
Esempio n. 4
0
def form_nice_answer(best_option, answer, original):

    if answer == "Puudub":
        return "Kahjuks ei leidnud aktsepteeritud vastust StackOver Flowst"

    return get_node_value("answer:template").format(
        original, best_option['title'], best_option['link'],
        parse_response(answer['body']))
Esempio n. 5
0
def normalize(text):
    if get_node_value("normalize:enabled"):
        sentence_words = text.split()
        normalized = []

        for word in sentence_words:
            normalized.append(normalize_word(word))

        return " ".join(normalized)
    else:
        return text
Esempio n. 6
0
def form_api_url(query, tag):
    return get_node_value("stack_app:url").format(
        get_node_value("stack_app:version"),
        get_node_value("stack_app:method"), get_node_value("stack_app:site"),
        urllib.parse.quote(query), urllib.parse.quote(tag))
Esempio n. 7
0
def get_answer_ulr(id):
    return get_node_value('stack_app_answer:url').format(
        get_node_value('stack_app_answer:version'),
        get_node_value('stack_app_answer:method'), id,
        get_node_value('stack_app_answer:site'))