示例#1
0
def insertVowels(queryWords, bigramCost, possibleFills):

    # BEGIN_YOUR_CODE
    '''
    Implementação da função que faz a inserção de vogais.

    Nessa implementação, o node.state é uma lista de strings que não possuem 
    vogais, a não ser pelo primeiro elemento da lista, este, representa a 
    ultima palavra que foi escolhida, já com as vogais. Além disso, o 
    node.action representa a palavra que foi escolhida naquele passo.

    Logo, temos que initial_node.state == (<BEGIN> + query words) e 
    initial_node.action = "", além disso, temos que 
    goal_node.state == goal_node.action == <ultima palavra gerada>.
    Assim, temos:

        state => action and new_state
    
    e para calcular o custo, basta pegarmos bigramCost(state[0], action).
    '''

    insert_problem = VowelInsertionProblem(queryWords, bigramCost,
                                           possibleFills)
    goal_node = util.uniformCostSearch(insert_problem)
    if (goal_node != None):
        is_valid, solution = util.getSolution(goal_node, insert_problem)
        if (is_valid):
            return solution
        else:
            print("Could not recover solution for the insert vowels problem")
            return None
    else:
        print("Could not complete search for the insert vowels problem")
        return None
示例#2
0
def segmentWords(query, unigramCost):
    if len(query) == 0:
        return ''
    problem = SegmentationProblem(query, unigramCost)
    goal_node = util.uniformCostSearch(problem)
    valid, solution = util.getSolution(goal_node, problem)
    print('Query:{}, Solução:{} valida?{} goal_node:{}'.format(
        query, solution, valid, goal_node.state))
    return goal_node.state
示例#3
0
def insertVowels(queryWords, bigramCost, possibleFills):
    # BEGIN_YOUR_CODE
    # Voce pode usar a função getSolution para recuperar a sua solução
    # a partir do no meta
    problem = VowelInsertionProblem(queryWords, bigramCost, possibleFills)
    goalNode = util.uniformCostSearch(problem)
    valid, solution = util.getSolution(goalNode, problem)

    if valid:
        return goalNode.state
示例#4
0
def insertVowels(queryWords, bigramCost, possibleFills):
    # BEGIN_YOUR_CODE
    # Voce pode usar a função getSolution para recuperar a sua solução a partir do no meta
    # valid,solution  = util.getSolution(goalNode,problem)
    #  raise NotImplementedError
    problem = VowelInsertionProblem(queryWords, bigramCost, possibleFills)
    goal = util.uniformCostSearch(problem)
    valid, solution = util.getSolution(goal, problem)

    if valid:
        return goal.state
    return result
示例#5
0
def segmentWords(query, unigramCost):

    if len(query) == 0:
        return ''
    else:
        # BEGIN_YOUR_CODE
        # Voce pode usar a função getSolution para recuperar a sua solução a partir do no meta
        # valid,solution  = util.getSolution(goalNode,problem)
        # raise NotImplementedError
        problem = SegmentationProblem(query, unigramCost)
        goal = util.uniformCostSearch(problem)
        valid, solution = util.getSolution(goal, problem)
        return solution
示例#6
0
def segmentWords(query, unigramCost):

    if len(query) == 0:
        return ''

    # BEGIN_YOUR_CODE
    # Voce pode usar a função getSolution para recuperar a sua solução a partir do no meta
    # valid,solution  = util.getSolution(goalNode,problem)

    segProb = SegmentationProblem(query, unigramCost)
    segSol = util.uniformCostSearch(segProb)
    segBool, segStr = util.getSolution(segSol, segProb)

    return segStr + " " + segSol.state
示例#7
0
def segmentWords(query, unigramCost):

    if len(query) == 0:
        return ''

    # BEGIN_YOUR_CODE
    # Voce pode usar a função getSolution para recuperar a sua solução
    # a partir do no meta
    problem = SegmentationProblem(query, unigramCost)
    goalNode = util.uniformCostSearch(problem)
    valid, solution = util.getSolution(goalNode, problem)

    if valid:
        result = goalNode.state
        return solution
示例#8
0
def segmentWords(query, unigramCost):
    if len(query) == 0:
        return ''

    # BEGIN_YOUR_CODE
    # Voce pode usar a função getSolution para recuperar a sua solução a partir do no meta
    # valid,solution  = util.getSolution(goalNode,problem)
    problem = SegmentationProblem(query, unigramCost)
    goal = util.uniformCostSearch(problem)
    valid, solution = util.getSolution(goal, problem)

    words = []

    if valid:
        actions = [0] + [int(a) for a in solution.strip(' ').split(' ')]
        for i in range(0, len(actions) - 1):
            word = query[actions[i]:actions[i + 1]]
            words.append(word)
        return ' '.join(words)
    return None
示例#9
0
def segmentWords(query, unigramCost):

    if len(query) == 0:
        return ''
     
    # BEGIN_YOUR_CODE 

    '''
    Implementação da função que faz a seguimentação de palavras.

    Nessa implementação, o campo node.action vai conter a ultima palavra 
    originada, e o campo node.state representa o restante da string, parte 
    que ainda não foi dividida. Logo, temos que initial_node.action == "" 
    e que initial_node.state == query, além disso, temos que 
    goal_node.state == "" e que 
    goal_node.action == <utlima palavra da frase gerada>.

    Ademais, nossa transição de estado é feita colocando um espaço em todas 
    as posições possiveis dentro da string que representa a estado, e a 
    partir disso, criamos a divisão:
        
        <state> => <action> + <new_state>

    onde, para calcularmos o custo, basta pegarmos unigramCost(action).
    '''

    segmentation_problem = SegmentationProblem(query, unigramCost)
    goal_node = util.uniformCostSearch(segmentation_problem)
    if (goal_node != None):
        is_valid, solution = util.getSolution(goal_node, segmentation_problem) 
        if (is_valid): 
            return solution
        else: 
            print("Could not recover solution for the segmentation problem")
            return None
    else:
        print("Could not complete search for the segmentation problem")
        return None
示例#10
0
def segmentWords(query, unigramCost):

    if len(query) == 0:
        return ''
    
    # BEGIN_YOUR_CODE 
    # Voce pode usar a função getSolution para recuperar a sua solução a partir do no meta
    # valid,solution  = util.getSolution(goalNode,problem)

    problem = SegmentationProblem(query, unigramCost)
    goalNode = util.uniformCostSearch(problem)
    valid, solution = util.getSolution(goalNode, problem)

    if valid:
        solution = solution.split(' ')
        answer = ""
        prev = 0
        for index in solution:
            cut = int(index)
            answer += query[prev:cut] + " "
            prev = cut
        return answer[:-1]

    return None