Chris Pollett > Students > Niravkumar

    Print View

    [Bio]

    [Blog]

    [CS297 Proposal]

    [Deliverable 1]

    [Deliverable 2]

    [Deliverable 3]

    [Deliverable 4]

    [CS297 Report - PDF]

    [CS298 Proposal]

    [CS298 Report - PDF]

    [CS298 Presentation - PDF]

    [Question Answering System Patch - PATCH]

                          

























Recursive Descent Parser

public static function generateParseUsingRDP($tagger_array){

$tree = ["cur_node" => 0];
$tree_np = Extractor::extractNPUsingRDP($tagger_array,$tree);
$tree = ["cur_node" => $tree_np['cur_node']];
$tree_vp = Extractor::extractVPUsingRDP($tagger_array,$tree);
$tree['cur_node'] = $tree_vp['cur_node'];
unset($tree_np['cur_node']);
unset($tree_vp['cur_node']);
$tree['NP'] = $tree_np['NP'];
$tree['VP'] = $tree_vp['VP'];
array_walk_recursive($tree, 'Extractor::test_print');

print_r($tree);

}

public static function extractNPUsingRDP($tagger_array,$tree){

$NP = $tree['cur_node'];
$tree_dt = ['cur_node' => $NP];
$tree_dt = Extractor::extractDTUsingRDP($tagger_array,$tree_dt);
$tree_jj = ['cur_node' => $tree_dt['cur_node']];
$tree_jj = Extractor::extractJJUsingRDP($tagger_array,$tree_jj);
$tree_nn = ['cur_node' => $tree_jj['cur_node']];
$tree_nn = Extractor::extractNNUsingRDP($tagger_array,$tree_nn);

if($NP == $tree_nn['cur_node']){

echo "No NP found"."<br/>";

}else{

$cur_node = $tree_nn['cur_node'];
unset($tree_dt['cur_node']);
$tree_new_sub['DT'] = $tree_dt;
unset($tree_jj['cur_node']);
$tree_new_sub['JJ'] = $tree_jj;
unset($tree_nn['cur_node']);
$tree_new_sub['NN'] = $tree_nn;
$tree_new['cur_node'] = $cur_node;
$tree_new['NP'] = $tree_new_sub;
return $tree_new;

}
return $tree;

}

public static function extractDTUsingRDP($tagger_array,$tree){

if("DT" == $tagger_array[$tree['cur_node']]['tag']){

echo "DT Found<br/>";
$tree['DT'] = $tagger_array[$tree['cur_node']]['token'];
$tree['cur_node'] = $tree['cur_node'] + 1;
return $tree;

}
return $tree;

}

public static function extractJJUsingRDP($tagger_array,$tree){

if("JJ" == $tagger_array[$tree['cur_node']]['tag']){

$tree['JJ'] = $tagger_array[$tree['cur_node']]['token'];
$tree['cur_node'] = $tree['cur_node'] + 1;
return $tree;

}
return $tree;

}

public static function extractNNUsingRDP($tagger_array,$tree){

if("NNP" == $tagger_array[$tree['cur_node']]['tag'] ||
"NN" == $tagger_array[$tree['cur_node']]['tag'] ||
"PRP" == $tagger_array[$tree['cur_node']]['tag']){

$tree['NNP'] = $tagger_array[$tree['cur_node']]['token'];
$tree['cur_node'] = $tree['cur_node'] + 1;
return $tree;

}
return $tree;

}

public static function extractVPUsingRDP($tagger_array,$tree){

$VP = $tree['cur_node'];
$tree_vp = ['cur_node' => $VP];
$tree_vb = ['cur_node' => $tree_vp['cur_node']];
$tree_vb = Extractor::extractVBUsingRDP($tagger_array,$tree_vb);
if($VP == $tree_vb['cur_node']){

echo "No VB found"."<br/>";

}
$tree_np = ['cur_node' => $tree_vb['cur_node']];
$tree_np = Extractor::extractNPUsingRDP($tagger_array,$tree_np);
if($VP == $tree_np['cur_node']){

echo "No VP found"."<br/>";

}else{

$cur_node = $tree_np['cur_node'];
unset($tree_vb['cur_node']);
unset($tree_np['cur_node']);
$tree_new_sub['VB'] = $tree_vb;
$tree_new_sub['NP'] = $tree_np['NP'];
$tree_new['cur_node'] = $cur_node;
$tree_new['VP'] = $tree_new_sub;
return $tree_new;

}

return $tree;

}

public static function extractVBUsingRDP($tagger_array,$tree){

if("VB" == $tagger_array[$tree['cur_node']]['tag'] || "VBD" == $tagger_array[$tree['cur_node']]['tag'] ||
"VBG" == $tagger_array[$tree['cur_node']]['tag'] || "VBN" == $tagger_array[$tree['cur_node']]['tag'] ||
"VBP" == $tagger_array[$tree['cur_node']]['tag'] || "VBZ" == $tagger_array[$tree['cur_node']]['tag'] ){

$tree['VB'] = $tagger_array[$tree['cur_node']]['token'];
$tree['cur_node'] = $tree['cur_node'] + 1;
return $tree;

}
return $tree;

}