forked from FirebaseExtended/firestore-nlp-extension
-
Notifications
You must be signed in to change notification settings - Fork 1
/
extension.yaml
191 lines (173 loc) · 6.18 KB
/
extension.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: firestore-natural-language-processing
version: 0.0.1
specVersion: v1beta
displayName: Firestore Natural Language Processing
description: >-
Perform Natural Language Processing (NLP) tasks on strings written to Firestore.
license: Apache-2.0
sourceUrl: https://github.com/FirebaseExtended/firestore-nlp-extension
author:
authorName: Firebase
url: https://firebase.google.com
contributors:
- authorName: Walid Bounouar
url: https://github.com/WalidBounouar
billingRequired: true
apis:
- apiName: language.googleapis.com
reason: Powers all NLP tasks performed by the extension.
roles:
- role: datastore.user
reason: Allows the extension to read input data from Cloud Firestore and write the NLP data to Cloud Firestore.
resources:
- name: firestoreNlpDocCreate
type: firebaseextensions.v1beta.function
description:
Listens for new documents in your specified Cloud Firestore collection, performs the configured NLP tasks on a specific string,
then writes the output from the NLP tasks back to the same document.
The NLP tasks available are entity extraction, sentiment analysis and content classification.
properties:
location: ${LOCATION}
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.create
resource: projects/${PROJECT_ID}/databases/(default)/documents/${COLLECTION_PATH}/{messageId}
runtime: "nodejs10"
- name: firestoreNlpDocUpdate
type: firebaseextensions.v1beta.function
description:
Listens for updates to strings in your specified Cloud Firestore collection, performs the configured NLP tasks on the string,
then writes the output from the NLP tasks back to the same document (overriding any previous data).
The NLP tasks available are entity extraction, sentiment analysis and content classification.
properties:
location: ${LOCATION}
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.update
resource: projects/${PROJECT_ID}/databases/(default)/documents/${COLLECTION_PATH}/{messageId}
runtime: "nodejs10"
params:
- param: LOCATION
label: Cloud Functions location
description: >-
Where do you want to deploy the functions created for this extension?
For help selecting a location, refer to the [location selection
guide](https://firebase.google.com/docs/functions/locations).
type: select
options:
- label: Iowa (us-central1)
value: us-central1
- label: South Carolina (us-east1)
value: us-east1
- label: Northern Virginia (us-east4)
value: us-east4
- label: Belgium (europe-west1)
value: europe-west1
- label: London (europe-west2)
value: europe-west2
- label: Frankfurt (europe-west3)
value: europe-west3
- label: Hong Kong (asia-east2)
value: asia-east2
- label: Tokyo (asia-northeast1)
value: asia-northeast1
default: us-central1
required: true
immutable: true
- param: COLLECTION_PATH
label: Collection path
description: >
What is the path of the collection that you would like to process? You may
use `{wildcard}` notation to match a subcollection of all documents in a
collection (for example: `travelLocations/{location_id}/reviews`).
example: reviews
validationRegex: "^[^/]+(/[^/]+/[^/]+)*$"
validationErrorMessage: Must be a valid Cloud Firestore Collection
default: reviews
required: true
- param: INPUT_FIELD_NAME
label: Input field name
description: >
What is the name of the field that contains the string that you want NLP to be performed on?
example: text
default: text
required: true
- param: OUTPUT_FIELD_NAME
label: Output field name
description: >
What is the name of the field that will contain the output(s) from NLP tasks?
example: textNLP
default: textNLP
required: true
- param: TASKS
label: NLP task to perform on the input data.
description: >
Select one or more NLP tasks to perform on the input data.
type: multiselect
options:
- label: Entity extraction
value: ENTITY
- label: Sentiment analysis
value: SENTIMENT
- label: Content classification
value: CLASSIFICATION
default: ENTITY
required: true
- param: ENTITY_TYPES
label: Entities to filter.
description: >
If you perform entity extraction, which entity types are you interested in? (ignored if entity extraction is not performed)
type: multiselect
options:
- label: Location
value: LOCATION
- label: Person
value: PERSON
- label: Organization
value: ORGANIZATION
- label: Event
value: EVENT
- label: Artwork
value: WORK_OF_ART
- label: Consumer product
value: CONSUMER_GOOD
- label: Other types of entities
value: OTHER
- label: Phone number
value: PHONE_NUMBER
- label: Address
value: ADDRESS
- label: Date
value: DATE
- label: Number
value: NUMBER
- label: Price
value: PRICE
- label: Unknown
value: UNKNOWN
default: LOCATION
required: true
- param: SAVE_COMMON_ENTITIES
label: Do you want entities that are common nouns to be saved?
description: >
If you perform entity extraction, entities can either be "common" or "proper". Common entities can be numerous
so you can select "No" so that they are not saved.
type: select
options:
- label: Yes
value: true
- label: No
value: false
default: false
required: true