Example #1
0
def search_word(request, search_term):
    search_term = canonicalise_word(search_term)
    matching_words = Word.objects.find_by_variant(search_term)

    similar_words = set(Word.objects.find_by_variant_fuzzy(search_term))
    similar_words = similar_words - set(matching_words)

    parsed_words = []
    for parse_result in parse_morphology(search_term):
        printable_parts = []
        for part in parse_result:
            if isinstance(part, Morpheme):
                printable_parts.append(part.morpheme)
            else:
                printable_parts.append(part)

        parts = []
        for part in parse_result:
            if isinstance(part, Morpheme):
                if part.primary_word:
                    parts.append({
                        'vorto': part.primary_word.word,
                        'parto': part.morpheme
                    })
                else:
                    parts.append({'vorto': None, 'parto': part.morpheme})
            else:
                parts.append({'vorto': None, 'parto': part})

        parsed_words.append({
            'rezulto': "-".join(printable_parts),
            'partoj': parts,
        })

    translations = [{
        'vorto': trans.word.word,
        'traduko': trans.translation,
        'kodo': trans.language_code,
        'lingvo': trans.language
    } for trans in Translation.objects.filter(translation=search_term)]

    return JsonResponse({
        'preciza': [word.word for word in matching_words],
        'malpreciza':
        sorted([word.word for word in similar_words],
               cmp=compare_esperanto_strings),
        'vortfarado':
        parsed_words,
        'tradukoj':
        translations,
    })
Example #2
0
def search_word(request, search_term):
    search_term = canonicalise_word(search_term)
    matching_words = Word.objects.find_by_variant(search_term)

    similar_words = set(Word.objects.find_by_variant_fuzzy(search_term))
    similar_words = similar_words - set(matching_words)

    parsed_words = []
    for parse_result in parse_morphology(search_term):
        printable_parts = []
        for part in parse_result:
            if isinstance(part, Morpheme):
                printable_parts.append(part.morpheme)
            else:
                printable_parts.append(part)

        parts = []
        for part in parse_result:
            if isinstance(part, Morpheme):
                if part.primary_word:
                    parts.append({'vorto': part.primary_word.word,
                                  'parto': part.morpheme})
                else:
                    parts.append({'vorto': None,
                                  'parto': part.morpheme})
            else:
                parts.append({'vorto': None, 'parto': part})
            
        parsed_words.append({
            'rezulto': "-".join(printable_parts),
            'partoj': parts,
        })

    translations = [
        {'vorto': trans.word.word, 'traduko': trans.translation,
         'kodo': trans.language_code, 'lingvo': trans.language}
        for trans in Translation.objects.filter(translation=search_term)
    ]
    
    return JsonResponse({
        'preciza': [word.word for word in matching_words],
        'malpreciza': sorted([word.word for word in similar_words],
                             cmp=compare_esperanto_strings),
        'vortfarado': parsed_words,
        'tradukoj': translations,
    })
    def get_parsed_string(compound):
        """Given a string of a compound word, return a list of strings
        of potential parses. find_roots does the main work and we just
        convert the Morpheme objects here.
        
        """
        object_parses = parse_morphology(compound)

        parses = []
        for object_parse in object_parses:
            parse = []
            for component in object_parse:
                if type(component) == str:
                    parse.append(component)
                else:
                    # component is a Morpheme object
                    parse.append(component.morpheme)
            parses.append('-'.join(parse))

        return parses
Example #4
0
    def get_parsed_string(compound):
        """Given a string of a compound word, return a list of strings
        of potential parses. find_roots does the main work and we just
        convert the Morpheme objects here.
        
        """
        object_parses = parse_morphology(compound)

        parses = []
        for object_parse in object_parses:
            parse = []
            for component in object_parse:
                if type(component) == str:
                    parse.append(component)
                else:
                    # component is a Morpheme object
                    parse.append(component.morpheme)
            parses.append('-'.join(parse))

        return parses