Skip to content

Commit b3b28a3

Browse files
authored
improve intent classifier ui
- Also fix a bug in a call to promise.all
1 parent efdb71c commit b3b28a3

File tree

6 files changed

+39
-15
lines changed

6 files changed

+39
-15
lines changed

intent-classifier/app/index.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,10 @@ async function loadMetadata() {
5050

5151
async function classify(sentences) {
5252
const [use, intent, metadata] = await Promise.all(
53-
loadUSE(), loadIntentClassifer(DENSE_MODEL_URL), loadMetadata());
53+
[loadUSE(), loadIntentClassifer(DENSE_MODEL_URL), loadMetadata()]);
5454

5555
const {labels} = metadata;
56-
console.log('classifying', sentences);
57-
console.time(`Embedding ${sentences.length} sentences`);
5856
const activations = await use.embed(sentences);
59-
console.timeEnd(`Embedding ${sentences.length} sentences`);
6057

6158
const prediction = intent.predict(activations);
6259

intent-classifier/app/tagger.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,21 @@
2525
<body>
2626
<div class="container">
2727
<div class="app">
28+
<div class="header">
29+
This neural network is trained to identify <strong>location</strong> related tokens in <strong>weather related
30+
queries.</strong>
31+
</div>
2832
<div class="title">
29-
<p>LSTM Token Tagger</p>
3033
<div class="controls">
3134
<form id="textentry">
32-
<input id="textbox" type="text" />
35+
<input id="textbox" type="text" placeholder="Enter a weather related query" />
3336
<input id="submit" type="submit" value="Tag Tokens">
3437

3538
<select id="model-select">
3639
<option id='bidirectional-lstm' value='bidirectional-lstm' selected="selected">
3740
Bi-Directional LSTM
3841
</option>
3942
<option id='lstm' value='lstm' disabled>LSTM</option>
40-
<option id='weighted-lstm' value='weighted-lstm' disabled>Weigted LSTM</option>
4143
<option id='dense' value='dense' disabled>Dense Network</option>
4244
</select>
4345
</form>
@@ -55,4 +57,4 @@
5557
<script src="./tagger.js"></script>
5658
</body>
5759

58-
</html>
60+
</html>

intent-classifier/app/tagger.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ async function loadUSE() {
3737
const modelUrls = {
3838
'bidirectional-lstm': './models/bidirectional-tagger/model.json',
3939
'lstm': './models/lstm-tagger/model.json',
40-
'weighted-lstm': './models/weighted-tagger/model.json',
41-
'dense': './models/dense/model.json',
40+
'dense': './models/dense-tagger/model.json',
4241
};
4342

4443
const taggers = {};
@@ -285,5 +284,5 @@ window.addEventListener('load', function() {
285284

286285

287286
async function warmup() {
288-
onSendMessage('What is the weather in Cambridge MA?', 'bidirectional-lstm');
287+
tagTokens('What is the weather in Cambridge MA?', 'bidirectional-lstm');
289288
}

intent-classifier/app/tagger.scss

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ body {
2828
.container {
2929

3030
-webkit-transform: translate3d(0,0,0);
31+
32+
.header {
33+
text-align: center;
34+
padding: 20px;
35+
background-color: #ECEFF1;
36+
border-bottom: 1px solid #CFD8DC;
37+
font-family: "Roboto","Helvetica","Arial",sans-serif;
38+
font-size: 24px;
39+
line-height: 1.4em;
40+
}
41+
3142
.app {
3243
font-size: 14pt;
3344
display: flex;
@@ -38,8 +49,8 @@ body {
3849

3950
.title {
4051
height:60px;
41-
border-bottom: 2.5px solid #222;
42-
padding-left: 10px;
52+
border-bottom: 2.5px solid #263238;
53+
padding: 15px 10px 5px 20px;
4354
display: flex;
4455
flex-direction: row;
4556
}

intent-classifier/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"tagger-app": "yarn prep-client && parcel app/tagger.html --open"
1818
},
1919
"author": "",
20-
"license": "Apache 2",
20+
"license": "Apache-2.0",
2121
"dependencies": {
2222
"@tensorflow-models/universal-sentence-encoder": "1.0.1",
2323
"@tensorflow/tfjs": "1.0.2",

intent-classifier/training/train_tagger.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ async function run(
180180
});
181181

182182
mkdirp(outFolder);
183+
console.log(`Saving model to ${outFolder}`);
183184
await model.save(fileIO.fileSystem(outFolder));
184185

185186

@@ -258,6 +259,7 @@ async function run(
258259
require('@tensorflow/tfjs-node');
259260
}
260261

262+
261263
const modelOpts = {
262264
modelType: args.modelType,
263265
sequenceLength: args.sequenceLength,
@@ -274,7 +276,20 @@ async function run(
274276
batchSize: args.batchSize,
275277
};
276278

279+
let outFolder = args.outFolder;
280+
const modelType = modelOpts.modelType;
281+
if (modelType != 'bidirectional-lstm' && outFolder === defaultOutFolder) {
282+
switch (modelType) {
283+
case 'lstm':
284+
outFolder = path.resolve(__dirname, './models/lstm-tagger/');
285+
break;
286+
case 'dense':
287+
outFolder = path.resolve(__dirname, './models/dense-tagger/');
288+
break;
289+
}
290+
}
291+
277292
await run(
278-
args.embeddingsPath, args.taggedTokensPath, args.outFolder, modelOpts,
293+
args.embeddingsPath, args.taggedTokensPath, outFolder, modelOpts,
279294
trainingOpts);
280295
})();

0 commit comments

Comments
 (0)