Skip to content

Instantly share code, notes, and snippets.

@maliabadi
Created September 18, 2012 04:21
Show Gist options
  • Save maliabadi/3741247 to your computer and use it in GitHub Desktop.
Save maliabadi/3741247 to your computer and use it in GitHub Desktop.
non parameterized sql for every evaluation of every message
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