alexa_modelbuilder 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -2
- data/lib/alexa_modelbuilder.rb +66 -43
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a547500e95eeeadcec607967625ad47db8e74ae7
|
4
|
+
data.tar.gz: b83dd6487e2774444abbdb2df0594eccd939a872
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a61d11aee196ce8c44ef060395d77db5add8c9f270cb9d17650188228f0828b80ee39ea66dad5f9d94519131cda3b968875e8c0ffcd9240bf388dc12883ae8d6
|
7
|
+
data.tar.gz: cd26e6b949d90941f6f36feefcba5178a69fdee3a7ec7bdc61fd5d444414a78710e5f140b24dacccfa5214eb13a0f841d4e79555df9346fc11b88346ecc6b3c0
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
��
|
1
|
+
�m4�؍$sr���1��x��3�e���_0���X�k8Je��A���>�]�ֲ�T����a������g$Zy�l� }��}�9��f�d5r��>�!�]�]=im �Jː�Ĝ�y�&��0&��=���
|
2
|
+
� �&5'"�������%�m�����h�G��P�噞^���9�������$/�gZH���027����Sr���1V�g��I!s{�U�X��(�7���D�`�M�U2��
|
data/lib/alexa_modelbuilder.rb
CHANGED
@@ -80,11 +80,11 @@ class AlexaModelBuilder
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def to_h()
|
83
|
-
@
|
83
|
+
@interact_model
|
84
84
|
end
|
85
85
|
|
86
86
|
def to_json(pretty: true)
|
87
|
-
pretty ? JSON.pretty_generate(@
|
87
|
+
pretty ? JSON.pretty_generate(@interact_model) : @interact_model.to_json
|
88
88
|
end
|
89
89
|
|
90
90
|
def to_s()
|
@@ -95,21 +95,45 @@ class AlexaModelBuilder
|
|
95
95
|
|
96
96
|
def parse(lines)
|
97
97
|
|
98
|
-
|
98
|
+
puts 'inside parse' if @debug
|
99
|
+
|
100
|
+
interaction = [
|
99
101
|
[:root, 'invocation: :invocation', :invocation],
|
100
102
|
[:root, 'types: :types', :types],
|
101
103
|
[:types, /(.*)/, :type],
|
102
104
|
[:root, ':intent', :intent],
|
103
105
|
[:intent, ':utterance', :utterance],
|
104
|
-
[:intent,
|
106
|
+
[:intent, /slots:/, :slots],
|
105
107
|
[:slots, /(.*)/, :slot],
|
106
108
|
[:all, /#/, :comment]
|
107
109
|
]
|
108
110
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
111
|
+
a = %w(
|
112
|
+
vendorId
|
113
|
+
locale
|
114
|
+
name
|
115
|
+
summary
|
116
|
+
description
|
117
|
+
keywords
|
118
|
+
examplePhrases
|
119
|
+
testingInstructions
|
120
|
+
endpoint
|
121
|
+
)
|
122
|
+
|
123
|
+
|
124
|
+
manifest = a.map do |word|
|
125
|
+
x = word.gsub(/(?<=.)(?=[A-Z])/,'_').downcase
|
126
|
+
[:root, "%s: :%s" % [x,x], x.to_sym]
|
127
|
+
end
|
128
|
+
|
129
|
+
a2 = manifest + interaction
|
130
|
+
puts 'a2: ' + a2.inspect if @debug
|
131
|
+
lp = LineParser.new a2, debug: @debug
|
132
|
+
lp.parse lines
|
133
|
+
h = lp.to_h
|
134
|
+
puts 'h: ' + h.inspect if @debug
|
135
|
+
|
136
|
+
model = {
|
113
137
|
'interactionModel' => {
|
114
138
|
'languageModel' => {
|
115
139
|
'invocationName' => '',
|
@@ -119,65 +143,64 @@ class AlexaModelBuilder
|
|
119
143
|
}
|
120
144
|
}
|
121
145
|
|
122
|
-
lm =
|
123
|
-
lm['invocationName'] =
|
146
|
+
lm = model['interactionModel']['languageModel']
|
147
|
+
lm['invocationName'] = h[:invocation]
|
124
148
|
|
125
|
-
|
149
|
+
intents = h[:intent].map do |row|
|
126
150
|
|
127
|
-
|
151
|
+
name, value = row.is_a?(Hash) ? row.to_a.first : [row, {}]
|
152
|
+
intent = {'name' => name , 'samples' => value[:utterance] || [] }
|
128
153
|
|
129
|
-
|
154
|
+
slots = value[:slots]
|
130
155
|
|
131
|
-
|
156
|
+
if slots then
|
132
157
|
|
133
|
-
|
134
|
-
raw_slots = x[3].find {|x| x.first == :slots }
|
158
|
+
a = slots.is_a?(Array) ? value[:slots] : [slots]
|
135
159
|
|
136
|
-
|
137
|
-
|
138
|
-
intent['slots'] = raw_slots[3].map do |slot|
|
160
|
+
intent['slots'] = a.map do |slot|
|
139
161
|
|
140
|
-
name, type = slot
|
162
|
+
name, type = slot.split(/: */,2)
|
141
163
|
{'name' => name, 'type' => type, 'samples' => []}
|
142
164
|
|
143
|
-
end
|
165
|
+
end
|
166
|
+
|
144
167
|
end
|
145
168
|
|
146
169
|
intent
|
147
170
|
|
148
171
|
end
|
149
172
|
|
150
|
-
|
151
173
|
lm['intents'] = intents
|
152
174
|
|
153
|
-
|
175
|
+
if h[:types] then
|
154
176
|
|
155
|
-
|
177
|
+
(h[:types].is_a?(Array) ? h[:types] : [h[:types]]).map do |raw_type|
|
156
178
|
|
157
|
-
|
158
|
-
|
179
|
+
name, raw_val = raw_type.split(/: */)
|
180
|
+
values = raw_val.split(/, */)
|
159
181
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
182
|
+
types = {'name' => name, 'values' => []}
|
183
|
+
|
184
|
+
types['values'] = values.map do |raw_val|
|
185
|
+
|
186
|
+
name, raw_synonyms = raw_val.split(/ *\(/,2)
|
187
|
+
|
188
|
+
h2 = {'name' => {'value' => name }}
|
189
|
+
|
190
|
+
if raw_synonyms then
|
191
|
+
synonyms = raw_synonyms[0..-2].split(/, */)
|
192
|
+
h2['synonyms'] = synonyms
|
193
|
+
end
|
194
|
+
|
195
|
+
h2
|
196
|
+
end
|
175
197
|
|
176
|
-
|
198
|
+
lm['types'] = types
|
199
|
+
end
|
177
200
|
|
178
201
|
end
|
179
202
|
|
180
|
-
@
|
203
|
+
@interact_model = model
|
181
204
|
|
182
205
|
end
|
183
206
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alexa_modelbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
EgZc9/Cpxo+WohlXR69qWm5QxX8PvdLu5ZjGD2OH5pBAPToJQyk9O8kZB9OdDMZT
|
31
31
|
tns=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2018-06-
|
33
|
+
date: 2018-06-30 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: lineparser
|
metadata.gz.sig
CHANGED
Binary file
|