def nlp_nlidb(question): '''STEP1: Extracting the keywords using Parser:''' tree = stanford_client.to_tree(question) top_node = penn_treebank_node.parse(tree) extracted_words, Proper_Nouns = my_parser.key_words(top_node, question) question_type = my_parser.questionType(top_node) '''STEP2: Replace words with glossary terms:''' uniqueWords = glossary.generalizedKeywords(question, extracted_words) # '''STEP2.2: Extracting the related keywords:''' uniqueWords.append(question_type) '''STEP3: Adding some manually defined rules''' allWords, conditions, target, component_value = answerGenerator(question, uniqueWords) # To be handled differently, this is here only so the master branch can run. allWords = filter(lambda x: x != None, allWords) allWords = allWords + list(target) allWords = set(allWords) '''Creating Links between allWords and tables' entities''' tables = set(semanticNet.tables(allWords)) '''required_values is not being used in our system anymore''' required_values ='' debug.debug_statement([allWords, required_values, target, conditions, tables, question_type, Proper_Nouns, component_value]) return allWords, required_values, target, conditions, tables, question_type, Proper_Nouns, component_value
def extract_rules(self, tree): tree_rules = [] tree = ptn.parse(tree) queue = Queue() queue.push(tree) i = 0 while not queue.empty(): t = queue.pop() rule = Rule(t.node_type, []) for child in t.children: queue.push(child) rule.add_child(child.node_type) tree_rules.append(rule) if None in tree_rules: raw_input('>>>') return np.array(tree_rules)