Page MenuHomePhabricator
Authored By
Jsalsman
Sep 11 2019, 8:52 PM
Size
2 KB
Referenced Files
None
Subscribers
None
Topic-Lesson-Choice-Response-Prompt (TLCRP) "tolchorp" format version 0.4,
mediatype text/tlcrp. It is not YAML but is similar:
// example
%tlcrp
topic: tolchorp example
level: 1 // CEFR A1
lesson: format
level: 6 // CEFR C2
choice: Are you enjoying the demonstration?
media: beep.mp3
mediatype: audio/mp3;text=filename
response: {affirmative}
result: good
response: {negative}
result: bad
response: what
result: Are you enjoying the demonstration?
freeform: true
choice: good
media: Excellent!
choice: bad
media: I'm sorry to hear that.
prompt: {affirmative}
words: yes|yeah|sure|ok|fine|ja|si
prompt: {negative}
words: no|nah
// format
[%tlcrp] // this text following two slashes is a comment
topic: text [{name}] // text with optional name in braces
level: _ // 1 means A1, 6 means C2
lesson: text [{name}] // text with optional name in braces
// optional level (default is topic's)
choice: question [{name}] // text with optional name in braces
// body of choice unnecessary if same text (and name) is defined elsewhere
// optional activity (text e.g. "assignment <URL>"), disabled (true/false),
// proofread (as past tense adjective: default true=good, false=iffy),
// media (text, file descriptor or base64), mediatype, and level
response: prompt display text [{name}]
result: [choice question text and/or name] // final state if missing
// optional terminal (true means next choice is last; default is false),
// activity (e.g. "assignment <URL>"), action (e.g. "[%python\n]..."),
// plus as below for unnested prompts.
[response...]
[choice...]
[lesson...]
[topic...]
// optional unnested items:
topic: text [{name}]
level: _ // 1 means A1, 6 means C2
lesson...
lesson: text [{name}]
// optional level (default is topic's)
choice...
choice: question [{name}]
// body of choice unnecessary if same text (and name) is defined elsewhere
// optional activity (text e.g. "assignment <URL>"), disabled (true/false),
// proofread (as past tense adjective: default true=good, false=iffy),
// media (file descriptor or base64), mediatype, and level
response...
response: prompt display text [{name}]
result: [choice question text and/or name] // final state if missing
// optional terminal (true means next choice is last; default is false),
// activity (e.g. "assignment <URL>"), action (e.g. "[%python\n]..."),
// plus as below for unnested prompts.
prompt: display text [{name}]
// optional language (default: en), words (default from display text),
// media (file descriptor or base64), level, phonemes (default from words),
// and freeform (default is false: no keyword spotting)
// end mediatype text/tlcrp

File Metadata

Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
7959133
Default Alt Text
tlcrp (2 KB)

Event Timeline

Tolchirp format (Spoken Language Interest Group)

Topic-Lesson-Choice-Response-Result-Prompt (TLCRP or TLCRRP) "tolchorp" format version 0.5,
mediatype text/tlcrp. It is not YAML but is similar:
// example

%tlcrp // or %tlcrrp or %tolchirp or %tolchorrp or %tolchorp 
topic: tolchorp example
 level: 1 // CEFR A1
 lesson: format
   level: 6 // CEFR C2
   choice: Are you enjoying the demonstration?
     media: beep.mp3
     mediatype: audio/mp3;text=filename
     response: {affirmative}
       result: good
     response: {negative}
       result: bad
     response: what
       result: Are you enjoying the demonstration?
       freeform: true
   choice: good
     media: Excellent!
   choice: bad
     media: I'm sorry to hear that.
prompt: {affirmative}
  words: yes|yeah|sure|ok|fine|ja|si
prompt: {negative}
  words: no|nah
// format

[%tlcrp] // this text following two slashes is a comment

topic: text [{name}] // text with optional name in braces
  level: _ // 1 means A1, 6 means C2

  lesson: text [{name}] // text with optional name in braces
    // optional level (default is topic's)

    choice: question [{name}] // text with optional name in braces
      // body of choice unnecessary if same text (and name) is defined elsewhere
      // optional activity (text e.g. "assignment <URL>"), disabled (true/false),
      //   proofread (as past tense adjective: default true=good, false=iffy),
      //   media (text, file descriptor or base64), mediatype, and level

      response: prompt display text [{name}]
        result: [choice question text and/or name] // final state if missing
        // optional terminal (true means next choice is last; default is false),
        // activity (e.g. "assignment <URL>"), action (e.g. "[%python\n]..."),
        // plus as below for unnested prompts.
      [response...]
    [choice...]
  [lesson...]
[topic...]

// optional unnested items:

topic: text [{name}]
  level: _ // 1 means A1, 6 means C2
  lesson...

lesson: text [{name}]
  // optional level (default is topic's)
  choice...

choice: question [{name}]
  // body of choice unnecessary if same text (and name) is defined elsewhere
  // optional activity (text e.g. "assignment <URL>"), disabled (true/false),
  //   media (file descriptor or base64), mediatype, and level
  response...

response: prompt display text [{name}]
  result: [choice question text and/or name] // final state if missing
  // optional terminal (true means next choice is last; default is false),
  // activity (e.g. "assignment <URL>"), action (e.g. "[%python\n]..."),
  // plus as below for unnested prompts.

prompt: display text [{name}]
  // optional language (default: en), words (default from display text),
  //   media (file descriptor or base64), level, phonemes (default from words),
  //   and freeform (default is false: no keyword spotting)
// schema

Please see https://phabricator.wikimedia.org/F30248764

#!/usr/bin/env python3

import dataset
from sqlalchemy.types import *
...
from autocorrect import spell
from itertools import product
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score, KFold, cross_val_predict
from numpy import asarray

connect_string = 'postgresql://jsalsman@/sctest?host=/var/opt/gitlab/postgresql'

def create_database(dbname='sctest', clobber=False):
    db = dataset.connect(connect_string)
    t = db['users'] # makes primary key autoincrementing integer 'id'
    t.create_column('email', String(length=100))....
 
// table format

Topic
Lesson
Choice
Response
Result
Prompt
...
Tolchorrp example
Format
Are you enjoying the demonstration?
{affirmative}
Good
yes,
Yeah


Level 6
Beep
audio/mp3










Good
Excellent!










Bad
I'm sorry to hear that.










What
Are you enjoying the demonstration?










Freeform
{negative}
Bad
no|nah