Skip to content

Commit

Permalink
+ top 1k words regenerated (#127)
Browse files Browse the repository at this point in the history
* + cmd project
* + ValidateSampleWordCommand
* + validation and correction script
* - EeWord.cs
* + table updated
  • Loading branch information
NicklausBrain authored Dec 7, 2024
1 parent 672a169 commit 56ee7a3
Show file tree
Hide file tree
Showing 15 changed files with 6,181 additions and 8,729 deletions.
19 changes: 19 additions & 0 deletions My1kWordsEe.Cmd/My1kWordsEe.Cmd.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UserSecretsId>e55fe52e-a6f3-4b0b-930d-e82a0a9d4751</UserSecretsId>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\My1kWordsEe\My1kWordsEe.csproj" />
</ItemGroup>

</Project>
75 changes: 75 additions & 0 deletions My1kWordsEe.Cmd/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
using System.Text.Json;

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

using My1kWordsEe.Models;
using My1kWordsEe.Services.Cqs;

namespace My1kWordsEe.Cmd
{
internal class Program
{
static async Task Main(string[] args)
{
var host = My1kWordsEe.Program.BuildWebHost(new string[] { });

var getOrAddSampleWordCommand = host.Services.GetRequiredService<GetOrAddSampleWordCommand>();
var validateSampleWordCommand = host.Services.GetRequiredService<ValidateSampleWordCommand>();
var redoSampleWordCommand = host.Services.GetRequiredService<RedoSampleWordCommand>();
var log = host.Services.GetRequiredService<ILoggerFactory>().CreateLogger("cmd");

var topData = new Dictionary<string, SampleWord>();
var validationErrors = new List<string>();

for (var i = 0; i < TopWords.Length; i++)
{
var word = TopWords[i];
var wordSample = await getOrAddSampleWordCommand.Invoke(word);

if (wordSample.IsFailure)
{
log.LogError($"Failed to get word #{i}. {word} : {wordSample.Error}");
break;
}

log.LogInformation($"{wordSample.Value.EeWord} = {wordSample.Value.EnWord}");

var validationResult = await validateSampleWordCommand.Invoke(wordSample.Value);

if (validationResult.IsFailure)
{
log.LogError($"Failed to get validation result #{i}. {word} : {validationResult.Error}");
break;
}

if (validationResult.Value.IsValid)
{
log.LogInformation($"#{i}. {word} is ok!");
topData[wordSample.Value.EeWord] = wordSample.Value;
}
else
{
validationErrors.Add(validationResult.Value.EnExplanationMessage);
log.LogError($"#{i}. {word} is not ok! {validationResult.Value.EnExplanationMessage}");

var redoCommand = await redoSampleWordCommand.Invoke(word, validationResult.Value.EeExplanationMessage);
if (redoCommand.IsFailure)
{
log.LogError($"#{i}. {word} redo failed! {redoCommand.Error}");
}
log.LogInformation($"repeat #{i}. {word}");
i--;
}

await File.WriteAllBytesAsync("./top-data.json", JsonSerializer.SerializeToUtf8Bytes(topData));
await File.WriteAllBytesAsync("./validation-errors.json", JsonSerializer.SerializeToUtf8Bytes(validationErrors));
}
}

private static readonly string[] TopWords = new string[]
{
"ja", "on", "ei", "et", "kui", "oli", "ta", "ka", "see", "ning", "mis", "aga", "ma", "oma", "siis", "või", "nii", "seda", "selle", "kes", "nagu", "kuid", "tema", "pole", "veel", "kas", "mida", "välja", "juba", "võib", "vaid", "nad", "mitte", "kõik", "ole", "nende", "sest", "olid", "sa", "kus", "üle", "ära", "midagi", "pärast", "oleks", "üks", "olnud", "küll", "nüüd", "väga", "ainult", "tuleb", "enam", "need", "vastu", "mille", "olla", "kõige", "meie", "ju", "neid", "kuidas", "eest", "aasta", "palju", "ütles", "saab", "ise", "kohta", "me", "ega", "peale", "sellest", "aastal", "minu", "näiteks", "kogu", "läbi", "seal", "tagasi", "siin", "peab", "rohkem", "polnud", "mulle", "just", "olen", "teda", "kaks", "isegi", "ette", "ajal", "vahel", "mina", "ikka", "siiski", "ehk", "talle", "teha", "enne", "mul", "saa", "saanud", "poolt", "alla", "kokku", "mu", "ühe", "tal", "puhul", "samuti", "sai", "mind", "koos", "osa", "poole", "tuli", "iga", "krooni", "olema", "kuni", "kuigi", "hea", "mees", "praegu", "keegi", "võimalik", "miks", "selles", "eriti", "samas", "kuna", "elu", "peaks", "end", "aastat", "järgi", "korral", "raha", "korda", "juurde", "all", "jaoks", "kohe", "edasi", "suur", "ees", "aega", "sõnul", "juhul", "teine", "lihtsalt", "jäi", "saada", "sama", "maha", "alati", "vaja", "alles", "töö", "seotud", "seega", "olin", "ema", "kunagi", "üles", "muidugi", "tegelikult", "üldse", "enda", "teise", "võiks", "sisse", "jooksul", "hästi", "kaasa", "selleks", "aru", "ilma", "sel", "tea", "mingi", "juures", "pea", "isa", "vähemalt", "inimesed", "kinni", "meil", "aeg", "lisaks", "kelle", "ent", "endale", "sellele", "kolm", "hiljem", "jääb", "te", "ennast", "läks", "kord", "neist", "teada", "sellega", "ümber", "kahe", "uue", "teiste", "öelda", "hakkas", "lõpuks", "liiga", "selline", "pidi", "tõttu", "võtta", "ilmselt", "naine", "inimene", "päris", "antud", "minna", "näha", "olevat", "oled", "jälle", "taha", "hoopis", "suhtes", "varem", "maailma", "läheb", "tegemist", "kindlasti", "mõju", "kaudu", "taga", "neil", "lahti", "jäänud", "asi", "tegi", "peaaegu", "umbes", "mööda", "päeva", "võis", "jah", "suure", "tee", "vana", "neile", "inimese", "pool", "esimene", "vist", "eile", "tõesti", "täna", "võivad", "ütleb", "täiesti", "sinna", "viis", "teinud", "mõni", "tähendab", "riigi", "suurem", "millest", "raske", "tehtud", "teeb", "tulnud", "vähem", "järele", "võttis", "üsna", "aja", "kuhu", "sõna", "teatud", "mingit", "esimese", "uus", "oluline", "igal", "annab", "ometi", "vastavalt", "mõne", "mõned", "kasutada", "teie", "olemas", "tööd", "seetõttu", "läinud", "võrreldes", "valmis", "tabel", "alusel", "inimeste", "osas", "linna", "muud", "kohaselt", "samal", "kõrval", "isiku", "kätte", "mitu", "teised", "asja", "pigem", "maja", "eelkõige", "abil", "oleme", "anda", "tuleks", "joonis", "miljonit", "hakkab", "ongi", "ikkagi", "täis", "sinu", "kolme", "tähelepanu", "sulle", "taas", "alates", "peavad", "sageli", "küsis", "järel", "paar", "väike", "keda", "vähe", "rääkis", "sul", "täpselt", "veidi", "maa", "keele", "õige", "sind", "kuidagi", "seni", "ligi", "jõudnud", "andis", "leida", "poleks", "rääkida", "panna", "hulgas", "sina", "inimest", "kahju", "minema", "parem", "tule", "oluliselt", "vaatas", "õhtul", "sealt", "tavaliselt", "eks", "ringi", "kiiresti", "milles", "kohal", "inimesi", "arvates", "kust", "põhjal", "su", "erinevate", "viimase", "kõigi", "otsa", "saaks", "näinud", "pidada", "arv", "üksnes", "mehed", "saavad", "esitatud", "aastatel", "silmad", "siia", "ühel", "suhteliselt", "millega", "hetkel", "päeval", "paljud", "suurt", "neli", "uuesti", "mehe", "toimub", "natuke", "too", "muidu", "kõiki", "sajandi", "nimetatud", "seejärel", "peal", "maailmas", "pidanud", "viimane", "mõttes", "head", "hommikul", "teist", "võimalus", "meid", "sellist", "mõlemad", "selge", "kell", "huvi", "meile", "küsimus", "asemel", "kõrvale", "loomulikult", "sellepärast", "mil", "vahele", "keeles", "teatas", "käes", "ehkki", "kohale", "terve", "päev", "koju", "tegema", "enamasti", "äkki", "lausa", "lugu", "lapse", "said", "kuu", "õigus", "lapsed", "käigus", "kodus", "otse", "juriidilise", "pisut", "tahab", "pani", "käis", "tahtnud", "nime", "laste", "võtab", "vastas", "tunne", "poiss", "muutunud", "ülikooli", "hakata", "hulka", "auto", "tüdruk", "teisel", "pead", "silma", "sellise", "ühes", "tulla", "president", "kõike", "kasutatakse", "uut", "paremini", "nõnda", "meelde", "toodud", "kindel", "kõrge", "teed", "seas", "justkui", "sees", "nimelt", "seoses", "esimest", "esile", "vaadata", "saadud", "kooli", "teab", "elus", "kaua", "tundus", "leidis", "räägib", "näitab", "süsteemi", "viimasel", "käest", "alguses", "suutnud", "nimi", "hulk", "tänu", "üheks", "tulemused", "veelgi", "tundis", "tihti", "olgu", "lisas", "asju", "protsenti", "tohi", "võtnud", "politsei", "naise", "ravi", "nägu", "peamiselt", "korraga", "no", "aastate", "teel", "mõtles", "laps", "erinevad", "pean", "sellel", "keskmine", "tundub", "algul", "ukse", "sain", "õpetaja", "kasutatud", "riik", "kinnitas", "selgus", "tööle", "üha", "muu", "piisavalt", "firma", "noh", "kohaliku", "suunas", "jõudis", "võetud", "kuus", "rahva", "andnud", "eraldi", "leidnud", "käib", "temaga", "koguni", "alt", "määral", "tekkinud", "jääda", "õiguse", "tuntud", "ühte", "muutus", "nägi", "lugeda", "ütlesin", "temast", "tõepoolest", "nõukogude", "võibolla", "uusi", "sõltub", "toimunud", "tegu", "esineb", "poolest", "kellel", "eri", "võrra", "keelt", "koht", "kedagi", "juttu", "kuulub", "küllap", "suured", "hakkama", "seepärast", "aastast", "hoida", "surma", "tõi", "mõtlesin", "pidevalt", "tahtis", "käinud", "järgmisel", "seisis", "abi", "hakanud", "enamik", "tuua", "puudub", "vaba", "ilus", "eesmärgiks", "ammu", "valitsuse", "tekib", "leiab", "tean", "suurema", "tundi", "naised", "esimesel", "endast", "vajalik", "näeb", "teksti", "tarvis", "arvu", "juhataja", "uute", "käed", "miljoni", "meest", "siit", "varsti", "muutub", "omakorda", "omavahel", "võimaldab", "oleksid", "lausus", "toob", "toimus", "keha", "kellele", "valge", "aluseks", "mõte", "teadis", "pealegi", "istus", "viia", "esialgu", "milline", "koha", "pealt", "käe", "tänavu", "toime", "suuda", "mõnikord", "erinevaid", "saama", "igatahes", "lõpus", "käsi", "tegevuse", "üksi", "jumal", "asjad", "andmed", "peetakse", "millele", "pidas", "tõusis", "ilmus", "teadnud", "noor", "jätta", "ühest", "probleeme", "teiseks", "arvata", "paari", "möödunud", "seejuures", "kõigile", "mõista", "surnud", "eesmärk", "nädala", "muuta", "ajaks", "olukord", "kadunud", "tahan", "öelnud", "piima", "kirja", "kümme", "lõi", "mõelda", "ainus", "tehakse", "nelja", "jäid", "informatsiooni", "väiksem", "lihtne", "hoolimata", "järjest", "autor", "olete", "nemad", "vaatamata", "linnas", "kõigepealt", "pärit", "võimalusi", "tahaks", "üht", "tead", "pikk", "kusjuures", "tõenäoliselt", "kella", "ülejäänud", "korra", "valitsus", "meelest", "hääl", "ajaloo", "kuuluvad", "tagant", "ükski", "millal", "teises", "riigikogu", "vahepeal", "aitab", "nägin", "arvas", "ühiskonna", "oligi", "näe", "luua", "võimalust", "tulevad", "tähtis", "kasutamine", "püsti", "keskmiselt", "uued", "ettevõtte", "loodud", "hinnangul", "mõiste", "oska", "andmete", "kirjutab", "töötajate", "muusika", "osanud", "kasutati", "tehti", "olemasolu", "huvitav", "projekti", "tunda", "selliseid", "meeste", "teisi", "põhjuseks", "mitmeid", "sellised", "riikide", "teevad", "leitud", "erinevalt", "eelmisel", "sõnas", "üldiselt", "keel", "kahjuks", "tunduvalt", "sõnad", "rahvas", "naiste", "mõeldud", "elada", "võeti", "seaduse", "ajas", "probleem", "näitas", "jäävad", "ilmunud", "pähe", "mitmed", "juhtus", "esimees", "arvan", "peaksid", "paraku", "kiire", "andmetel", "sisu", "ühtegi", "astus", "tulid", "avatud", "silmas", "kirjutatud", "nendega", "sündinud", "kusagil", "kuulnud", "mingil", "mõtet", "saan", "vaata", "kirjutas", "ühtlasi", "lähedal", "süü", "vabariigi", "osta", "edaspidi", "organisatsiooni", "asjaolu", "aastas", "ruumi", "oodata", "teil", "suvel", "väikese", "pannud", "vanaema", "linn", "nõuab", "kodu", "niisama", "lõpuni", "oleksin", "millel", "isik", "tahad", "asub", "teid", "korras", "õnneks", "tugev", "endiselt", "valida", "aina", "teile", "kuud", "selgelt", "mängu", "punkti", "elab", "tegevus", "sugugi", "hakkasid", "andmeid", "paistis", "määratud", "nõus", "niisiis", "kuhugi", "olles", "märkis", "maailm", "milleks", "niisugune", "juht", "võimalikult", "tegid", "rolli", "tekkis", "paljude", "püüdis", "juhatuse", "olime", "võimaluse", "paneb", "külge", "anna", "rahul", "vaevalt", "leidub", "maksab", "viga", "järgmise", "pandud", "kerge", "kasvanud", "seekord", "kellegi", "mingeid", "metsa", "sõnu", "nimel", "koolis", "foto", "võime", "analüüsi", "nõukogu", "lasta", "kõigil", "eelmise", "vett", "esimesed", "küsida", "väljas", "sõnade", "aastaid", "vastava", "tõsi", "heaks", "vaatama", "usu", "arvestada", "vara", "miski", "selgub", "tundsin", "lapsi", "suunatud", "poeg", "otsustas", "laua", "pakub", "kohus", "kaheksa", "jõuab", "läksid", "põhjust", "noored", "ääres", "viisil", "täielikult", "väärtus", "teisiti", "autori", "kõne", "kasutades", "ükskõik", "raamatu", "last", "võtma", "kolmas", "vastupidi", "käesoleva", "suu", "käega", "vajab", "töös", "tulemus", "selja", "otsuse", "otsekui", "tingitud", "küllalt", "kevadel", "hind", "seisab", "teistest", "õieti", "arvestades", "hinnata", "liige", "pika", "pere", "mitme", "idee", "sügisel", "kultuuri", "niimoodi", "tüüpi", "kõigest", "arengu", "algab", "tulevikus", "minust", "kasutamise"
};
}
}
6 changes: 6 additions & 0 deletions My1kWordsEe.sln
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "My1kWordsEe", "My1kWordsEe\
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "My1kWordsEe.Tests.E2E", "My1kWordsEe.Tests.E2E\My1kWordsEe.Tests.E2E.csproj", "{E75AC254-1096-42BF-9902-8BE26FC68E8B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "My1kWordsEe.Cmd", "My1kWordsEe.Cmd\My1kWordsEe.Cmd.csproj", "{D124C849-3B0B-43AB-830C-B518BD57CE34}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -21,6 +23,10 @@ Global
{E75AC254-1096-42BF-9902-8BE26FC68E8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E75AC254-1096-42BF-9902-8BE26FC68E8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E75AC254-1096-42BF-9902-8BE26FC68E8B}.Release|Any CPU.Build.0 = Release|Any CPU
{D124C849-3B0B-43AB-830C-B518BD57CE34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D124C849-3B0B-43AB-830C-B518BD57CE34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D124C849-3B0B-43AB-830C-B518BD57CE34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D124C849-3B0B-43AB-830C-B518BD57CE34}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
42 changes: 23 additions & 19 deletions My1kWordsEe/Components/Pages/WordsPage.razor
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
@inject GetOrAddSampleWordCommand GetOrAddSampleWordCommand;

@code {
private static readonly Dictionary<EeWord, int> WordIndex = Ee1kWords.AllWords
private static readonly Dictionary<SampleWord, int> WordIndex = Ee1kWords.AllWords
.Select((w, i) => (w, i))
.ToDictionary(p => p.w, p => p.i + 1);

Expand Down Expand Up @@ -59,7 +59,7 @@
<div class="input-group mb-3">
<span class="input-group-text">Search</span>
<InputText @bind-Value="SearchTerm" @oninput="OnSearchInput" class="form-control" aria-label="Search" aria-describedby="inputGroup-sizing-default" />

@if (IsCheckInProgress)
{
<button class="btn btn-outline-primary" type="button">
Expand All @@ -73,31 +73,35 @@
</div>
</div>
<div class="row">
<Grid TItem="EeWord"
Class="table table-hover table-bordered table-striped"
Data="Ee1KWords.SelectedWords"
PageSize="10"
AllowPaging="true"
AllowSorting="true"
Responsive="true"
AllowRowClick="true"
OnRowClick="@(args => SelectWord(args.Item.Value))">
<Grid TItem="SampleWord"
Class="table table-hover table-bordered table-striped"
Data="Ee1KWords.SelectedWords"
PageSize="10"
AllowPaging="true"
AllowSorting="true"
Responsive="true"
AllowRowClick="true"
OnRowClick="@(args => SelectWord(args.Item.EeWord))">
<GridColumns>
<GridColumn TItem="EeWord" HeaderText="#" PropertyName="Id" SortKeySelector="item => WordIndex[item]">
<GridColumn TItem="SampleWord" HeaderText="#" PropertyName="Id" SortKeySelector="item => WordIndex[item]" Class="col-auto small">
@WordIndex[context]
</GridColumn>
<GridColumn TItem="EeWord" HeaderText="Eestikeelne sõna" PropertyName="Value" SortKeySelector="item => item.Value">
@context.Value
<GridColumn TItem="SampleWord" HeaderText="Eestikeelne sõna" PropertyName="EeWord" SortKeySelector="item => item.EeWord" Class="col-2 small">
@context.EeWord
</GridColumn>
<GridColumn TItem="EeWord" HeaderText="English word(s)" PropertyName="EnWord" SortKeySelector="item => item.EnWord">
@string.Join(" / ", context.EnWords)
<GridColumn TItem="SampleWord" HeaderText="English word(s)" PropertyName="EnWord" SortKeySelector="item => item.EnWord" Class="col-2 small">
@context.EnWord
@if (context.EnWords.Any() && context.EnWords.First() != context.EnWord)
{
@($" ({string.Join(" / ", context.EnWords)})")
}
</GridColumn>
<GridColumn TItem="EeWord" HeaderText="Part of speech" PropertyName="EePartOfSpeech" SortKeySelector="item => item.EePartOfSpeech">
@context.EePartOfSpeech.ToEnPartOfSpeech() / @context.EePartOfSpeech
<GridColumn TItem="SampleWord" HeaderText="Explanation" PropertyName="EnExplanation" SortKeySelector="item => item.EnExplanation" Class="col-8 small">
@context.EnExplanation
</GridColumn>
</GridColumns>
<GridTemplates>
<GridEmptyDataTemplate TItem="EeWord">
<GridEmptyDataTemplate TItem="SampleWord">
<div class="d-grid gap-2">
@if (CheckWordResult.HasValue && CheckWordResult.Value.IsFailure)
{
Expand Down
Loading

0 comments on commit 56ee7a3

Please sign in to comment.