示例#1
0
 def nlpParse(self, line, debug=0):
     text = parsetree(line, relations=True, lemmata=True)
     for sentence in text:
        sa = sentenceAnalysisClass(sentence, debug)
        st = sa.sentenceType()
     if sa.debug:
         print st
         print 'concept is: ' + sa.concept
     if st == 'questionState':
         if sa.is2ndPersonalPronounPosessive('OBJ'):
            # Question refers back to ccsr: how is 'your' X. Look up robbie's personal property
            self.getPersonalProperty(sa)
     elif st == 'confirmState':
         print 'comfirm state'
     elif st == 'questionDefinition':
         if sa.is2ndPersonalPronounPosessive('OBJ'): 
            # Question refers back to ccsr: what is 'your' X. Look up robbie's personal property
            self.getPersonalProperty(sa)
     #statement will not remember name 
     elif st == 'statement':
         if sa.is2ndPersonalPronounPosessive('SBJ'): 
            # Refers back to ccsr: 'your' X is Y 
            if sa.getSentenceRole(sa.concept) not in self.my_memory.concepts['I'].properties:
               self.ccsrmem.concepts['I'].properties[sa.getSentenceRole(sa.concept)] = [sa.getSentenceRole(sa.concept), sa.getSentencePhrase('OBJ')]
               print sa.getSentenceRole(sa.concept), sa.getSentencePhrase('OBJ')
            self.response("say name " + self.randomizedResponseVariation('acknowledge')) 
         else:
            if sa.getSentenceRole(sa.concept) == 'I':
               # Statement about CCSR, do not memorize this (CCSR maintains its own state based on CCSR telemetry
               # but instead react to statement
               print 'ww ' + sa.getSentenceRole('ADJP')
               if sa.getSentenceRole('ADJP') in self.positivePhrases:
                  # Saying something nice will maximize happiness and arousal
                  self.response("set mood 500 500 ") 
                  self.response("say " + self.randomizedResponseVariation('gratitude')) 
               else:
                  # Saying something insulting will minimize happiness and increase arousal
                  self.response("set mood -300 50 ") 
                  self.response("say " + self.randomizedResponseVariation('insulted')) 
            else:
               if not self.my_memory.known(sa.getSentenceRole(sa.concept)):
                  self.my_memory.add(sa.getSentenceRole(sa.concept))  
               self.my_memory.concepts[sa.getSentenceRole(sa.concept)].state = sa.getSentencePhrase('ADJP')
               self.response("say write name " + self.randomizedResponseVariation('acknowledge')) 
      # State locality: 'X is in Y'
     elif st == 'stateLocality':
         print 'state location'
     elif st == 'command':
         print 'command'
     elif st == 'greeting':
         self.response("say " + self.randomizedResponseVariation('hi'))
     elif st == 'bye':
         print 'bye'
     elif st == 'adverbPhrase':
         print 'adverb phrase'
     else:
         print"say sorry, I don't understand"
