Exemple #1
0
def CognitiveSystem(Window, SpeechToNLPQueue):
    # Create GUI signal objects
    SpeechSignal = GUISignal()
    SpeechSignal.signal.connect(Window.UpdateSpeechBox)

    ConceptExtractionSignal = GUISignal()
    ConceptExtractionSignal.signal.connect(Window.UpdateConceptExtractionBox)

    # Initialize BT framework parameters
    execfile("bt_parameters.py")

    # Setup BT Framework
    blackboard = Blackboard()
    root = py_trees.composites.Sequence("Root_1")
    IG = be.InformationGathering()
    TC = be.TextCollection()
    V = be.Vectorize()
    PS = be.ProtocolSelector()
    root.add_children([TC, IG, V, PS, be.protocols])
    behaviour_tree = py_trees.trees.BehaviourTree(root)
    behaviour_tree.add_pre_tick_handler(pre_tick_handler)
    behaviour_tree.setup(15)
    Concepts_Graph = dict()
    SpeechText = ""
    NLP_Items = []
    Tick_Counter = 1

    while True:

        # Get queue item from the Speech-to-Text Module
        received = SpeechToNLPQueue.get()
        print("Received chunk")

        if (received == 'Kill'):
            print(
                "Cognitive System Thread received Kill Signal. Killing Cognitive System Thread."
            )
            break

        if (Window.reset == 1):
            print(
                "Cognitive System Thread Received reset signal. Killing Cognitive System Thread."
            )
            return

        # If item received from queue is legitmate
        else:
            #sentsList = [received.transcript]

            # Use online tool to find sentence boundaries
            dummy12 = received.transcript
            dummy12 = dummy12.replace('\r', '').replace('\n', '')
            dummyP2 = dummy12.replace(' ', '%20')
            dummyP3 = dummyP2.replace('\'', '%27')
            dummyP = dummyP3.replace('&', '%26')
            part1 = 'curl -d text=' + dummyP + ' http://bark.phon.ioc.ee/punctuator'
            op = commands.getstatusoutput(part1)
            output = op[1].rsplit('\n', 1)[1]
            sentsList = textParse2.sent_tokenize(output)  #final sentences

            # Processes each chunk/sentence
            PunctuatedAndHighlightedText = ""
            for idx, item in enumerate(sentsList):

                blackboard.text = [item]
                behaviour_tree.tick_tock(sleep_ms=50,
                                         number_of_iterations=1,
                                         pre_tick_handler=None,
                                         post_tick_handler=None)

                pr, sv_s, s = TickResults(Window, NLP_Items)

                PunctuatedAndHighlightedTextChunk = item

                for sv in sv_s:
                    if (sv[5] == Tick_Counter
                        ):  # if new concept found in this tick
                        try:
                            i = re.search(
                                r'%s' % sv[3],
                                PunctuatedAndHighlightedTextChunk).start()
                            PunctuatedAndHighlightedTextChunk = str(
                                PunctuatedAndHighlightedTextChunk[:i] +
                                '<span style="background-color: #FFFF00">' +
                                PunctuatedAndHighlightedTextChunk[i:i +
                                                                  len(sv[3])] +
                                '</span>' +
                                PunctuatedAndHighlightedTextChunk[i +
                                                                  len(sv[3]):])
                        except Exception as e:
                            pass

                PunctuatedAndHighlightedText += PunctuatedAndHighlightedTextChunk + " "
                Tick_Counter += 1

                if (Window.reset == 1):
                    print(
                        "Cognitive System Thread Received reset signal. Killing Cognitive System Thread."
                    )
                    return

            PunctuatedAndHighlightedText = '<b>' + PunctuatedAndHighlightedText + '</b>'
            SpeechSignal.signal.emit([
                SpeechNLPItem(PunctuatedAndHighlightedText, received.isFinal,
                              received.confidence, received.numPrinted, 'NLP')
            ])
Exemple #2
0
                vt.pop(idx)
        for idx, it in enumerate(vt):
            temp = it.split('-')
            vt[idx] = (temp[0], temp[1])
    chunked_vt = list(np.array_split(vt, len(chunks)))
    blackboard = Blackboard()
    root = py_trees.composites.Sequence("Root_1")
    IG = be.InformationGathering()
    TC = be.TextCollection()
    V = be.Vectorize()
    PS = be.ProtocolSelector()
    root.add_children([TC, IG, V, PS, be.protocols])
    behaviour_tree = py_trees.trees.BehaviourTree(root)
    behaviour_tree.add_pre_tick_handler(pre_tick_handler)
    behaviour_tree.setup(15)
    for idx, item in enumerate(chunks):
        blackboard.text = [item]
        blackboard.inC = list(chunked_vt[idx])
        behaviour_tree.tick_tock(sleep_ms=50,
                                 number_of_iterations=1,
                                 pre_tick_handler=None,
                                 post_tick_handler=None)
        res = []
        for key in blackboard.feedback:
            if blackboard.feedback[key] > 0.1:
                res.append((key, blackboard.feedback[key]))
        temp_int.append(res)
        print blackboard.candi[0]
        print res
    pred_int.append(temp_int)