pepper.language.analyzer module

class pepper.language.analyzer.Analyzer(chat)[source]

Bases: object

GRAMMAR_JSON = 'C:\\Users\\Pepper\\Documents\\Pepper\\pepper\\pepper\\language\\data\\lexicon.json'
LEXICON = {u'categories': [u'book', u'movie', u'friend', u'food', u'laptop'], u'conjunctions': {u'coordinating': {u'and': {u'connection': u'non-contrast'}, u'but': {u'connection': [u'contrast', u'exception']}, u'for': {u'connection': u'rationale'}, u'nor': {u'connection': u'negative non-contrast'}, u'or': {u'connection': u'alternative'}, u'so': {u'connection': u'consequence'}, u'yet': {u'connection': [u'contrast', u'exception']}}, u'subordinating': {u'after': {}, u'although': {}, u'because': {}, u'before': {}, u'if': {}, u'since': {}, u'so that': {}, u'than': {}, u'that': {}, u'though': {}, u'unless': {}, u'until': {}, u'whenever': {}, u'wherever': {}, u'while': {}}}, u'determiners': {u'articles': {u'a': u'indefinite', u'an': u'indefinite', u'the': u'definite'}, u'demonstratives': {u'that': {u'number': u'singular', u'proximity': u'distal'}, u'these': {u'number': u'plural', u'proximity': u'proximal'}, u'this': {u'number': u'singular', u'proximity': u'proximal'}, u'those': {u'number': u'plural', u'proximity': u'distal'}}, u'numerals': {u'cardinals': {u'eight': {u'integer': u'8'}, u'eighty': {u'integer': u'80'}, u'eleven': {u'integer': u'11'}, u'fifty': {u'integer': u'50'}, u'five': {u'integer': u'5'}, u'forty': {u'integer': u'40'}, u'four': {u'integer': u'4'}, u'nine': {u'integer': u'9'}, u'ninety': {u'integer': u'90'}, u'one': {u'integer': u'1'}, u'one hundred': {u'integer': u'100'}, u'seven': {u'integer': u'7'}, u'seventy': {u'integer': u'70'}, u'six': {u'integer': u'6'}, u'sixty': {u'integer': u'60'}, u'ten': {u'integer': u'10'}, u'thirty': {u'integer': u'30'}, u'three': {u'integer': u'3'}, u'twelve': {u'integer': u'12'}, u'twenty': {u'integer': u'20'}, u'two': {u'integer': u'2'}, u'zero': {u'integer': u'0'}}, u'ordinals': {u'eighth': {}, u'eleventh': {}, u'fifth': {}, u'first': {}, u'fourth': {}, u'ninth': {}, u'second': {}, u'seventh': {}, u'sixth': {}, u'tenth': {}, u'third': {}, u'twelfth': {}}}, u'possessives': {u'her': {u'gender': u'feminine', u'number': u'singular', u'person': u'third'}, u'his': {u'gender': u'masculine', u'number': u'singular', u'person': u'third'}, u'its': {u'gender': u'neuter', u'number': u'singular', u'person': u'third'}, u'my': {u'number': u'singular', u'person': u'first'}, u'our': {u'number': u'plural', u'person': u'first'}, u'their': {u'number': u'plural', u'person': u'third'}, u'your': {u'number': [u'singular', u'plural'], u'person': u'second'}}, u'quantifiers': {u'a couple': {u'quantity': u'small'}, u'a few': {u'quantity': u'small'}, u'a little': {u'quantity': u'small'}, u'a lot of': {u'quantity': u'large'}, u'all': {u'quantity': u'relative'}, u'another': {u'quantity': u'relative'}, u'any': {u'quantity': u'relative'}, u'each': {u'quantity': u'relative'}, u'either': {u'quantity': u'relative'}, u'every': {u'quantity': u'relative'}, u'few': {u'quantity': u'small'}, u'little': {u'quantity': u'small'}, u'lots of': {u'quantity': u'large'}, u'many': {u'quantity': u'large'}, u'most': {u'quantity': u'relative'}, u'most of': {u'quantity': u'relative'}, u'much': {u'quantity': u'large'}, u'neither': {u'quantity': u'relative'}, u'no': {u'quantity': u'zero'}, u'several': {u'quantity': u'large'}, u'some': {u'quantity': u'relative'}, u'whole': {u'quantity': u'relative'}}, u's-genitive': u"'s", u'wh-determiners': {u'what': {u'response': u'object'}, u'which': {u'response': u'object'}, u'whose': {u'response': u'person'}}}, u'kinship': {u'aunt': {u'distance': u'2', u'gender': u'female'}, u'brother': {u'distance': u'1', u'gender': u'male'}, u'child': {u'distance': u'1', u'gender': u'neutral'}, u'cousin': {u'distance': u'2', u'gender': u'neutral'}, u'daughter': {u'distance': u'1', u'gender': u'female'}, u'father': {u'distance': u'1', u'gender': u'male'}, u'friend': {u'distance': u'0', u'gender': u'neutral'}, u'grandchild': {u'distance': u'2', u'gender': u'neutral'}, u'granddaughter': {u'distance': u'2', u'gender': u'female'}, u'grandfather': {u'distance': u'2', u'gender': u'male'}, u'grandmother': {u'distance': u'2', u'gender': u'female'}, u'grandparent': {u'distance': u'2', u'gender': u'neutral'}, u'grandson': {u'distance': u'2', u'gender': u'male'}, u'mother': {u'distance': u'1', u'gender': u'female'}, u'nephew': {u'distance': u'2', u'gender': u'male'}, u'niece': {u'distance': u'2', u'gender': u'female'}, u'parent': {u'distance': u'1', u'gender': u'neutral'}, u'sibling': {u'distance': u'1', u'gender': u'neutral'}, u'sister': {u'distance': u'1', u'gender': u'female'}, u'son': {u'distance': u'1', u'gender': u'male'}, u'uncle': {u'distance': u'2', u'gender': u'male'}}, u'predicates': [u'likes', u'knows', u'is_from', u'lives', u'loves', u'enjoys', u'sees', u'owns', u'can'], u'pronouns': {u'indefinite': {u'person': {u'anybody': {u'quantity': u'part', u'sentence type': u'negative'}, u'anyone': {u'quantity': u'part', u'sentence type': u'negative'}, u'everybody': {u'quantity': u'all'}, u'everyone': {u'quantity': u'all'}, u'no one': {u'quantity': u'none'}, u'nobody': {u'quantity': u'none'}, u'somebody': {u'quantity': u'part', u'sentence type': u'affirmative'}, u'someone': {u'quantity': u'part', u'sentence type': u'affirmative'}}, u'place': {u'anywhere': {u'quantity': u'part', u'sentence type': u'negative'}, u'everywhere': {u'quantity': u'all'}, u'nowhere': {u'quantity': u'none'}, u'somewhere': {u'quantity': u'part', u'sentence type': u'affirmative'}}, u'thing': {u'anything': {u'quantity': u'part', u'sentence type': u'negative'}, u'everything': {u'quantity': u'all'}, u'nothing': {u'quantity': u'none'}, u'something': {u'quantity': u'part', u'sentence type': u'affirmative'}}}, u'object': {u'her': {u'gender': u'feminine', u'number': u'singular', u'person': u'third'}, u'him': {u'gender': u'masculine', u'number': u'singular', u'person': u'third'}, u'it': {u'gender': u'neuter', u'number': u'singular', u'person': u'third'}, u'me': {u'number': u'singular', u'person': u'first'}, u'them': {u'number': u'plural', u'person': u'third'}, u'us': {u'number': u'plural', u'person': u'first'}, u'you': {u'number': [u'singular', u'plural'], u'person': u'second'}}, u'possessive': {u'dependent': {u'her': {u'gender': u'feminine', u'number': u'singular', u'person': u'third'}, u'his': {u'gender': u'masculine', u'number': u'singular', u'person': u'third'}, u'its': {u'gender': u'neuter', u'number': u'singular', u'person': u'third'}, u'my': {u'number': u'singular', u'person': u'first'}, u'our': {u'number': u'plural', u'person': u'first'}, u'their': {u'number': u'plural', u'person': u'third'}, u'your': {u'number': [u'singular', u'plural'], u'person': u'second'}}, u'independent': {u'hers': {u'gender': u'feminine', u'number': u'singular', u'person': u'third'}, u'his': {u'gender': u'masculine', u'number': u'singular', u'person': u'third'}, u'mine': {u'number': u'singular', u'person': u'first'}, u'ours': {u'number': u'plural', u'person': u'first'}, u'theirs': {u'number': u'plural', u'person': u'third'}, u'yours': {u'number': [u'singular', u'plural'], u'person': u'second'}}}, u'reflexive': {u'herself': {u'gender': u'feminine', u'number': u'singular', u'person': u'third'}, u'himself': {u'gender': u'masculine', u'number': u'singular', u'person': u'third'}, u'itself': {u'gender': u'neuter', u'number': u'singular', u'person': u'third'}, u'myself': {u'number': u'singular', u'person': u'first'}, u'ourselves': {u'number': u'plural', u'person': u'first'}, u'themselves': {u'number': u'plural', u'person': u'third'}, u'yourself': {u'number': u'singular', u'person': u'second'}, u'yourselves': {u'number': u'plural', u'person': u'second'}}, u'subject': {u'he': {u'gender': u'masculine', u'number': u'singular', u'person': u'third'}, u'i': {u'number': u'singular', u'person': u'first'}, u'it': {u'gender': u'neuter', u'number': u'singular', u'person': u'third'}, u'she': {u'gender': u'feminine', u'number': u'singular', u'person': u'third'}, u'they': {u'number': u'plural', u'person': u'third'}, u'we': {u'number': u'plural', u'person': u'first'}, u'you': {u'number': [u'singular', u'plural'], u'person': u'second'}}}, u'question words': {u'how': {u'response': u'manner'}, u'what': {u'response': u'object'}, u'when': {u'response': u'time'}, u'where': {u'response': u'location'}, u'which': {u'response': u'choice'}, u'who': {u'response': u'person'}, u'why': {u'response': u'reason'}}, u'verbs': {u'auxiliaries': {u'have': {u'had': {u'number': [u'singular', u'plural'], u'person': [u'first', u'second', u'third'], u'tense': u'past'}, u'has': {u'number': u'singular', u'person': u'third', u'tense': u'present'}, u'have': {u'number': [u'singular', u'plural'], u'person': [u'first', u'second', u'third'], u'tense': u'present'}}, u'modals': {u'can': {u'past': u'could', u'root': [u'ability', u'permission']}, u'may': {u'certainty': u'0.5', u'root': [u'permission', u'possibility']}, u'might': {u'certainty': u'0.5', u'root': [u'permission', u'possibility']}, u'must': {u'certainty': u'1', u'root': u'obligation'}, u'shall': {u'certainty': u'1', u'root': [u'obligation', u'prediction']}, u'should': {u'certainty': u'0.75', u'root': u'obligation'}, u'will': {u'certainty': u'1', u'past': u'would', u'root': [u'volition', u'prediction']}}, u'to do': {u'did': {u'number': [u'singular', u'plural'], u'person': [u'first', u'second', u'third'], u'tense': u'simple past'}, u'do': {u'number': [u'singular', u'plural'], u'person': [u'first', u'second', u'third'], u'tense': u'present'}, u'does': {u'number': u'singular', u'person': u'third', u'tense': u'present'}, u'done': {u'tense': u'past participle'}}}, u'lexical verbs': {u'appreciate': {u'past participle': u'appreciated', u'sentiment': u'0.75', u'simple past': u'appreciated'}, u'believe': {u'certainty': u'0.75', u'past participle': u'believed', u'simple past': u'believed'}, u'dislike': {u'antonym': u'like', u'past participle': u'disliked', u'sentiment': u'-0.75', u'simple past': u'disliked'}, u'enjoy': {u'past participle': u'enjoyed', u'sentiment': u'1', u'simple past': u'enjoyed'}, u'guess': {u'certainty': u'0.5', u'past participle': u'guessed', u'simple past': u'guessed'}, u'hate': {u'antonym': u'love', u'past participle': u'hated', u'sentiment': u'-1', u'simple past': u'hated'}, u'know': {u'certainty': u'1', u'past participle': u'known', u'simple past': u'knew'}, u'like': {u'antonym': u'dislike', u'past participle': u'liked', u'sentiment': u'0.75', u'simple past': u'liked'}, u'love': {u'antonym': u'hate', u'past participle': u'loved', u'sentiment': u'1', u'simple past': u'loved'}, u'suppose': {u'certainty': u'0.5', u'past participle': u'supposed', u'simple past': u'supposed'}, u'think': {u'certainty': u'0.75', u'past participle': u'tought', u'simple past': u'thought'}}, u'to be': {u'am': {u'number': u'singular', u'person': u'first', u'tense': u'present'}, u'are': {u'number': [u'singular', u'plural'], u'person': [u'second', u'third'], u'tense': u'present'}, u'been': {u'tense': u'past participle'}, u'is': {u'number': u'singular', u'person': u'third', u'tense': u'present'}, u'was': {u'number': u'singular', u'person': [u'first', u'third'], u'tense': u'simple past'}, u'were': {u'number': [u'singular', u'plural'], u'person': [u'first', u'second', u'third'], u'tense': u'simple past'}}}}
LOG = <logging.Logger object>
NER = None
static analyze(chat)[source]