示例#2
0
 def nlpParse(self, line, debug=0):
    text = parsetree(line, relations=True, lemmata=True)
    for sentence in text:
       sa = sentenceAnalysisClass(sentence, debug)
       st = sa.sentenceType()
       if sa.debug:
          print st
          print 'concept: ' + sa.concept
       # Question state: 'how is X'
       if st == 'questionState':
         
          if sa.is2ndPersonalPronounPosessive('OBJ'):
             # Question refers back to ccsr: how is 'your' X. Look up CCSR's personal property
             self.getPersonalProperty(sa)
          elif self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
             # if we know anything about the concept, we rely on CCSR memory
             if self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].state == 'none':
                self.response("say Sorry, I don't know how " + sa.getSentencePhrase(sa.concept) + ' ' + conjugate('be', self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].person))
             else:   
                self.response("say " + sa.getSentencePhrase(sa.concept) + " " + conjugate('be', self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].person) + " " + self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].state)
          else:
             if sa.complexQuery():
                # Nothing is knows about the concept, and the query is 'complex', let's ask the cloud
                self.response("say let me look that up for you")
                # Looking up stuff makes CCSR happy and excited 
                self.response("mood 50 50")
                for result in self.wolframAlphaAPI(sa):
                   self.response("say " + result)              
             else:
                self.response("say Sorry, I don't know " + sa.getSentencePhrase(sa.concept))
       # Confirm state: 'is X Y'
       elif st == 'confirmState':
          if self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
             if(sa.getSentenceRole(sa.concept) == 'I'):
                print 'somthing should go here'
             if sa.getSentencePhrase('ADJP') == self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].state:
                self.response("facial " + str(EXPR_NODYES)) # Nod Yes 
                self.response("say " + self.randomizedResponseVariation('yes'))
             else:
                self.response("facial " + str(EXPR_SHAKENO)) # Shake no 
                self.response("say " + self.randomizedResponseVariation('no'))
                self.response("say " + sa.getSentencePhrase(sa.concept) + " " + conjugate('be', self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].person) + " " + self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].state)
                print self.ccsrmem.concepts['I'].state
          else:
             self.response("say Sorry, I don't know " + sa.getSentencePhrase(sa.concept))
       # Question definition: 'what/who is X'
       elif st == 'questionDefinition':
          if sa.is2ndPersonalPronounPosessive('OBJ'): 
             # Question refers back to ccsr: what is 'your' X. Look up CCSR's personal property
             
             self.getPersonalProperty(sa)
                   
       # State: 'X is Y'
       elif st == 'statement':
          if sa.is2ndPersonalPronounPosessive('SBJ'): 
             # Refers back to ccsr: 'your' X is Y 
             if sa.getSentenceRole(sa.concept) not in self.ccsrmem.concepts['I'].properties:
                self.ccsrmem.concepts['I'].properties[sa.getSentenceRole(sa.concept)] = [sa.getSentenceRole(sa.concept), sa.getSentencePhrase('OBJ')]
             self.response("say " + self.randomizedResponseVariation('acknowledge')) 
          else:
             if sa.getSentenceRole(sa.concept) == 'I':
                # Statement about CCSR, do not memorize this (CCSR maintains its own state based on CCSR telemetry
                # but instead react to statement
                print 'ww ' + sa.getSentenceRole('ADJP')
                if sa.getSentenceRole('ADJP') in self.positivePhrases:
                   # Saying something nice will maximize happiness and arousal
                   self.response("set mood 500 500 ") 
                   self.response("say " + self.randomizedResponseVariation('gratitude')) 
                else:
                   # Saying something insulting will minimize happiness and increase arousal
                   self.response("set mood -300 50 ") 
                   self.response("say " + self.randomizedResponseVariation('insulted')) 
             else:
                if not self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
                   self.ccsrmem.add(sa.getSentenceRole(sa.concept))  
                self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].state = sa.getSentencePhrase('ADJP')
                self.response("say " + self.randomizedResponseVariation('acknowledge')) 
       # State locality: 'X is in Y'
       elif st == 'stateLocality':
          if not self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
             self.ccsrmem.add(sa.getSentenceRole(sa.concept))  
          self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].locality = sa.getSentencePhrase('PNP')
          self.response("say " + self.randomizedResponseVariation('acknowledge')) 
       # Question locality: 'Where is X'
       elif st == 'questionLocality':
          if self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
             if self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].locality == 'none':
                # Not knowing stuff makes CCSR sad and a little aroused 
                self.response("mood -50 20")
                self.response("say Sorry, I don't know where " + sa.getSentencePhrase(sa.concept) + ' ' + conjugate('be', self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].person))
             else:   
                # Knowing stuff makes CCSR happy and a little aroused 
                self.response("mood 50 20")
                self.response("say " + sa.getSentencePhrase(sa.concept) + " " + conjugate('be', self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].person) + " " + self.ccsrmem.concepts[sa.getSentenceRole(sa.concept)].locality)
          else:
             # Not knowing stuff makes CCSR sad and a little aroused 
             self.response("mood -50 20")
             self.response("say Sorry, I don't know " + sa.getSentencePhrase(sa.concept))
       # Command
       elif st == 'command':
          if self.cap.capable(sa.getSentenceHead('VP')):
             # Command is a prefixed CCSR command to be given through telemetry
             self.response("facial " + str(EXPR_NODYES)) # Nod Yes 
             self.response("say " + self.randomizedResponseVariation('yes') + " I can") 
             for cmd in self.cap.constructCmd(sa):
                self.response(cmd)
          elif sa.getSentenceHead('VP') == 'tell':
             # This is a request to tell something about a topic
             if len(sa.s.pnp) > 0:
                # We have a prepositional phrase: 'tell me about X'
                concept = sa.reflectObject(sa.s.pnp[0].head.string)
                if self.ccsrmem.known(concept):
                   if  len(self.ccsrmem.concepts[concept].properties) > 0:
                      for p in self.ccsrmem.concepts[concept].properties:
                         self.response("say " + self.ccsrmem.posessivePronouns[self.ccsrmem.concepts[concept].person] + " " + self.ccsrmem.concepts[concept].properties[p][0] + " is " + self.ccsrmem.concepts[concept].properties[p][1])            
                   else:
                      self.response("say sorry, I can't tell you much about " + sa.reflectObject(sa.s.pnp[0].head.string))
                else:
                   self.response("say let me look that up for you")
                   self.response("say " + self.wolframAlphaAPI(sa))              
          else:
             # Not knowing stuff makes CCSR sad and a little aroused 
             self.response("mood -50 20")
             self.response("facial " + str(EXPR_SHAKENO)) 
             self.response("say " + self.randomizedResponseVariation('no')) 
             self.response("say I'm afraid I can't do that. I don't know how to " + sa.getSentenceHead('VP'))
       # State locality: 'X is in Y'
       elif st == 'greeting':
          self.response("say " + self.randomizedResponseVariation('hi')) 
       elif st == 'bye':
          self.response("say " + self.randomizedResponseVariation('bye'))
          # Turn away and start autonomously exploring
          self.response("turn 1 100000")
          self.response("set state 7")
       elif st == 'gratitude':
          self.response("say " + self.randomizedResponseVariation('gratitudeReply')) 
       elif st == 'adverbPhrase':
          if sa.getSentenceHead('ADJP') == 'further':
             for cmd in self.cap.lastCmd:
                self.response(cmd)
       else:
          self.response("say sorry, I don't understand")
       self.cap.lastCmd = self.cap.constructCmd(sa)
    self.response("listen")
