@@ -33,10 +33,7 @@ def analyze_document(service, document):
3333
3434 sentences , entities = document .extract_all_sentences (service )
3535
36- try :
37- sentiments = [get_sentiment (service , sentence ) for sentence in sentences ]
38- except HttpError as e :
39- raise e
36+ sentiments = [get_sentiment (service , sentence ) for sentence in sentences ]
4037
4138 return sentiments , entities
4239
@@ -59,22 +56,6 @@ def get_request_body(text, syntax=True, entities=True, sentiment=True):
5956
6057 return body
6158
62- def get_response_with_retry (request , tries , retry = 3 ):
63- """Get the response using re-try"""
64- try :
65- response = request .execute ()
66- return response
67- except HttpError as e :
68- raise e
69- except socket .error as se :
70- if tries > retry :
71- raise se
72-
73- logging .error ('Re-trying the request {}' .format (tries ))
74-
75- tries += 1
76- return get_response_with_retry (request , tries , retry )
77-
7859
7960def get_sentiment (service , sentence ):
8061 """Get the sentence-level sentiment."""
@@ -84,15 +65,15 @@ def get_sentiment(service, sentence):
8465 docs = service .documents ()
8566 request = docs .annotateText (body = body )
8667
87- response = get_response_with_retry ( request , 1 )
68+ response = request . execute ( num_retries = 3 )
8869
89- sentiment = response .get (" documentSentiment" )
70+ sentiment = response .get (' documentSentiment' )
9071
9172 if sentiment is None :
9273 return (None , None )
9374 else :
94- pol = sentiment .get (" polarity" )
95- mag = sentiment .get (" magnitude" )
75+ pol = sentiment .get (' polarity' )
76+ mag = sentiment .get (' magnitude' )
9677
9778 if pol is None and mag is not None :
9879 pol = 0
@@ -106,41 +87,43 @@ def __init__(self, text, doc_id, doc_path):
10687 self .text = text
10788 self .doc_id = doc_id
10889 self .doc_path = doc_path
109- self .sentent_pair = None
90+ self .sentence_entity_pair = None
11091 self .label = None
11192
11293 def extract_all_sentences (self , service ):
11394 """Extract the sentences in a document."""
11495
115- if self .sentent_pair is None :
116- docs = service .documents ()
117- request_body = get_request_body (
118- self .text ,
119- syntax = True ,
120- entities = True ,
121- sentiment = False )
122- request = docs .annotateText (body = request_body )
96+ if self .sentence_entity_pair is not None :
97+ return self .sentence_entity_pair
98+
99+ docs = service .documents ()
100+ request_body = get_request_body (
101+ self .text ,
102+ syntax = True ,
103+ entities = True ,
104+ sentiment = False )
105+ request = docs .annotateText (body = request_body )
123106
124- ent_list = []
107+ ent_list = []
125108
126- response = request .execute ()
127- entities = response .get ('entities' , [])
128- sentences = response .get ('sentences' , [])
109+ response = request .execute ()
110+ entities = response .get ('entities' , [])
111+ sentences = response .get ('sentences' , [])
129112
130- sent_list = [
131- sentence .get ('text' ).get ('content' ) for sentence in sentences
132- ]
113+ sent_list = [
114+ sentence .get ('text' , {} ).get ('content' ) for sentence in sentences
115+ ]
133116
134- for entity in entities :
135- ent_type = entity .get ('type' )
136- wiki_url = entity .get ('metadata' , {}).get ('wikipedia_url' )
117+ for entity in entities :
118+ ent_type = entity .get ('type' )
119+ wiki_url = entity .get ('metadata' , {}).get ('wikipedia_url' )
137120
138- if ent_type == 'PERSON' and wiki_url is not None :
139- ent_list .append (wiki_url )
121+ if ent_type == 'PERSON' and wiki_url is not None :
122+ ent_list .append (wiki_url )
140123
141- self .sentent_pair = (sent_list , ent_list )
124+ self .sentence_entity_pair = (sent_list , ent_list )
142125
143- return self .sentent_pair
126+ return self .sentence_entity_pair
144127
145128
146129def to_sentiment_json (doc_id , sent , label ):
@@ -180,10 +163,7 @@ def to_entity_json(entity, e_tuple):
180163def get_sentiment_entities (service , document ):
181164 """Compute the overall sentiment volume in the document"""
182165
183- try :
184- sentiments , entities = analyze_document (service , document )
185- except HttpError as e :
186- raise e
166+ sentiments , entities = analyze_document (service , document )
187167
188168 sentiments = [sent for sent in sentiments if sent [0 ] is not None ]
189169 negative_sentiments = [
0 commit comments