Skip to content

Commit b61b82c

Browse files
committed
Splitting out wikipedia_url as own property in language.
1 parent 9a47ded commit b61b82c

File tree

5 files changed

+60
-46
lines changed

5 files changed

+60
-46
lines changed

docs/language-usage.rst

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -171,25 +171,29 @@ metadata and other properties.
171171
>>> entities = document.analyze_entities()
172172
>>> for entity in entities:
173173
... print('=' * 20)
174-
... print(' name: %s' % (entity.name,))
175-
... print(' type: %s' % (entity.entity_type,))
176-
... print('metadata: %s' % (entity.metadata,))
177-
... print('salience: %s' % (entity.salience,))
174+
... print(' name: %s' % (entity.name,))
175+
... print(' type: %s' % (entity.entity_type,))
176+
... print('wikipedia_url: %s' % (entity.wikipedia_url,))
177+
... print(' metadata: %s' % (entity.metadata,))
178+
... print(' salience: %s' % (entity.salience,))
178179
====================
179-
name: Michelangelo Caravaggio
180-
type: PERSON
181-
metadata: {'wikipedia_url': 'http://en.wikipedia.org/wiki/Caravaggio'}
182-
salience: 0.7615959
180+
name: Michelangelo Caravaggio
181+
type: PERSON
182+
wikipedia_url: http://en.wikipedia.org/wiki/Caravaggio
183+
metadata: {}
184+
salience: 0.7615959
183185
====================
184-
name: Italian
185-
type: LOCATION
186-
metadata: {'wikipedia_url': 'http://en.wikipedia.org/wiki/Italy'}
187-
salience: 0.19960518
186+
name: Italian
187+
type: LOCATION
188+
wikipedia_url: http://en.wikipedia.org/wiki/Italy
189+
metadata: {}
190+
salience: 0.19960518
188191
====================
189-
name: The Calling of Saint Matthew
190-
type: EVENT
191-
metadata: {'wikipedia_url': 'http://en.wikipedia.org/wiki/The_Calling_of_St_Matthew_(Caravaggio)'}
192-
salience: 0.038798928
192+
name: The Calling of Saint Matthew
193+
type: EVENT
194+
wikipedia_url: http://en.wikipedia.org/wiki/The_Calling_of_St_Matthew_(Caravaggio)
195+
metadata: {}
196+
salience: 0.038798928
193197
194198
Analyze Sentiment
195199
-----------------
@@ -266,14 +270,16 @@ the response is :data:`None`.
266270
>>> # Entities present if include_entities=True
267271
>>> for entity in annotations.entities:
268272
... print('=' * 20)
269-
... print(' name: %s' % (entity.name,))
270-
... print(' type: %s' % (entity.entity_type,))
271-
... print('metadata: %s' % (entity.metadata,))
272-
... print('salience: %s' % (entity.salience,))
273+
... print(' name: %s' % (entity.name,))
274+
... print(' type: %s' % (entity.entity_type,))
275+
... print('wikipedia_url: %s' % (entity.wikipedia_url,))
276+
... print(' metadata: %s' % (entity.metadata,))
277+
... print(' salience: %s' % (entity.salience,))
273278
====================
274-
name: Moon
275-
type: LOCATION
276-
metadata: {'wikipedia_url': 'http://en.wikipedia.org/wiki/Natural_satellite'}
277-
salience: 0.11793101
279+
name: Moon
280+
type: LOCATION
281+
wikipedia_url: http://en.wikipedia.org/wiki/Natural_satellite
282+
metadata: {}
283+
salience: 0.11793101
278284
279285
.. _Features: https://cloud.google.com/natural-language/reference/rest/v1beta1/documents/annotateText#Features

gcloud/language/entity.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ class Entity(object):
5353
an organization, or location. The API associates information, such as
5454
salience and mentions, with entities.
5555
56+
The only supported metadata (as of August 2016) is ``wikipedia_url``,
57+
so this value will be removed from the passed in ``metadata``
58+
and put in its own property.
59+
5660
See:
5761
https://cloud.google.com/natural-language/reference/rest/v1beta1/Entity
5862
@@ -78,6 +82,7 @@ class Entity(object):
7882
def __init__(self, name, entity_type, metadata, salience, mentions):
7983
self.name = name
8084
self.entity_type = entity_type
85+
self.wikipedia_url = metadata.pop('wikipedia_url', None)
8186
self.metadata = metadata
8287
self.salience = salience
8388
self.mentions = mentions

