@@ -10,8 +10,15 @@ def __str__(self):
10
10
'$ java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer'
11
11
% (self .server_url ))
12
12
13
- class StanfordCoreNLP :
13
+ class StanfordCoreNLPError (Exception ):
14
+ def __init__ (self , reason , message ):
15
+ self .reason = reason
16
+ self .message = message
17
+
18
+ def __str__ (self ):
19
+ return "%s(%s): %s" % (self .__class__ .__name__ ,self .reason ,self .message )
14
20
21
+ class StanfordCoreNLP :
15
22
def __init__ (self , server_url ):
16
23
if server_url [- 1 ] == '/' :
17
24
server_url = server_url [:- 1 ]
@@ -30,19 +37,15 @@ def annotate(self, text, properties=None):
30
37
except requests .exceptions .ConnectionError :
31
38
raise NoStanfordCoreNLPServer (self .server_url )
32
39
33
- data = text .encode ()
34
40
r = requests .post (
35
41
self .server_url , params = {
36
42
'properties' : str (properties )
37
- }, data = data , headers = {'Connection' : 'close' })
38
- output = r .text
39
- if ('outputFormat' in properties
40
- and properties ['outputFormat' ] == 'json' ):
41
- try :
42
- output = json .loads (output , strict = True )
43
- except :
44
- pass
45
- return output
43
+ }, data = text .encode (), headers = {'Connection' : 'close' })
44
+ if not r .ok :
45
+ raise StanfordCoreNLPError (r .reason , r .text )
46
+ if properties .get ('outputFormat' ) == 'json' :
47
+ return json .loads (r .text )
48
+ return r .text
46
49
47
50
def tokensregex (self , text , pattern , filter ):
48
51
return self .regex ('/tokensregex' , text , pattern , filter )
@@ -56,9 +59,6 @@ def regex(self, endpoint, text, pattern, filter):
56
59
'pattern' : pattern ,
57
60
'filter' : filter
58
61
}, data = text )
59
- output = r .text
60
- try :
61
- output = json .loads (r .text )
62
- except :
63
- pass
64
- return output
62
+ if not r .ok :
63
+ raise StanfordCoreNLPError (r .reason , r .text )
64
+ return json .loads (r .text )
0 commit comments