From dfd52db72ee57f78ba62be8b751b0261329816d0 Mon Sep 17 00:00:00 2001 From: Xander Vertegaal Date: Fri, 29 Nov 2024 09:57:53 +0100 Subject: [PATCH 1/2] Introductory words --- frontend/src/app/aethel/aethel.component.html | 223 +++++++++--------- frontend/src/app/home/home.component.html | 8 +- 2 files changed, 124 insertions(+), 107 deletions(-) diff --git a/frontend/src/app/aethel/aethel.component.html b/frontend/src/app/aethel/aethel.component.html index bae67ae..ed849df 100644 --- a/frontend/src/app/aethel/aethel.component.html +++ b/frontend/src/app/aethel/aethel.component.html @@ -1,114 +1,127 @@

Æthel

-

- Welcome to Æthel. Search for a word or lemma in the input field below to - start. +

+ Æthel is a semantic compositionality dataset for Dutch. It consists of a + lexicon of supertags for about 900k words in context, together with + validated derivations for some 70k sample sentences, associating them with + programs (lambda terms) for their meaning composition. Æthel’s types and + derivations are obtained by means of an extraction algorithm applied to the + syntactic analyses of LASSY Small, the gold standard corpus of written + Dutch. +

+ +

+ More info can be found under About and + References. The notations are explained + under Notation. +

+ +

+ You can use the interface below to search for a word or lemma. Once you have + retrieved a sample, you can inspect it to isolate and look into a word, a + type, or a word-type pair. You can then look for other words that occur with + the same type, or other occurrences of the same word-type pair.

@if (status$ | async) { -
-
- -
- + +
+ +
+ + +
+ @if (form.touched && form.invalid) { +

+ Please enter at least three characters. +

+ } +
+ +} @else { +

The Æthel dataset is temporarily unavailable.

+} @if (submitted | async) { + + + + + + Word + + + + Lemma + + + + Type + + + + Samples + + + + + + + -
- @if (form.touched && form.invalid) { -

- Please enter at least three characters. -

- } -
- -} -@else { -

- The Æthel dataset is temporarily unavailable. -

-} - -@if (submitted | async) { - - - - - - Word - - - - Lemma - - - - Type - - - - Samples - - - - - - - - - - {{ combineWord(row) }} - {{ combineLemma(row) }} - - {{ row.sampleCount }} - - - - - No results found. - - - - - - + + {{ combineWord(row) }} + {{ combineLemma(row) }} + + {{ row.sampleCount }} + + + + + No results found. + + + + + + } diff --git a/frontend/src/app/home/home.component.html b/frontend/src/app/home/home.component.html index 5d48da2..fba3c9f 100644 --- a/frontend/src/app/home/home.component.html +++ b/frontend/src/app/home/home.component.html @@ -1,2 +1,6 @@ -

Welcome to ParsePort

-

Here are some introductory words.

\ No newline at end of file +

ParsePort

+ +

+ Welcome to ParsePort, a growing collection of NLP-related parsers and parsed + corpora developed at Utrecht University. +

From 286c3a495936cb0577c348ce28087cce61271a14 Mon Sep 17 00:00:00 2001 From: Xander Vertegaal Date: Fri, 29 Nov 2024 12:04:25 +0100 Subject: [PATCH 2/2] Styling updates --- frontend/src/app/aethel/aethel.component.html | 268 ++++++++++-------- .../sample-details/sample-data.component.html | 4 +- frontend/src/app/home/home.component.html | 16 +- frontend/src/app/menu/menu.component.html | 14 +- .../app/references/references.component.html | 130 +++++++-- frontend/src/app/routes.ts | 6 +- frontend/src/app/sample/sample.component.html | 167 ++++++----- frontend/src/app/sample/sample.component.scss | 6 +- .../export-text/export-text.component.scss | 2 +- .../spindle-about.component.html | 176 ++++++++---- .../spindle-notation.component.html | 116 +++++--- .../src/app/spindle/spindle.component.html | 164 ++++++----- .../src/app/spindle/spindle.component.scss | 4 - 13 files changed, 648 insertions(+), 425 deletions(-) diff --git a/frontend/src/app/aethel/aethel.component.html b/frontend/src/app/aethel/aethel.component.html index ed849df..45f7903 100644 --- a/frontend/src/app/aethel/aethel.component.html +++ b/frontend/src/app/aethel/aethel.component.html @@ -1,127 +1,149 @@ -