Analyzer factory function

Find appropriate Analyzer for this utterance

Parameters:chat (Chat) – Chat to be analyzed
Returns:analyzer – Appropriate Analyzer Subclass
Return type:Analyzer
analyze_np(rdf)[source]
static analyze_object_with_preposition(rdf)[source]
analyze_one_word_object(rdf)[source]
analyze_possessive(rdf, element)[source]
analyze_vp(rdf, utterance_info)[source]
chat

returns: chat – Chat to be analyzed :rtype: Chat

fix_predicate(predicate)[source]
get_types_in_rdf(rdf)[source]
json_file = <closed file 'C:\\Users\\Pepper\\Documents\\Pepper\\pepper\\pepper\\language\\data\\lexicon.json', mode 'r'>
perspective

returns: perspective :rtype: dict or None

rdf

returns: rdf :rtype: dict or None

utterance_type

returns: utterance_type – Utterance Type :rtype: UtteranceType

class pepper.language.analyzer.GeneralStatementAnalyzer(chat)[source]

Bases: pepper.language.analyzer.StatementAnalyzer

analyze_certainty_statement(rdf)[source]
analyze_multiword_object(rdf)[source]
static check_rdf_completeness(rdf)[source]
static extract_perspective(predicate, utterance_info=None)[source]
initialize_rdf()[source]

