Package featuregenerator :: Package parser :: Package berkeley :: Module standalone_parser_client
[hide private]
[frames] | no frames]

Source Code for Module featuregenerator.parser.berkeley.standalone_parser_client

 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   
13 -class BerkeleyFeatures():
14 ''' 15 Handles the connection with a Berkeley Server 16 ''' 17 18
19 - def __init__(self, url, lang=""):
20 ''' 21 Constructor 22 ''' 23 self.server = xmlrpclib.Server(url) 24 self.url = url 25 self.lang = lang
26 27 28 #Warning: not language-aware function. Use the ones above
29 - def get_features_simplesentence(self, sent_string):
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 #print "analyzing tree statistics", 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 #print 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
70 - def xmlrpc_call(self, batch):
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 #except TimeoutException: TODO: find a better way to handle timeouts 81 # sys.stderr.write("Connection to server %s failed, trying again after a few seconds...\n" % self.url) 82 # time.sleep(5) 83 return features_batch
84