Æthel

+
+
+
+

Æthel

+

+ Æthel is a semantic compositionality dataset for Dutch. It + consists of a lexicon of supertags for about 900k words in + context, together with validated derivations for some 70k sample + sentences, associating them with programs (lambda terms) for + their meaning composition. Æthel’s types and derivations are + obtained by means of an extraction algorithm applied to the + syntactic analyses of LASSY Small, the gold standard corpus of + written Dutch. +

+

+ More info can be found under + About and + References. The + notations are explained under + Notation. +

+

+ You can use the interface below to search for a word or lemma. + Once you have retrieved a sample, you can inspect it to isolate + and look into a word, a type, or a word-type pair. You can then + look for other words that occur with the same type, or other + occurrences of the same word-type pair. +

-

- Æthel is a semantic compositionality dataset for Dutch. It consists of a - lexicon of supertags for about 900k words in context, together with - validated derivations for some 70k sample sentences, associating them with - programs (lambda terms) for their meaning composition. Æthel’s types and - derivations are obtained by means of an extraction algorithm applied to the - syntactic analyses of LASSY Small, the gold standard corpus of written - Dutch. -

- -

- More info can be found under About and - References. The notations are explained - under Notation. -

- -

- You can use the interface below to search for a word or lemma. Once you have - retrieved a sample, you can inspect it to isolate and look into a word, a - type, or a word-type pair. You can then look for other words that occur with - the same type, or other occurrences of the same word-type pair. -

