1 '''
2 Created on 15 Î£ÎµÏ 2011
3
4 @author: Eleftherios Avramidis
5 '''
6
7 import xmlrpclib
8 import time
9 import sys
10 from featuregenerator.languagefeaturegenerator import LanguageFeatureGenerator
11 import socket
12
14 '''
15 Handles the connection with a Berkeley Server
16 '''
17
18
20 '''
21 Constructor
22 '''
23 self.server = xmlrpclib.Server(url)
24 self.url = url
25 self.lang = lang
26
27
28
30
31 try:
32 results = self.server.BParser.parse ( sent_string )
33 except Exception as inst:
34 print type(inst)
35 print inst
36 return {}
37
38 loglikelihood = results['loglikelihood']
39 nbestList = results['nbest']
40 n = len(nbestList)
41
42 best_confidence = -1e308;
43 best_parse = ""
44 sum_confidence = 0
45
46
47 for entry in nbestList:
48 confidence = entry["confidence"]
49 parse = entry["tree"]
50 if float(confidence) > best_confidence:
51 best_confidence = float(confidence)
52 best_parse = parse
53 sum_confidence += float(confidence)
54
55
56 if n !=0:
57 avg_confidence = sum_confidence / n
58 else:
59 avg_confidence = -float('inf')
60
61 attributes = {}
62 attributes ["berkeley-n"] = str(n)
63 attributes ["berkley-loglikelihood"] = str(results['loglikelihood'])
64 attributes ["berkeley-best-parse-confidence"] = str(best_confidence)
65 attributes ["berkeley-avg-confidence"] = str(avg_confidence)
66 attributes ["berkeley-tree"] = best_parse
67 return attributes
68
69
71 socket.setdefaulttimeout(None)
72 connected = False
73 features_batch = []
74 while not connected:
75 try:
76 features_batch = self.server.BParser.parse_batch(batch)
77 connected = True
78 except:
79 time.sleep(5)
80
81
82
83 return features_batch
84