gcloud/language/test_document.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,15 @@ def test_analyze_entities(self):
102102
name1 = 'R-O-C-K'
103103
name2 = 'USA'
104104
content = name1 + ' in the ' + name2
105-
metadata1 = {
106-
'wikipedia_url': 'http://en.wikipedia.org/wiki/Rock_music',
107-
}
108-
metadata2 = {
109-
'wikipedia_url': 'http://en.wikipedia.org/wiki/United_States',
110-
}
105+
wiki2 = 'http://en.wikipedia.org/wiki/United_States'
111106
salience1 = 0.91391456
112107
salience2 = 0.086085409
113108
response = {
114109
'entities': [
115110
{
116111
'name': name1,
117112
'type': EntityType.OTHER,
118-
'metadata': metadata1,
113+
'metadata': {},
119114
'salience': salience1,
120115
'mentions': [
121116
{
@@ -129,7 +124,7 @@ def test_analyze_entities(self):
129124
{
130125
'name': name2,
131126
'type': EntityType.LOCATION,
132-
'metadata': metadata2,
127+
'metadata': {'wikipedia_url': wiki2},
133128
'salience': salience2,
134129
'mentions': [
135130
{
@@ -153,14 +148,16 @@ def test_analyze_entities(self):
153148
self.assertIsInstance(entity1, Entity)
154149
self.assertEqual(entity1.name, name1)
155150
self.assertEqual(entity1.entity_type, EntityType.OTHER)
156-
self.assertEqual(entity1.metadata, metadata1)
151+
self.assertEqual(entity1.wikipedia_url, None)
152+
self.assertEqual(entity1.metadata, {})
157153
self.assertEqual(entity1.salience, salience1)
158154
self.assertEqual(entity1.mentions, [name1])
159155
entity2 = entities[1]
160156
self.assertIsInstance(entity2, Entity)
161157
self.assertEqual(entity2.name, name2)
162158
self.assertEqual(entity2.entity_type, EntityType.LOCATION)
163-
self.assertEqual(entity2.metadata, metadata2)
159+
self.assertEqual(entity2.wikipedia_url, wiki2)
160+
self.assertEqual(entity2.metadata, {})
164161
self.assertEqual(entity2.salience, salience2)
165162
self.assertEqual(entity2.mentions, [name2])
166163

gcloud/language/test_entity.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,18 @@ def _makeOne(self, *args, **kw):
2727
def test_constructor_defaults(self):
2828
name = 'Italian'
2929
entity_type = 'LOCATION'
30-
metadata = {'wikipedia_url': 'http://en.wikipedia.org/wiki/Italy'}
30+
wiki_url = 'http://en.wikipedia.org/wiki/Italy'
31+
metadata = {'wikipedia_url': wiki_url}
32+
base_metadata = {'foo': 'bar'}
33+
metadata.update(base_metadata)
3134
salience = 0.19960518
3235
mentions = ['Italian']
3336
entity = self._makeOne(name, entity_type, metadata,
3437
salience, mentions)
3538
self.assertEqual(entity.name, name)
3639
self.assertEqual(entity.entity_type, entity_type)
37-
self.assertEqual(entity.metadata, metadata)
40+
self.assertEqual(entity.wikipedia_url, wiki_url)
41+
self.assertEqual(entity.metadata, base_metadata)
3842
self.assertEqual(entity.salience, salience)
3943
self.assertEqual(entity.mentions, mentions)
4044

@@ -43,15 +47,15 @@ def test_from_api_repr(self):
4347
name = 'Italy'
4448
entity_type = 'LOCATION'
4549
salience = 0.223
46-
metadata = {'wikipedia_url': 'http://en.wikipedia.org/wiki/Italy'}
50+
wiki_url = 'http://en.wikipedia.org/wiki/Italy'
4751
mention1 = 'Italy'
4852
mention2 = 'To Italy'
4953
mention3 = 'From Italy'
5054
payload = {
5155
'name': name,
5256
'type': entity_type,
5357
'salience': salience,
54-
'metadata': metadata,
58+
'metadata': {'wikipedia_url': wiki_url},
5559
'mentions': [
5660
{'text': {'content': mention1}},
5761
{'text': {'content': mention2}},
@@ -62,5 +66,6 @@ def test_from_api_repr(self):
6266
self.assertEqual(entity.name, name)
6367
self.assertEqual(entity.entity_type, entity_type)
6468
self.assertEqual(entity.salience, salience)
65-
self.assertEqual(entity.metadata, metadata)
69+
self.assertEqual(entity.wikipedia_url, wiki_url)
70+
self.assertEqual(entity.metadata, {})
6671
self.assertEqual(entity.mentions, [mention1, mention2, mention3])

system_tests/language.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,23 @@ def test_analyze_entities(self):
4646
self.assertEqual(entity1.entity_type, EntityType.PERSON)
4747
self.assertTrue(0.7 < entity1.salience < 0.8)
4848
self.assertEqual(entity1.mentions, [entity1.name])
49-
self.assertEqual(entity1.metadata, {
50-
'wikipedia_url': 'http://en.wikipedia.org/wiki/Caravaggio',
51-
})
49+
self.assertEqual(entity1.wikipedia_url,
50+
'http://en.wikipedia.org/wiki/Caravaggio')
51+
self.assertEqual(entity1.metadata, {})
5252
# Verify entity 2.
5353
self.assertEqual(entity2.name, 'Italian')
5454
self.assertEqual(entity2.entity_type, EntityType.LOCATION)
5555
self.assertTrue(0.15 < entity2.salience < 0.25)
5656
self.assertEqual(entity2.mentions, [entity2.name])
57-
self.assertEqual(entity2.metadata, {
58-
'wikipedia_url': 'http://en.wikipedia.org/wiki/Italy',
59-
})
57+
self.assertEqual(entity2.wikipedia_url,
58+
'http://en.wikipedia.org/wiki/Italy')
59+
self.assertEqual(entity2.metadata, {})
6060
# Verify entity 3.
6161
self.assertEqual(entity3.name, 'The Calling of Saint Matthew')
6262
self.assertEqual(entity3.entity_type, EntityType.EVENT)
6363
self.assertTrue(0 < entity3.salience < 0.1)
6464
self.assertEqual(entity3.mentions, [entity3.name])
6565
wiki_url = ('http://en.wikipedia.org/wiki/'
6666
'The_Calling_of_St_Matthew_(Caravaggio)')
67-
self.assertEqual(entity3.metadata, {'wikipedia_url': wiki_url})
67+
self.assertEqual(entity3.wikipedia_url, wiki_url)
68+
self.assertEqual(entity3.metadata, {})

0 commit comments

Comments
 (0)