-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser.py
More file actions
74 lines (65 loc) · 1.96 KB
/
parser.py
File metadata and controls
74 lines (65 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from corenlp import *
corenlp = StanfordCoreNLP(corenlp_path="./stanford-corenlp-full-2015-04-20/")
import json
import appo
import poss
import nsubj
import relcl
import util
import passive_voice
words = []
def parse_dependency(temp):
out_edges = {}
in_edges = {}
edges = {}
enhanced_out_edges = {}
all_dependencies = {}
global words
parse = corenlp.parse(temp)
parse = json.loads(parse)
parse = parse["sentences"][0]["indexeddependencies"]
root = parse[0][2]
del parse[0]
print parse
for relation in parse:
rel = relation[0]
dep = relation[2]
gov = relation[1]
if gov not in out_edges:
out_edges[gov] = []
out_edges[gov].append((rel, dep))
if dep not in in_edges:
in_edges[dep] = []
in_edges[dep].append((rel, gov))
if rel not in edges:
edges[rel] = []
edges[rel].append((gov,dep))
if dep not in words:
words.append(dep)
if gov not in words:
words.append(gov)
if gov not in enhanced_out_edges:
enhanced_out_edges[gov] = {}
if rel not in enhanced_out_edges[gov]:
enhanced_out_edges[gov][rel] = []
enhanced_out_edges[gov][rel].append(dep)
return out_edges,in_edges,edges,enhanced_out_edges, root
def get_all_dependencies(enhanced_out_edges,out_edges,in_edges,edges):
temp = {}
global words
for word in words:
temp[word] = util.get_all_out_edges_recursivly(out_edges,word)
return temp
def get_relations(sentence):
out_edges, in_edges, edges, enhanced_out_edges, root = parse_dependency(sentence)
enhanced_all_dependencies = get_all_dependencies(enhanced_out_edges,out_edges,in_edges,edges)
nsubj.find_nsubj(out_edges, in_edges, edges,sentence, enhanced_all_dependencies, enhanced_out_edges, root)
appo.find_appo(out_edges, in_edges, edges,sentence)
poss.find_poss(out_edges, in_edges, edges,sentence)
passive_voice.find_nsubjpass(out_edges, in_edges, edges,sentence, enhanced_all_dependencies, enhanced_out_edges, root)
while(True):
get_relations(raw_input())
"""
1. Passive nsubjpass
2. When are you going to meet him?
"""