diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | README.md | 3 | ||||
| -rw-r--r-- | index.html | 384 | ||||
| -rw-r--r-- | static/favicon.ico | bin | 0 -> 318 bytes | |||
| -rw-r--r-- | static/script.js | 240 | ||||
| -rw-r--r-- | static/styles.css | 5 | ||||
| -rw-r--r-- | wordlist.txt | 367 | 
7 files changed, 1001 insertions, 0 deletions
| diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..085876a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.ipynb_checkpoints +node_modules diff --git a/README.md b/README.md new file mode 100644 index 0000000..972604a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Travelwords + +A list of words to learn when travelling. diff --git a/index.html b/index.html new file mode 100644 index 0000000..d48c599 --- /dev/null +++ b/index.html @@ -0,0 +1,384 @@ +<!DOCTYPE html> +<html> +  <head> +    <title>Travelwords</title> +    <meta charset="utf-8"> +    <meta name="viewport" content="width=device-width, initial-scale=1.0"> +    <link rel="stylesheet" type="text/css" href="/static/styles.css"> +    <link rel="stylesheet" type="text/css" href="/travelwords/static/styles.css"> +    <link rel="shortcut icon" type="image/x-icon" href="/travelwords/static/favicon.ico"> +  </head> +  <body> +	<div class="container"> +        <div> +            <div class="home"> +                <a href="/travelwords" class="home-title">Travelwords</a> +                <span> at </span><a class="site" href="/">cyfraeviolae.org</a> +                <a class="source" href="/git/travelwords">[src]</a> +            </div> +        </div> +        <p> +            The peripatetic sorcerer Roseacrucis has teleported you to a +            foreign land. In order to communicate, you must learn the following +            words and phrases in the local language, allowing you to +            communicate, though perhaps with poor grammar. +        </p> +        <ul> +            <li>I</li> +            <li>you</li> +            <li>he</li> +            <li>she</li> +            <li>it</li> +            <li>we</li> +            <li>you all</li> +            <li>they</li> +            <li>be</li> +            <li>buy</li> +            <li>can</li> +            <li>cannot</li> +            <li>clean</li> +            <li>come</li> +            <li>could</li> +            <li>do</li> +            <li>drive</li> +            <li>explain</li> +            <li>finish</li> +            <li>go</li> +            <li>hear</li> +            <li>leave</li> +            <li>like</li> +            <li>listen</li> +            <li>live</li> +            <li>love</li> +            <li>pay</li> +            <li>read</li> +            <li>return</li> +            <li>say</li> +            <li>sell</li> +            <li>should</li> +            <li>sing</li> +            <li>sit</li> +            <li>stand</li> +            <li>study</li> +            <li>talk</li> +            <li>think</li> +            <li>try</li> +            <li>visit</li> +            <li>wait</li> +            <li>walk</li> +            <li>want</li> +            <li>write</li> +            <li>after</li> +            <li>before</li> +            <li>day after tomorrow</li> +            <li>day before yesterday</li> +            <li>early</li> +            <li>good evening</li> +            <li>good morning</li> +            <li>good night</li> +            <li>hour</li> +            <li>minute</li> +            <li>now</li> +            <li>second</li> +            <li>today</li> +            <li>tomorrow</li> +            <li>tonight</li> +            <li>week</li> +            <li>yesterday</li> +            <li>Are you closed?</li> +            <li>Are you open?</li> +            <li>Can you do *?</li> +            <li>Can you make *?</li> +            <li>Do you have *?</li> +            <li>How much does this cost?</li> +            <li>How old are you?</li> +            <li>I am from *</li> +            <li>Is it permitted?</li> +            <li>What?</li> +            <li>What is this?</li> +            <li>What is your name?</li> +            <li>When?</li> +            <li>When do you close?</li> +            <li>When do you open?</li> +            <li>Where?</li> +            <li>Where are you from?</li> +            <li>Where do you live?</li> +            <li>Who?</li> +            <li>Why?</li> +            <li>amazing</li> +            <li>angry</li> +            <li>bad</li> +            <li>big/large</li> +            <li>boring</li> +            <li>close</li> +            <li>cold</li> +            <li>cool</li> +            <li>delicious</li> +            <li>different</li> +            <li>difficult</li> +            <li>easy</li> +            <li>famous</li> +            <li>far</li> +            <li>first</li> +            <li>good</li> +            <li>happy</li> +            <li>hot</li> +            <li>hot</li> +            <li>late</li> +            <li>medium</li> +            <li>near</li> +            <li>next</li> +            <li>normal</li> +            <li>okay</li> +            <li>old</li> +            <li>perfect</li> +            <li>popular</li> +            <li>previous</li> +            <li>sad</li> +            <li>second</li> +            <li>similar to/like</li> +            <li>small</li> +            <li>strange</li> +            <li>surprising</li> +            <li>tired</li> +            <li>vegetarian</li> +            <li>very good</li> +            <li>young</li> +            <li>one</li> +            <li>two</li> +            <li>three</li> +            <li>four</li> +            <li>five</li> +            <li>six</li> +            <li>seven</li> +            <li>eight</li> +            <li>nine</li> +            <li>ten</li> +            <li>eleven</li> +            <li>twelve</li> +            <li>thirteen</li> +            <li>fourteen</li> +            <li>fifteen</li> +            <li>sixteen</li> +            <li>seventeen</li> +            <li>eighteen</li> +            <li>nineteen</li> +            <li>twenty</li> +            <li>twenty-one</li> +            <li>thirty</li> +            <li>forty</li> +            <li>fifty</li> +            <li>sixty</li> +            <li>seventy</li> +            <li>eighty</li> +            <li>ninety</li> +            <li>one hundred</li> +            <li>one hundred and one</li> +            <li>one thousand</li> +            <li>ten thousand</li> +            <li>actually</li> +            <li>always</li> +            <li>fortunately</li> +            <li>here</li> +            <li>most</li> +            <li>never</li> +            <li>often</li> +            <li>probably</li> +            <li>quickly</li> +            <li>rarely</li> +            <li>slowly</li> +            <li>some</li> +            <li>sometimes</li> +            <li>there</li> +            <li>truthfully</li> +            <li>unfortunately</li> +            <li>usually</li> +            <li>down</li> +            <li>east</li> +            <li>left</li> +            <li>north</li> +            <li>right</li> +            <li>south</li> +            <li>straight</li> +            <li>turn</li> +            <li>up</li> +            <li>west</li> +            <li>Anything is fine</li> +            <li>Both are fine</li> +            <li>Don't worry about it, no problem</li> +            <li>Excuse me</li> +            <li>For here</li> +            <li>Takeaway</li> +            <li>For one (restaurant)</li> +            <li>For two (restaurant)</li> +            <li>Go ahead</li> +            <li>Goodbye</li> +            <li>Hello</li> +            <li>Help</li> +            <li>Here you go</li> +            <li>I am from *</li> +            <li>I don't understand</li> +            <li>I don't want</li> +            <li>I understand</li> +            <li>I want *</li> +            <li>I want this (at restaurant)</li> +            <li>I want to *</li> +            <li>I want to go to *</li> +            <li>It doesn't matter/anything is ok</li> +            <li>It is not permitted</li> +            <li>It is permitted</li> +            <li>My name is *</li> +            <li>Nice to meet you</li> +            <li>Please</li> +            <li>See you later</li> +            <li>Sorry</li> +            <li>Thank you</li> +            <li>That is not the case</li> +            <li>That is the case</li> +            <li>(nth) floor of a building</li> +            <li>a glass of (wine, etc)</li> +            <li>adult</li> +            <li>airplane</li> +            <li>airport</li> +            <li>animal</li> +            <li>bad weather</li> +            <li>bags/luggage</li> +            <li>bar</li> +            <li>beer</li> +            <li>bicycle</li> +            <li>bike</li> +            <li>bird</li> +            <li>boy</li> +            <li>boyfriend</li> +            <li>breakfast</li> +            <li>building</li> +            <li>bus</li> +            <li>bus station</li> +            <li>car</li> +            <li>cash</li> +            <li>cat</li> +            <li>child</li> +            <li>city</li> +            <li>club</li> +            <li>coffee</li> +            <li>company</li> +            <li>country</li> +            <li>credit card</li> +            <li>dinner</li> +            <li>dog</li> +            <li>drink</li> +            <li>eggs</li> +            <li>everyone</li> +            <li>everything</li> +            <li>eyes</li> +            <li>fish</li> +            <li>food</li> +            <li>garbage</li> +            <li>girl</li> +            <li>girlfriend</li> +            <li>glass (of wine, water, etc)</li> +            <li>glasses</li> +            <li>good weather</li> +            <li>hair</li> +            <li>hand</li> +            <li>head</li> +            <li>hobbies</li> +            <li>holiday</li> +            <li>home</li> +            <li>hometown</li> +            <li>house</li> +            <li>human</li> +            <li>husband</li> +            <li>ice</li> +            <li>inside</li> +            <li>keys</li> +            <li>language</li> +            <li>lock</li> +            <li>lunch</li> +            <li>man</li> +            <li>mathematics</li> +            <li>me</li> +            <li>meat</li> +            <li>menu</li> +            <li>money</li> +            <li>month</li> +            <li>music</li> +            <li>music</li> +            <li>name</li> +            <li>napkin</li> +            <li>outside</li> +            <li>phone</li> +            <li>phone number</li> +            <li>place</li> +            <li>rain</li> +            <li>rental</li> +            <li>restaurant</li> +            <li>rice</li> +            <li>school</li> +            <li>seafood</li> +            <li>stairs</li> +            <li>station</li> +            <li>the check</li> +            <li>thing</li> +            <li>toilet</li> +            <li>train</li> +            <li>train station</li> +            <li>trash</li> +            <li>united states</li> +            <li>wife</li> +            <li>wine</li> +            <li>woman</li> +            <li>word</li> +            <li>work</li> +            <li>color</li> +            <li>black</li> +            <li>blue</li> +            <li>green</li> +            <li>orange</li> +            <li>red</li> +            <li>white</li> +            <li>yellow</li> +            <li>a few</li> +            <li>all</li> +            <li>almost</li> +            <li>also</li> +            <li>and</li> +            <li>anything</li> +            <li>at</li> +            <li>because</li> +            <li>both</li> +            <li>but</li> +            <li>enough</li> +            <li>if</li> +            <li>in</li> +            <li>less</li> +            <li>many</li> +            <li>more</li> +            <li>no</li> +            <li>nothing</li> +            <li>of</li> +            <li>of</li> +            <li>one of something</li> +            <li>or</li> +            <li>then</li> +            <li>therefore</li> +            <li>towards</li> +            <li>two of something</li> +            <li>with</li> +            <li>without</li> +            <li>yes</li> +            <li>yet</li> +            <li>(negation)</li> +        </ul> +    </div> +    <script src="/travelwords/static/script.js"></script> +  </body> +</html> + +<!-- +Words +Verbs conjugate for I/you +Practice questions - writing sentences + +With audio +--> diff --git a/static/favicon.ico b/static/favicon.icoBinary files differ new file mode 100644 index 0000000..4e0f88c --- /dev/null +++ b/static/favicon.ico diff --git a/static/script.js b/static/script.js new file mode 100644 index 0000000..d8dbf77 --- /dev/null +++ b/static/script.js @@ -0,0 +1,240 @@ +"use strict"; + +var ingredientsm = {} +var allIngredients = [] +for (let recipe of allRecipes) { +    for (let ingredient of recipe.ingredients) { +        if (ingredient.special) { +            continue +        } +        if (!ingredientsm[ingredient.ingredient]) { +            allIngredients.push(ingredient.ingredient) +            ingredientsm[ingredient.ingredient] = 1 +        } +    } +} +allIngredients.sort() +var ingredientsLookup = {} +for (let [idx, ingredient] of allIngredients.entries()) { +    ingredientsLookup[ingredient] = idx +} + +var globret = undefined; + +window.addEventListener('load', function(evt) { +    glpkPromise.then(function(glpk) { + +        const worker = new Worker('/static/glpk-worker.js') +        worker.onerror = (err) => { console.log(err) } +        worker.onmessage = (evt) => { +            if (evt.data.initialized) {} +            if (evt.data.result) { +                hide(document.getElementById('waiting')) +                show(document.getElementById('solution')) +                renderSolution(glpk, evt.data, globret) +            } +        } + +        document.getElementById('optimal').addEventListener('click', function(evt) { +            evt.preventDefault() +            window.globret = constructILP(glpk) +            solveILP(worker, globret) +        }) +    }) +}) + + +function renderSolution(glpk, sol, ret) { +    let ingredients = ret.ingredients +    let recipes = JSON.parse(JSON.stringify(ret.recipes)) +    let res = [] +    let batches = [] +    let origbatch = [] +    for (let [r, recipe] of recipes.entries()) { +        if (recipe.length == 0) { +            origbatch.push(r) +        } +    } +    for (let [varname, on] of Object.entries(sol.result.vars)) { +        if (!on) { continue } +        if (!varname.startsWith('y')) { continue } +        let y = Number.parseInt(varname.split('_')[1]) +        if (res.indexOf(y) != -1) { continue } +        res.push(y) +        let batch = [] +        for (let [r, recipe] of recipes.entries()) { +            if (recipe.length == 1 & recipe[0] == y) { +                batch.push(r) +            } +        } +        for (let [r, recipe] of recipes.entries()) { +            recipes[r] = recipe.filter(it => it != y) +        } +        batches.push(batch) +    } +    let ol = document.createElement('ol') + +    let li = document.createElement('li') +    li.appendChild(document.createTextNode('On-hand')) +    if (origbatch.length) { +        let ul = document.createElement('ul') +        let drinks = origbatch.map(b => allRecipes[b].name).join(', ') +        let sli = document.createElement('li') +        sli.appendChild(document.createTextNode(drinks)) +        ul.appendChild(sli) +        li.appendChild(ul) +    } +    ol.appendChild(li) + +    for (let [idx, y] of res.entries()) { +        let batch = batches[idx] +        let li = document.createElement('li') +        li.appendChild(document.createTextNode(ingredients[y])) +        if (batch.length) { +            let ul = document.createElement('ul') +            let drinks = batch.map(b => allRecipes[b].name).join(', ') +            let sli = document.createElement('li') +            sli.appendChild(document.createTextNode(drinks)) +            ul.appendChild(sli) +            li.appendChild(ul) +        } +        ol.appendChild(li) +    } +    document.getElementById('solution').innerHTML = '' +    let desc = document.createElement('p') +    if (sol.result.status == glpk.GLP_UNDEF) { +        desc.appendChild(document.createTextNode('Error: Failed to find feasible solution. Try increasing time limit.')) +    } else if (sol.result.status == glpk.GLP_FEAS) { +        desc.appendChild(document.createTextNode(`Found feasible solution of score ${-sol.result.z}.`)) +    } else if (sol.result.status == glpk.GLP_INFEAS) { +        desc.appendChild(document.createTextNode('Error: Did not find feasible solution.')) +    } else if (sol.result.status == glpk.GLP_NOFEAS) { +        desc.appendChild(document.createTextNode('Error: Problem has no feasible solution.')) +    } else if (sol.result.status == glpk.GLP_OPT) { +        desc.appendChild(document.createTextNode(`Found optimal solution of score ${-sol.result.z}.`)) +    } else if (sol.result.status == glpk.GLP_UNBND) { +        desc.appendChild(document.createTextNode('Error: Problem is unbounded.')) +    } +    document.getElementById('solution').appendChild(desc) +    if (sol.result.status == glpk.GLP_FEAS || sol.result.status == glpk.GLP_OPT) { +        document.getElementById('solution').appendChild(ol) +    } +} + +let hide = e => e.style.display = 'none'; +let show = e => e.style.display = 'inline-block'; + +function solveILP(worker, ret) { +    let seconds = Number.parseInt(document.getElementById('limit').value) +    document.getElementById('waiting').innerHTML = seconds + ' seconds...' +    hide(document.getElementById('solution')) +    show(document.getElementById('waiting')) +    let incrSeconds = () => { +        document.getElementById('waiting').innerHTML = seconds + ' seconds...' +        seconds-- +    } +    setInterval(incrSeconds, 1000) +    worker.postMessage(ret.lp) +} + +function constructILP(glpk) { +    let skip = Object.values(document.querySelector('form')).reduce((obj, field) => { +        if (field.getAttribute('x-ingredient') && field.checked) { +            obj[field.getAttribute('x-ingredient')] = 1 +        } +        return obj +    }, {}) + +    let ingredientsset = {} +    let recipes = [] + +    for (let recipe of allRecipes) { +        for (let ingredient of recipe.ingredients) { +            if (ingredient.special) { continue } +            if (skip[ingredientsLookup[ingredient.ingredient]]) { continue } +            ingredientsset[ingredient.ingredient] = 1 +        } +    } +    let ingredients = Object.keys(ingredientsset) + +    for (let recipe of allRecipes) { +        let x = [] +        for (let ingredient of recipe.ingredients) { +            if (ingredient.special) { continue } +            if (skip[ingredientsLookup[ingredient.ingredient]]) { continue } +            x.push(ingredients.indexOf(ingredient.ingredient)) +        } +        recipes.push(x) +    } +    let n_ingredients = ingredients.length + +	let makeStepR = (step, r) => `r${step}_${r}` +	let makeStepY = (step, y) => `y${step}_${y}` + +    let jsonvars = [] +    for (let step = 0; step < n_ingredients; step++) { +        for (let [r, recipe] of recipes.entries()) { +            jsonvars.push({name: makeStepR(step, r), coef: -1}) +        } +    } +    let jsonobjective = { +        direction: glpk.GLP_MIN, +        vars: jsonvars, +    } +    let jsonconstraints = [] +    for (let step = 0; step < n_ingredients; step++) { +        let vars = [] +        for (let y = 0; y < n_ingredients; y++) { +            vars.push({name: makeStepY(step, y), coef: 1}) +        } +        jsonconstraints.push({vars, bnds: {type: glpk.GLP_FX, lb: step+1}}) +    } +    for (let y = 0; y < n_ingredients; y++) { +        for (let step = 0; step < n_ingredients - 1; step++) { +            jsonconstraints.push({ +                vars: [{name: makeStepY(step+1, y), coef: 1}, {name: makeStepY(step, y), coef: -1}], +                bnds: {type: glpk.GLP_LO, lb: 0} +            }) +        } +    } +    for (let [r, recipe] of recipes.entries()) { +        for (let step = 0; step < n_ingredients; step++) { +            let total = [] +            for (let y of recipe) { +                total.push({name: makeStepY(step, y), coef: -1}) +            } +            total.push({name: makeStepR(step, r), coef: 1}) +            jsonconstraints.push({ +                vars: total, +                bnds: {type: glpk.GLP_LO, lb: (-recipe.length + 1)} +            }) +            for (let y of recipe) { +                jsonconstraints.push({ +                    vars: [{name: makeStepR(step, r), coef: 1}, {name: makeStepY(step, y), coef: -1}], +                    bnds: {type: glpk.GLP_UP, ub: 0} +                }) +            } +        } +    } +    let binaries = [] +    for (let y = 0; y < n_ingredients; y++) { +        for (let step = 0; step < n_ingredients; step++) { +            binaries.push(makeStepY(step, y)) +        } +    } +    for (let r = 0; r < recipes.length; r++) { +        for (let step = 0; step < n_ingredients; step++) { +            binaries.push(makeStepR(step, r)) +        } +    } +    let lp = { +        objective: jsonobjective, +        subjectTo: jsonconstraints, +        binaries, +        options: { +            msglev: 3, +            tmlim: Number.parseInt(document.getElementById('limit').value), +        } +    } +    return {ingredients, lp, recipes} +} diff --git a/static/styles.css b/static/styles.css new file mode 100644 index 0000000..4442223 --- /dev/null +++ b/static/styles.css @@ -0,0 +1,5 @@ +.ingredient { +    display: inline-block; +    margin-right: 5px; +    margin-bottom: 5px; +} diff --git a/wordlist.txt b/wordlist.txt new file mode 100644 index 0000000..b3f8a19 --- /dev/null +++ b/wordlist.txt @@ -0,0 +1,367 @@ +<li>Pronouns<li> +<li>I<li> +<li>you<li> +<li>he<li> +<li>she<li> +<li>it<li> +<li>we<li> +<li>you all<li> +<li>they<li> +<li><li> +<li>Verbs (conjugated for I and you)<li> +<li>be<li> +<li>buy<li> +<li>can<li> +<li>cannot<li> +<li>clean<li> +<li>come<li> +<li>could<li> +<li>do<li> +<li>drive<li> +<li>explain<li> +<li>finish<li> +<li>go<li> +<li>hear<li> +<li>leave<li> +<li>like<li> +<li>listen<li> +<li>live<li> +<li>love<li> +<li>pay<li> +<li>read<li> +<li>return<li> +<li>say<li> +<li>sell<li> +<li>should<li> +<li>sing<li> +<li>sit<li> +<li>stand<li> +<li>study<li> +<li>talk<li> +<li>think<li> +<li>try<li> +<li>visit<li> +<li>wait<li> +<li>walk<li> +<li>want<li> +<li>write<li> +<li><li> +<li>Time<li> +<li>after<li> +<li>before<li> +<li>day after tmw<li> +<li>day before yesterday<li> +<li>early<li> +<li>good evening<li> +<li>good morning<li> +<li>good night<li> +<li>hour<li> +<li>minute<li> +<li>now<li> +<li>second<li> +<li>today<li> +<li>tomorrow<li> +<li>tonight<li> +<li>week<li> +<li>yesterday<li> +<li><li> +<li>Questions<li> +<li>are you closed<li> +<li>are you open<li> +<li>can you do<li> +<li>can you make<li> +<li>do you have x<li> +<li>how much<li> +<li>how old are you<li> +<li>i am from __<li> +<li>is it permitted<li> +<li>what<li> +<li>what is this<li> +<li>what is your name<li> +<li>when<li> +<li>when do you close<li> +<li>when do you open<li> +<li>where<li> +<li>where are you from<li> +<li>where do you live<li> +<li>who<li> +<li>why<li> +<li><li> +<li>Adjectives<li> +<li>amazing<li> +<li>angry<li> +<li>bad<li> +<li>big/large<li> +<li>boring<li> +<li>close<li> +<li>cold<li> +<li>cool<li> +<li>delicious<li> +<li>different<li> +<li>difficult<li> +<li>easy<li> +<li>famous<li> +<li>far<li> +<li>first<li> +<li>good<li> +<li>happy<li> +<li>hot<li> +<li>hot<li> +<li>late<li> +<li>medium<li> +<li>near<li> +<li>next<li> +<li>normal<li> +<li>okay<li> +<li>old<li> +<li>perfect<li> +<li>popular<li> +<li>previous<li> +<li>sad<li> +<li>second<li> +<li>similar to/like<li> +<li>small<li> +<li>strange<li> +<li>surprising<li> +<li>tired<li> +<li>vegetarian<li> +<li>very good<li> +<li>young<li> +<li><li> +<li>Numbers<li> +<li>one<li> +<li>two<li> +<li>three<li> +<li>four<li> +<li>five<li> +<li>six<li> +<li>seven<li> +<li>eight<li> +<li>nine<li> +<li>ten<li> +<li>eleven<li> +<li>twelve<li> +<li>thirteen<li> +<li>fourteen<li> +<li>fifteen<li> +<li>sixteen<li> +<li>seventeen<li> +<li>eighteen<li> +<li>nineteen<li> +<li>twenty<li> +<li>twenty-one<li> +<li>thirty<li> +<li>forty<li> +<li>fifty<li> +<li>sixty<li> +<li>seventy<li> +<li>eighty<li> +<li>ninety<li> +<li>one hundred<li> +<li>one hundred and one<li> +<li>one thousand<li> +<li>ten thousand<li> +<li><li> +<li>Adverbs<li> +<li>actually<li> +<li>always<li> +<li>fortunately<li> +<li>here<li> +<li>most<li> +<li>never<li> +<li>often<li> +<li>probably<li> +<li>quickly<li> +<li>rarely<li> +<li>slowly<li> +<li>some<li> +<li>sometimes<li> +<li>there<li> +<li>truthfully<li> +<li>unfortunately<li> +<li>usually<li> +<li><li> +<li>Directions<li> +<li>down<li> +<li>east<li> +<li>left<li> +<li>north<li> +<li>right<li> +<li>south<li> +<li>straight<li> +<li>turn<li> +<li>up<li> +<li>west<li> +<li><li> +<li>Phrases<li> +<li>anything is fine<li> +<li>both are fine<li> +<li>don't worry about it, no problem<li> +<li>excuse me<li> +<li>for here<li> +<li>for one (restaurant)<li> +<li>for two<li> +<li>go ahead<li> +<li>goodbye<li> +<li>hello<li> +<li>help<li> +<li>here you go<li> +<li>i am from<li> +<li>i don't understand<li> +<li>i don't want<li> +<li>i understand<li> +<li>i want<li> +<li>i want this (at restaurant)<li> +<li>i want to<li> +<li>i want to go<li> +<li>it doesn't matter/anything is ok<li> +<li>it is not permitted<li> +<li>it is permitted<li> +<li>my name is<li> +<li>nice to meet you<li> +<li>please<li> +<li>see you later<li> +<li>sorry<li> +<li>takeaway<li> +<li>thank you<li> +<li>that is not the case<li> +<li>that is the case<li> +<li><li> +<li>Nouns<li> +<li>(nth) floor of a building<li> +<li>a glass of (wine, etc)<li> +<li>adult<li> +<li>airplane<li> +<li>airport<li> +<li>animal<li> +<li>bad weather<li> +<li>bags/luggage<li> +<li>bar<li> +<li>beer<li> +<li>bicycle<li> +<li>bike<li> +<li>bird<li> +<li>boy<li> +<li>boyfriend<li> +<li>breakfast<li> +<li>building<li> +<li>bus<li> +<li>bus station<li> +<li>car<li> +<li>cash<li> +<li>cat<li> +<li>child<li> +<li>city<li> +<li>club<li> +<li>coffee<li> +<li>company<li> +<li>country<li> +<li>credit card<li> +<li>dinner<li> +<li>dog<li> +<li>drink<li> +<li>eggs<li> +<li>everyone<li> +<li>everything<li> +<li>eyes<li> +<li>fish<li> +<li>food<li> +<li>garbage<li> +<li>girl<li> +<li>girlfriend<li> +<li>glass (of wine, water, etc)<li> +<li>glasses<li> +<li>good weather<li> +<li>hair<li> +<li>hand<li> +<li>head<li> +<li>hobbies<li> +<li>holiday<li> +<li>home<li> +<li>hometown<li> +<li>house<li> +<li>human<li> +<li>husband<li> +<li>ice<li> +<li>inside<li> +<li>keys<li> +<li>language<li> +<li>lock<li> +<li>lunch<li> +<li>man<li> +<li>mathematics<li> +<li>me<li> +<li>meat<li> +<li>menu<li> +<li>money<li> +<li>month<li> +<li>music<li> +<li>music<li> +<li>name<li> +<li>napkin<li> +<li>outside<li> +<li>phone<li> +<li>phone number<li> +<li>place<li> +<li>rain<li> +<li>rental<li> +<li>restaurant<li> +<li>rice<li> +<li>school<li> +<li>seafood<li> +<li>stairs<li> +<li>station<li> +<li>the check<li> +<li>thing<li> +<li>toilet<li> +<li>train<li> +<li>train station<li> +<li>trash<li> +<li>united states<li> +<li>wife<li> +<li>wine<li> +<li>woman<li> +<li>word<li> +<li>work<li> +<li><li> +<li>colors<li> +<li>black<li> +<li>blue<li> +<li>green<li> +<li>orange<li> +<li>red<li> +<li>white<li> +<li>yellow<li> +<li><li> +<li>utility words<li> +<li>a few<li> +<li>all<li> +<li>almost<li> +<li>also<li> +<li>and<li> +<li>anything<li> +<li>at<li> +<li>because<li> +<li>both<li> +<li>but<li> +<li>enough<li> +<li>if<li> +<li>in<li> +<li>less<li> +<li>many<li> +<li>more<li> +<li>no<li> +<li>nothing<li> +<li>of<li> +<li>of<li> +<li>one of something<li> +<li>or<li> +<li>then<li> +<li>therefore<li> +<li>towards<li> +<li>two of something<li> +<li>with<li> +<li>without<li> +<li>yes<li> +<li>yet<li> +<li>(negation)<li> | 
