Skip to content

Commit 57a3b1f

Browse files
committed
1 parent aea151b commit 57a3b1f

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

language/google/cloud/language/syntax.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
breaks a document down into tokens and sentences.
1919
"""
2020

21+
from google.cloud.language.sentiment import Sentiment
22+
2123

2224
class PartOfSpeech(object):
2325
"""Part of speech of a :class:`Token`."""
@@ -183,11 +185,19 @@ class Sentence(object):
183185
:param begin: The beginning offset of the sentence in the original
184186
document according to the encoding type specified
185187
in the API request.
188+
189+
:type sentiment: :class:`~google.cloud.language.sentiment.Sentiment`
190+
:param sentiment:
191+
(Optional) For calls to
192+
:meth:`~google.cloud.language.document.Document.annotate_text` where
193+
``include_sentiment`` is set to true, this field will contain the
194+
sentiment for the sentence.
186195
"""
187196

188-
def __init__(self, content, begin):
197+
def __init__(self, content, begin, sentiment=None):
189198
self.content = content
190199
self.begin = begin
200+
self.sentiment = sentiment
191201

192202
@classmethod
193203
def from_api_repr(cls, payload):
@@ -200,4 +210,11 @@ def from_api_repr(cls, payload):
200210
:returns: The sentence parsed from the API representation.
201211
"""
202212
text_span = payload['text']
203-
return cls(text_span['content'], text_span['beginOffset'])
213+
214+
try:
215+
sentiment = Sentiment.from_api_repr(payload['sentiment'])
216+
except KeyError:
217+
sentiment = None
218+
219+
return cls(text_span['content'], text_span['beginOffset'],
220+
sentiment=sentiment)

language/unit_tests/test_syntax.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,28 @@ def test_from_api_repr(self):
125125
sentence = klass.from_api_repr(payload)
126126
self.assertEqual(sentence.content, content)
127127
self.assertEqual(sentence.begin, begin)
128+
self.assertEqual(sentence.sentiment, None)
129+
130+
def test_from_api_repr_with_sentiment(self):
131+
from google.cloud.language.sentiment import Sentiment
132+
klass = self._get_target_class()
133+
content = 'All the pretty horses.'
134+
begin = -1
135+
score = 0.5
136+
magnitude = 0.5
137+
payload = {
138+
'text': {
139+
'content': content,
140+
'beginOffset': begin,
141+
},
142+
'sentiment': {
143+
'score': score,
144+
'magnitude': magnitude,
145+
}
146+
}
147+
sentence = klass.from_api_repr(payload)
148+
self.assertEqual(sentence.content, content)
149+
self.assertEqual(sentence.begin, begin)
150+
self.assertIsInstance(sentence.sentiment, Sentiment)
151+
self.assertEqual(sentence.sentiment.score, score)
152+
self.assertEqual(sentence.sentiment.magnitude, magnitude)

0 commit comments

Comments
 (0)