示例#3
0
 def nlpParse(self, line, debug=0):
     text = parsetree(line, relations=True, lemmata=True)
     for sentence in text:
         sa = sentenceAnalysisClass(sentence, debug)
         st = sa.sentenceType()
     if sa.debug:
         print st
         print 'concept is: ' + sa.concept
     if st == 'questionState':
         if sa.is2ndPersonalPronounPosessive('OBJ'):
             # Question refers back to ccsr: how is 'your' X. Look up robbie's personal property
             self.getPersonalProperty(sa)
     elif st == 'confirmState':
         print 'comfirm state'
     elif st == 'questionDefinition':
         if sa.is2ndPersonalPronounPosessive('OBJ'):
             # Question refers back to ccsr: what is 'your' X. Look up robbie's personal property
             self.getPersonalProperty(sa)
     #statement will not remember name
     elif st == 'statement':
         if sa.is2ndPersonalPronounPosessive('SBJ'):
             # Refers back to ccsr: 'your' X is Y
             if sa.getSentenceRole(
                     sa.concept
             ) not in self.my_memory.concepts['I'].properties:
                 self.ccsrmem.concepts['I'].properties[sa.getSentenceRole(
                     sa.concept)] = [
                         sa.getSentenceRole(sa.concept),
                         sa.getSentencePhrase('OBJ')
                     ]
                 print sa.getSentenceRole(
                     sa.concept), sa.getSentencePhrase('OBJ')
             self.response("say name " +
                           self.randomizedResponseVariation('acknowledge'))
         else:
             if sa.getSentenceRole(sa.concept) == 'I':
                 # Statement about CCSR, do not memorize this (CCSR maintains its own state based on CCSR telemetry
                 # but instead react to statement
                 print 'ww ' + sa.getSentenceRole('ADJP')
                 if sa.getSentenceRole('ADJP') in self.positivePhrases:
                     # Saying something nice will maximize happiness and arousal
                     self.response("set mood 500 500 ")
                     self.response(
                         "say " +
                         self.randomizedResponseVariation('gratitude'))
                 else:
                     # Saying something insulting will minimize happiness and increase arousal
                     self.response("set mood -300 50 ")
                     self.response(
                         "say " +
                         self.randomizedResponseVariation('insulted'))
             else:
                 if not self.my_memory.known(sa.getSentenceRole(
                         sa.concept)):
                     self.my_memory.add(sa.getSentenceRole(sa.concept))
                 self.my_memory.concepts[sa.getSentenceRole(
                     sa.concept)].state = sa.getSentencePhrase('ADJP')
                 self.response(
                     "say write name " +
                     self.randomizedResponseVariation('acknowledge'))
     # State locality: 'X is in Y'
     elif st == 'stateLocality':
         print 'state location'
     elif st == 'command':
         print 'command'
     elif st == 'greeting':
         self.response("say " + self.randomizedResponseVariation('hi'))
     elif st == 'bye':
         print 'bye'
     elif st == 'adverbPhrase':
         print 'adverb phrase'
     else:
         print "say sorry, I don't understand"
