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.ico Binary files differnew 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> |