- -@if (status$ | async) { -
-
- -
- - +
+ +
+ + +
+ @if (form.touched && form.invalid) { +

+ Please enter at least three characters. +

+ } +
+ + } @else { +

+ The Æthel dataset is temporarily unavailable. +

+ } @if (submitted | async) { + + + + + + Word + + + + Lemma + + + + Type + + + + Samples + + + + + + + + + + {{ combineWord(row) }} + {{ combineLemma(row) }} + + {{ row.sampleCount }} + + + + + + No results found. + + + + + + + + }
- @if (form.touched && form.invalid) { -

- Please enter at least three characters. -

- }
- -} @else { -

The Æthel dataset is temporarily unavailable.

-} @if (submitted | async) { - - - - - - Word - - - - Lemma - - - - Type - - - - Samples - - - - - - - - - - {{ combineWord(row) }} - {{ combineLemma(row) }} - - {{ row.sampleCount }} - - - - - No results found. - - - - - - -} +
diff --git a/frontend/src/app/aethel/sample-details/sample-data.component.html b/frontend/src/app/aethel/sample-details/sample-data.component.html index 524dad1..b278042 100644 --- a/frontend/src/app/aethel/sample-details/sample-data.component.html +++ b/frontend/src/app/aethel/sample-details/sample-data.component.html @@ -1,9 +1,9 @@ -
    +
      @for (sample of visibleSamples(); track $index) {
    • {{ $index + 1 }}

      -

      +

      @for (phrase of sample.phrases; track phrase.index) { {{ phrase.display }} diff --git a/frontend/src/app/home/home.component.html b/frontend/src/app/home/home.component.html index fba3c9f..f500acd 100644 --- a/frontend/src/app/home/home.component.html +++ b/frontend/src/app/home/home.component.html @@ -1,6 +1,12 @@ -

      ParsePort

      +
      +
      +
      +

      ParsePort

      -

      - Welcome to ParsePort, a growing collection of NLP-related parsers and parsed - corpora developed at Utrecht University. -

      +

      + Welcome to ParsePort, a growing collection of NLP-related + parsers and parsed corpora developed at Utrecht University. +

      +
      +
      +
      diff --git a/frontend/src/app/menu/menu.component.html b/frontend/src/app/menu/menu.component.html index 744420c..cbe8c76 100644 --- a/frontend/src/app/menu/menu.component.html +++ b/frontend/src/app/menu/menu.component.html @@ -37,6 +37,7 @@ class="navbar-item" [routerLink]="['/spindle']" routerLinkActive="is-active" + [routerLinkActiveOptions]="{ exact: true }" i18n > Spindle @@ -53,7 +54,7 @@ @@ -62,7 +63,16 @@ + Notation + + + diff --git a/frontend/src/app/references/references.component.html b/frontend/src/app/references/references.component.html index ee5c318..f61319b 100644 --- a/frontend/src/app/references/references.component.html +++ b/frontend/src/app/references/references.component.html @@ -1,27 +1,117 @@
      -

      References

      +
      +
      +

      References

      +
        +
      • + Kogkalidis, K. (2023). + + Dependency as Modality, Parsing as Permutation . Netherlands Graduate School of Linguistics + (E. W. Beth Dissertation Prize, FoLLI). +
      • -
        -

        Spindle

        -

        - Kogkalidis, K. (2023). Dependency as Modality, Parsing as Permutation. Netherlands Graduate School of Linguistics. -

        +
      • + Kogkalidis, K., Moortgat, M., & Moot, R. (2023). + SPINDLE: Spinning Raw Text into Lambda Terms with Graph + Attention. + In D. Croce & L. Soldaini (Eds.), + Proceedings of the 17th Conference of the European + Chapter of the Association for Computational + Linguistics: System Demonstrations + (pp. 128–135). Association for Computational Linguistics. +
      • -

        - Kogkalidis, K., Moortgat, M., & Moot, R. (2023). SPINDLE: Spinning Raw Text into Lambda Terms with Graph Attention. In D. Croce & L. Soldaini (Eds.), Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations (pp. 128–135). Association for Computational Linguistics. -

        +
      • + Kogkalidis, K., Moortgat, M., & Moot, R. (2020). + Neural Proof Nets. + In R. Fernández & T. Linzen (Eds.), + Proceedings of the 24th Conference on Computational + Natural Language Learning + (pp. 26–40). Association for Computational Linguistics. +
      • -

        - Kogkalidis, K., Moortgat, M., & Moot, R. (2020). Neural Proof Nets. In R. Fernández & T. Linzen (Eds.), Proceedings of the 24th Conference on Computational Natural Language Learning (pp. 26–40). Association for Computational Linguistics. -

        +
      • + Kogkalidis, K., Moortgat, M., & Moot, R. (2020). + ÆTHEL: Automatically Extracted Typelogical Derivations + for Dutch. + In N. Calzolari, F. Béchet, P. Blache, K. Choukri, C. Cieri, + T. Declerck, S. Goggi, H. Isahara, B. Maegaard, J. Mariani, + H. Mazo, A. Moreno, J. Odijk, & S. Piperidis (Eds.), + Proceedings of the Twelfth Language Resources and + Evaluation Conference + (pp. 5257–5266). European Language Resources Association. +
      • -

        - Kogkalidis, K., Moortgat, M., & Moot, R. (2020). ÆTHEL: Automatically Extracted Typelogical Derivations for Dutch. In N. Calzolari, F. Béchet, P. Blache, K. Choukri, C. Cieri, T. Declerck, S. Goggi, H. Isahara, B. Maegaard, J. Mariani, H. Mazo, A. Moreno, J. Odijk, & S. Piperidis (Eds.), Proceedings of the Twelfth Language Resources and Evaluation Conference (pp. 5257–5266). European Language Resources Association. -

        - -

        - Kogkalidis, K., & Moortgat, M. (2023). Geometry-Aware Supertagging with Heterogeneous Dynamic Convolutions. In E. Breitholtz, S. Lappin, S. Loaiciga, N. Ilinykh, & S. Dobnik (Eds.), Proceedings of the 2023 CLASP Conference on Learning with Small Data (LSD) (pp. 107–119). Association for Computational Linguistics. -

        -
        +
      • + Kogkalidis, K., & Moortgat, M. (2023). + Geometry-Aware Supertagging with Heterogeneous Dynamic + Convolutions. + In E. Breitholtz, S. Lappin, S. Loaiciga, N. Ilinykh, & + S. Dobnik (Eds.), + Proceedings of the 2023 CLASP Conference on Learning + with Small Data (LSD) + (pp. 107–119). Association for Computational Linguistics. +
      • +
      • + Van Noord, G. et al. (2013). + Large Scale Syntactic Annotation of Written Dutch: + Lassy. In P. Spyns & J. Odijk (Eds.), + Essential Speech and Language Technology for Dutch, + Results by the STEVIN-programme, Theory and Applications + of Natural Language Processing + (pp. 147–164). Springer. +
      • +
      +

      Source code

      +
        +
      • + Æthel (GitHub): backend code for the definition and representation of + proof-derivations, and their extraction from Lassy- and + Alpino-style parses. +
      • +
      • + Spindle (GitHub): backend code for the neural proof search engine. +
      • +
      • + ParsePort (GitHub): frontend and backend code for this web application. +
      • +
      +
      +
      diff --git a/frontend/src/app/routes.ts b/frontend/src/app/routes.ts index befc0d2..a6123ff 100644 --- a/frontend/src/app/routes.ts +++ b/frontend/src/app/routes.ts @@ -44,11 +44,7 @@ const routes: Routes = [ ] }, { - path: 'about', - component: HomeComponent, - }, - { - path: 'refs', + path: 'references', component: ReferencesComponent, }, { diff --git a/frontend/src/app/sample/sample.component.html b/frontend/src/app/sample/sample.component.html index 305114c..c5d5aea 100644 --- a/frontend/src/app/sample/sample.component.html +++ b/frontend/src/app/sample/sample.component.html @@ -1,81 +1,92 @@ - +
      + +
      +
      + @if (sampleResult$ | async; as sample;) { +

      Sample sentence

      +

      {{ sample.sentence }}

      -@if (sampleResult$ | async; as sample;) { -
      -
      -

      Sample sentence

      -

      {{ sample.sentence }}

      -
      -
      - -
      -
      -

      Term analysis

      -
      -
      -
      - - - - - - - - - - - - - - - - - - -
      #PhraseTypeSearch in Æthel
      - c{{ i }} - - {{ item.word }} - - - - @if (showButtons(phrase.items)) { -
      - - - +
      +
      +

      Term analysis

      - } -
      +
      + + + + + + + + + + + + + + + + + + + +
      #PhraseTypeSearch in Æthel
      + c{{ i }} + + {{ item.word }} + + + + + @if (showButtons(phrase.items)) { +
      + + + +
      + } +
      - -} + + } +
      +
      +
      diff --git a/frontend/src/app/sample/sample.component.scss b/frontend/src/app/sample/sample.component.scss index fcc934f..81997bd 100644 --- a/frontend/src/app/sample/sample.component.scss +++ b/frontend/src/app/sample/sample.component.scss @@ -3,9 +3,13 @@ td { .button-wrapper { display: flex; - justify-content: flex-start; + justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0.5rem; + + button { + flex: 1; + } } } diff --git a/frontend/src/app/shared/components/spindle-export/export-text/export-text.component.scss b/frontend/src/app/shared/components/spindle-export/export-text/export-text.component.scss index 8bb6f81..9b1c5a1 100644 --- a/frontend/src/app/shared/components/spindle-export/export-text/export-text.component.scss +++ b/frontend/src/app/shared/components/spindle-export/export-text/export-text.component.scss @@ -12,6 +12,6 @@ pre { max-width: 100%; - overflow: scroll; + overflow: auto; } } diff --git a/frontend/src/app/spindle/spindle-about/spindle-about.component.html b/frontend/src/app/spindle/spindle-about/spindle-about.component.html index 2d2d9d9..a8719dd 100644 --- a/frontend/src/app/spindle/spindle-about/spindle-about.component.html +++ b/frontend/src/app/spindle/spindle-about/spindle-about.component.html @@ -1,73 +1,125 @@
      -

      About

      - Spindle (“Spindle Parses Into Dependency Enhanced Lambda Expressions”) is a neurosymbolic parser for Dutch. +
      +
      +

      About Spindle and Æthel

      +

      + Spindle (“Spindle Parses Into Dependency Enhanced Lambda + Expressions”) is a neurosymbolic parser for Dutch. Spindle is + trained on Æthel (“Automatically Extracted Theorems from Lassy”), a + large dataset of machine-verified derivations extracted from LASSY + Small, the gold standard treebank of written Dutch. +

      -

      What am I seeing?

      -

      - Spindle outputs are abstract syntactic derivations in the implication-only fragment of intuitionistic linear logic (LP), extended with a family of residuated pairs of modal operators (LP◇,□). -

      +

      What am I seeing?

      +

      + Spindle outputs and Æthel samples are abstract syntactic derivations + in the implication-only fragment of intuitionistic linear logic + (LP), extended with a family of residuated pairs of modal operators + (LP◇,□). +

      -

      - This might sound scary, but it's really not that bad. - In practice, you give Spindle a Dutch sentence, and it tells you how it has been composed, explicating: -

      -
        -
      1. The (possibly higher-order) function-argument relations between constituent words and phrases
      2. -
      3. The dependencies between a "head" an the elemens dependent on it, which can be either complements or adjuncts.
      4. -
      +

      + This might sound scary, but it's really not that bad. In practice, + you give Spindle a Dutch sentence, and it tells you how it has been + composed, explicating: +

      +
        +
      1. + The (possibly higher-order) function-argument relations between + constituent words and phrases +
      2. +
      3. + The dependencies between a "head" an the elemens dependent on + it, which can be either complements or adjuncts. +
      4. +
      -

      - Which phrases can combine and how is fully determined by the formulas (aka types) assigned to the words that make them up. Logical implications in these formulas denote functions, the modalities (indexed with dependency labels) encode grammatical roles. Words combine to form larger phrases by virtue of a fixed set of inference rules for the type-forming operations. -

      -

      - A parse of a phrase is then nothing more and nothing less than a proof: a sequence of valid derivation steps leading from axioms—the formulas/types assigned to the elementary building blocks, i.e. words—to the well-formed complex expression that constitutes the eventual phrase. - You might have encountered this idea in the literature as the parsing as deduction paradigm. -

      +

      + Which phrases can combine and how is fully determined by the + formulas (aka types) assigned to the words that make them up. + Logical implications in these formulas denote functions, the + modalities (indexed with dependency labels) encode grammatical + roles. Words combine to form larger phrases by virtue of a fixed set + of inference rules for the type-forming operations. +

      +

      + A parse of a phrase is then nothing more and nothing less + than a proof: a sequence of valid derivation steps leading + from axioms—the formulas/types assigned to the elementary building + blocks, i.e. words—to the well-formed complex expression that + constitutes the eventual phrase. You might have encountered this + idea in the literature as the + parsing as deduction paradigm. +

      -

      - The interesting bit is that intuitionistic proofs also are compositional meaning instructions (or functional programs), courtesy of the Curry-Howard-de Bruijn correspondence. - What this means is that the proofs produced by Spindle are also meaning recipes (more formally λ-terms); these you can actually execute provided you have the basic ingredients—meanings for the constants/words—and a concrete interpretation for the recipe instructions, i.e. the inference steps. -

      +

      + The interesting bit is that intuitionistic proofs also are + compositional meaning instructions (or functional programs), + courtesy of the Curry-Howard-de Bruijn correspondence. What this + means is that the proofs produced by Spindle are also + meaning recipes (more formally λ-terms); these you can + actually execute provided you have the basic ingredients—meanings + for the constants/words—and a concrete interpretation for the recipe + instructions, i.e. the inference steps. +

      -
      Does this mean that Spindle is never mistaken?
      +
      Does this mean that Spindle is never mistaken?
      +

      + No. Spindle can be (and frequently is) wrong. Sometimes it can't + come up with a proof, in which case it knows it's wrong and openly + admits it. Other times it does come up with a proof, but the proof + does not capture the sentence's actual structure (either because + some word got the wrong formula, or because a logically correct but + linguistically implausible inference path has been followed). + Fortunately, every so often, Spindle is also correct: it returns a + proof that should appease both linguists and logicians. +

      -

      - No. Spindle can be (and frequently is) wrong. Sometimes it can't come up with a proof, in which case it knows it's wrong and openly admits it. Other times it does come up with a proof, but the proof does not capture the sentence's actual structure (either because some word got the wrong formula, or because a logically correct but linguistically implausible inference path has been followed). Fortunately, every so often, Spindle is also correct: it returns a proof that should appease both linguists and logicians. -

      +

      How does this even work?

      +

      + This works thanks to a sophisticated interplay between a logical + core (a miniature type checker) and two machine learning components. +

      +

      + Machine learning component (1) is a supertagger: it takes a Dutch + text (a sequence of words) as input and converts it into a sequence + of formulas of LP◇,□; +

      +

      + Machine learning component (2) is a greedy theorem prover that uses + the extracted formulas and their representations in order to resolve + the entire proof in a single step (without ever backtracking). The + output of the machine learning components is an (unverified) + candidate proof; it is passed to the type checker which + either accepts it (in which case you get to see it), or rejects it + (in which case you do not). +

      -

      How does this even work?

      -

      - This works thanks to a sophisticated interplay between a logical core (a miniature type checker) and two machine learning components. -

      -

      - Machine learning component (1) is a supertagger: it takes a Dutch text (a sequence of words) as input and converts it into a sequence of formulas of LP◇,□; -

      -

      - Machine learning component (2) is a greedy theorem prover that uses the extracted formulas and their representations in order to resolve the entire proof in a single step (without ever backtracking). - The output of the machine learning components is an (unverified) candidate proof; it is passed to the type checker which either accepts it (in which case you get to see it), or rejects it (in which case you do not). -

      +
      Ok, how does this really work?
      +

      + Please check out the literature at the relevant links section. +

      -
      Ok, how does this really work?
      - -

      - Please check out the literature at the relevant links section. -

      - - -

      Credits

      -

      - Spindle has been designed and developed as a part of the PhD thesis of Konstantinos Kogkalidis. -

      -

      - The online interface is due to the Research Software Lab, Centre of Digital Humanities at Utrecht University. -

      -

      - Funding was provided by the NWO project “A composition calculus for vector-based semantic modelling with a localization for Dutch” (grant nr. 360-89-070). -

      - -

      Contact

      -

      - For comments/complaints you can contact konstantinos(funny-a-symbol)riseup(sentence-end-marker)net -

      +

      Credits

      +

      + Spindle has been designed and developed as a part of the PhD thesis + of Konstantinos Kogkalidis. +

      +

      + The online interface is due to the Research Software Lab, Centre of + Digital Humanities at Utrecht University. +

      +

      + Funding was provided by the NWO project “A composition calculus for + vector-based semantic modelling with a localization for Dutch” + (grant nr. 360-89-070). +

      +

      Contact

      +

      + For comments/complaints you can contact + konstantinos(funny-a-symbol)riseup(sentence-end-marker)net +

      +
      +
      diff --git a/frontend/src/app/spindle/spindle-notation/spindle-notation.component.html b/frontend/src/app/spindle/spindle-notation/spindle-notation.component.html index 8909e91..50aba1e 100644 --- a/frontend/src/app/spindle/spindle-notation/spindle-notation.component.html +++ b/frontend/src/app/spindle/spindle-notation/spindle-notation.component.html @@ -1,46 +1,74 @@
      -

      Notation

      -
      -
      - Types -
      -
      atomic: T; complex: given types A, B we have - - - - - - - - - - -
      ABlinear implication
      d Adiamond with dependency label d
      d Abox with dependency label d
      -
      -
      -
      -
      Terms
      -
      atomic: c constants (i.e. words), x variables; complex: given terms M, N we have - - - - - - - - - - - - - - - - - - - -
      M N⊸ elimination, function application
      λx.M⊸ introduction, abstraction
      d Mdiamond elimination
      d Mdiamond introduction
      d Mbox elimination
      d Mbox introduction
      -
      -
      +
      +
      +

      Notation

      +
      +
      Types
      +
      + atomic: T; complex: given types + A, B we have + + + + + + + + + + + + + +
      ABlinear implication
      + ♢d A + diamond with dependency label d
      + □d A + box with dependency label d
      +
      +
      +
      +
      Terms
      +
      + atomic: c constants (i.e. words), + x variables; complex: given terms M, + N we have + + + + + + + + + + + + + + + + + + + + + + + + + +
      M N⊸ elimination, function application
      λx.M⊸ introduction, abstraction
      + ▽d M + diamond elimination
      + △d M + diamond introduction
      + ▼d M + box elimination
      + ▲d M + box introduction
      +
      +
      +
      +
      diff --git a/frontend/src/app/spindle/spindle.component.html b/frontend/src/app/spindle/spindle.component.html index 98297b0..d1d5cbf 100644 --- a/frontend/src/app/spindle/spindle.component.html +++ b/frontend/src/app/spindle/spindle.component.html @@ -1,84 +1,92 @@ -

      Spindle

      +
      +
      +
      +

      Spindle

      -
      -
      -

      Spindle is a neurosymbolic typelogical parser for Dutch.

      -

      - Upon entering a Dutch phrase, Spindle returns its analysis in the - form of a lambda term that records the steps of its derivation. - Derivations are driven by the type formulas assigned to words. These - formulas determine how words combine into larger phrases. -

      -

      - More info and can be found under - About and - References. The notations used are - explained under Notation. -

      - @if (spindleReady$ | async) { -
      -
      - - Spindle is a neurosymbolic typelogical parser for Dutch.

      + +

      + Upon entering a Dutch phrase, Spindle returns its analysis in the + form of a lambda term that records the steps of its derivation. + Derivations are driven by the type formulas assigned to words. These + formulas determine how words combine into larger phrases. +

      + +

      + More info and can be found under + About and + References. The notations used are + explained under Notation. +

      + + @if (spindleReady$ | async) { + +
      + + +

      + This field is required. +

      +
      + + } + + @if (spindleReady$ | async) { +
      + +
      + } @else { +

      Spindle is temporarily unavailable.

      + } + +
      +

      Term:

      +
      + + + + + + +
      + + c{{ i }} + + + {{ item.word }} +
      +
      + + -

      - This field is required. -

      -
      - - } +
      -@if (spindleReady$ | async) { -
      - -
      -} @else { -

      - Spindle is temporarily unavailable. -

      -} - -
      -

      Term:

      -
      - - - - - - -
      - - c{{ i }} - - - {{ item.word }} -
      -
      - diff --git a/frontend/src/app/spindle/spindle.component.scss b/frontend/src/app/spindle/spindle.component.scss index bdec5f6..e69de29 100644 --- a/frontend/src/app/spindle/spindle.component.scss +++ b/frontend/src/app/spindle/spindle.component.scss @@ -1,4 +0,0 @@ -.intro p { - margin: revert; -} -