示例#4
0
    def nlpParse(self, line, debug=0):
        text = parsetree(line, relations=True, lemmata=True)
        for sentence in text:
            sa = sentenceAnalysisClass(sentence, debug)
            st = sa.sentenceType()
            if sa.debug:
                print st
                print 'concept: ' + sa.concept
            # Question state: 'how is X'
            if st == 'questionState':

                if sa.is2ndPersonalPronounPosessive('OBJ'):
                    # Question refers back to ccsr: how is 'your' X. Look up CCSR's personal property
                    self.getPersonalProperty(sa)
                elif self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
                    # if we know anything about the concept, we rely on CCSR memory
                    if self.ccsrmem.concepts[sa.getSentenceRole(
                            sa.concept)].state == 'none':
                        self.response(
                            "say Sorry, I don't know how " +
                            sa.getSentencePhrase(sa.concept) + ' ' + conjugate(
                                'be', self.ccsrmem.concepts[sa.getSentenceRole(
                                    sa.concept)].person))
                    else:
                        self.response(
                            "say " + sa.getSentencePhrase(sa.concept) + " " +
                            conjugate(
                                'be', self.ccsrmem.concepts[sa.getSentenceRole(
                                    sa.concept)].person) + " " +
                            self.ccsrmem.concepts[sa.getSentenceRole(
                                sa.concept)].state)
                else:
                    if sa.complexQuery():
                        # Nothing is knows about the concept, and the query is 'complex', let's ask the cloud
                        self.response("say let me look that up for you")
                        # Looking up stuff makes CCSR happy and excited
                        self.response("mood 50 50")
                        for result in self.wolframAlphaAPI(sa):
                            self.response("say " + result)
                    else:
                        self.response("say Sorry, I don't know " +
                                      sa.getSentencePhrase(sa.concept))
            # Confirm state: 'is X Y'
            elif st == 'confirmState':
                if self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
                    if (sa.getSentenceRole(sa.concept) == 'I'):
                        print 'somthing should go here'
                    if sa.getSentencePhrase('ADJP') == self.ccsrmem.concepts[
                            sa.getSentenceRole(sa.concept)].state:
                        self.response("facial " + str(EXPR_NODYES))  # Nod Yes
                        self.response("say " +
                                      self.randomizedResponseVariation('yes'))
                    else:
                        self.response("facial " +
                                      str(EXPR_SHAKENO))  # Shake no
                        self.response("say " +
                                      self.randomizedResponseVariation('no'))
                        self.response(
                            "say " + sa.getSentencePhrase(sa.concept) + " " +
                            conjugate(
                                'be', self.ccsrmem.concepts[sa.getSentenceRole(
                                    sa.concept)].person) + " " +
                            self.ccsrmem.concepts[sa.getSentenceRole(
                                sa.concept)].state)
                        print self.ccsrmem.concepts['I'].state
                else:
                    self.response("say Sorry, I don't know " +
                                  sa.getSentencePhrase(sa.concept))
            # Question definition: 'what/who is X'
            elif st == 'questionDefinition':
                if sa.is2ndPersonalPronounPosessive('OBJ'):
                    # Question refers back to ccsr: what is 'your' X. Look up CCSR's personal property

                    self.getPersonalProperty(sa)

            # State: 'X is Y'
            elif st == 'statement':
                if sa.is2ndPersonalPronounPosessive('SBJ'):
                    # Refers back to ccsr: 'your' X is Y
                    if sa.getSentenceRole(
                            sa.concept
                    ) not in self.ccsrmem.concepts['I'].properties:
                        self.ccsrmem.concepts['I'].properties[
                            sa.getSentenceRole(sa.concept)] = [
                                sa.getSentenceRole(sa.concept),
                                sa.getSentencePhrase('OBJ')
                            ]
                    self.response(
                        "say " +
                        self.randomizedResponseVariation('acknowledge'))
                else:
                    if sa.getSentenceRole(sa.concept) == 'I':
                        # Statement about CCSR, do not memorize this (CCSR maintains its own state based on CCSR telemetry
                        # but instead react to statement
                        print 'ww ' + sa.getSentenceRole('ADJP')
                        if sa.getSentenceRole('ADJP') in self.positivePhrases:
                            # Saying something nice will maximize happiness and arousal
                            self.response("set mood 500 500 ")
                            self.response(
                                "say " +
                                self.randomizedResponseVariation('gratitude'))
                        else:
                            # Saying something insulting will minimize happiness and increase arousal
                            self.response("set mood -300 50 ")
                            self.response(
                                "say " +
                                self.randomizedResponseVariation('insulted'))
                    else:
                        if not self.ccsrmem.known(
                                sa.getSentenceRole(sa.concept)):
                            self.ccsrmem.add(sa.getSentenceRole(sa.concept))
                        self.ccsrmem.concepts[sa.getSentenceRole(
                            sa.concept)].state = sa.getSentencePhrase('ADJP')
                        self.response(
                            "say " +
                            self.randomizedResponseVariation('acknowledge'))
            # State locality: 'X is in Y'
            elif st == 'stateLocality':
                if not self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
                    self.ccsrmem.add(sa.getSentenceRole(sa.concept))
                self.ccsrmem.concepts[sa.getSentenceRole(
                    sa.concept)].locality = sa.getSentencePhrase('PNP')
                self.response("say " +
                              self.randomizedResponseVariation('acknowledge'))
            # Question locality: 'Where is X'
            elif st == 'questionLocality':
                if self.ccsrmem.known(sa.getSentenceRole(sa.concept)):
                    if self.ccsrmem.concepts[sa.getSentenceRole(
                            sa.concept)].locality == 'none':
                        # Not knowing stuff makes CCSR sad and a little aroused
                        self.response("mood -50 20")
                        self.response(
                            "say Sorry, I don't know where " +
                            sa.getSentencePhrase(sa.concept) + ' ' + conjugate(
                                'be', self.ccsrmem.concepts[sa.getSentenceRole(
                                    sa.concept)].person))
                    else:
                        # Knowing stuff makes CCSR happy and a little aroused
                        self.response("mood 50 20")
                        self.response(
                            "say " + sa.getSentencePhrase(sa.concept) + " " +
                            conjugate(
                                'be', self.ccsrmem.concepts[sa.getSentenceRole(
                                    sa.concept)].person) + " " +
                            self.ccsrmem.concepts[sa.getSentenceRole(
                                sa.concept)].locality)
                else:
                    # Not knowing stuff makes CCSR sad and a little aroused
                    self.response("mood -50 20")
                    self.response("say Sorry, I don't know " +
                                  sa.getSentencePhrase(sa.concept))
            # Command
            elif st == 'command':
                if self.cap.capable(sa.getSentenceHead('VP')):
                    # Command is a prefixed CCSR command to be given through telemetry
                    self.response("facial " + str(EXPR_NODYES))  # Nod Yes
                    self.response("say " +
                                  self.randomizedResponseVariation('yes') +
                                  " I can")
                    for cmd in self.cap.constructCmd(sa):
                        self.response(cmd)
                elif sa.getSentenceHead('VP') == 'tell':
                    # This is a request to tell something about a topic
                    if len(sa.s.pnp) > 0:
                        # We have a prepositional phrase: 'tell me about X'
                        concept = sa.reflectObject(sa.s.pnp[0].head.string)
                        if self.ccsrmem.known(concept):
                            if len(self.ccsrmem.concepts[concept].properties
                                   ) > 0:
                                for p in self.ccsrmem.concepts[
                                        concept].properties:
                                    self.response(
                                        "say " +
                                        self.ccsrmem.posessivePronouns[
                                            self.ccsrmem.concepts[concept].
                                            person] + " " + self.ccsrmem.
                                        concepts[concept].properties[p][0] +
                                        " is " + self.ccsrmem.
                                        concepts[concept].properties[p][1])
                            else:
                                self.response(
                                    "say sorry, I can't tell you much about " +
                                    sa.reflectObject(sa.s.pnp[0].head.string))
                        else:
                            self.response("say let me look that up for you")
                            self.response("say " + self.wolframAlphaAPI(sa))
                else:
                    # Not knowing stuff makes CCSR sad and a little aroused
                    self.response("mood -50 20")
                    self.response("facial " + str(EXPR_SHAKENO))
                    self.response("say " +
                                  self.randomizedResponseVariation('no'))
                    self.response(
                        "say I'm afraid I can't do that. I don't know how to "
                        + sa.getSentenceHead('VP'))
            # State locality: 'X is in Y'
            elif st == 'greeting':
                self.response("say " + self.randomizedResponseVariation('hi'))
            elif st == 'bye':
                self.response("say " + self.randomizedResponseVariation('bye'))
                # Turn away and start autonomously exploring
                self.response("turn 1 100000")
                self.response("set state 7")
            elif st == 'gratitude':
                self.response(
                    "say " +
                    self.randomizedResponseVariation('gratitudeReply'))
            elif st == 'adverbPhrase':
                if sa.getSentenceHead('ADJP') == 'further':
                    for cmd in self.cap.lastCmd:
                        self.response(cmd)
            else:
                self.response("say sorry, I don't understand")
            self.cap.lastCmd = self.cap.constructCmd(sa)
        self.response("listen")