assumed word order: NP VP C subject is the NP, predicate is VP and complement can be NP, VP, PP, another S or nothing

perspective

returns: perspective :rtype: dict or None

class pepper.language.analyzer.ObjectStatementAnalyzer(chat)[source]

Bases: pepper.language.analyzer.StatementAnalyzer

class pepper.language.analyzer.QuestionAnalyzer(chat)[source]

Bases: pepper.language.analyzer.Analyzer

Abstract QuestionAnalyzer Object: call QuestionAnalyzer.analyze(utterance) factory function

static analyze(chat)[source]

QuestionAnalyzer factory function

Find appropriate QuestionAnalyzer for this utterance

Parameters:chat (Chat) – Chat to be analyzed
Returns:analyzer – Appropriate QuestionAnalyzer Subclass
Return type:QuestionAnalyzer
utterance_type

returns: utterance_type – Utterance Type (Question) :rtype: UtteranceType

class pepper.language.analyzer.StatementAnalyzer(chat)[source]

Bases: pepper.language.analyzer.Analyzer

Abstract StatementAnalyzer Object: call StatementAnalyzer.analyze(utterance) factory function

static analyze(chat)[source]

StatementAnalyzer factory function

Find appropriate StatementAnalyzer for this utterance

Parameters:chat (Chat) – Chat to be analyzed
Returns:analyzer – Appropriate StatementAnalyzer Subclass
Return type:StatementAnalyzer
perspective

returns: perspective :rtype: dict or None

utterance_type

returns: utterance_type – Utterance Type (Statement) :rtype: UtteranceType

class pepper.language.analyzer.VerbQuestionAnalyzer(chat)[source]

Bases: pepper.language.analyzer.QuestionAnalyzer

analyze_multiword_object(rdf)[source]
initialize_rdf()[source]
class pepper.language.analyzer.WhQuestionAnalyzer(chat)[source]

Bases: pepper.language.analyzer.QuestionAnalyzer

analyze_multiword_object(rdf)[source]
initialize_rdf()[source]

The assumed word order in wh-questions: aux before predicate, subject before object