Created
September 18, 2012 04:21
-
-
Save maliabadi/3741247 to your computer and use it in GitHub Desktop.
non parameterized sql for every evaluation of every message
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
import sys | |
import csv | |
import logging | |
import json | |
from nlg.textplanning import message as msg | |
from nlg.knowledgebase import properties as prop | |
from nlg.knowledgebase import get_entity | |
from nlg.knowledgebase import education as edu | |
logging.basicConfig(format='%(message)s') | |
logger = logging.getLogger('sqlalchemy.engine') | |
logger.setLevel(logging.DEBUG) | |
class Handler(logging.StreamHandler): | |
def __init__(self, stream=None): | |
self.stream = None | |
self.history, self.filters, self.responses = [],[],[] | |
self.level = logging.DEBUG | |
self.lock = False | |
def emit(self, record): | |
self.history.append(record) | |
def clean_out(self): | |
for i, rec in enumerate(self.history): | |
if rec.funcName == "_execute_context" and rec.args == (): | |
params_hash = self.history[i+1].args[0].params | |
msg = rec.message % params_hash | |
print msg | |
self.responses.append(msg) | |
try: | |
res = self.responses[-1] | |
except: | |
res = None | |
self.responses = [] | |
return res | |
def flush(self, record): | |
sys.stdout.flush() | |
hndlr = Handler() | |
logger.addHandler(hndlr) | |
degrees = [prop.Associates(), prop.Bachelors(), prop.Masters(), prop.MBA(), prop.Doctorate(), None] | |
locations = [get_entity('State_WA'), get_entity('City_2378'), None] | |
schools = [get_entity('Inst_6581'), None] | |
subjects = [get_entity('Inst_6581'), None] | |
contexts = [] | |
def name_for_context(ctx): | |
name = [] | |
if isinstance(ctx['location'], edu.State): | |
name.append("state") | |
elif isinstance(ctx['location'], edu.City): | |
name.append("city") | |
else: | |
name.append("no_location") | |
if ctx['degree'] is not None: | |
name.append(ctx['degree'].__class__.__name__.lower()) | |
if ctx['subject']: | |
name.append("with_subject") | |
if ctx["school"]: | |
name.append("with_school") | |
return ".".join(name) | |
for degree in degrees: | |
for location in locations: | |
for school in schools: | |
for subject in subjects: | |
ctx = { 'subject': subject, | |
'degree' : degree, | |
'location' : location, | |
'school' : school, | |
} | |
contexts.append(ctx) | |
queries = {} | |
for msg_cls in msg.Message.__subclasses__(): | |
queries[msg_cls.__name__] = {} | |
for ctx in contexts: | |
try: | |
msg_cls(ctx) | |
name_for = name_for_context(ctx) | |
queries[msg_cls.__name__][name_for] = hndlr.clean_out() | |
except: | |
queries[msg_cls.__name__][name_for] = None | |
_dump = json.dumps(queries) | |
_file = open('output.json', 'w+') | |
_file.write(_dump) | |
_file.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment