From 6695bdc23b4e525ec028b42bd05133a45bf44d39 Mon Sep 17 00:00:00 2001 From: hippietrail Date: Thu, 4 Dec 2025 12:51:19 +0800 Subject: [PATCH] refactor: work in progress on `Expr` based `NominalPhrase` --- harper-core/dictionary.dict | 2 +- harper-core/src/expr/mod.rs | 2 + harper-core/src/expr/nominal_phrase.rs | 204 ++++++++++++++++++ harper-core/src/expr/sequence_expr.rs | 4 + harper-core/src/linting/for_noun.rs | 6 +- .../src/linting/hyphenate_number_day.rs | 7 +- harper-core/src/linting/if_wouldve.rs | 4 +- harper-core/src/linting/its_contraction.rs | 5 +- harper-core/src/linting/no_oxford_comma.rs | 5 +- .../src/linting/pronoun_inflection_be.rs | 9 +- .../linting/quantifier_numeral_conflict.rs | 4 +- harper-core/src/linting/take_serious.rs | 7 +- harper-core/src/patterns/nominal_phrase.rs | 32 +++ .../Alice's Adventures in Wonderland.md | 118 +++++----- .../tests/text/tagged/Computer science.md | 4 +- .../tests/text/tagged/Difficult sentences.md | 8 +- .../text/tagged/Part-of-speech tagging.md | 8 +- .../The Constitution of the United States.md | 4 +- .../tests/text/tagged/The Great Gatsby.md | 140 ++++++------ 19 files changed, 404 insertions(+), 169 deletions(-) create mode 100644 harper-core/src/expr/nominal_phrase.rs diff --git a/harper-core/dictionary.dict b/harper-core/dictionary.dict index e57ca1e2b..36a3b479b 100644 --- a/harper-core/dictionary.dict +++ b/harper-core/dictionary.dict @@ -35437,7 +35437,7 @@ newsworthy/Jp newsy/J^>N newt/~NgS newton/~NgS -next/~JPNg +next/~JP nexus/~NgS niacin/Nmg nib/NSgV diff --git a/harper-core/src/expr/mod.rs b/harper-core/src/expr/mod.rs index 51b8833ce..b9f894174 100644 --- a/harper-core/src/expr/mod.rs +++ b/harper-core/src/expr/mod.rs @@ -22,6 +22,7 @@ mod first_match_of; mod fixed_phrase; mod longest_match_of; mod mergeable_words; +mod nominal_phrase; mod optional; mod reflexive_pronoun; mod repeating; @@ -47,6 +48,7 @@ pub use first_match_of::FirstMatchOf; pub use fixed_phrase::FixedPhrase; pub use longest_match_of::LongestMatchOf; pub use mergeable_words::MergeableWords; +pub use nominal_phrase::NominalPhrase; pub use optional::Optional; pub use reflexive_pronoun::ReflexivePronoun; pub use repeating::Repeating; diff --git a/harper-core/src/expr/nominal_phrase.rs b/harper-core/src/expr/nominal_phrase.rs new file mode 100644 index 000000000..25ca924d1 --- /dev/null +++ b/harper-core/src/expr/nominal_phrase.rs @@ -0,0 +1,204 @@ +use crate::expr::{Expr, SequenceExpr}; +use crate::{Span, Token}; + +#[derive(Default)] +pub struct NominalPhrase; + +impl Expr for NominalPhrase { + fn run(&self, cursor: usize, tokens: &[Token], source: &[char]) -> Option> { + // Match a noun phrase (optional determiner + optional adjectives + one or more nouns) + let noun_phrase = SequenceExpr::default() + .then_optional(SequenceExpr::default().then_determiner().t_ws()) + .then_zero_or_more(SequenceExpr::default().then_adjective().t_ws()) + .then( + SequenceExpr::default().then_noun().then_zero_or_more( + SequenceExpr::default() + .t_ws() + .then(SequenceExpr::default().then_noun()), + ), + ); + let nominal_phrase = SequenceExpr::any_of(vec![ + Box::new(noun_phrase), + Box::new(SequenceExpr::default().then_pronoun()), + ]); + + nominal_phrase.run(cursor, tokens, source) + } +} + +#[cfg(test)] +mod tests { + use super::NominalPhrase; + use crate::Document; + use crate::expr::ExprExt; + use crate::linting::tests::SpanVecExt; + + #[test] + fn thing() { + let doc = Document::new_markdown_default_curated("thing"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["thing"]) + } + + #[test] + fn a_thing() { + let doc = Document::new_markdown_default_curated("a thing"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["a thing"]) + } + + #[test] + fn red_thing() { + let doc = Document::new_markdown_default_curated("red thing"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["red thing"]) + } + + #[test] + fn big_red_thing() { + let doc = Document::new_markdown_default_curated("big red thing"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["big red thing"]) + } + + #[test] + fn a_red_thing() { + let doc = Document::new_markdown_default_curated("a red thing"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["a red thing"]) + } + + #[test] + fn a_big_red_thing() { + let doc = Document::new_markdown_default_curated("a big red thing"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["a big red thing"]) + } + + #[test] + fn test_present_participle_and_plural() { + let doc = Document::new_markdown_default_curated("the falling rocks"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["the falling rocks"]) + } + + #[test] + fn test_gerund() { + let doc = Document::new_markdown_default_curated("a spate of vomiting"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["a spate", "vomiting"]) + } + + #[test] + fn test_compound_nouns() { + let doc = Document::new_markdown_default_curated( + "the new car park next to the old train station", + ); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!( + matches.to_strings(&doc), + vec!["the new car park", "the old train station"] + ) + } + + #[test] + fn test_pronouns() { + let doc = Document::new_markdown_default_curated("Me, myself, and I."); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["Me", "myself", "I"]) + } + + #[test] + fn test_noun_and_pronoun() { + let doc = Document::new_markdown_default_curated("Me and my dog."); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["Me", "my dog"]) + } + + // From the `NominalPhrase` `Pattern` + + #[test] + fn simple_apple() { + let doc = Document::new_markdown_default_curated("A red apple"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["A red apple"]) + } + + #[test] + fn complex_apple() { + let doc = Document::new_markdown_default_curated("A red apple with a long stem"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!(matches.to_strings(&doc), vec!["A red apple", "a long stem"]) + } + + #[test] + fn list_fruit() { + let doc = Document::new_markdown_default_curated("An apple, a banana and a pear"); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + assert_eq!( + matches.to_strings(&doc), + vec!["An apple", "a banana", "a pear"] + ) + } + + #[test] + fn simplest_banana() { + let doc = Document::new_markdown_default_curated("a banana"); + assert!(NominalPhrase.iter_matches_in_doc(&doc).next().is_some()); + } + + #[test] + fn food() { + let doc = Document::new_markdown_default_curated( + "My favorite foods are pizza, sushi, tacos and burgers.", + ); + let matches = NominalPhrase.iter_matches_in_doc(&doc).collect::>(); + + dbg!(&matches); + dbg!(matches.to_strings(&doc)); + + for span in &matches { + let gc = span + .to_char_span(doc.get_tokens()) + .get_content(doc.get_source()); + dbg!(gc); + } + + assert_eq!( + matches.to_strings(&doc), + vec!["My favorite foods", "pizza", "sushi", "tacos", "burgers"] + ) + } + + #[test] + fn simplest_way() { + let doc = Document::new_markdown_default_curated("a way"); + assert!(NominalPhrase.iter_matches_in_doc(&doc).next().is_some()); + } + + #[test] + fn present_participle_way() { + let doc = Document::new_markdown_default_curated("a winning way"); + assert!(NominalPhrase.iter_matches_in_doc(&doc).next().is_some()); + } + + #[test] + fn perfect_participle_way() { + let doc = Document::new_markdown_default_curated("a failed way"); + assert!(NominalPhrase.iter_matches_in_doc(&doc).next().is_some()); + } +} diff --git a/harper-core/src/expr/sequence_expr.rs b/harper-core/src/expr/sequence_expr.rs index 3a070ad1a..8e552794f 100644 --- a/harper-core/src/expr/sequence_expr.rs +++ b/harper-core/src/expr/sequence_expr.rs @@ -190,6 +190,10 @@ impl SequenceExpr { self.then(Repeating::new(Box::new(expr), 1)) } + pub fn then_zero_or_more(self, expr: impl Expr + 'static) -> Self { + self.then(Repeating::new(Box::new(expr), 0)) + } + /// Create a new condition that will step one token forward if met. /// If the condition is _not_ met, the whole expression returns `None`. /// diff --git a/harper-core/src/linting/for_noun.rs b/harper-core/src/linting/for_noun.rs index fe1248c8c..2f93c9a78 100644 --- a/harper-core/src/linting/for_noun.rs +++ b/harper-core/src/linting/for_noun.rs @@ -1,9 +1,7 @@ -use crate::expr::Expr; -use crate::expr::OwnedExprExt; -use crate::expr::SequenceExpr; use crate::{ Token, - patterns::{NominalPhrase, Word}, + expr::{Expr, NominalPhrase, OwnedExprExt, SequenceExpr}, + patterns::Word, }; use super::{ExprLinter, Lint, LintKind, Suggestion}; diff --git a/harper-core/src/linting/hyphenate_number_day.rs b/harper-core/src/linting/hyphenate_number_day.rs index f10124924..451d1d845 100644 --- a/harper-core/src/linting/hyphenate_number_day.rs +++ b/harper-core/src/linting/hyphenate_number_day.rs @@ -1,9 +1,8 @@ -use crate::expr::Expr; -use crate::expr::SequenceExpr; -use crate::{Token, patterns::NominalPhrase}; +use crate::Token; +use crate::expr::{Expr, NominalPhrase, SequenceExpr}; +use crate::linting::expr_linter::Chunk; use super::{ExprLinter, Lint, LintKind, Suggestion}; -use crate::linting::expr_linter::Chunk; pub struct HyphenateNumberDay { expr: Box, diff --git a/harper-core/src/linting/if_wouldve.rs b/harper-core/src/linting/if_wouldve.rs index e65b50e7c..c4b74294e 100644 --- a/harper-core/src/linting/if_wouldve.rs +++ b/harper-core/src/linting/if_wouldve.rs @@ -1,7 +1,7 @@ -use crate::expr::{Expr, SequenceExpr}; +use crate::expr::{Expr, NominalPhrase, SequenceExpr}; use crate::linting::expr_linter::Chunk; use crate::linting::{ExprLinter, LintKind, Suggestion}; -use crate::patterns::{NominalPhrase, WordSet}; +use crate::patterns::WordSet; use crate::token_string_ext::TokenStringExt; use crate::{CharStringExt, Lint, Token}; diff --git a/harper-core/src/linting/its_contraction.rs b/harper-core/src/linting/its_contraction.rs index 8ffb1a65a..27146b9e3 100644 --- a/harper-core/src/linting/its_contraction.rs +++ b/harper-core/src/linting/its_contraction.rs @@ -5,10 +5,9 @@ use crate::TokenStringExt; use crate::expr::All; use crate::expr::Expr; use crate::expr::ExprExt; +use crate::expr::NominalPhrase; use crate::expr::OwnedExprExt; use crate::expr::SequenceExpr; -use crate::patterns::NominalPhrase; -use crate::patterns::Pattern; use crate::patterns::UPOSSet; use crate::patterns::WordSet; use crate::{ @@ -79,7 +78,7 @@ impl ItsContraction { let offender_chars = offender.span.get_content(source); if toks.get(2)?.kind.is_upos(UPOS::VERB) - && NominalPhrase.matches(&toks[2..], source).is_some() + && NominalPhrase.run(0, &toks[2..], source).is_some() { return None; } diff --git a/harper-core/src/linting/no_oxford_comma.rs b/harper-core/src/linting/no_oxford_comma.rs index 34ae22f3a..0236469c0 100644 --- a/harper-core/src/linting/no_oxford_comma.rs +++ b/harper-core/src/linting/no_oxford_comma.rs @@ -1,8 +1,7 @@ -use crate::expr::ExprExt; -use crate::expr::SequenceExpr; use crate::{ Document, Token, TokenStringExt, - patterns::{NominalPhrase, WordSet}, + expr::{ExprExt, NominalPhrase, SequenceExpr}, + patterns::WordSet, }; use super::{Lint, LintKind, Linter, Suggestion}; diff --git a/harper-core/src/linting/pronoun_inflection_be.rs b/harper-core/src/linting/pronoun_inflection_be.rs index b76b7f0c5..65c48f75c 100644 --- a/harper-core/src/linting/pronoun_inflection_be.rs +++ b/harper-core/src/linting/pronoun_inflection_be.rs @@ -1,12 +1,11 @@ use harper_brill::UPOS; -use crate::expr::{All, AnchorStart, Expr, ExprMap, SequenceExpr}; -use crate::patterns::{NominalPhrase, UPOSSet}; +use crate::expr::{All, AnchorStart, Expr, ExprMap, NominalPhrase, SequenceExpr}; +use crate::linting::expr_linter::Chunk; +use crate::patterns::UPOSSet; use crate::{Lrc, Token, TokenKind}; -use super::Suggestion; -use super::{ExprLinter, Lint, LintKind}; -use crate::linting::expr_linter::Chunk; +use super::{ExprLinter, Lint, LintKind, Suggestion}; pub struct PronounInflectionBe { expr: Box, diff --git a/harper-core/src/linting/quantifier_numeral_conflict.rs b/harper-core/src/linting/quantifier_numeral_conflict.rs index b2c908758..ddcff25d5 100644 --- a/harper-core/src/linting/quantifier_numeral_conflict.rs +++ b/harper-core/src/linting/quantifier_numeral_conflict.rs @@ -1,7 +1,7 @@ -use crate::expr::{All, Expr, SequenceExpr, SpelledNumberExpr}; +use crate::expr::{All, Expr, NominalPhrase, SequenceExpr, SpelledNumberExpr}; use crate::linting::expr_linter::Chunk; use crate::linting::{ExprLinter, LintKind, Suggestion}; -use crate::patterns::{NominalPhrase, WordSet}; +use crate::patterns::WordSet; use crate::token_string_ext::TokenStringExt; use crate::{CharStringExt, Lint, Token}; diff --git a/harper-core/src/linting/take_serious.rs b/harper-core/src/linting/take_serious.rs index 0eb1fcd24..7600689ec 100644 --- a/harper-core/src/linting/take_serious.rs +++ b/harper-core/src/linting/take_serious.rs @@ -1,9 +1,8 @@ -use crate::linting::expr_linter::Chunk; use crate::{ Token, TokenStringExt, - expr::{Expr, SequenceExpr}, - linting::{ExprLinter, Lint, LintKind, Suggestion}, - patterns::{NominalPhrase, WordSet}, + expr::{Expr, NominalPhrase, SequenceExpr}, + linting::{ExprLinter, Lint, LintKind, Suggestion, expr_linter::Chunk}, + patterns::WordSet, }; /// Linter that corrects "take X serious" to "take X seriously". diff --git a/harper-core/src/patterns/nominal_phrase.rs b/harper-core/src/patterns/nominal_phrase.rs index 91db625b0..d856570f8 100644 --- a/harper-core/src/patterns/nominal_phrase.rs +++ b/harper-core/src/patterns/nominal_phrase.rs @@ -143,4 +143,36 @@ mod tests { .is_some() ); } + + // Tests that should not pass but do + + #[test] + fn the_the_car() { + let doc = Document::new_markdown_default_curated("the the car"); + assert!( + NominalPhrase + .matches(doc.get_tokens(), doc.get_source()) + .is_some() + ); + } + + #[test] + fn red_the_car() { + let doc = Document::new_markdown_default_curated("red the car"); + assert!( + NominalPhrase + .matches(doc.get_tokens(), doc.get_source()) + .is_some() + ); + } + + #[test] + fn speeding_the_a_car() { + let doc = Document::new_markdown_default_curated("speeding the a car"); + assert!( + NominalPhrase + .matches(doc.get_tokens(), doc.get_source()) + .is_some() + ); + } } diff --git a/harper-core/tests/text/tagged/Alice's Adventures in Wonderland.md b/harper-core/tests/text/tagged/Alice's Adventures in Wonderland.md index 0bd253b71..2adfe79e0 100644 --- a/harper-core/tests/text/tagged/Alice's Adventures in Wonderland.md +++ b/harper-core/tests/text/tagged/Alice's Adventures in Wonderland.md @@ -74,8 +74,8 @@ # I/C D NSg/VB/J/R VPt J/R NSg/J . NPr/C ISg+ NSg/VPt/J J/R R . R/C/P ISg+ VB NSg/I/J P > time as she went down to look about her and to wonder what was going to happen # N🅪Sg/VB/J+ NSg/R ISg+ NSg/VPt N🅪Sg/VB/J/P P NSg/VB J/P ISg/D$+ VB/C P N🅪Sg/VB NSg/I+ VPt Nᴹ/Vg/J P VB -> next . First , she tried to look down and make out what she was coming to , but it -# NSg/J/P . NSg/VB/J . ISg+ VP/J P NSg/VB N🅪Sg/VB/J/P VB/C NSg/VB NSg/VB/J/R/P NSg/I+ ISg+ VPt Nᴹ/Vg/J P . NSg/C/P NPr/ISg+ +> next . First , she tried to look down and make out what she was coming to , but it +# J/P . NSg/VB/J . ISg+ VP/J P NSg/VB N🅪Sg/VB/J/P VB/C NSg/VB NSg/VB/J/R/P NSg/I+ ISg+ VPt Nᴹ/Vg/J P . NSg/C/P NPr/ISg+ > was too dark to see anything ; then she looked at the sides of the well , and # VPt R NSg/VB/J P NSg/VB NSg/I/VB+ . NSg/J/C ISg+ VP/J NSg/P D NPl/V3 P D NSg/VB/J/R . VB/C > noticed that they were filled with cupboards and book - shelves ; here and there @@ -470,8 +470,8 @@ # K NSg/VPp VP/J NPr/J/R/P D N🅪Sg/VB+ . NSg/VBP NPr/ISg+ NSg/VB . VPt ISg/#r+ D I/J NSg/I/C ISg/#r+ VP NSg/VB/J/P I/Ddem+ > morning ? I almost think I can remember feeling a little different . But if I’m # N🅪Sg/Vg/J+ . ISg/#r+ R NSg/VB ISg/#r+ NPr/VXB NSg/VB N🅪Sg/Vg/J D/P NPr/I/J/Dq NSg/J . NSg/C/P NSg/C K -> not the same , the next question is , Who in the world am I ? Ah , that’s the great -# NSg/R/C D I/J . D NSg/J/P NSg/VB+ VL3 . NPr/I+ NPr/J/R/P D NSg/VB+ NPr/VB/J ISg/#r+ . NSg/I/VB . NSg$ D NSg/J +> not the same , the next question is , Who in the world am I ? Ah , that’s the great +# NSg/R/C D I/J . D J/P NSg/VB+ VL3 . NPr/I+ NPr/J/R/P D NSg/VB+ NPr/VB/J ISg/#r+ . NSg/I/VB . NSg$ D NSg/J > puzzle ! ” And she began thinking over all the children she knew that were of the # NSg/VB . . VB/C ISg+ VPt Nᴹ/Vg/J NSg/J/P NSg/I/J/C/Dq+ D+ NPl+ ISg+ VPt NSg/I/C/Ddem+ NSg/VPt P D+ > same age as herself , to see if she could have been changed for any of them . @@ -520,8 +520,8 @@ # . K J I/Ddem+ VB NSg/R/C D NPr/VB/J NPl/V3+ . . VP/J NSg/VB/J NPr+ . VB/C ISg/D$+ NPl/V3+ VP/J > with tears again as she went on , “ I must be Mabel after all , and I shall have to # P NPl/V3+ P NSg/R ISg+ NSg/VPt J/P . . ISg/#r+ NSg/VB NSg/VXB NPr P NSg/I/J/C/Dq . VB/C ISg/#r+ VXB NSg/VXB P -> go and live in that poky little house , and have next to no toys to play with , -# NSg/VB/J VB/C VB/J NPr/J/R/P NSg/I/C/Ddem NSg/J NPr/I/J/Dq NPr/VB+ . VB/C NSg/VXB NSg/J/P P NPr/Dq/P NPl/V3+ P N🅪Sg/VB P . +> go and live in that poky little house , and have next to no toys to play with , +# NSg/VB/J VB/C VB/J NPr/J/R/P NSg/I/C/Ddem NSg/J NPr/I/J/Dq NPr/VB+ . VB/C NSg/VXB J/P P NPr/Dq/P NPl/V3+ P N🅪Sg/VB P . > and oh ! ever so many lessons to learn ! No , I’ve made up my mind about it ; if I’m # VB/C NPr/VB . J NSg/I/J/R/C NSg/I/J/Dq NPl/V3+ P NSg/VB . NPr/Dq/P . K VB NSg/VB/J/P D$+ NSg/VB+ J/P NPr/ISg+ . NSg/C K > Mabel , I’ll stay down here ! It’ll be no use their putting their heads down and @@ -952,8 +952,8 @@ # R VP/J . VB/C VPt D NSg/VB . Nᴹ/Vg/J NSg/R J NSg/R ISg+ NSg/VXB . > # -> The next thing was to eat the comfits : this caused some noise and confusion , as -# D+ NSg/J/P+ NSg+ VPt P VB D NPl/V3 . I/Ddem VP/J I/J/R/Dq N🅪Sg/VB VB/C N🅪Sg/VB+ . NSg/R +> The next thing was to eat the comfits : this caused some noise and confusion , as +# D+ J/P+ NSg+ VPt P VB D NPl/V3 . I/Ddem VP/J I/J/R/Dq N🅪Sg/VB VB/C N🅪Sg/VB+ . NSg/R > the large birds complained that they could not taste theirs , and the small ones # D NSg/J NPl/V3+ VP/J NSg/I/C/Ddem IPl+ NSg/VXB NSg/R/C NSg/VB/J I+ . VB/C D NPr/VB/J NPl+ > choked and had to be patted on the back . However , it was over at last , and they @@ -1168,8 +1168,8 @@ # > “ How queer it seems , ” Alice said to herself , “ to be going messages for a rabbit ! # . NSg/C NSg/VB/J NPr/ISg+ V3 . . NPr+ VP/J P ISg+ . . P NSg/VXB Nᴹ/Vg/J NPl/V3 R/C/P D/P+ NSg/VB+ . -> I suppose Dinah’ll be sending me on messages next ! ” And she began fancying the -# ISg/#r+ VB ? NSg/VXB Nᴹ/Vg/J NPr/ISg+ J/P NPl/V3+ NSg/J/P . . VB/C ISg+ VPt Nᴹ/Vg/J D +> I suppose Dinah’ll be sending me on messages next ! ” And she began fancying the +# ISg/#r+ VB ? NSg/VXB Nᴹ/Vg/J NPr/ISg+ J/P NPl/V3+ J/P . . VB/C ISg+ VPt Nᴹ/Vg/J D > sort of thing that would happen : “ ‘ Miss Alice ! Come here directly , and get ready # NSg/VB P NSg+ NSg/I/C/Ddem+ VXB VB . . Unlintable NSg/VB NPr+ . NSg/VBPp/P NSg/J/R R/C . VB/C NSg/VB NSg/VB/J > for your walk ! ’ ‘ Coming in a minute , nurse ! But I’ve got to see that the mouse @@ -1316,8 +1316,8 @@ # VPt J NSg/J NPr/ISg+ VB VPp/J P D/P N🅪Sg+ . NSg/VB+ . NPr/C NSg/I/J P D NSg/VB+ . > # -> Next came an angry voice — the Rabbit’s — “ Pat ! Pat ! Where are you ? ” And then a -# NSg/J/P NSg/VPt/P D/P+ VB/J+ NSg/VB+ . D NSg$ . . NPr/VB/J+ . NPr/VB/J+ . NSg/R/C VB ISgPl+ . . VB/C NSg/J/C D/P+ +> Next came an angry voice — the Rabbit’s — “ Pat ! Pat ! Where are you ? ” And then a +# J/P NSg/VPt/P D/P+ VB/J+ NSg/VB+ . D NSg$ . . NPr/VB/J+ . NPr/VB/J+ . NSg/R/C VB ISgPl+ . . VB/C NSg/J/C D/P+ > voice she had never heard before , “ Sure then I’m here ! Digging for apples , yer # NSg/VB+ ISg+ VB R VP/J C/P . . J NSg/J/C K NSg/J/R . NSg/VB R/C/P NPl . + > honour ! ” @@ -1360,8 +1360,8 @@ # I/D NSg/VB NPr/J/R/P D N🅪Sg/VB+ . I/Ddem+ N🅪Sg/VB/J+ R+ NSg/VPt NSg+ NPr/I/J/Dq+ NPl/V3+ . VB/C NPr/I/J/R/Dq > sounds of broken glass . “ What a number of cucumber - frames there must be ! ” # NPl/V3 P VPp/J NPr🅪Sg/VB+ . . NSg/I+ D/P N🅪Sg/VB/JC P N🅪Sg+ . NPl/V3+ R+ NSg/VB NSg/VXB . . -> thought Alice . “ I wonder what they’ll do next ! As for pulling me out of the -# N🅪Sg/VP NPr+ . . ISg/#r+ N🅪Sg/VB NSg/I+ K VXB NSg/J/P . NSg/R R/C/P+ Nᴹ/Vg/J NPr/ISg+ NSg/VB/J/R/P P D+ +> thought Alice . “ I wonder what they’ll do next ! As for pulling me out of the +# N🅪Sg/VP NPr+ . . ISg/#r+ N🅪Sg/VB NSg/I+ K VXB J/P . NSg/R R/C/P+ Nᴹ/Vg/J NPr/ISg+ NSg/VB/J/R/P P D+ > window , I only wish they could ! I’m sure I don’t want to stay in here any # NSg/VB+ . ISg/#r+ J/R/C NSg/VB IPl+ NSg/VXB . K J ISg/#r+ VB NSg/VB P NSg/VB/J NPr/J/R/P NSg/J/R I/R/Dq > longer ! ” @@ -1406,8 +1406,8 @@ # VP/J D/P+ NPr/I/J/Dq+ NSg/J+ . ISg+ VB NSg/VB P NSg/I+ NSg/VB+ NPr/ISg+ VPt . Nᴹ/Vg/J VB/C > scrambling about in the chimney close above her : then , saying to herself “ This # Nᴹ/Vg/J J/P NPr/J/R/P D NSg/VB+ NSg/VB/J NSg/J/P ISg/D$+ . NSg/J/C . N🅪Sg/Vg/J P ISg+ . I/Ddem+ -> is Bill , ” she gave one sharp kick , and waited to see what would happen next . -# VL3 NPr/VB+ . . ISg+ VPt NSg/I/J NPr/VB/J NSg/VB+ . VB/C VP/J P NSg/VB NSg/I+ VXB VB NSg/J/P . +> is Bill , ” she gave one sharp kick , and waited to see what would happen next . +# VL3 NPr/VB+ . . ISg+ VPt NSg/I/J NPr/VB/J NSg/VB+ . VB/C VP/J P NSg/VB NSg/I+ VXB VB J/P . > # > The first thing she heard was a general chorus of “ There goes Bill ! ” then the @@ -1442,8 +1442,8 @@ # > There was a dead silence instantly , and Alice thought to herself , “ I wonder what # R+ VPt D/P+ NSg/VB/J+ NSg/VB+ R . VB/C NPr+ N🅪Sg/VP P ISg+ . . ISg/#r+ N🅪Sg/VB NSg/I+ -> they will do next ! If they had any sense , they’d take the roof off . ” After a -# IPl+ NPr/VXB VXB NSg/J/P . NSg/C IPl+ VB I/R/Dq+ N🅪Sg/VB+ . K NSg/VB D NSg/VB+ NSg/VB/J/P . . P D/P+ +> they will do next ! If they had any sense , they’d take the roof off . ” After a +# IPl+ NPr/VXB VXB J/P . NSg/C IPl+ VB I/R/Dq+ N🅪Sg/VB+ . K NSg/VB D NSg/VB+ NSg/VB/J/P . . P D/P+ > minute or two , they began moving about again , and Alice heard the Rabbit say , “ A # NSg/VB/J+ NPr/C NSg . IPl+ VPt Nᴹ/Vg/J J/P P . VB/C NPr+ VP/J D+ NSg/VB+ NSg/VB . . D/P > barrowful will do , to begin with . ” @@ -1452,8 +1452,8 @@ # > “ A barrowful of what ? ” thought Alice ; but she had not long to doubt , for the # . D/P ? P NSg/I+ . . N🅪Sg/VP NPr+ . NSg/C/P ISg+ VB NSg/R/C NPr/VB/J P N🅪Sg/VB . R/C/P D -> next moment a shower of little pebbles came rattling in at the window , and some -# NSg/J/P+ NSg+ D/P NSg/VB P NPr/I/J/Dq+ NPl/V3+ NSg/VPt/P Nᴹ/Vg/J NPr/J/R/P NSg/P D+ NSg/VB+ . VB/C I/J/R/Dq +> next moment a shower of little pebbles came rattling in at the window , and some +# J/P+ NSg+ D/P NSg/VB P NPr/I/J/Dq+ NPl/V3+ NSg/VPt/P Nᴹ/Vg/J NPr/J/R/P NSg/P D+ NSg/VB+ . VB/C I/J/R/Dq > of them hit her in the face . “ I’ll put a stop to this , ” she said to herself , and # P NSg/IPl+ NSg/VBP/J ISg/D$+ NPr/J/R/P D+ NSg/VB+ . . K NSg/VBP D/P NSg/VB+ P I/Ddem+ . . ISg+ VP/J P ISg+ . VB/C > shouted out , “ You’d better not do that again ! ” which produced another dead @@ -1908,8 +1908,8 @@ # > “ And now which is which ? ” she said to herself , and nibbled a little of the # . VB/C NSg/J/R/C I/C+ VL3 I/C+ . . ISg+ VP/J P ISg+ . VB/C VP/J D/P NPr/I/J/Dq P D -> right - hand bit to try the effect : the next moment she felt a violent blow -# NPr/VB/J . NSg/VB+ NSg/VPt+ P NSg/VB/J D NSg/VB+ . D NSg/J/P NSg+ ISg+ N🅪Sg/VB/J D/P NSg/VB/J NSg/VB/J+ +> right - hand bit to try the effect : the next moment she felt a violent blow +# NPr/VB/J . NSg/VB+ NSg/VPt+ P NSg/VB/J D NSg/VB+ . D J/P NSg+ ISg+ N🅪Sg/VB/J D/P NSg/VB/J NSg/VB/J+ > underneath her chin : it had struck her foot ! # NSg/J/P ISg/D$+ NPr/VB+ . NPr/ISg+ VB VB ISg/D$+ NSg/VB+ . > @@ -2042,8 +2042,8 @@ # . K NSg/VPp D/P NPr/VB/J NSg/I/J/Dq NPr/I/J/Dq NPl/V3+ NPr/J/R/P D$+ N🅪Sg/VB/J+ . NSg/C/P R NSg/I/J P NSg/I D/P NSg/VB+ > as that ! No , no ! You’re a serpent ; and there’s no use denying it . I suppose # NSg/R NSg/I/C/Ddem+ . NPr/Dq/P . NPr/Dq/P . K D/P+ NSg/VB+ . VB/C K NPr/Dq/P N🅪Sg/VB Nᴹ/Vg/J NPr/ISg+ . ISg/#r+ VB -> you’ll be telling me next that you never tasted an egg ! ” -# K NSg/VXB Nᴹ/Vg/J NPr/ISg+ NSg/J/P NSg/I/C/Ddem ISgPl+ R VP/J D/P N🅪Sg/VB+ . . +> you’ll be telling me next that you never tasted an egg ! ” +# K NSg/VXB Nᴹ/Vg/J NPr/ISg+ J/P NSg/I/C/Ddem ISgPl+ R VP/J D/P N🅪Sg/VB+ . . > # > “ I have tasted eggs , certainly , ” said Alice , who was a very truthful child ; “ but @@ -2100,8 +2100,8 @@ # Nᴹ/Vg/J P ISg+ . NSg/R NSg/J . . NSg/VBPp/P . K N🅪Sg/VB/J/P+ D$+ NSg/VB+ NSg/VPp/J NSg/J/R/C . NSg/C Nᴹ/Vg/J > all these changes are ! I’m never sure what I’m going to be , from one minute to # NSg/I/J/C/Dq+ I/Ddem+ NPl/V3+ VB . K R J NSg/I+ K Nᴹ/Vg/J P NSg/VXB . P NSg/I/J NSg/VB/J+ P -> another ! However , I’ve got back to my right size : the next thing is , to get into -# I/D . C . K VP NSg/VB/J P D$+ NPr/VB/J N🅪Sg/VB+ . D NSg/J/P NSg+ VL3 . P NSg/VB P +> another ! However , I’ve got back to my right size : the next thing is , to get into +# I/D . C . K VP NSg/VB/J P D$+ NPr/VB/J N🅪Sg/VB+ . D J/P NSg+ VL3 . P NSg/VB P > that beautiful garden — how is that to be done , I wonder ? ” As she said this , she # NSg/I/C/Ddem NSg/J NSg/VB/J+ . NSg/C VL3 NSg/I/C/Ddem+ P NSg/VXB NSg/VPp/J . ISg/#r+ N🅪Sg/VB . . NSg/R ISg+ VP/J I/Ddem+ . ISg+ > came suddenly upon an open place , with a little house in it about four feet @@ -2122,8 +2122,8 @@ # > For a minute or two she stood looking at the house , and wondering what to do # R/C/P D/P+ NSg/VB/J+ NPr/C NSg ISg+ VB Nᴹ/Vg/J NSg/P D+ NPr/VB+ . VB/C Nᴹ/Vg/J NSg/I+ P VXB -> next , when suddenly a footman in livery came running out of the wood — ( she -# NSg/J/P . NSg/I/C R D/P NSg NPr/J/R/P NSg/VB/J NSg/VPt/P Nᴹ/Vg/J/P NSg/VB/J/R/P P D NPr🅪Sg/VB/J+ . . ISg+ +> next , when suddenly a footman in livery came running out of the wood — ( she +# J/P . NSg/I/C R D/P NSg NPr/J/R/P NSg/VB/J NSg/VPt/P Nᴹ/Vg/J/P NSg/VB/J/R/P P D NPr🅪Sg/VB/J+ . . ISg+ > considered him to be a footman because he was in livery : otherwise , judging by # VP/J ISg+ P NSg/VXB D/P NSg C/P NPr/ISg+ VPt NPr/J/R/P NSg/VB/J . J . Nᴹ/Vg/J NSg/J/P > his face only , she would have called him a fish ) — and rapped loudly at the door @@ -2156,8 +2156,8 @@ # > Alice laughed so much at this , that she had to run back into the wood for fear # NPr+ VP/J NSg/I/J/R/C NSg/I/J/R/Dq NSg/P I/Ddem+ . NSg/I/C/Ddem ISg+ VB P NSg/VBPp NSg/VB/J P D NPr🅪Sg/VB/J R/C/P N🅪Sg/VB -> of their hearing her ; and when she next peeped out the Fish - Footman was gone , -# P D$+ Nᴹ/Vg/J+ ISg/D$+ . VB/C NSg/I/C ISg+ NSg/J/P VP/J NSg/VB/J/R/P D+ N🅪SgPl/VB+ . NSg VPt VPp/J/P . +> of their hearing her ; and when she next peeped out the Fish - Footman was gone , +# P D$+ Nᴹ/Vg/J+ ISg/D$+ . VB/C NSg/I/C ISg+ J/P VP/J NSg/VB/J/R/P D+ N🅪SgPl/VB+ . NSg VPt VPp/J/P . > and the other was sitting on the ground near the door , staring stupidly up into # VB/C D NSg/VB/J VPt NSg/Vg/J J/P D N🅪Sg/VB/J+ NSg/VB/J/P D NSg/VB+ . Nᴹ/Vg/J R NSg/VB/J/P P > the sky . @@ -2214,8 +2214,8 @@ # NPl/V3 C/P NSg/I/J P D NPl/V3+ NSg/J/P ISg+ . > # -> “ — or next day , maybe , ” the Footman continued in the same tone , exactly as if -# . . NPr/C NSg/J/P+ NPr🅪Sg+ . NSg/J/R . . D NSg VP/J NPr/J/R/P D I/J N🅪Sg/I/VB+ . R NSg/R NSg/C +> “ — or next day , maybe , ” the Footman continued in the same tone , exactly as if +# . . NPr/C J/P+ NPr🅪Sg+ . NSg/J/R . . D NSg VP/J NPr/J/R/P D I/J N🅪Sg/I/VB+ . R NSg/R NSg/C > nothing had happened . # NSg/I/J+ VB VP/J . > @@ -3416,16 +3416,16 @@ # > First came ten soldiers carrying clubs ; these were all shaped like the three # NSg/VB/J NSg/VPt/P NSg+ NPl/V3+ Nᴹ/Vg/J NPl/V3+ . I/Ddem+ NSg/VPt NSg/I/J/C/Dq VP/J NSg/VB/J/C/P D+ NSg+ -> gardeners , oblong and flat , with their hands and feet at the corners : next the -# NPl+ . NSg/VB/J VB/C NSg/VB/J . P D$+ NPl/V3 VB/C NPl+ NSg/P D NPl/V3+ . NSg/J/P D +> gardeners , oblong and flat , with their hands and feet at the corners : next the +# NPl+ . NSg/VB/J VB/C NSg/VB/J . P D$+ NPl/V3 VB/C NPl+ NSg/P D NPl/V3+ . J/P D > ten courtiers ; these were ornamented all over with diamonds , and walked two and # NSg NPl . I/Ddem+ NSg/VPt VP/J NSg/I/J/C/Dq NSg/J/P+ P NPl/V3 . VB/C VP/J NSg VB/C > two , as the soldiers did . After these came the royal children ; there were ten of # NSg . NSg/R D NPl/V3+ VPt . P I/Ddem NSg/VPt/P D+ NPr/J+ NPl+ . R+ NSg/VPt NSg P > them , and the little dears came jumping merrily along hand in hand , in couples : # NSg/IPl+ . VB/C D+ NPr/I/J/Dq+ NPl/V3+ NSg/VPt/P Nᴹ/Vg/J R P NSg/VB+ NPr/J/R/P NSg/VB+ . NPr/J/R/P NPl/V3+ . -> they were all ornamented with hearts . Next came the guests , mostly Kings and -# IPl+ NSg/VPt NSg/I/J/C/Dq VP/J P NPl/V3+ . NSg/J/P NSg/VPt/P D+ NPl/V3+ . R NPl/V3+ VB/C +> they were all ornamented with hearts . Next came the guests , mostly Kings and +# IPl+ NSg/VPt NSg/I/J/C/Dq VP/J P NPl/V3+ . J/P NSg/VPt/P D+ NPl/V3+ . R NPl/V3+ VB/C > Queens , and among them Alice recognised the White Rabbit : it was talking in a # NPrPl/V3 . VB/C P NSg/IPl+ NPr+ VP/J/Au/Br D NPr🅪Sg/VB/J NSg/VB+ . NPr/ISg+ VPt Nᴹ/Vg/J NPr/J/R/P D/P > hurried nervous manner , smiling at everything that was said , and went by without @@ -3576,8 +3576,8 @@ # > “ Come on , then ! ” roared the Queen , and Alice joined the procession , wondering # . NSg/VBPp/P J/P . NSg/J/C . . VP/J D+ NPr/VB/J+ . VB/C NPr+ VP/J D+ NSg/VB+ . Nᴹ/Vg/J -> very much what would happen next . -# J/R NSg/I/J/R/Dq NSg/I+ VXB VB NSg/J/P . +> very much what would happen next . +# J/R NSg/I/J/R/Dq NSg/I+ VXB VB J/P . > # > “ It’s — it’s a very fine day ! ” said a timid voice at her side . She was walking by @@ -3722,8 +3722,8 @@ # VB VB P NSg/VXB I/R/Dq NPl/V3+ NPr/J/R/P NSg/J . NSg/P NSg/J/Dq . NSg/C R+ VB . NSg/I+ > attends to them — and you’ve no idea how confusing it is all the things being # V3 P NSg/IPl+ . VB/C K NPr/Dq/P NSg+ NSg/C Nᴹ/Vg/J NPr/ISg+ VL3 NSg/I/J/C/Dq D NPl+ N🅪Sg/Vg/J/C -> alive ; for instance , there’s the arch I’ve got to go through next walking about -# J . R/C/P NSg/VB+ . K D NSg/VB/J K VP P NSg/VB/J NSg/J/P NSg/J/P Nᴹ/Vg/J J/P +> alive ; for instance , there’s the arch I’ve got to go through next walking about +# J . R/C/P NSg/VB+ . K D NSg/VB/J K VP P NSg/VB/J NSg/J/P J/P Nᴹ/Vg/J J/P > at the other end of the ground — and I should have croqueted the Queen’s hedgehog # NSg/P D NSg/VB/J NSg/VB P D N🅪Sg/VB/J+ . VB/C ISg/#r+ VXB NSg/VXB VP/J D NSg$ NSg/VB+ > just now , only it ran away when it saw mine coming ! ” @@ -4452,8 +4452,8 @@ # D+ NSg/VB/J+ . > # -> “ Ten hours the first day , ” said the Mock Turtle : “ nine the next , and so on . ” -# . NSg+ NPl+ D+ NSg/VB/J+ NPr🅪Sg+ . . VP/J D+ NSg/VB/J+ NSg/VB+ . . NSg D NSg/J/P . VB/C NSg/I/J/R/C J/P . . +> “ Ten hours the first day , ” said the Mock Turtle : “ nine the next , and so on . ” +# . NSg+ NPl+ D+ NSg/VB/J+ NPr🅪Sg+ . . VP/J D+ NSg/VB/J+ NSg/VB+ . . NSg D J/P . VB/C NSg/I/J/R/C J/P . . > # > “ What a curious plan ! ” exclaimed Alice . @@ -4468,8 +4468,8 @@ # > This was quite a new idea to Alice , and she thought it over a little before she # I/Ddem+ VPt R D/P NSg/J NSg P NPr+ . VB/C ISg+ N🅪Sg/VP NPr/ISg+ NSg/J/P D/P NPr/I/J/Dq C/P ISg+ -> made her next remark . “ Then the eleventh day must have been a holiday ? ” -# VB ISg/D$+ NSg/J/P+ NSg/VB+ . . NSg/J/C D+ NSg/J+ NPr🅪Sg+ NSg/VB NSg/VXB NSg/VPp D/P+ NPr/VB+ . . +> made her next remark . “ Then the eleventh day must have been a holiday ? ” +# VB ISg/D$+ J/P+ NSg/VB+ . . NSg/J/C D+ NSg/J+ NPr🅪Sg+ NSg/VB NSg/VXB NSg/VPp D/P+ NPr/VB+ . . > # > “ Of course it was , ” said the Mock Turtle . @@ -4884,8 +4884,8 @@ # . ISg/#r+ VXB NSg/VB/J/C/P P NSg/VXB NPr/ISg+ VP/J . . VP/J D+ NSg/VB/J+ NSg/VB+ . > # -> “ She can’t explain it , ” said the Gryphon hastily . “ Go on with the next verse . ” -# . ISg+ VXB VB NPr/ISg+ . . VP/J D ? R . . NSg/VB/J J/P P D NSg/J/P NSg/VB . . +> “ She can’t explain it , ” said the Gryphon hastily . “ Go on with the next verse . ” +# . ISg+ VXB VB NPr/ISg+ . . VP/J D ? R . . NSg/VB/J J/P P D J/P NSg/VB . . > # > “ But about his toes ? ” the Mock Turtle persisted . “ How could he turn them out @@ -4900,8 +4900,8 @@ # D NSg/J NSg+ . VB/C VP/J P N🅪Sg/VB D NSg/VB/J+ . > # -> “ Go on with the next verse , ” the Gryphon repeated impatiently : “ it begins ‘ I -# . NSg/VB/J J/P P D NSg/J/P NSg/VB . . D ? VP/J R . . NPr/ISg+ NPl/V3 Unlintable ISg/#r+ +> “ Go on with the next verse , ” the Gryphon repeated impatiently : “ it begins ‘ I +# . NSg/VB/J J/P P D J/P NSg/VB . . D ? VP/J R . . NPr/ISg+ NPl/V3 Unlintable ISg/#r+ > passed by his garden . ’ ” # VP/J NSg/J/P ISg/D$+ NSg/VB/J+ . . . > @@ -5234,8 +5234,8 @@ # R/C/P ISg/D$+ . > # -> “ I wish you wouldn’t squeeze so . ” said the Dormouse , who was sitting next to -# . ISg/#r+ NSg/VB ISgPl+ VXB NSg/VB NSg/I/J/R/C . . VP/J D NSg . NPr/I+ VPt NSg/Vg/J NSg/J/P P +> “ I wish you wouldn’t squeeze so . ” said the Dormouse , who was sitting next to +# . ISg/#r+ NSg/VB ISgPl+ VXB NSg/VB NSg/I/J/R/C . . VP/J D NSg . NPr/I+ VPt NSg/Vg/J J/P P > her . “ I can hardly breathe . ” # ISg/D$+ . . ISg/#r+ NPr/VXB R VB . . > @@ -5416,12 +5416,12 @@ # NSg/C/P D NSg/VB VPt NSg/VB/J/R/P P N🅪Sg/VB+ C/P D NSg/VB+ NSg/VXB NSg/VB P D NSg/VB+ . > # -> “ Call the next witness ! ” said the King . -# . NSg/VB D+ NSg/J/P+ NSg/VB+ . . VP/J D+ NPr/VB/J+ . +> “ Call the next witness ! ” said the King . +# . NSg/VB D+ J/P+ NSg/VB+ . . VP/J D+ NPr/VB/J+ . > # -> The next witness was the Duchess’s cook . She carried the pepper - box in her hand , -# D+ NSg/J/P+ NSg/VB+ VPt D NSg$ NPr/VB . ISg+ VP/J D N🅪Sg/VB+ . NSg/VB NPr/J/R/P ISg/D$+ NSg/VB+ . +> The next witness was the Duchess’s cook . She carried the pepper - box in her hand , +# D+ J/P+ NSg/VB+ VPt D NSg$ NPr/VB . ISg+ VP/J D N🅪Sg/VB+ . NSg/VB NPr/J/R/P ISg/D$+ NSg/VB+ . > and Alice guessed who it was , even before she got into the court , by the way the # VB/C NPr+ VP/J NPr/I+ NPr/ISg+ VPt . NSg/VB/J C/P ISg+ VP P D+ N🅪Sg/VB/J+ . NSg/J/P D+ NSg/J+ D > people near the door began sneezing all at once . @@ -5471,17 +5471,17 @@ > # > “ Never mind ! ” said the King , with an air of great relief . “ Call the next -# . R NSg/VB+ . . VP/J D+ NPr/VB/J+ . P D/P N🅪Sg/VB P NSg/J+ NSg/J+ . . NSg/VB D+ NSg/J/P+ +# . R NSg/VB+ . . VP/J D+ NPr/VB/J+ . P D/P N🅪Sg/VB P NSg/J+ NSg/J+ . . NSg/VB D+ J/P+ > witness . ” And he added in an undertone to the Queen , “ Really , my dear , you must # NSg/VB+ . . VB/C NPr/ISg+ VP/J NPr/J/R/P D/P NSg/VB P D NPr/VB/J+ . . R . D$+ NSg/VB/J . ISgPl+ NSg/VB -> cross - examine the next witness . It quite makes my forehead ache ! ” -# NPr/VB/J/P+ . NSg/VB D NSg/J/P NSg/VB+ . NPr/ISg+ R NPl/V3 D$+ NSg+ NSg/VB+ . . +> cross - examine the next witness . It quite makes my forehead ache ! ” +# NPr/VB/J/P+ . NSg/VB D J/P NSg/VB+ . NPr/ISg+ R NPl/V3 D$+ NSg+ NSg/VB+ . . > # > Alice watched the White Rabbit as he fumbled over the list , feeling very curious # NPr+ VP/J D+ NPr🅪Sg/VB/J+ NSg/VB+ NSg/R NPr/ISg+ VP/J NSg/J/P D NSg/VB+ . N🅪Sg/Vg/J J/R J -> to see what the next witness would be like , “ — for they haven’t got much evidence -# P NSg/VB NSg/I+ D NSg/J/P NSg/VB+ VXB NSg/VXB NSg/VB/J/C/P . . . R/C/P IPl+ VB VP NSg/I/J/R/Dq Nᴹ/VB+ +> to see what the next witness would be like , “ — for they haven’t got much evidence +# P NSg/VB NSg/I+ D J/P NSg/VB+ VXB NSg/VXB NSg/VB/J/C/P . . . R/C/P IPl+ VB VP NSg/I/J/R/Dq Nᴹ/VB+ > yet , ” she said to herself . Imagine her surprise , when the White Rabbit read out , # NSg/VB/C . . ISg+ VP/J P ISg+ . NSg/VB ISg/D$+ NSg/VB+ . NSg/I/C D+ NPr🅪Sg/VB/J+ NSg/VB+ NSg/VBP NSg/VB/J/R/P . > at the top of his shrill little voice , the name “ Alice ! ” diff --git a/harper-core/tests/text/tagged/Computer science.md b/harper-core/tests/text/tagged/Computer science.md index 7d570c31f..2a92d0737 100644 --- a/harper-core/tests/text/tagged/Computer science.md +++ b/harper-core/tests/text/tagged/Computer science.md @@ -252,8 +252,8 @@ # D NSg . ? . ? . NSg/VB+ . NPl/V3+ . NPr/VB/J+ . VP/J NSg/J . NSg+ . > and applied epistemologist . Three months later in the same journal , comptologist # VB/C VP/J NSg . NSg+ NPl+ JC NPr/J/R/P D+ I/J+ NSg/VB/J+ . ? -> was suggested , followed next year by hypologist . The term computics has also -# VPt VP/J . VP/J NSg/J/P NSg+ NSg/J/P ? . D+ NSg/VB/J+ ? V3 R/C +> was suggested , followed next year by hypologist . The term computics has also +# VPt VP/J . VP/J J/P NSg+ NSg/J/P ? . D+ NSg/VB/J+ ? V3 R/C > been suggested . In Europe , terms derived from contracted translations of the # NSg/VPp VP/J . NPr/J/R/P NPr+ . NPl/V3+ VP/J P VP/J NPl P D+ > expression " automatic information " ( e.g. " informazione automatica " in Italian ) diff --git a/harper-core/tests/text/tagged/Difficult sentences.md b/harper-core/tests/text/tagged/Difficult sentences.md index 5784b2e2c..8b47c0948 100644 --- a/harper-core/tests/text/tagged/Difficult sentences.md +++ b/harper-core/tests/text/tagged/Difficult sentences.md @@ -598,8 +598,8 @@ # I/J/R/Dq P D NSg/VB/J NSg/VPt N🅪Sg/VB/J/P P NSg+ . NSg/C/P D NSg$ NSg/VB/J J/P . > That TV programme that you wanted to watch is on now . # NSg/I/C/Ddem+ NSg+ NSg/VB/Au/Br+ NSg/I/C/Ddem+ ISgPl+ VP/J P NSg/VB VL3 J/P NSg/J/R/C . -> This is her last song . You're on next ! -# I/Ddem+ VL3 ISg/D$+ NSg/VB/J+ N🅪Sg+ . + J/P NSg/J/P . +> This is her last song . You're on next ! +# I/Ddem+ VL3 ISg/D$+ NSg/VB/J+ N🅪Sg+ . + J/P J/P . > Are we still on for tonight ? # VB IPl+ NSg/VB/J J/P R/C/P NSg+ . > Mike just threw coffee onto Paul's lap . It's on now . @@ -612,8 +612,8 @@ # ISg/#r+ VPt Nᴹ/Vg/J P NSg/VB NSg/VB/J/R/P P D+ NSg/VB+ NSg/VB/C/P D+ NSg/VB/J+ VPt NSg/VB/J J/P . > Climbing up that steep ridge isn't on . We'll have to find another route . # Nᴹ/Vg/J NSg/VB/J/P NSg/I/C/Ddem+ NSg/VB/J+ NSg/VB+ NSg/VB J/P . K NSg/VXB P NSg/VB I/D NSg/VB+ . -> He'd like to play the red next to the black spot , but that shot isn't on . -# K NSg/VB/J/C/P P N🅪Sg/VB D N🅪Sg/J NSg/J/P P D N🅪Sg/VB/J NSg/VB/J+ . NSg/C/P NSg/I/C/Ddem NSg/VP/J+ NSg/VB J/P . +> He'd like to play the red next to the black spot , but that shot isn't on . +# K NSg/VB/J/C/P P N🅪Sg/VB D N🅪Sg/J J/P P D N🅪Sg/VB/J NSg/VB/J+ . NSg/C/P NSg/I/C/Ddem NSg/VP/J+ NSg/VB J/P . > The captain moved two fielders to the on side . # D+ NSg/VB+ VP/J NSg W? P D J/P NSg/VB/J+ . > Ponsonby - Smythe hit a thumping on drive . diff --git a/harper-core/tests/text/tagged/Part-of-speech tagging.md b/harper-core/tests/text/tagged/Part-of-speech tagging.md index b016e1fcc..72ad04a05 100644 --- a/harper-core/tests/text/tagged/Part-of-speech tagging.md +++ b/harper-core/tests/text/tagged/Part-of-speech tagging.md @@ -240,8 +240,8 @@ # NSg P NPr/J NPr🅪Sg/VB/J+ . ? VB Nᴹ/Vg/J NPl/V3+ . NSg/I NSg/R P D NPr🅪Sg/VB/J > Corpus ) and making a table of the probabilities of certain sequences . For # NSg+ . VB/C Nᴹ/Vg/J D/P NSg/VB P D NPl P I/J NPl/V3+ . R/C/P -> example , once you've seen an article such as ' the ' , perhaps the next word is a -# NSg/VB+ . NSg/C K NSg/VPp D/P NSg/VB+ NSg/I NSg/R . D . . NSg/R D NSg/J/P NSg/VB+ VL3 D/P +> example , once you've seen an article such as ' the ' , perhaps the next word is a +# NSg/VB+ . NSg/C K NSg/VPp D/P NSg/VB+ NSg/I NSg/R . D . . NSg/R D J/P NSg/VB+ VL3 D/P > noun 40 % of the time , an adjective 40 % , and a number 20 % . Knowing this , a # NSg/VB+ # . P D N🅪Sg/VB/J+ . D/P NSg/VB/J+ # . . VB/C D/P N🅪Sg/VB/JC+ # . . NSg/Vg/J/P I/Ddem+ . D/P+ > program can decide that " can " in " the can " is far more likely to be a noun than @@ -256,8 +256,8 @@ # NPr/I/J/R/Dq VP/J . . NSg/JC . N🅪Sg/VB . . ? NSg/VB D NPl+ NSg/R/C J/R/C P NPl/V3+ > but triples or even larger sequences . So , for example , if you've just seen a # NSg/C/P NPl/V3 NPr/C NSg/VB/J JC NPl/V3+ . NSg/I/J/R/C . R/C/P NSg/VB+ . NSg/C K J NSg/VPp D/P -> noun followed by a verb , the next item may be very likely a preposition , -# NSg/VB+ VP/J NSg/J/P D/P NSg/VB+ . D NSg/J/P NSg/VB+ NPr/VXB NSg/VXB J/R NSg/J D/P NSg/VB . +> noun followed by a verb , the next item may be very likely a preposition , +# NSg/VB+ VP/J NSg/J/P D/P NSg/VB+ . D J/P NSg/VB+ NPr/VXB NSg/VXB J/R NSg/J D/P NSg/VB . > article , or noun , but much less likely another verb . # NSg/VB+ . NPr/C NSg/VB+ . NSg/C/P NSg/I/J/R/Dq VB/J/R/C/P NSg/J I/D NSg/VB+ . > diff --git a/harper-core/tests/text/tagged/The Constitution of the United States.md b/harper-core/tests/text/tagged/The Constitution of the United States.md index 1183dc010..b16660f84 100644 --- a/harper-core/tests/text/tagged/The Constitution of the United States.md +++ b/harper-core/tests/text/tagged/The Constitution of the United States.md @@ -1042,8 +1042,8 @@ # D+ NSg/VB+ VXB NSg/VXB N🅪Sg/VB/J+ P NSg/VB NSg/VB/J/P NSg/I/J/C/Dq NPl NSg/I/C/Ddem+ NPr/VXB VB VB/P > the Recess of the Senate , by granting Commissions which shall expire at the End # D NSg/VB/J P D NPr+ . NSg/J/P Nᴹ/Vg/J+ NPl/V3+ I/C+ VXB VB NSg/P D NSg/VB -> of their next Session . -# P D$+ NSg/J/P NSg/VB+ . +> of their next Session . +# P D$+ J/P NSg/VB+ . > # > No soldier shall , in time of peace be quartered in any house , without the diff --git a/harper-core/tests/text/tagged/The Great Gatsby.md b/harper-core/tests/text/tagged/The Great Gatsby.md index 908b1d83e..17780e761 100644 --- a/harper-core/tests/text/tagged/The Great Gatsby.md +++ b/harper-core/tests/text/tagged/The Great Gatsby.md @@ -478,8 +478,8 @@ # NSg/VB VB/J P VB . D/P Nᴹ/Vg/J NSg+ . D/P+ VP/J+ . NSg/VB . . D/P+ NSg/VB+ > that she had done gay , exciting things just a while since and that there were # NSg/I/C/Ddem+ ISg+ VB NSg/VPp/J NPr/VB/J . Nᴹ/Vg/J+ NPl+ J D/P+ NSg/VB/C/P+ C/P VB/C NSg/I/C/Ddem R+ NSg/VPt -> gay , exciting things hovering in the next hour . -# NPr/VB/J . Nᴹ/Vg/J+ NPl+ Nᴹ/Vg/J NPr/J/R/P D NSg/J/P NSg+ . +> gay , exciting things hovering in the next hour . +# NPr/VB/J . Nᴹ/Vg/J+ NPl+ Nᴹ/Vg/J NPr/J/R/P D J/P NSg+ . > # > I told her how I had stopped off in Chicago for a day on my way East , and how a @@ -1084,8 +1084,8 @@ # > “ To be continued , ” she said , tossing the magazine on the table , “ in our very # . P NSg/VXB VP/J . . ISg+ VP/J . Nᴹ/Vg/J D NSg+ J/P D NSg/VB+ . . NPr/J/R/P D$+ J/R -> next issue . ” -# NSg/J/P NSg/VB+ . . +> next issue . ” +# J/P NSg/VB+ . . > # > Her body asserted itself with a restless movement of her knee , and she stood up . @@ -1428,8 +1428,8 @@ # NPr/ISg+ NSg/I/C/Ddem+ NSg+ . . > # -> “ Next week ; I’ve got my man working on it now . ” -# . NSg/J/P+ NSg/J+ . K VP D$+ NPr/VB/J+ Nᴹ/Vg/J J/P NPr/ISg+ NSg/J/R/C . . +> “ Next week ; I’ve got my man working on it now . ” +# . J/P+ NSg/J+ . K VP D$+ NPr/VB/J+ Nᴹ/Vg/J J/P NPr/ISg+ NSg/J/R/C . . > # > “ Works pretty slow , don’t he ? ” @@ -1482,8 +1482,8 @@ # NSg/VB/J+ . NPr/I+ VP/J NSg/VB/J P NPr/VB+ . > # -> “ I want to see you , ” said Tom intently . “ Get on the next train . ” -# . ISg/#r+ NSg/VB P NSg/VB ISgPl+ . . VP/J NPr/VB+ R . . NSg/VB J/P D+ NSg/J/P+ NSg/VB+ . . +> “ I want to see you , ” said Tom intently . “ Get on the next train . ” +# . ISg/#r+ NSg/VB P NSg/VB ISgPl+ . . VP/J NPr/VB+ R . . NSg/VB J/P D+ J/P+ NSg/VB+ . . > # > “ All right . ” @@ -1920,8 +1920,8 @@ # VXB ISgPl+ NSg/VB ISg+ . . > # -> “ I live next door to him . ” -# . ISg/#r+ VB/J NSg/J/P+ NSg/VB+ P ISg+ . . +> “ I live next door to him . ” +# . ISg/#r+ VB/J J/P+ NSg/VB+ P ISg+ . . > # > “ Well , they say he’s a nephew or a cousin of Kaiser Wilhelm’s . That’s where all @@ -2182,8 +2182,8 @@ # N🅪Sg/VB+ . NPr/ISg+ VB J/P D/P NSg/VB+ NSg/VB VB/C NSg/VB/J+ N🅪Sg/VB/J+ NPl/V3+ . VB/C ISg/#r+ VB NSg/VB D$+ > eyes off him , but every time he looked at me I had to pretend to be looking at # NPl/V3+ NSg/VB/J/P ISg+ . NSg/C/P Dq N🅪Sg/VB/J+ NPr/ISg+ VP/J NSg/P NPr/ISg+ ISg/#r+ VB P NSg/VB/J P NSg/VXB Nᴹ/Vg/J NSg/P -> the advertisement over his head . When we came into the station he was next to -# D NSg NSg/J/P ISg/D$+ NPr/VB/J+ . NSg/I/C IPl+ NSg/VPt/P P D+ NSg/VB+ NPr/ISg+ VPt NSg/J/P P +> the advertisement over his head . When we came into the station he was next to +# D NSg NSg/J/P ISg/D$+ NPr/VB/J+ . NSg/I/C IPl+ NSg/VPt/P P D+ NSg/VB+ NPr/ISg+ VPt J/P P > me , and his white shirt - front pressed against my arm , and so I told him I’d have # NPr/ISg+ . VB/C ISg/D$+ NPr🅪Sg/VB/J NSg/VB+ . NSg/VB/J+ VP/J C/P D$+ NSg/VB/J+ . VB/C NSg/I/J/R/C ISg/#r+ VP ISg+ K NSg/VXB > to call a policeman , but he knew I lied . I was so excited that when I got into a @@ -2510,8 +2510,8 @@ # > “ I thought you might be here , ” she responded absently as I came up . “ I # . ISg/#r+ N🅪Sg/VP ISgPl+ Nᴹ/VXB/J NSg/VXB NSg/J/R . . ISg+ VP/J R NSg/R ISg/#r+ NSg/VPt/P NSg/VB/J/P . . ISg/#r+ -> remembered you lived next door to — — ” -# VP/J ISgPl+ VP/J NSg/J/P+ NSg/VB+ P . . . +> remembered you lived next door to — — ” +# VP/J ISgPl+ VP/J J/P+ NSg/VB+ P . . . > # > She held my hand impersonally , as a promise that she’d take care of me in a @@ -2978,8 +2978,8 @@ # VP NPr/ISg+ NSg/C NPr/ISg+ VPt D/P NPr NPr/VB/J . . > # -> A dim background started to take shape behind him , but at her next remark it -# D/P+ NSg/VB/J+ NSg/VB/J+ VP/J P NSg/VB N🅪Sg/VB+ NSg/J/P ISg+ . NSg/C/P NSg/P ISg/D$+ NSg/J/P+ NSg/VB+ NPr/ISg+ +> A dim background started to take shape behind him , but at her next remark it +# D/P+ NSg/VB/J+ NSg/VB/J+ VP/J P NSg/VB N🅪Sg/VB+ NSg/J/P ISg+ . NSg/C/P NSg/P ISg/D$+ J/P+ NSg/VB+ NPr/ISg+ > faded away . # J VB/J . > @@ -3332,8 +3332,8 @@ # > “ Don’t ask me , ” said Owl Eyes , washing his hands of the whole matter . “ I know # . VB NSg/VB NPr/ISg+ . . VP/J NSg/VB+ NPl/V3+ . Nᴹ/Vg/J ISg/D$+ NPl/V3 P D NSg/J N🅪Sg/VB+ . . ISg/#r+ NSg/VB -> very little about driving — next to nothing . It happened , and that’s all I know . ” -# J/R NPr/I/J/Dq J/P Nᴹ/Vg/J . NSg/J/P P NSg/I/J+ . NPr/ISg+ VP/J . VB/C NSg$ NSg/I/J/C/Dq ISg/#r+ NSg/VB . . +> very little about driving — next to nothing . It happened , and that’s all I know . ” +# J/R NPr/I/J/Dq J/P Nᴹ/Vg/J . J/P P NSg/I/J+ . NPr/ISg+ VP/J . VB/C NSg$ NSg/I/J/C/Dq ISg/#r+ NSg/VB . . > # > “ Well , if you’re a poor driver you oughtn’t to try driving at night . ” @@ -3744,8 +3744,8 @@ # VB/C NPrPl+ ? . . N🅪Sg/VB+ . N🅪Sg/VB/J+ . . NSg/VB VB/C D NPr+ ? VB/C NPr+ NPr . IPl+ NSg/VPt/P P > gamble , and when Ferret wandered into the garden it meant he was cleaned out and # NPr/VB . VB/C NSg/I/C NSg/VB VP/J P D NSg/VB/J+ NPr/ISg+ VB NPr/ISg+ VPt VP/J NSg/VB/J/R/P VB/C -> Associated Traction would have to fluctuate profitably next day . -# VP/J Nᴹ/VB VXB NSg/VXB P VB R NSg/J/P NPr🅪Sg+ . +> Associated Traction would have to fluctuate profitably next day . +# VP/J Nᴹ/VB VXB NSg/VXB P VB R J/P NPr🅪Sg+ . > # > A man named Klipspringer was there so often and so long that he became known as @@ -3862,8 +3862,8 @@ # D$+ NSg+ . NSg/I/C/Ddem NPr/ISg+ VB NPr/I/J/Dq P NSg/VB . NSg/I/J/R/C D$+ NSg/VB/J+ NSg/VB+ . NSg/I/C/Ddem NPr/ISg+ > was a person of some undefined consequence , had gradually faded and he had # VPt D/P NSg/VB P I/J/R/Dq VP/J NSg/VB+ . VB R J VB/C NPr/ISg+ VB -> become simply the proprietor of an elaborate road - house next door . -# VBPp R D NSg P D/P VB/J N🅪Sg/J+ . NPr/VB+ NSg/J/P+ NSg/VB+ . +> become simply the proprietor of an elaborate road - house next door . +# VBPp R D NSg P D/P VB/J N🅪Sg/J+ . NPr/VB+ J/P+ NSg/VB+ . > # > And then came that disconcerting ride . We hadn’t reached West Egg Village before @@ -4114,8 +4114,8 @@ # ISg/D$+ NSg+ . NPr/ISg+ VP/J NPr/ISg+ C/P D NPr$/I/VB/J NPl/V3+ . > # -> “ Right you are , ” agreed the policeman , tipping his cap . “ Know you next time , Mr . -# . NPr/VB/J ISgPl+ VB . . VP/J D+ NSg+ . NSg/Vg ISg/D$+ NPr/VB+ . . NSg/VB ISgPl+ NSg/J/P N🅪Sg/VB/J+ . NSg+ . +> “ Right you are , ” agreed the policeman , tipping his cap . “ Know you next time , Mr . +# . NPr/VB/J ISgPl+ VB . . VP/J D+ NSg+ . NSg/Vg ISg/D$+ NPr/VB+ . . NSg/VB ISgPl+ J/P N🅪Sg/VB/J+ . NSg+ . > Gatsby . Excuse me ! ” # NPr . NSg/VB+ NPr/ISg+ . . > @@ -4634,8 +4634,8 @@ # VB VB/NoAm NPr/ISg+ VPt D I/J NPr/VB/J+ . > # -> That was nineteen - seventeen . By the next year I had a few beaux myself , and I -# NSg/I/C/Ddem+ VPt NSg . NSg . NSg/J/P D+ NSg/J/P+ NSg+ ISg/#r+ VB D/P NSg/I/Dq ? ISg+ . VB/C ISg/#r+ +> That was nineteen - seventeen . By the next year I had a few beaux myself , and I +# NSg/I/C/Ddem+ VPt NSg . NSg . NSg/J/P D+ J/P+ NSg+ ISg/#r+ VB D/P NSg/I/Dq ? ISg+ . VB/C ISg/#r+ > began to play in tournaments , so I didn’t see Daisy very often . She went with a # VPt P N🅪Sg/VB NPr/J/R/P NPl . NSg/I/J/R/C ISg/#r+ VB NSg/VB NPr+ J/R R . ISg+ NSg/VPt P D/P > slightly older crowd — when she went with anyone at all . Wild rumors were @@ -4654,8 +4654,8 @@ # P D NSg+ NSg/P NSg/I/J/C/Dq . > # -> By the next autumn she was gay again , gay as ever . She had a début after the -# NSg/J/P D+ NSg/J/P+ NPr🅪Sg/VB+ ISg+ VPt NPr/VB/J P . NPr/VB/J NSg/R J . ISg+ VB D/P ? P D +> By the next autumn she was gay again , gay as ever . She had a début after the +# NSg/J/P D+ J/P+ NPr🅪Sg/VB+ ISg+ VPt NPr/VB/J P . NPr/VB/J NSg/R J . ISg+ VB D/P ? P D > armistice , and in February she was presumably engaged to a man from New Orleans . # NPr🅪Sg . VB/C NPr/J/R/P NPr+ ISg+ VPt R VP/J P D/P NPr/VB/J+ P NSg/J NPr+ . > In June she married Tom Buchanan of Chicago , with more pomp and circumstance @@ -4722,8 +4722,8 @@ # ISg/D$+ NSg+ VB/C VP/J ISg/D$+ NSg/VB/J P ISg/D$+ NSg/VB+ . VB/C N🅪Sg/VB/J/P D/P+ NSg+ JC . NSg/I/C IPl+ > walked out of the room , the pearls were around her neck and the incident was # VP/J NSg/VB/J/R/P P D+ N🅪Sg/VB/J+ . D+ NPl/V3+ NSg/VPt J/P ISg/D$+ NSg/VB VB/C D+ NSg/J+ VPt -> over . Next day at five o’clock she married Tom Buchanan without so much as a -# NSg/J/P . NSg/J/P+ NPr🅪Sg+ NSg/P NSg R ISg+ NSg/VP/J NPr/VB+ NPr+ C/P NSg/I/J/R/C NSg/I/J/R/Dq NSg/R D/P +> over . Next day at five o’clock she married Tom Buchanan without so much as a +# NSg/J/P . J/P+ NPr🅪Sg+ NSg/P NSg R ISg+ NSg/VP/J NPr/VB+ NPr+ C/P NSg/I/J/R/C NSg/I/J/R/Dq NSg/R D/P > shiver , and started off on a three months ’ trip to the South Seas . # NSg/VB . VB/C VP/J NSg/VB/J/P J/P D/P NSg NPl+ . NSg/VB/J+ P D NPr/VB/J+ NPl+ . > @@ -4752,8 +4752,8 @@ # D NPr+ NPr+ NSg+ . > # -> The next April Daisy had her little girl , and they went to France for a year . I -# D+ NSg/J/P+ NPr+ NPr+ VB ISg/D$+ NPr/I/J/Dq+ NSg/VB+ . VB/C IPl+ NSg/VPt P NPr+ R/C/P D/P+ NSg+ . ISg/#r+ +> The next April Daisy had her little girl , and they went to France for a year . I +# D+ J/P+ NPr+ NPr+ VB ISg/D$+ NPr/I/J/Dq+ NSg/VB+ . VB/C IPl+ NSg/VPt P NPr+ R/C/P D/P+ NSg+ . ISg/#r+ > saw them one spring in Cannes , and later in Deauville , and then they came back # NSg/VPt NSg/IPl+ NSg/I/J N🅪Sg/VB NPr/J/R/P NPr+ . VB/C JC NPr/J/R/P ? . VB/C NSg/J/C IPl+ NSg/VPt/P NSg/VB/J > to Chicago to settle down . Daisy was popular in Chicago , as you know . They moved @@ -4861,7 +4861,7 @@ > # > “ He wants her to see his house , ” she explained . “ And your house is right next -# . NPr/ISg+ NPl/V3 ISg/D$+ P NSg/VB ISg/D$+ NPr/VB+ . . ISg+ VP/J . . VB/C D$+ NPr/VB+ VL3 NPr/VB/J NSg/J/P+ +# . NPr/ISg+ NPl/V3 ISg/D$+ P NSg/VB ISg/D$+ NPr/VB+ . . ISg+ VP/J . . VB/C D$+ NPr/VB+ VL3 NPr/VB/J J/P+ > door . ” # NSg/VB+ . . > @@ -4886,8 +4886,8 @@ # > “ ‘ I don’t want to do anything out of the way ! ’ he kept saying . ‘ I want to see # . Unlintable ISg/#r+ VB NSg/VB P VXB NSg/I/VB+ NSg/VB/J/R/P P D NSg/J+ . . NPr/ISg+ VP N🅪Sg/Vg/J . Unlintable ISg/#r+ NSg/VB P NSg/VB -> her right next door . ’ -# ISg/D$+ NPr/VB/J+ NSg/J/P+ NSg/VB+ . . +> her right next door . ’ +# ISg/D$+ NPr/VB/J+ J/P+ NSg/VB+ . . > # > “ When I said you were a particular friend of Tom’s , he started to abandon the @@ -5122,8 +5122,8 @@ # N🅪Sg/VB+ NSg/R ISg/#r+ VP/J D$+ NSg/VB/J+ NSg/VB+ . NSg/I/J/R/C ISg/#r+ VB NSg/VB I/C NPr/C NSg/R/C NPr NSg/VPt P > Coney Island , or for how many hours he “ glanced into rooms ” while his house # ? NSg/VB+ . NPr/C R/C/P NSg/C NSg/I/J/Dq NPl+ NPr/ISg+ . VP/J P NPl/V3+ . NSg/VB/C/P ISg/D$+ NPr/VB+ -> blazed gaudily on . I called up Daisy from the office next morning , and invited -# VP/J R J/P . ISg/#r+ VP/J NSg/VB/J/P NPr+ P D+ NSg/VB+ NSg/J/P+ N🅪Sg/Vg/J+ . VB/C NSg/VP/J +> blazed gaudily on . I called up Daisy from the office next morning , and invited +# VP/J R J/P . ISg/#r+ VP/J NSg/VB/J/P NPr+ P D+ NSg/VB+ J/P+ N🅪Sg/Vg/J+ . VB/C NSg/VP/J > her to come to tea . # ISg/D$+ P NSg/VBPp/P P N🅪Sg/VB . > @@ -5388,8 +5388,8 @@ # NSg/VXB J NSg/VXB . > # -> “ Five years next November . ” -# . NSg+ NPl+ NSg/J/P+ NPr+ . . +> “ Five years next November . ” +# . NSg+ NPl+ J/P+ NPr+ . . > # > The automatic quality of Gatsby’s answer set us all back at least another @@ -6330,8 +6330,8 @@ # . ISgPl+ VB/J NSg/VB/J/P NSg/J/R . NPr/VB+ . . > # -> “ Next door . ” -# . NSg/J/P+ NSg/VB+ . . +> “ Next door . ” +# . J/P+ NSg/VB+ . . > # > “ That so ? ” @@ -6346,8 +6346,8 @@ # ISg+ VPt NSg/J . > # -> “ We’ll all come over to your next party , Mr . Gatsby , ” she suggested . “ What do -# . K NSg/I/J/C/Dq NSg/VBPp/P+ NSg/J/P P D$+ NSg/J/P NSg/VB/J+ . NSg+ . NPr . . ISg+ VP/J . . NSg/I+ VXB +> “ We’ll all come over to your next party , Mr . Gatsby , ” she suggested . “ What do +# . K NSg/I/J/C/Dq NSg/VBPp/P+ NSg/J/P P D$+ J/P NSg/VB/J+ . NSg+ . NPr . . ISg+ VP/J . . NSg/I+ VXB > you say ? ” # ISgPl+ NSg/VB . . > @@ -7046,8 +7046,8 @@ # NSg/I/J/C/Dq . > # -> Next day Gatsby called me on the phone . -# NSg/J/P+ NPr🅪Sg+ NPr VP/J NPr/ISg+ J/P D NSg/VB+ . +> Next day Gatsby called me on the phone . +# J/P+ NPr🅪Sg+ NPr VP/J NPr/ISg+ J/P D NSg/VB+ . > # > “ Going away ? ” I inquired . @@ -7098,14 +7098,14 @@ # NSg/VB/J+ . > # -> The next day was broiling , almost the last , certainly the warmest , of the -# D+ NSg/J/P+ NPr🅪Sg+ VPt Nᴹ/Vg/J . R D NSg/VB/J . R D JS . P D +> The next day was broiling , almost the last , certainly the warmest , of the +# D+ J/P+ NPr🅪Sg+ VPt Nᴹ/Vg/J . R D NSg/VB/J . R D JS . P D > summer . As my train emerged from the tunnel into sunlight , only the hot whistles # NPr🅪Sg/VB+ . NSg/R D$+ NSg/VB+ VP/J P D+ NSg/VB+ P NSg/VB+ . J/R/C D NSg/VB/J NPl/V3 > of the National Biscuit Company broke the simmering hush at noon . The straw # P D NSg/J NSg N🅪Sg/VB+ NSg/VPt/J D Nᴹ/Vg/J NSg/VB+ NSg/P NSg/VB+ . D N🅪Sg/VB/J+ -> seats of the car hovered on the edge of combustion ; the woman next to me -# NPl/V3 P D+ NSg+ VP/J J/P D NSg/VB P Nᴹ . D NSg/VB+ NSg/J/P P NPr/ISg+ +> seats of the car hovered on the edge of combustion ; the woman next to me +# NPl/V3 P D+ NSg+ VP/J J/P D NSg/VB P Nᴹ . D NSg/VB+ J/P P NPr/ISg+ > perspired delicately for a while into her white shirtwaist , and then , as her # VP/J R R/C/P D/P NSg/VB/C/P+ P ISg/D$+ NPr🅪Sg/VB/J NSg . VB/C NSg/J/C . NSg/R ISg/D$+ > newspaper dampened under her fingers , lapsed despairingly into deep heat with a @@ -7422,8 +7422,8 @@ # > “ What’ll we do with ourselves this afternoon ? ” cried Daisy , “ and the day after # . K IPl+ VXB P IPl+ I/Ddem N🅪Sg+ . . VP/J NPr+ . . VB/C D+ NPr🅪Sg+ P -> that , and the next thirty years ? ” -# NSg/I/C/Ddem+ . VB/C D+ NSg/J/P+ NSg+ NPl+ . . +> that , and the next thirty years ? ” +# NSg/I/C/Ddem+ . VB/C D+ J/P+ NSg+ NPl+ . . > # > “ Don’t be morbid , ” Jordan said . “ Life starts all over again when it gets crisp @@ -8296,8 +8296,8 @@ # NSg/VB NSg/VB/J VB/C NSg/VBP NSg+ . NSg/I+ P NSg/J NSg/VB NPr🅪Sg/VB P D$+ NSg/VB/J+ . NSg/VB/J/R . NSg/C NSg$ > the idea you can count me out . . . . Nowadays people begin by sneering at family # D+ NSg+ ISgPl+ NPr/VXB NSg/VB NPr/ISg+ NSg/VB/J/R/P . . . . NSg NPl/VB+ NSg/VB NSg/J/P Nᴹ/Vg/J NSg/P N🅪Sg/J+ -> life and family institutions , and next they’ll throw everything overboard and -# N🅪Sg/VB VB/C N🅪Sg/J+ + . VB/C NSg/J/P K NSg/VB NSg/I/VB+ VB/J VB/C +> life and family institutions , and next they’ll throw everything overboard and +# N🅪Sg/VB VB/C N🅪Sg/J+ + . VB/C J/P K NSg/VB NSg/I/VB+ VB/J VB/C > have intermarriage between black and white . ” # NSg/VXB N🅪Sg NSg/P N🅪Sg/VB/J VB/C NPr🅪Sg/VB/J . . > @@ -8848,8 +8848,8 @@ # D . NPr🅪Sg+ NSg+ . NSg/R D+ NPl/V3+ VP/J NPr/ISg+ . VB NSg/VB . NPr/ISg+ NSg/VPt/P NSg/VB/J/R/P P D > gathering darkness , wavered tragically for a moment , and then disappeared around # Nᴹ/Vg/J Nᴹ+ . VP/J R R/C/P D/P NSg+ . VB/C NSg/J/C VP/J J/P -> the next bend . Mavromichaelis wasn’t even sure of its color — he told the first -# D NSg/J/P NPr/VB+ . ? VB NSg/VB/J J P ISg/D$+ N🅪Sg/VB/J/Am+ . NPr/ISg+ VP D NSg/VB/J +> the next bend . Mavromichaelis wasn’t even sure of its color — he told the first +# D J/P NPr/VB+ . ? VB NSg/VB/J J P ISg/D$+ N🅪Sg/VB/J/Am+ . NPr/ISg+ VP D NSg/VB/J > policeman that it was light green . The other car , the one going toward New York , # NSg+ NSg/I/C/Ddem+ NPr/ISg+ VPt N🅪Sg/VB/J+ NPr🅪Sg/VB/J . D+ NSg/VB/J+ NSg+ . D+ NSg/I/J+ Nᴹ/Vg/J J/P NSg/J+ NPr+ . > came to rest a hundred yards beyond , and it’s driver hurried back to where @@ -8932,8 +8932,8 @@ # NPr NSg$ NSg/VB+ . VP/J NPr/J/R/P D/P NSg/VB/J+ . VB/C NSg/J/C NPr/J/R/P I/D NSg/VB/J+ . NSg/R > though she suffered from a chill in the hot night , lay on a work - table by the # VB/C ISg+ VP/J P D/P N🅪Sg/VB/J+ NPr/J/R/P D NSg/VB/J N🅪Sg/VB+ . NSg/VB/J J/P D/P N🅪Sg/VB+ . NSg/VB+ NSg/J/P D -> wall , and Tom , with his back to us , was bending over it , motionless . Next to him -# NPr/VB+ . VB/C NPr/VB+ . P ISg/D$+ NSg/VB/J P NPr/IPl+ . VPt Nᴹ/Vg/J NSg/J/P NPr/ISg+ . J . NSg/J/P P ISg+ +> wall , and Tom , with his back to us , was bending over it , motionless . Next to him +# NPr/VB+ . VB/C NPr/VB+ . P ISg/D$+ NSg/VB/J P NPr/IPl+ . VPt Nᴹ/Vg/J NSg/J/P NPr/ISg+ . J . J/P P ISg+ > stood a motorcycle policeman taking down names with much sweat and correction in # VB D/P+ NSg/VB+ NSg+ NSg/Vg/J N🅪Sg/VB/J/P NPl/V3+ P NSg/I/J/R/Dq N🅪Sg/VB VB/C NSg+ NPr/J/R/P > a little book . At first I couldn’t find the source of the high , groaning words @@ -9660,8 +9660,8 @@ # VP/J . NSg/J/R/C VB/C NSg/J/C ISg+ VP/J VB/C NPr/ISg+ VP/J ISg/D$+ NSg/VB/J D/P NPr/I/J/Dq . VB/C NSg/C NPr/ISg+ > kissed her dark shining hair . The afternoon had made them tranquil for a while , # VP/J ISg/D$+ NSg/VB/J+ Nᴹ/Vg/J N🅪Sg/VB+ . D+ N🅪Sg+ VB VB NSg/IPl+ J R/C/P D/P+ NSg/VB/C/P+ . -> as if to give them a deep memory for the long parting the next day promised . -# NSg/R NSg/C P NSg/VB NSg/IPl+ D/P NSg/J N🅪Sg+ R/C/P D NPr/VB/J N🅪Sg/Vg/J D+ NSg/J/P NPr🅪Sg+ VP/J . +> as if to give them a deep memory for the long parting the next day promised . +# NSg/R NSg/C P NSg/VB NSg/IPl+ D/P NSg/J N🅪Sg+ R/C/P D NPr/VB/J N🅪Sg/Vg/J D+ J/P NPr🅪Sg+ VP/J . > They had never been closer in their month of love , nor communicated more # IPl+ VB R NSg/VPp NSg/JC NPr/J/R/P D$+ NSg/J P NPr🅪Sg/VB+ . NSg/C VP/J NPr/I/J/R/Dq > profoundly one with another , than when she brushed silent lips against his @@ -9964,8 +9964,8 @@ # > Probably it had been tactful to leave Daisy’s house , but the act annoyed me , and # R NPr/ISg+ VB NSg/VPp J P NSg/VB NSg$ NPr/VB+ . NSg/C/P D NPr/VB+ VP/J NPr/ISg+ . VB/C -> her next remark made me rigid . -# ISg/D$+ NSg/J/P NSg/VB+ VB NPr/ISg+ NSg/J . +> her next remark made me rigid . +# ISg/D$+ J/P NSg/VB+ VB NPr/ISg+ NSg/J . > # > “ You weren’t so nice to me last night . ” @@ -10453,7 +10453,7 @@ > # > After two years I remember the rest of that day , and that night and the next -# P NSg+ NPl+ ISg/#r+ NSg/VB D NSg/VB P NSg/I/C/Ddem+ NPr🅪Sg+ . VB/C NSg/I/C/Ddem N🅪Sg/VB VB/C D+ NSg/J/P+ +# P NSg+ NPl+ ISg/#r+ NSg/VB D NSg/VB P NSg/I/C/Ddem+ NPr🅪Sg+ . VB/C NSg/I/C/Ddem N🅪Sg/VB VB/C D+ J/P+ > day , only as an endless drill of police and photographers and newspaper men in # NPr🅪Sg+ . J/R/C NSg/R D/P J NSg/VB P Nᴹ/VB VB/C NPl VB/C N🅪Sg/VB+ NPl+ NPr/J/R/P > and out of Gatsby’s front door . A rope stretched across the main gate and a @@ -10468,8 +10468,8 @@ # NSg/J+ . VP/J D+ N🅪Sg+ . NSg . NSg/R NPr/ISg+ NSg/VP/J NSg/J/P NSg$ NSg/VB+ NSg/I/C/Ddem+ > afternoon , and the adventitious authority of his voice set the key for the # N🅪Sg+ . VB/C D J N🅪Sg P ISg/D$+ NSg/VB+ NPr/VBP/J D NPr/VB/J R/C/P D -> newspaper reports next morning . -# N🅪Sg/VB+ NPl/V3+ NSg/J/P N🅪Sg/Vg/J+ . +> newspaper reports next morning . +# N🅪Sg/VB+ NPl/V3+ J/P N🅪Sg/Vg/J+ . > # > Most of those reports were a nightmare — grotesque , circumstantial , eager , and @@ -10604,10 +10604,10 @@ # NPr+ NPr . D/P NSg/VB/J P NSg/VPp/J Nᴹ/VB+ . Nᴹ/Vg/J N🅪Sg/VB/J/P P D NPr/VB+ . > # -> Next morning I sent the butler to New York with a letter to Wolfshiem , which -# NSg/J/P+ N🅪Sg/Vg/J+ ISg/#r+ NSg/VB D NPr/VB P NSg/J NPr+ P D/P NSg/VB+ P ? . I/C+ -> asked for information and urged him to come out on the next train . That request -# VP/J R/C/P Nᴹ+ VB/C VP/J ISg+ P NSg/VBPp/P NSg/VB/J/R/P J/P D NSg/J/P NSg/VB+ . NSg/I/C/Ddem+ NSg/VB+ +> Next morning I sent the butler to New York with a letter to Wolfshiem , which +# J/P+ N🅪Sg/Vg/J+ ISg/#r+ NSg/VB D NPr/VB P NSg/J NPr+ P D/P NSg/VB+ P ? . I/C+ +> asked for information and urged him to come out on the next train . That request +# VP/J R/C/P Nᴹ+ VB/C VP/J ISg+ P NSg/VBPp/P NSg/VB/J/R/P J/P D J/P NSg/VB+ . NSg/I/C/Ddem+ NSg/VB+ > seemed superfluous when I wrote it . I was sure he’d start when he saw the # VP/J J NSg/I/C ISg/#r+ VPt NPr/ISg+ . ISg/#r+ VPt J K NSg/VB NSg/I/C NPr/ISg+ NSg/VPt D > newspapers , just as I was sure there’d be a wire from Daisy before noon — but @@ -11114,8 +11114,8 @@ # > When I left his office the sky had turned dark and I got back to West Egg in a # NSg/I/C ISg/#r+ NPr/VB/J ISg/D$+ NSg/VB D+ N🅪Sg/VB+ VB VP/J NSg/VB/J VB/C ISg/#r+ VP NSg/VB/J P NPr/VB/J+ N🅪Sg/VB+ NPr/J/R/P D/P+ -> drizzle . After changing my clothes I went next door and found Mr . Gatz walking -# N🅪Sg/VB+ . P Nᴹ/Vg/J D$+ NPl/V3+ ISg/#r+ NSg/VPt NSg/J/P NSg/VB+ VB/C NSg/VB NSg+ . ? Nᴹ/Vg/J +> drizzle . After changing my clothes I went next door and found Mr . Gatz walking +# N🅪Sg/VB+ . P Nᴹ/Vg/J D$+ NPl/V3+ ISg/#r+ NSg/VPt J/P NSg/VB+ VB/C NSg/VB NSg+ . ? Nᴹ/Vg/J > up and down excitedly in the hall . His pride in his son and in his son’s # NSg/VB/J/P VB/C N🅪Sg/VB/J/P R NPr/J/R/P D NPr+ . ISg/D$+ Nᴹ/VB+ NPr/J/R/P ISg/D$+ NPr/VB+ VB/C NPr/J/R/P ISg/D$+ NSg$ > possessions was continually increasing and now he had something to show me .