From f791db5f46459d703ea7c07320caa8ecfcfbeee1 Mon Sep 17 00:00:00 2001 From: Adam Reichold Date: Thu, 27 Oct 2022 00:41:21 +0200 Subject: [PATCH 1/3] Do not copy the whole set of stop words for each stream --- src/tokenizer/stop_word_filter.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/tokenizer/stop_word_filter.rs b/src/tokenizer/stop_word_filter.rs index c228e5f8b4..864433f619 100644 --- a/src/tokenizer/stop_word_filter.rs +++ b/src/tokenizer/stop_word_filter.rs @@ -10,6 +10,8 @@ //! assert_eq!(stream.next().unwrap().text, "crafty"); //! assert!(stream.next().is_none()); //! ``` +use std::sync::Arc; + use rustc_hash::FxHashSet; use super::{Token, TokenFilter, TokenStream}; @@ -18,7 +20,7 @@ use crate::tokenizer::BoxTokenStream; /// `TokenFilter` that removes stop words from a token stream #[derive(Clone)] pub struct StopWordFilter { - words: FxHashSet, + words: Arc>, } impl StopWordFilter { @@ -30,7 +32,9 @@ impl StopWordFilter { set.insert(word); } - StopWordFilter { words: set } + StopWordFilter { + words: Arc::new(set), + } } fn english() -> StopWordFilter { @@ -45,7 +49,7 @@ impl StopWordFilter { } pub struct StopWordFilterStream<'a> { - words: FxHashSet, + words: Arc>, tail: BoxTokenStream<'a>, } From ec13158eef9a4658be509a62293f30ffc0dfc867 Mon Sep 17 00:00:00 2001 From: Adam Reichold Date: Thu, 27 Oct 2022 00:46:43 +0200 Subject: [PATCH 2/3] Make construction of StopWordFilter more flexible. --- src/tokenizer/stop_word_filter.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/tokenizer/stop_word_filter.rs b/src/tokenizer/stop_word_filter.rs index 864433f619..7c0dbd394e 100644 --- a/src/tokenizer/stop_word_filter.rs +++ b/src/tokenizer/stop_word_filter.rs @@ -25,15 +25,9 @@ pub struct StopWordFilter { impl StopWordFilter { /// Creates a `StopWordFilter` given a list of words to remove - pub fn remove(words: Vec) -> StopWordFilter { - let mut set = FxHashSet::default(); - - for word in words { - set.insert(word); - } - + pub fn remove>(words: W) -> StopWordFilter { StopWordFilter { - words: Arc::new(set), + words: Arc::new(words.into_iter().collect()), } } @@ -44,7 +38,7 @@ impl StopWordFilter { "there", "these", "they", "this", "to", "was", "will", "with", ]; - StopWordFilter::remove(words.iter().map(|&s| s.to_string()).collect()) + StopWordFilter::remove(words.iter().map(|&s| s.to_string())) } } From e920f9a98a9731bd88629de7e0eb4d2f48a591ca Mon Sep 17 00:00:00 2001 From: Adam Reichold Date: Thu, 27 Oct 2022 00:59:41 +0200 Subject: [PATCH 3/3] Include MIT-licensed data from Stopwords ISO Adds pre-defined stop word filters for three common European languages based on the MIT-licensed data from Stopwords ISO [1]. This is put behind a non-default feature to avoid bloating the binary for users who are not interested in this while still providing batteries-included usability for those who are. [1] https://github.com/stopwords-iso --- .github/workflows/test.yml | 2 +- Cargo.toml | 5 + src/tokenizer/stop_word_filter.rs | 42 +- src/tokenizer/stopwords/de.txt | 620 ++++++++++++++ src/tokenizer/stopwords/en.txt | 1298 +++++++++++++++++++++++++++++ src/tokenizer/stopwords/fr.txt | 691 +++++++++++++++ 6 files changed, 2642 insertions(+), 16 deletions(-) create mode 100644 src/tokenizer/stopwords/de.txt create mode 100644 src/tokenizer/stopwords/en.txt create mode 100644 src/tokenizer/stopwords/fr.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 434a3bf3a7..2e6d1c4c63 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,7 +48,7 @@ jobs: strategy: matrix: features: [ - { label: "all", flags: "mmap,brotli-compression,lz4-compression,snappy-compression,zstd-compression,failpoints" }, + { label: "all", flags: "mmap,brotli-compression,lz4-compression,snappy-compression,zstd-compression,failpoints,stopwords-iso" }, { label: "quickwit", flags: "mmap,quickwit,failpoints" } ] diff --git a/Cargo.toml b/Cargo.toml index 7f285446ef..a0175d1d4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,6 +104,11 @@ unstable = [] # useful for benches. quickwit = ["ciborium"] +stopwords-iso = [] + +[package.metadata.docs.rs] +features = ["stopwords-iso"] + [workspace] members = ["query-grammar", "bitpacker", "common", "fastfield_codecs", "ownedbytes"] diff --git a/src/tokenizer/stop_word_filter.rs b/src/tokenizer/stop_word_filter.rs index 7c0dbd394e..a1e6504a76 100644 --- a/src/tokenizer/stop_word_filter.rs +++ b/src/tokenizer/stop_word_filter.rs @@ -23,6 +23,20 @@ pub struct StopWordFilter { words: Arc>, } +macro_rules! language { + ($method:ident, $code:literal) => { + #[cfg(feature = "stopwords-iso")] + /// Create a `StopWorldFilter` for the named language + pub fn $method() -> Self { + Self::remove( + include_str!(concat!("stopwords/", $code, ".txt")) + .lines() + .map(ToOwned::to_owned), + ) + } + }; +} + impl StopWordFilter { /// Creates a `StopWordFilter` given a list of words to remove pub fn remove>(words: W) -> StopWordFilter { @@ -31,15 +45,9 @@ impl StopWordFilter { } } - fn english() -> StopWordFilter { - let words: [&'static str; 33] = [ - "a", "an", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", - "is", "it", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", - "there", "these", "they", "this", "to", "was", "will", "with", - ]; - - StopWordFilter::remove(words.iter().map(|&s| s.to_string())) - } + language!(english, "en"); + language!(french, "fr"); + language!(german, "de"); } pub struct StopWordFilterStream<'a> { @@ -81,12 +89,6 @@ impl<'a> TokenStream for StopWordFilterStream<'a> { } } -impl Default for StopWordFilter { - fn default() -> StopWordFilter { - StopWordFilter::english() - } -} - #[cfg(test)] mod tests { use crate::tokenizer::tests::assert_token; @@ -119,4 +121,14 @@ mod tests { token_stream.process(&mut add_token); tokens } + + #[cfg(feature = "stopwords-iso")] + #[test] + fn test_builtin_stop_word_filter() { + let tokenizer = TextAnalyzer::from(SimpleTokenizer).filter(StopWordFilter::english()); + + let mut stream = tokenizer.token_stream("i am a cat. as yet i have no name."); + assert_eq!(stream.next().unwrap().text, "cat"); + assert_eq!(stream.next(), None); + } } diff --git a/src/tokenizer/stopwords/de.txt b/src/tokenizer/stopwords/de.txt new file mode 100644 index 0000000000..b3c8c66fb5 --- /dev/null +++ b/src/tokenizer/stopwords/de.txt @@ -0,0 +1,620 @@ +a +ab +aber +ach +acht +achte +achten +achter +achtes +ag +alle +allein +allem +allen +aller +allerdings +alles +allgemeinen +als +also +am +an +ander +andere +anderem +anderen +anderer +anderes +anderm +andern +anderr +anders +au +auch +auf +aus +ausser +ausserdem +außer +außerdem +b +bald +bei +beide +beiden +beim +beispiel +bekannt +bereits +besonders +besser +besten +bin +bis +bisher +bist +c +d +d.h +da +dabei +dadurch +dafür +dagegen +daher +dahin +dahinter +damals +damit +danach +daneben +dank +dann +daran +darauf +daraus +darf +darfst +darin +darum +darunter +darüber +das +dasein +daselbst +dass +dasselbe +davon +davor +dazu +dazwischen +daß +dein +deine +deinem +deinen +deiner +deines +dem +dementsprechend +demgegenüber +demgemäss +demgemäß +demselben +demzufolge +den +denen +denn +denselben +der +deren +derer +derjenige +derjenigen +dermassen +dermaßen +derselbe +derselben +des +deshalb +desselben +dessen +deswegen +dich +die +diejenige +diejenigen +dies +diese +dieselbe +dieselben +diesem +diesen +dieser +dieses +dir +doch +dort +drei +drin +dritte +dritten +dritter +drittes +du +durch +durchaus +durfte +durften +dürfen +dürft +e +eben +ebenso +ehrlich +ei +ei, +eigen +eigene +eigenen +eigener +eigenes +ein +einander +eine +einem +einen +einer +eines +einig +einige +einigem +einigen +einiger +einiges +einmal +eins +elf +en +ende +endlich +entweder +er +ernst +erst +erste +ersten +erster +erstes +es +etwa +etwas +euch +euer +eure +eurem +euren +eurer +eures +f +folgende +früher +fünf +fünfte +fünften +fünfter +fünftes +für +g +gab +ganz +ganze +ganzen +ganzer +ganzes +gar +gedurft +gegen +gegenüber +gehabt +gehen +geht +gekannt +gekonnt +gemacht +gemocht +gemusst +genug +gerade +gern +gesagt +geschweige +gewesen +gewollt +geworden +gibt +ging +gleich +gott +gross +grosse +grossen +grosser +grosses +groß +große +großen +großer +großes +gut +gute +guter +gutes +h +hab +habe +haben +habt +hast +hat +hatte +hatten +hattest +hattet +heisst +her +heute +hier +hin +hinter +hoch +hätte +hätten +i +ich +ihm +ihn +ihnen +ihr +ihre +ihrem +ihren +ihrer +ihres +im +immer +in +indem +infolgedessen +ins +irgend +ist +j +ja +jahr +jahre +jahren +je +jede +jedem +jeden +jeder +jedermann +jedermanns +jedes +jedoch +jemand +jemandem +jemanden +jene +jenem +jenen +jener +jenes +jetzt +k +kam +kann +kannst +kaum +kein +keine +keinem +keinen +keiner +keines +kleine +kleinen +kleiner +kleines +kommen +kommt +konnte +konnten +kurz +können +könnt +könnte +l +lang +lange +leicht +leide +lieber +los +m +machen +macht +machte +mag +magst +mahn +mal +man +manche +manchem +manchen +mancher +manches +mann +mehr +mein +meine +meinem +meinen +meiner +meines +mensch +menschen +mich +mir +mit +mittel +mochte +mochten +morgen +muss +musst +musste +mussten +muß +mußt +möchte +mögen +möglich +mögt +müssen +müsst +müßt +n +na +nach +nachdem +nahm +natürlich +neben +nein +neue +neuen +neun +neunte +neunten +neunter +neuntes +nicht +nichts +nie +niemand +niemandem +niemanden +noch +nun +nur +o +ob +oben +oder +offen +oft +ohne +ordnung +p +q +r +recht +rechte +rechten +rechter +rechtes +richtig +rund +s +sa +sache +sagt +sagte +sah +satt +schlecht +schluss +schon +sechs +sechste +sechsten +sechster +sechstes +sehr +sei +seid +seien +sein +seine +seinem +seinen +seiner +seines +seit +seitdem +selbst +sich +sie +sieben +siebente +siebenten +siebenter +siebentes +sind +so +solang +solche +solchem +solchen +solcher +solches +soll +sollen +sollst +sollt +sollte +sollten +sondern +sonst +soweit +sowie +später +startseite +statt +steht +suche +t +tag +tage +tagen +tat +teil +tel +tritt +trotzdem +tun +u +uhr +um +und +uns +unse +unsem +unsen +unser +unsere +unserer +unses +unter +v +vergangenen +viel +viele +vielem +vielen +vielleicht +vier +vierte +vierten +vierter +viertes +vom +von +vor +w +wahr +wann +war +waren +warst +wart +warum +was +weg +wegen +weil +weit +weiter +weitere +weiteren +weiteres +welche +welchem +welchen +welcher +welches +wem +wen +wenig +wenige +weniger +weniges +wenigstens +wenn +wer +werde +werden +werdet +weshalb +wessen +wie +wieder +wieso +will +willst +wir +wird +wirklich +wirst +wissen +wo +woher +wohin +wohl +wollen +wollt +wollte +wollten +worden +wurde +wurden +während +währenddem +währenddessen +wäre +würde +würden +x +y +z +z.b +zehn +zehnte +zehnten +zehnter +zehntes +zeit +zu +zuerst +zugleich +zum +zunächst +zur +zurück +zusammen +zwanzig +zwar +zwei +zweite +zweiten +zweiter +zweites +zwischen +zwölf +über +überhaupt +übrigens \ No newline at end of file diff --git a/src/tokenizer/stopwords/en.txt b/src/tokenizer/stopwords/en.txt new file mode 100644 index 0000000000..e0952162ac --- /dev/null +++ b/src/tokenizer/stopwords/en.txt @@ -0,0 +1,1298 @@ +'ll +'tis +'twas +'ve +10 +39 +a +a's +able +ableabout +about +above +abroad +abst +accordance +according +accordingly +across +act +actually +ad +added +adj +adopted +ae +af +affected +affecting +affects +after +afterwards +ag +again +against +ago +ah +ahead +ai +ain't +aint +al +all +allow +allows +almost +alone +along +alongside +already +also +although +always +am +amid +amidst +among +amongst +amoungst +amount +an +and +announce +another +any +anybody +anyhow +anymore +anyone +anything +anyway +anyways +anywhere +ao +apart +apparently +appear +appreciate +appropriate +approximately +aq +ar +are +area +areas +aren +aren't +arent +arise +around +arpa +as +aside +ask +asked +asking +asks +associated +at +au +auth +available +aw +away +awfully +az +b +ba +back +backed +backing +backs +backward +backwards +bb +bd +be +became +because +become +becomes +becoming +been +before +beforehand +began +begin +beginning +beginnings +begins +behind +being +beings +believe +below +beside +besides +best +better +between +beyond +bf +bg +bh +bi +big +bill +billion +biol +bj +bm +bn +bo +both +bottom +br +brief +briefly +bs +bt +but +buy +bv +bw +by +bz +c +c'mon +c's +ca +call +came +can +can't +cannot +cant +caption +case +cases +cause +causes +cc +cd +certain +certainly +cf +cg +ch +changes +ci +ck +cl +clear +clearly +click +cm +cmon +cn +co +co. +com +come +comes +computer +con +concerning +consequently +consider +considering +contain +containing +contains +copy +corresponding +could +could've +couldn +couldn't +couldnt +course +cr +cry +cs +cu +currently +cv +cx +cy +cz +d +dare +daren't +darent +date +de +dear +definitely +describe +described +despite +detail +did +didn +didn't +didnt +differ +different +differently +directly +dj +dk +dm +do +does +doesn +doesn't +doesnt +doing +don +don't +done +dont +doubtful +down +downed +downing +downs +downwards +due +during +dz +e +each +early +ec +ed +edu +ee +effect +eg +eh +eight +eighty +either +eleven +else +elsewhere +empty +end +ended +ending +ends +enough +entirely +er +es +especially +et +et-al +etc +even +evenly +ever +evermore +every +everybody +everyone +everything +everywhere +ex +exactly +example +except +f +face +faces +fact +facts +fairly +far +farther +felt +few +fewer +ff +fi +fifteen +fifth +fifty +fify +fill +find +finds +fire +first +five +fix +fj +fk +fm +fo +followed +following +follows +for +forever +former +formerly +forth +forty +forward +found +four +fr +free +from +front +full +fully +further +furthered +furthering +furthermore +furthers +fx +g +ga +gave +gb +gd +ge +general +generally +get +gets +getting +gf +gg +gh +gi +give +given +gives +giving +gl +gm +gmt +gn +go +goes +going +gone +good +goods +got +gotten +gov +gp +gq +gr +great +greater +greatest +greetings +group +grouped +grouping +groups +gs +gt +gu +gw +gy +h +had +hadn't +hadnt +half +happens +hardly +has +hasn +hasn't +hasnt +have +haven +haven't +havent +having +he +he'd +he'll +he's +hed +hell +hello +help +hence +her +here +here's +hereafter +hereby +herein +heres +hereupon +hers +herself +herse” +hes +hi +hid +high +higher +highest +him +himself +himse” +his +hither +hk +hm +hn +home +homepage +hopefully +how +how'd +how'll +how's +howbeit +however +hr +ht +htm +html +http +hu +hundred +i +i'd +i'll +i'm +i've +i.e. +id +ie +if +ignored +ii +il +ill +im +immediate +immediately +importance +important +in +inasmuch +inc +inc. +indeed +index +indicate +indicated +indicates +information +inner +inside +insofar +instead +int +interest +interested +interesting +interests +into +invention +inward +io +iq +ir +is +isn +isn't +isnt +it +it'd +it'll +it's +itd +itll +its +itself +itse” +ive +j +je +jm +jo +join +jp +just +k +ke +keep +keeps +kept +keys +kg +kh +ki +kind +km +kn +knew +know +known +knows +kp +kr +kw +ky +kz +l +la +large +largely +last +lately +later +latest +latter +latterly +lb +lc +least +length +less +lest +let +let's +lets +li +like +liked +likely +likewise +line +little +lk +ll +long +longer +longest +look +looking +looks +low +lower +lr +ls +lt +ltd +lu +lv +ly +m +ma +made +mainly +make +makes +making +man +many +may +maybe +mayn't +maynt +mc +md +me +mean +means +meantime +meanwhile +member +members +men +merely +mg +mh +microsoft +might +might've +mightn't +mightnt +mil +mill +million +mine +minus +miss +mk +ml +mm +mn +mo +more +moreover +most +mostly +move +mp +mq +mr +mrs +ms +msie +mt +mu +much +mug +must +must've +mustn't +mustnt +mv +mw +mx +my +myself +myse” +mz +n +na +name +namely +nay +nc +nd +ne +near +nearly +necessarily +necessary +need +needed +needing +needn't +neednt +needs +neither +net +netscape +never +neverf +neverless +nevertheless +new +newer +newest +next +nf +ng +ni +nine +ninety +nl +no +no-one +nobody +non +none +nonetheless +noone +nor +normally +nos +not +noted +nothing +notwithstanding +novel +now +nowhere +np +nr +nu +null +number +numbers +nz +o +obtain +obtained +obviously +of +off +often +oh +ok +okay +old +older +oldest +om +omitted +on +once +one +one's +ones +only +onto +open +opened +opening +opens +opposite +or +ord +order +ordered +ordering +orders +org +other +others +otherwise +ought +oughtn't +oughtnt +our +ours +ourselves +out +outside +over +overall +owing +own +p +pa +page +pages +part +parted +particular +particularly +parting +parts +past +pe +per +perhaps +pf +pg +ph +pk +pl +place +placed +places +please +plus +pm +pmid +pn +point +pointed +pointing +points +poorly +possible +possibly +potentially +pp +pr +predominantly +present +presented +presenting +presents +presumably +previously +primarily +probably +problem +problems +promptly +proud +provided +provides +pt +put +puts +pw +py +q +qa +que +quickly +quite +qv +r +ran +rather +rd +re +readily +really +reasonably +recent +recently +ref +refs +regarding +regardless +regards +related +relatively +research +reserved +respectively +resulted +resulting +results +right +ring +ro +room +rooms +round +ru +run +rw +s +sa +said +same +saw +say +saying +says +sb +sc +sd +se +sec +second +secondly +seconds +section +see +seeing +seem +seemed +seeming +seems +seen +sees +self +selves +sensible +sent +serious +seriously +seven +seventy +several +sg +sh +shall +shan't +shant +she +she'd +she'll +she's +shed +shell +shes +should +should've +shouldn +shouldn't +shouldnt +show +showed +showing +shown +showns +shows +si +side +sides +significant +significantly +similar +similarly +since +sincere +site +six +sixty +sj +sk +sl +slightly +sm +small +smaller +smallest +sn +so +some +somebody +someday +somehow +someone +somethan +something +sometime +sometimes +somewhat +somewhere +soon +sorry +specifically +specified +specify +specifying +sr +st +state +states +still +stop +strongly +su +sub +substantially +successfully +such +sufficiently +suggest +sup +sure +sv +sy +system +sz +t +t's +take +taken +taking +tc +td +tell +ten +tends +test +text +tf +tg +th +than +thank +thanks +thanx +that +that'll +that's +that've +thatll +thats +thatve +the +their +theirs +them +themselves +then +thence +there +there'd +there'll +there're +there's +there've +thereafter +thereby +thered +therefore +therein +therell +thereof +therere +theres +thereto +thereupon +thereve +these +they +they'd +they'll +they're +they've +theyd +theyll +theyre +theyve +thick +thin +thing +things +think +thinks +third +thirty +this +thorough +thoroughly +those +thou +though +thoughh +thought +thoughts +thousand +three +throug +through +throughout +thru +thus +til +till +tip +tis +tj +tk +tm +tn +to +today +together +too +took +top +toward +towards +tp +tr +tried +tries +trillion +truly +try +trying +ts +tt +turn +turned +turning +turns +tv +tw +twas +twelve +twenty +twice +two +tz +u +ua +ug +uk +um +un +under +underneath +undoing +unfortunately +unless +unlike +unlikely +until +unto +up +upon +ups +upwards +us +use +used +useful +usefully +usefulness +uses +using +usually +uucp +uy +uz +v +va +value +various +vc +ve +versus +very +vg +vi +via +viz +vn +vol +vols +vs +vu +w +want +wanted +wanting +wants +was +wasn +wasn't +wasnt +way +ways +we +we'd +we'll +we're +we've +web +webpage +website +wed +welcome +well +wells +went +were +weren +weren't +werent +weve +wf +what +what'd +what'll +what's +what've +whatever +whatll +whats +whatve +when +when'd +when'll +when's +whence +whenever +where +where'd +where'll +where's +whereafter +whereas +whereby +wherein +wheres +whereupon +wherever +whether +which +whichever +while +whilst +whim +whither +who +who'd +who'll +who's +whod +whoever +whole +wholl +whom +whomever +whos +whose +why +why'd +why'll +why's +widely +width +will +willing +wish +with +within +without +won +won't +wonder +wont +words +work +worked +working +works +world +would +would've +wouldn +wouldn't +wouldnt +ws +www +x +y +ye +year +years +yes +yet +you +you'd +you'll +you're +you've +youd +youll +young +younger +youngest +your +youre +yours +yourself +yourselves +youve +yt +yu +z +za +zero +zm +zr \ No newline at end of file diff --git a/src/tokenizer/stopwords/fr.txt b/src/tokenizer/stopwords/fr.txt new file mode 100644 index 0000000000..18dd261aa4 --- /dev/null +++ b/src/tokenizer/stopwords/fr.txt @@ -0,0 +1,691 @@ +a +abord +absolument +afin +ah +ai +aie +aient +aies +ailleurs +ainsi +ait +allaient +allo +allons +allô +alors +anterieur +anterieure +anterieures +apres +après +as +assez +attendu +au +aucun +aucune +aucuns +aujourd +aujourd'hui +aupres +auquel +aura +aurai +auraient +aurais +aurait +auras +aurez +auriez +aurions +aurons +auront +aussi +autant +autre +autrefois +autrement +autres +autrui +aux +auxquelles +auxquels +avaient +avais +avait +avant +avec +avez +aviez +avions +avoir +avons +ayant +ayez +ayons +b +bah +bas +basee +bat +beau +beaucoup +bien +bigre +bon +boum +bravo +brrr +c +car +ce +ceci +cela +celle +celle-ci +celle-là +celles +celles-ci +celles-là +celui +celui-ci +celui-là +celà +cent +cependant +certain +certaine +certaines +certains +certes +ces +cet +cette +ceux +ceux-ci +ceux-là +chacun +chacune +chaque +cher +chers +chez +chiche +chut +chère +chères +ci +cinq +cinquantaine +cinquante +cinquantième +cinquième +clac +clic +combien +comme +comment +comparable +comparables +compris +concernant +contre +couic +crac +d +da +dans +de +debout +dedans +dehors +deja +delà +depuis +dernier +derniere +derriere +derrière +des +desormais +desquelles +desquels +dessous +dessus +deux +deuxième +deuxièmement +devant +devers +devra +devrait +different +differentes +differents +différent +différente +différentes +différents +dire +directe +directement +dit +dite +dits +divers +diverse +diverses +dix +dix-huit +dix-neuf +dix-sept +dixième +doit +doivent +donc +dont +dos +douze +douzième +dring +droite +du +duquel +durant +dès +début +désormais +e +effet +egale +egalement +egales +eh +elle +elle-même +elles +elles-mêmes +en +encore +enfin +entre +envers +environ +es +essai +est +et +etant +etc +etre +eu +eue +eues +euh +eurent +eus +eusse +eussent +eusses +eussiez +eussions +eut +eux +eux-mêmes +exactement +excepté +extenso +exterieur +eûmes +eût +eûtes +f +fais +faisaient +faisant +fait +faites +façon +feront +fi +flac +floc +fois +font +force +furent +fus +fusse +fussent +fusses +fussiez +fussions +fut +fûmes +fût +fûtes +g +gens +h +ha +haut +hein +hem +hep +hi +ho +holà +hop +hormis +hors +hou +houp +hue +hui +huit +huitième +hum +hurrah +hé +hélas +i +ici +il +ils +importe +j +je +jusqu +jusque +juste +k +l +la +laisser +laquelle +las +le +lequel +les +lesquelles +lesquels +leur +leurs +longtemps +lors +lorsque +lui +lui-meme +lui-même +là +lès +m +ma +maint +maintenant +mais +malgre +malgré +maximale +me +meme +memes +merci +mes +mien +mienne +miennes +miens +mille +mince +mine +minimale +moi +moi-meme +moi-même +moindres +moins +mon +mot +moyennant +multiple +multiples +même +mêmes +n +na +naturel +naturelle +naturelles +ne +neanmoins +necessaire +necessairement +neuf +neuvième +ni +nombreuses +nombreux +nommés +non +nos +notamment +notre +nous +nous-mêmes +nouveau +nouveaux +nul +néanmoins +nôtre +nôtres +o +oh +ohé +ollé +olé +on +ont +onze +onzième +ore +ou +ouf +ouias +oust +ouste +outre +ouvert +ouverte +ouverts +o| +où +p +paf +pan +par +parce +parfois +parle +parlent +parler +parmi +parole +parseme +partant +particulier +particulière +particulièrement +pas +passé +pendant +pense +permet +personne +personnes +peu +peut +peuvent +peux +pff +pfft +pfut +pif +pire +pièce +plein +plouf +plupart +plus +plusieurs +plutôt +possessif +possessifs +possible +possibles +pouah +pour +pourquoi +pourrais +pourrait +pouvait +prealable +precisement +premier +première +premièrement +pres +probable +probante +procedant +proche +près +psitt +pu +puis +puisque +pur +pure +q +qu +quand +quant +quant-à-soi +quanta +quarante +quatorze +quatre +quatre-vingt +quatrième +quatrièmement +que +quel +quelconque +quelle +quelles +quelqu'un +quelque +quelques +quels +qui +quiconque +quinze +quoi +quoique +r +rare +rarement +rares +relative +relativement +remarquable +rend +rendre +restant +reste +restent +restrictif +retour +revoici +revoilà +rien +s +sa +sacrebleu +sait +sans +sapristi +sauf +se +sein +seize +selon +semblable +semblaient +semble +semblent +sent +sept +septième +sera +serai +seraient +serais +serait +seras +serez +seriez +serions +serons +seront +ses +seul +seule +seulement +si +sien +sienne +siennes +siens +sinon +six +sixième +soi +soi-même +soient +sois +soit +soixante +sommes +son +sont +sous +souvent +soyez +soyons +specifique +specifiques +speculatif +stop +strictement +subtiles +suffisant +suffisante +suffit +suis +suit +suivant +suivante +suivantes +suivants +suivre +sujet +superpose +sur +surtout +t +ta +tac +tandis +tant +tardive +te +tel +telle +tellement +telles +tels +tenant +tend +tenir +tente +tes +tic +tien +tienne +tiennes +tiens +toc +toi +toi-même +ton +touchant +toujours +tous +tout +toute +toutefois +toutes +treize +trente +tres +trois +troisième +troisièmement +trop +très +tsoin +tsouin +tu +té +u +un +une +unes +uniformement +unique +uniques +uns +v +va +vais +valeur +vas +vers +via +vif +vifs +vingt +vivat +vive +vives +vlan +voici +voie +voient +voilà +voire +vont +vos +votre +vous +vous-mêmes +vu +vé +vôtre +vôtres +w +x +y +z +zut +à +â +ça +ès +étaient +étais +était +étant +état +étiez +étions +été +étée +étées +étés +êtes +être +ô \ No newline at end of file