-
Notifications
You must be signed in to change notification settings - Fork 1
/
lambda_script.py
110 lines (95 loc) · 3.18 KB
/
lambda_script.py
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
'''
This is the api script used for the text analysis feature in lecture rusher
'''
import boto3
import json
from pprint import pprint
def lambda_handler(event, context):
comprehend = boto3.client("comprehend")
# Get sentiment data
sentiment = comprehend.detect_sentiment(Text = event['queryStringParameters']['text'], LanguageCode = "en")['Sentiment']
# Get entities
entities = comprehend.detect_entities(Text = event['queryStringParameters']['text'], LanguageCode = "en")
# Format entity data
comercial_items = []
dates = []
events= []
locations = []
organizations = []
others = []
persons = []
quantities = []
titles = []
for entity in entities['Entities']:
tag = entity['Type']
word = entity['Text']
if tag == 'COMMERCIAL_ITEM':
comercial_items.append(word)
elif tag == 'DATE':
dates.append(word)
elif tag == 'EVENT':
events.append(word)
elif tag == 'LOCATION':
locations.append(word)
elif tag == 'ORGANIZATION':
organizations.append(word)
elif tag == 'OTHER':
others.append(word)
elif tag == 'PERSON':
persons.append(word)
elif tag == 'QUANTITY':
quantities.append(word)
elif tag == 'TITLE':
titles.append(word)
# Get syntax data
syntax = comprehend.detect_syntax(Text = event['queryStringParameters']['text'], LanguageCode = "en")
# Format syntax data
verbs = []
adjs = []
nouns = []
pronouns = []
interjections= []
adverbs = []
for token in syntax['SyntaxTokens']:
tag = token["PartOfSpeech"]["Tag"]
word = token["Text"]
if tag == "INTJ":
interjections.append(word)
elif tag == "PRON":
pronouns.append(word)
elif tag == "NOUN":
nouns.append(word)
elif tag == "VERB":
verbs.append(word)
elif tag == 'ADV':
adverbs.append(word)
# Build response body
body = {
'text':event['queryStringParameters']['text'],
"sentiment":sentiment,
"entities": {
'comercial_items':comercial_items,
'dates':dates,
'events':events,
'locations':locations,
'organizations':organizations,
'others':others,
'persons':persons,
'quantities':quantities,
'titles':titles,
},
"syntax":{
'verbs':verbs,
'adjs':adjs,
'nouns':nouns,
'pronouns':pronouns,
'interjections':interjections,
'adverbs':adverbs,
}
}
return {
"isBase64Encoded": False,
"statusCode": 200,
"headers": { "Content-Type": "application/json"},
"body": json.dumps(body)
}