Completed
Push — master ( 86c84c...d24805 )
by Valentin
06:29
created

demo.archive.StanfordNLP   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 6
Duplicated Lines 0 %
Metric Value
dl 0
loc 6
rs 10
wmc 2
1
import json
2
#from jsonrpc import ServerProxy, JsonRpc20, TransportTcpIp
3
import jsonrpclib
4
import fileinput
5
6
class StanfordNLP:
7
    def __init__(self, port_number=8080):
8
        self.server = jsonrpclib.Server("http://localhost:%d" % port_number)
9
10
    def parse(self, text):
11
        return json.loads(self.server.parse(text))
12
13
nlp = StanfordNLP()
14
15
def print_dot(relations,line):
16
    obj_set = set([])
17
    print("digraph relations {")
18
    for r in relations:
19
        #if r[0] != "det":
20
        obj_set.add(r[1])
21
        obj_set.add(r[2])
22
    for i in obj_set:
23
        print("\t\"{0}\"[label=\"{0}\",shape=box];".format(i))
24
    for r in relations:
25
        #if r[0] != "det":
26
        print("\t\"{0}\" -> \"{1}\"[label=\"{2}\"];".format(r[1],r[2],r[0]))
27
    print("\tlabelloc=\"t\"");
28
    print("\tlabel=\"%s\";" % line)
29
    print("}")
30
31
if __name__ == "__main__":
32
    line=input("")
33
    result = nlp.parse(line)
34
    print_dot(result['sentences'][0]['indexeddependencies'],line)
35