From 4c4eaa366a2b64df53352f7e92ac61e5cf0aafb5 Mon Sep 17 00:00:00 2001 From: Chanjin Park Date: Wed, 30 Oct 2024 16:30:39 +0900 Subject: [PATCH] gs_index: v5 --- docs/README.md | 4 + docs/design/design.md | 2 +- docs/design/images/class_serializable.png | Bin 33027 -> 11864 bytes docs/design/images/class_serializable.puml | 36 +-- docs/design/images/v4_class_serializable.png | Bin 0 -> 35417 bytes docs/design/images/v4_class_serializable.puml | 51 ++++ src/backend/gs_index/src/App.vue | 84 +++--- .../src/components/AnnotatorSelect.vue | 13 - .../gs_index/src/components/Corpus.vue | 222 +++------------ .../gs_index/src/components/CorpusesView.vue | 132 ++------- .../gs_index/src/components/Header.vue | 2 +- .../src/components/LocalAnnotatorOptions.vue | 6 +- .../gs_index/src/components/MiscOptions.vue | 14 - .../gs_index/src/components/Paragraph.vue | 8 +- .../gs_index/src/components/UploadView.vue | 44 +-- .../gs_index/src/components/v5/AppV5.vue | 13 - .../gs_index/src/components/v5/CorpusV5.vue | 56 ---- .../src/components/v5/CorpusesViewV5.vue | 64 ----- .../src/components/v5/sampleCorpusesV5.json | 1 - src/backend/gs_index/src/corpusStorage.js | 165 +++++++++++ .../src/{components => deprecated}/Alert.vue | 0 .../{components => deprecated}/AlertsView.vue | 0 .../gs_index/src/{ => deprecated}/GsApi.js | 0 .../{components => deprecated}/RestAuth.vue | 0 .../src/{components => deprecated}/Task.vue | 0 .../{components => deprecated}/TasksView.vue | 0 src/backend/gs_index/src/sharedState.js | 2 - src/tools/gsv5/.gitignore | 3 +- src/tools/gsv5/Tristesse d'Olympio.corpus.xml | 1 - src/tools/gsv5/v4_to_v5.ipynb | 194 +++++++------ src/tools/gsv5/v5_xml_to_json.ipynb | 257 ++++++++++++++++++ 31 files changed, 722 insertions(+), 652 deletions(-) create mode 100644 docs/design/images/v4_class_serializable.png create mode 100644 docs/design/images/v4_class_serializable.puml delete mode 100644 src/backend/gs_index/src/components/v5/AppV5.vue delete mode 100644 src/backend/gs_index/src/components/v5/CorpusV5.vue delete mode 100644 src/backend/gs_index/src/components/v5/CorpusesViewV5.vue delete mode 100644 src/backend/gs_index/src/components/v5/sampleCorpusesV5.json create mode 100644 src/backend/gs_index/src/corpusStorage.js rename src/backend/gs_index/src/{components => deprecated}/Alert.vue (100%) rename src/backend/gs_index/src/{components => deprecated}/AlertsView.vue (100%) rename src/backend/gs_index/src/{ => deprecated}/GsApi.js (100%) rename src/backend/gs_index/src/{components => deprecated}/RestAuth.vue (100%) rename src/backend/gs_index/src/{components => deprecated}/Task.vue (100%) rename src/backend/gs_index/src/{components => deprecated}/TasksView.vue (100%) delete mode 100644 src/tools/gsv5/Tristesse d'Olympio.corpus.xml create mode 100644 src/tools/gsv5/v5_xml_to_json.ipynb diff --git a/docs/README.md b/docs/README.md index f56c9eb..1cadc38 100644 --- a/docs/README.md +++ b/docs/README.md @@ -36,6 +36,10 @@ Using XML. ``` +Which can be transformed into JSON. +- ![/docs/design/images/class_serializable.png](/docs/design/images/class_serializable.png) +- `Paragraph` is an arbitary division that fits roughly a paper. + ## Frontend data structure - On `indexDB`, open DB `"corpusDBv5"`. - Instead of locking the scroll, only load the mattering component. diff --git a/docs/design/design.md b/docs/design/design.md index ea954ee..74bf14d 100644 --- a/docs/design/design.md +++ b/docs/design/design.md @@ -69,7 +69,7 @@ e.g. `http://localhost/api/v2/annotator/annotate` ## Classes ### Serializable -![images/class_serializable.png](images/class_serializable.png) +![images/v4_class_serializable.png](images/v4_class_serializable.png) - Reserved `Token.gloss`: `"!UNKNOWN"` diff --git a/docs/design/images/class_serializable.png b/docs/design/images/class_serializable.png index cf7d39fd7d88aae25f229ed9173c61003a9b6807..f0529337a6db33ffb92e974baa91c5229bd9fe7c 100644 GIT binary patch literal 11864 zcmbt)byStz_AV$$h$1bLijvaO0@8}4z($ZpLb^d}E8QR+(%n)bAtl}2(%rR*4SRDJ z_?_>Z?>Fwb~`$%nUXJ=*0&&q0LrfXqmZ*In- zZ)xt(+ermpBl|)5t=+#qM?nSear$ch<&|X<+dc2TQ`K&~yCP3D6~ysOJ}{MFHaq0z znS{p8a^yexz+^sA41w$QMxGUQy zOGw#!FX_)hxp_*tg$4!0ADBhPE4^NS!CLS^MAo7|kh!z6OA?n|9;2GFP(EWHz4_vR z0v&oYsvN`I#)vh|>k+S&zBj}QW2}HXRLDst%(@8;3lU2+O}Ap8nSs>rYL{*s56fRF zPxKa-NSG+^H0BW~l&hS`FaGL5N|`$3b8J4o?OjML12LtayaR!1$uyc6>D~3GKPKio zK;9x-MAcm<^bhi7>#KSYO1q5yJkOI&-9Q76%+koHu}8&<6%#Uj`btMYpQcWXu0udC z@l+d2x6B>e*(`w3KGykI>zu^7h|h;jtyG)MHZ$(qmRltX%G0n{;v&jUTHA>(c7zgj zZKz)!>$H2mpf+zdq?N2Y=MaGU0WNQJm_J5e3CY7 z_uYu#kS4P`4W(av(MR0U8)3*vUvf8(6pcg5_vqA! z3S2(;l^x)n{Y$WuqxB(OU0vx-**%j=i{EcW+GL58*C#9T2N}!PpV}N@rC}|{PYv`* zhe~TzQZv1X7}Iu}`M8?sOXdFd1J|vMkOy4SAGijxzyikHRVxk}a?gCxJ2r{mqqAk! z+uPf_9B(nu)3-keCnBL5tFkq^pyIHjfBJ1v#lYK#o`vNuHnyk$CPA6mOf4Tb_jmKD z?{RT)v+n1G=}6h#pC>a-O`^iW^rlKq(Uio>&{v7h0G_P z9Wy$bD)yOI{vNHi-@Hq~&&D%St&}a7`23@dy844H1_lOgH&|4f?8n)oFW|gx+4ekt z{>~SNqN$9_wEbR8nTp7v+|}kjZNh8x+d|5Njy~t!r0a7tS@&6}Jg!qZ8zH{XuCs1A zTD4Ice6!a$mtK(d`uuoX_-rX6QNYp1$4Bq5;q%Rh4<9CQo9E@`HYy&>dEz!XZ4Bo& zG&I!K)^3g!>vOWR?=OZ5OX~Kghy)TdS3AQ@R8)w_-+G=*+xE@;bdlg`t+HLcapQ&- z6k-28SDlA}0ZTAI>~JviwY)IG&e@s2tc+XbM3xHNp6=tZZciC;A=>OG@-7zDv4!-j zgfbMd{PZ-Ozb4F7`fDS`nA@@E0+2I5tQX^Ijqu@5x?S`iIxBAOE)S}P!|9e+SAS_w zh$D(*V%c;%!k?V>1@js-=y+?rPw?wHSng6g>x^Q;%oIOI(M&6<}?a1 z`Odi4v}Av~^agKX{aTV#DHSQa|C_yU=dzaaMWI0XeChxV9;-xl8X22Op?1CdT*GI* z_ok+%V+CqMHI9}JA)kgw9ayUak%$Hx;fLA-o?lAeEjV+NeW%EMEMP38^<2S;aDSBs-{jzltbxlPY=UJil? z{KOu}>B)9XiY@c_Ut91(j*g6EW@N8vACACX3}E>H7FK3UD0!_=vT-nQDVw1)LUIIe zl$6+?wKO-o!q>CAJ^W7L@H8p4ITX1k?ic$~kk&QdePZvy!NIw?IX^$luXA%t9`<5= zNrGzARqp_RxVpNYe#9^puVBfWdnwAQ2OS(5!lmGE{`xT?@BH|5F;qXuZNZ;zFIi1| zX^p_kq$m!fDw@w}uZf4GqhoxI%I3Ksjpil^-b`Gr1;A^%Bgd1Z->*6l%QNt~OU5$W zR{M40mBq~=PL4;G>(e5?!qf57i7ay0b6wXC<^FynH$C&jve{3%WlGjQ2vZnQ0~R82 zUuNfWMLxRbaOcO2s{+2FQ*Y9xjEKnRQbkKq5L`JcAh=AGlHDek%_Oo`mp3)hX*FJ4 zS-|sz#^A%plCy{WQSU??TsU?*+-9~Fm z3j-O9_ODIQakGrR|1Q}k$wc;~`ytaO0{D5&-mEz55|FC4W@mvrBsc02-zMhSO4+pzclEVAiYXc2oDbr08mb)$_*~}7AOyL~xlYnZac|JrH z>CricK?+u}6xUccr{m6ahpnwfFXTPEyH>4J63Z4KuNTrHe{zPE@6~|(Ca$G2LgID3 z-7>3p#8CLp3leXTRYk$SdTNk`@%JyA$x83+E>D=CUz-h5=FOp7ohS8CR1?qU6^}mZE(gYWa#rl*u!kHpw@ijB;%m8!aZUsYu>2|^<^ z%kPeWjq%JlEfO`oB4*XnP*h9}%8D{x1|DUNg}~QnAN|pMYCcuTkiglv+!d3ao*wg5 z?EplzW|hrydZ>_IB_#6A+O-4P%zB;E3y3zRd4Y;L+-)_%SfA=oXaecaq z^VWEI`7?*~%0);Y0G7T)ftV=8wfWR>8%^P_bd;eoH(v;7^@TU%QI zK`rafe9R>!B`Jkm?-Q@t%gNn!)JJcj4JTm;>MM2Fo&=yakX-^I_5;Fx*l|ONGrRRk zYlmt~vv6&|5S6F=up_Y=bfE2?5(J4n-<^oqqu>$D&&zApMG;%@zD@F$R9r&BdKFy6 z*QsSkc29D*K&MP3>bO@I^{38Qbsu*Ccx@M3wMGjB=iIS{*8cmkXX;-HW5>0s?OuKO z=`Xk9emr3`eJ3F*DyqO0e)M5@!C{BSVqq&<*mPVBm_>vzFq?r7Gz@=6ghwQGCl|a` z#EwQXoMaeesPSyaL=CjH`D#nPKwYIM!0G$xa-z4?+~1ja^TrKzOuya*8pK~lQ6sos z*$!&A9#c#y4Jt*1pXVDgl{zV?AB>v6iyE002lvoY{w5`&YC&nRL`_q(r_*>lL||v` z%9!Ywm~?Uqioy!Ccm#;tY9#+gA9bFCs%)~LpuLs4otfQgZ{ohNo0YScd(u0I@`wmT z5(C^b;JBBQ?1$lXT29GUcSTuhmo|6kYEB8)- z(CKQG6oGtNNv{u6-Dec)6^KoASs;JR$Y=sK9|HG2CVu+%(>x)CFcj(PPT#J{Vi7MM zQYR6HjQ2Vk`>Cv|ItwU)x3{-ZU(!#f{e_K@d{0kL$L+}$Eps;8GebSSM=Jv_r_{;} zgCB4OOiY}Z#ny|ta&mAu6}GpxmzHvL`;8U8Tb*GY)ReroqN1XL)36&8eBs~#8;{1c zp*>q^Mxb_+k-_o0-^*##+bq&wq**in%lB{--zFw7f%eOv6Mu-X7od|*ay^~*6%!Sm z{BAA)swnd*c!`2mLqzJ;}3jIl7&p^#3^gtA`j);>^)**7*jlr8V;?affg)0hunNgthp zM@1pibgW1^zdsA_B~Y^?@%Z z#KoO$SI+Wp%pT3S>@q)ndUSXwV7JyE$)GeYr>D;Ew5N053$nkI-7BSibNo>=1=E}ygcl?1&uB{RYtorKhww-r>ksHQBjNQ zk^EE2g$a?7XnZqeMtzyDW0KtAACO(dqoBC$0Nfh#@55I?{Ip(_+}WD`(d;EFYpJN%1yY~p~3LEVa*F0O+! z5{T^FVp~k&wSL6Jsl2)H!|kAhu1enB9SP2kLKKw2w?ZfcM$@HmyR-J!$usJ`xZ1H( za_eIUYQ=xxc8>ul@)CtsTFz1?kB@n;TBQ?j95{eHtE{2%+@O>2VzpKGmru`EK7!Q) z%bzgftcL#}83GPlYa{t2=Y}{0Ms-O&?O$l(G<^Od8TVwnB|*J_u}Bm8yeSE%;fiGl z0tVV$YFW2h4+s(?U>PTXmzbECKnmXCJ$TSbN!vB0{JRox@$8HY9j)XqUlg^pcD`vs z8OCZ+RnYr~wfEoBO?!ZVya%f+Dq`WHQMrsS9;Gr#Wx14S{(KX|st&q0Cvvg6y+|(1 z#YJ@3855THn~LAgkM9up*)|B7HncN;x}*lEVTl@a zA_2dL^6#MZg9oY^T}HaRH%I(UB3g-2yWa6T_J3Q-X*TvI+i;%e4+3{V^hY)VAS60G zTYJHGnINo2tUY3H^|^__e!yezVeJh7QrQ1eg@_++ShmguWiGd1t5ER3>K|5Y-<;}W zV05|+4B+`5H4`H!ssdFcVaB9tVxmSoDFB4xT7t5~OGCCcx7Nb;)xGl^w$B7!Zci_) zR%I@9g*r>jl1@~H{@3N4oKAhxsTh@E-$yG&pu(qVqPj7c3NgiP%Yy%iFTY!>^`LkI zbv19+u)$gANo0*0qmY_+ zUG^i?>W`4v^23?4m+Ao~MHR;Mj%ES}WYYwW)+^nlEdx16#_)D*9SF4WZiM?eyx94{ zpRIs&(B0jQZh7(QVZpK#x2%()Uh$d$V)Cry9UIbUbdfDUD95{+Umk5Gcd*ppH57UY zP;1}YOpw46LneLG()0cWwX7em(CLd!>y(~bSG-C4dv9WKu_b^bhpqAXdxN1AcTRC# z{wjfK^Zi6Yq5=A!dWDHM@o3?@wyCG|^q6<=?o3u}mKt;|iAkGXf(o%XCr9TP06Q)z zhqxB0W_xDdvYZzL;#A2f3J=FD{oSfvdU9sDl zp6KgiWo8ck-Pc3DBxr}a1q92~!O7ZdCTh^-2UITo?a2x}JiKmtN>q9yBcrk5Vb{YR zo`u)+DW0K}f&p=aoBD=OPnV|2h$moSVT~1Qw<&t}A}^ ze%^6_vG@tA#*cfRY*4~f6QWQFP{6gr1Jgfl{V1V9TGcnMUN#XR@2q@!guMS?0{=cW z3ya12U}n2{ci?JYa%hI$F>&Pz*x~57**E@aHkg3xDVtUkYD7fDukGC2Ty6KW%*7SE z&?;)zEWf9-^k!(U~ou?Bif1fR-3FLCYHW zXG^0=xa7QHf)s?(0i;hjZ=s=;-`j)148Xb27PxzypPugBCZYEW&e=&N&CAaR%6D!# zx7&MkD^V!wT|_`Y0P4+Kdlfj%R!pLOJQZ8pQe*RFp{79x3~h z+4#55r2G3S$^5K5X%TZsBvJ#4_vYwFlZbr;84K~kIgWQ{`)KHW z-rzx0sI1GNmq=|Wf{Te}RmDZ(*+K!D5q(!QbNVJOd~K~b9Z7=sNBeKkA*P}VJruf- zA|)QTci*N?C%6R4pH9Y828M|m$6Zi`R@}YC%u`r0p<_>Y`tp;56Nf290Cs#4QuNWU zrlxO~^Yil;{;-mgk}XlM8-TRF08Kx?+XNU*v9!F5j*f1>J42xq z%WXc1sded73B5#|SWcGvlQJyviw%#xp|gV;U($CUm~jwMQ1s9# zVZY|=*N)IH^Ify_6oe&cR!KVDD82D43+YT|bENr6KC788av{@jubBfpM7LJ_B}w$N zO^-_$(Wj#^A^w`1GKpc8m#1yQk!}#&EvE{=dl$x7y~^l4ckm^hv4whIHMF8WN0sbg z%^Q-2Dm^;LsUQ6p|G}+H+sE!D%)(|{TbSYJ3B#;;#Q)LLv%Dqb8(yzMhv4$BIf_Xg zQmR)h`bcn9!f2~wwD8&-$u`j{9TZDHq%s{X_~>ut4=D7>#;)Zg*a~NrA%#VsUM0`k zw=CHN0Gd-uC#$3sO*9RVnl>#j77WdxqfTV-kw#)TaYJhY;9YN z@=Yl&)g9dIO2@f0jK4JsI;P6X19h|vKBY7KG_7Q23dtpw>@{i_5jANq#jw75^*q7Foeyis$OJk2A5#4~l*=uXaQ{^vT0zHD(Tc zv|AWG!2OqC@jw%*?KJOwcDTwE!~`j5NbT+9MTSxd3ppPdgBl0O&`6p0?EcDQO`i-K0Vd-@zR2Wc+*cBX;o4`T+bD(aWOu7u&RJofKts z3mx&uhSk&GgVtG}(D~D?fZ@>tp1~~N>odu(e~!gesS^DCs+4>Q zl^tAz=fjVzWi-!j_E}xfP`o_@{gwUw{pnt8bjzB>{Q$U$_OyuS-qeorA{#r9W~F#?%*IhBS6{7qF$bplJY|LDKoRd zW{1E==%w5FaS2E7!kJ0bMb4xlEl(jSCGQXJweEZE7~(0{i`Zl>uH(0iOT( z$rJ0E=zpK>$nvWKEogh{{4cVB|MZslG^F$JZ&?tNA@F3B)zwvfy{_H*A5Qy^phRt# zpot6wIcwtNxHtwVXI90^y`!B}U&;d*EI2Swz-f<~)1=TaBd<#DUk0Gw*I|p0fB`|p z3asA9El7HOv#;4pTR-Db$xDJnW4vy8n=4YT5=1v%GtZ#2(pl4&AQK6uJv4;2B};Z* zoQK!?g(!s`Ha2y&7Ry@ksJYj)Er5s!I(b8b#F`{!OFQM-#ETv5^h|+YEQrn7n-hev zm_66O>F>M;(&V>f`*Waxw}w!3K`V=G$09a@LwYxgGX?aQC|~}AEdO~L^GcQm3cMa= zXQKU%^P8Uoiu(=+HB3R#J3(Jus9!;`K*#PXX*vFMslRO z$t}9$uLR4<$pK>t{N=mOgW=DaYy6xXBmS%X^v)0nq_w&E#d-P8|MBsG6y#)3G@0o78f6Vwd?jJzd~7kW`Wt05ueyZBY-221wQqs^W-^>}S-bVo*ub}`XnE9& z?GO*ZoE-G8e2derrltm%Bx%{$=xA>oXEtc*ySux8`0xRU>%*1#?kEP`XRMe%%rcItWv#Vi>iN2?@7(443Ze>4HIrJsd2o zkLTN!fDhikf8USdZKXxx+Jxw*iHgZKA;*njh9^(F|1{MhMg9q(%rGA-qF|yDa4>83 z!{eQsD*ph+Ja$iJp~(|OZAsB&^#7?=G>fyn`QK4+&t^@>-y?Y{Onh#<0kRg#=1N9X zL0fshX5>x8e_U@KFw9VLK96+WmH;9!P+@QkL~H+iZ(;aaI^3a9NC*8p<909^4*+g5 zJUr|Cm~h|}!slCMTwGk3dZ0C7`5wF;42w8vf35g=JZVbLSu>7N%VyXeyRl)C!=}dr z#x-Pk-qIV$L#)=mCnqKbBhFS5EPrrbO~il}>yM9T2L?e$1>__om3HfI$n|*@uDJKv zoie5nL1rHEqENx(aa`exl$WG{s1lQsemvdNt@WBv0iD0f?5r&Jv*nnO1nK7Of|Tlx z;5_q*&D{)0MRi+5{FaEv+Yx-{-?`LK~o7N4?UtsZK$4YEWRlq+Hfw_=(!}8^ahll$t zmCg+Nhle%p2!19&wUT)7@7?Pcec^6eLaim3lb;_!L5S{aan8#(XMue+g8(UFw+avB zH0WMrLtnY3%bcZu=yJNZl`CV2pbAe0j&M|KP~XG`{oMO6QBW{2@`p8>5h1D+XO<*K zxG5&jb>6F*BQqquUPDk;k4TKB3vfmjNiwLLHJZMq^XeUKtGhLH-A`m>WW0rQe{Wbx z9*cz$=(R&=GngKkd7gS!MCgU38dmp>wTZ5#7NSh0hh%{~{ds6AJUkpElB-!5*y*sf z>1>^#>JypluZ1BusIdC);)hMCiIn6TsNPqZ8lJ#_^gEWFMeyTb#uT9RuJ3|2!CO)z zgrLju`{mP9r+xmLmxe09F-rUZAbbW`iAF8pkeqF>*0ZLos?8;yM8-B9e$MWMd5VLsSQF!O&F+wDAx<#{VW-ZJi{WOWjhBg&X(N?wwq&>`8(u1AYDdB zMd>bF^K1~WqHZ3^JNp==IrgK&HlbhN1${yHa5lv7#SKK6z7?kni_S-;@!J<@BV#W zz&?alj3=%<@OW#&lfK;Icf4D&Q+^D#fG0zj#EfSN9UWI%9Lli9ksDKXae90siZd5qq|GT^+@BIym*0TFM&AC%H%|u(OGdg zP8wqhzj3aLr{sy=FFG!e0R9>aHS4VaqJ@sS@6a|tqOVCH_BGd21IzM;{otmD*H6m6 zfW9+MIXZN@ikF_M@1Pm#<%Rau0?c*ImB(L-HcK^Vavs%qV;9uCT92ls)YRfYN^Vy*vU6sw2|>M)GNeF1Lh^%0QNqj_H{#(xaj)?Ur7bTSna z;#(|$K3ymM)e2)Nc_-(QzEw;d$%G@+YjV8k2cm4uvlk*JQx{{rHj B{Wbsq literal 33027 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 { string txt string gloss + bool is_delimiter } class Paragraph <> { - string pstate - Token[] tokens - bool is_delimiter - char[] token_delimiters - - string annotator_info - string original_text - - AnnotatorInfo annotator_info_obj } Paragraph o-left- Token class Corpus <> { - Paragraph[] paragraphs - string[] paragraph_delimiters + int version = 5 + Object metadata - string orignal_text - int[] p_div_locs - string[] task_ids + Paragraph[] paragraphs } Corpus o-left- Paragraph -enum pstate <> ##[dashed] { - "PLAIN" - "DIVIDED" - "PARSED" - "ANNOTATED" -} -Paragraph *-- pstate -note right of pstate::"ANNOTATED" - default fallback -end note - -class AnnotatorInfo <> { - string annotator_name - string lang_from - string lang_to -} -Paragraph *-- AnnotatorInfo - @enduml \ No newline at end of file diff --git a/docs/design/images/v4_class_serializable.png b/docs/design/images/v4_class_serializable.png new file mode 100644 index 0000000000000000000000000000000000000000..15f23bc7b3030568848343f662068b8b339cc7b6 GIT binary patch literal 35417 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 literal 0 HcmV?d00001 diff --git a/docs/design/images/v4_class_serializable.puml b/docs/design/images/v4_class_serializable.puml new file mode 100644 index 0000000..a646aeb --- /dev/null +++ b/docs/design/images/v4_class_serializable.puml @@ -0,0 +1,51 @@ +@startuml + +class Token <> { + string txt + string gloss + bool is_delimiter +} + +class Paragraph <> { + string pstate + + Token[] tokens + bool is_delimiter + char[] token_delimiters + + string annotator_info + string original_text + + AnnotatorInfo annotator_info_obj +} +Paragraph o-left- Token + +class Corpus <> { + Paragraph[] paragraphs + string[] paragraph_delimiters + + string orignal_text + int[] p_div_locs + string[] task_ids +} +Corpus o-left- Paragraph + +enum pstate <> ##[dashed] { + "PLAIN" + "DIVIDED" + "PARSED" + "ANNOTATED" +} +Paragraph *-- pstate +note right of pstate::"ANNOTATED" + default fallback +end note + +class AnnotatorInfo <> { + string annotator_name + string lang_from + string lang_to +} +Paragraph *-- AnnotatorInfo + +@enduml \ No newline at end of file diff --git a/src/backend/gs_index/src/App.vue b/src/backend/gs_index/src/App.vue index 90a8b21..82228d5 100644 --- a/src/backend/gs_index/src/App.vue +++ b/src/backend/gs_index/src/App.vue @@ -1,51 +1,67 @@ \ No newline at end of file diff --git a/src/backend/gs_index/src/components/v5/CorpusesViewV5.vue b/src/backend/gs_index/src/components/v5/CorpusesViewV5.vue deleted file mode 100644 index 5d44b85..0000000 --- a/src/backend/gs_index/src/components/v5/CorpusesViewV5.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/backend/gs_index/src/components/v5/sampleCorpusesV5.json b/src/backend/gs_index/src/components/v5/sampleCorpusesV5.json deleted file mode 100644 index d3fabbd..0000000 --- a/src/backend/gs_index/src/components/v5/sampleCorpusesV5.json +++ /dev/null @@ -1 +0,0 @@ -[" Tristesse d'Olympio Victor Hugo Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl) fr en Initially generated as a v4 file. Les champs n'étaient point noirs, les cieux n'étaient pas mornes.
Non, le jour rayonnait dans un azur sans bornes
Sur la terre étendu,
L'air était plein d'encens et les prés de verdures
Quand il revit ces lieux par tant de blessures
Son coeur s'est répandu!

L'automne souriait; les coteaux vers la plaine
Penchaient leurs bois charmants qui jaunissaient à peine;
Le ciel était doré;
Et les oiseaux, tournés vers celui que tout nomme,
Disant peut-être à Dieu quelque chose de l'homme,
Chantaient leur chant sacré!

Il voulut tout revoir, l'étang près de la source,
La masure l'aumône avait vidé leur bourse,
Le vieux frêne plié,
Les retraites d'amour au fond des bois perdues,
L'arbre dans les baisers leurs âmes confondues
Avaient tout oublié!

Il chercha le jardin, la maison isolée,
La grille d'où l'oeil plonge en une oblique allée,
Les vergers en talus.
Pâle, il marchait. - Au bruit de son pas grave et sombre,
Il voyait à chaque arbre, hélas! se dresser l'ombre
Des jours qui ne sont plus!

Il entendait frémir dans la forêt qu'il aime
Ce doux vent qui, faisant tout vibrer en nous-même,
Y réveille l'amour,
Et, remuant le chêne ou balançant la rose,
Semble l'âme de tout qui va sur chaque chose
Se poser tour à tour!

Les feuilles qui gisaient dans le bois solitaire,
S'efforçant sous ses pas de s'élever de terre,
Couraient dans le jardin;
Ainsi, parfois, quand l'âme est triste, nos pensées
S'envolent un moment sur leurs ailes blessées,
Puis retombent soudain.

Il contempla longtemps les formes magnifiques
Que la nature prend dans les champs pacifiques;
Il rêva jusqu'au soir;
Tout le jour il erra le long de la ravine,
Admirant tour à tour le ciel, face divine,
Le lac, divin miroir!

Hélas! se rappelant ses douces aventures,
Regardant, sans entrer, par-dessus les clôtures,
Ainsi qu'un paria,
Il erra tout le jour, vers l'heure la nuit tombe,
Il se sentit le coeur triste comme une tombe,
Alors il s'écria:

" O douleur! j'ai voulu, moi dont l'âme est troublée,
Savoir si l'urne encor conservait la liqueur,
Et voir ce qu'avait fait cette heureuse vallée
De tout ce que j'avais laissé de mon coeur!

Que peu de temps suffit pour changer toutes choses!
Nature au front serein, comme vous oubliez!
Et comme vous brisez dans vos métamorphoses
Les fils mystérieux nos coeurs sont liés!

Nos chambres de feuillage en halliers sont changées!
L'arbre fut notre chiffre est mort ou renversé;
Nos roses dans l'enclos ont été ravagées
Par les petits enfants qui sautent le fossé.

Un mur clôt la fontaine où, par l'heure échauffée,
Folâtre, elle buvait en descendant des bois;
Elle prenait de l'eau dans sa main, douce fée,
Et laissait retomber des perles de ses doigts!

On a pavé la route âpre et mal aplanie,
Où, dans le sable pur se dessinant si bien,
Et de sa petitesse étalant l'ironie,
Son pied charmant semblait rire à côté du mien!

La borne du chemin, qui vit des jours sans nombre,
jadis pour m'attendre elle aimait à s'asseoir,
S'est usée en heurtant, lorsque la route est sombre,
Les grands chars gémissants qui reviennent le soir.

La forêt ici manque et s'est agrandie.
De tout ce qui fut nous presque rien n'est vivant;
Et, comme un tas de cendre éteinte et refroidie,
L'amas des souvenirs se disperse à tout vent!

N'existons-nous donc plus? Avons-nous eu notre heure ?
Rien ne la rendra-t-il à nos cris superflus?
L'air joue avec la branche au moment je pleure;
Ma maison me regarde et ne me connaît plus.

D'autres vont maintenant passer nous passâmes.
Nous y sommes venus, d'autres vont y venir;
Et le songe qu'avaient ébauché nos deux âmes,
Ils le continueront sans pouvoir le finir!

Car personne ici-bas ne termine et n'achève;
Les pires des humains sont comme les meilleurs;
Nous nous réveillons tous au même endroit du rêve.
Tout commence en ce monde et tout finit ailleurs.

Oui, d'autres à leur tour viendront, couples sans tache,
Puiser dans cet asile heureux, calme, enchanté,
Tout ce que la nature à l'amour qui se cache
Mêle de rêverie et de solennité!

D'autres auront nos champs, nos sentiers, nos retraites;
Ton bois, ma bien-aimée, est à des inconnus.
D'autres femmes viendront, baigneuses indiscrètes,
Troubler le flot sacré qu'ont touché tes pieds nus!

Quoi donc! c'est vainement qu'ici nous nous aimâmes !
Rien ne nous restera de ces coteaux fleuris
nous fondions notre être en y mêlant nos flammes!
L'impassible nature a déjà tout repris.

Oh! dites-moi, ravins, frais ruisseaux, treilles mûres,
Rameaux chargés de nids, grottes, forêts, buissons.
Est-ce que vous ferez pour d'autres vos murmures?
Est-ce que vous direz à d'autres vos chansons?

Nous vous comprenions tant! doux, attentifs, austères,
Tous nos échos s'ouvraient si bien à votre voix!
Et nous prêtions si bien, sans troubler vos mystères,
L'oreille aux mots profonds que vous dites parfois!

Répondez, vallon pur, répondez, solitude,
O nature abritée en ce désert si beau,
Lorsque nous dormirons tous deux dans l'attitude
Que donne aux morts pensifs la forme du tombeau,

Est-ce que vous serez à ce point insensible
De nous savoir couchés, morts avec nos amours,
Et de continuer votre fête paisible,
Et de toujours sourire et de chanter toujours?

Est-ce que, nous sentant errer dans vos retraites,
Fantômes reconnus par vos monts et vos bois,
Vous ne nous direz pas de ces choses secrètes
Qu'on dit en revoyant des amis d'autrefois?

Est-ce que vous pourrez, sans tristesse et sans plainte,
Voir nos ombres flotter marchèrent nos pas,
Et la voir m'entraîner, dans une morne étreinte,
Vers quelque source en pleurs qui sanglote tout bas?

Et s'il est quelque part, dans l'ombre rien ne veille,
Deux amants sous vos fleurs abritant leurs transports,
Ne leur irez-vous pas murmurer à l'oreille:
- Vous qui vivez, donnez une pensée aux morts!

Dieu nous prête un moment les prés et les fontaines,
Les grands bois frissonnants, les rocs profonds et sourds
Et les cieux azurés et les lacs et les plaines,
Pour y mettre nos coeurs, nos rêves, nos amours;

Puis il nous les retire. Il souffle notre flamme;
Il plonge dans la nuit l'antre nous rayonnons;
Et dit à la vallée, s'imprima notre âme,
D'effacer notre trace et d'oublier nos noms.

Eh bien! oubliez-nous, maison, jardin, ombrages !
Herbe, use notre seuil! ronce, cache nos pas !
Chantez, oiseaux! ruisseaux, coulez ! croissez, feuillages !
Ceux que vous oubliez ne vous oublieront pas.

Car vous êtes pour nous l'ombre de l'amour même!
Vous êtes l'oasis qu'on rencontre en chemin!
Vous êtes, ô vallon, la retraite suprême
nous avons pleuré nous tenant par la main!

Toutes les passions s'éloignent avec l'âge,
L'une emportant son masque et l'autre son couteau,
Comme un essaim chantant d'histrions en voyage
Dont le groupe décroît derrière le coteau.

Mais toi, rien ne t'efface, amour! toi qui nous charmes,
Toi qui, torche ou flambeau, luis dans notre brouillard!
Tu nous tiens par la joie, et surtout par les larmes.
Jeune homme on te maudit, on t'adore vieillard.

Dans ces jours la tête au poids des ans s'incline,
l'homme, sans projets, sans but, sans visions,
Sent qu'il n'est déjà plus qu'une tombe en ruine
gisent ses vertus et ses illusions;

Quand notre âme en rêvant descend dans nos entrailles,
Comptant dans notre coeur, qu'enfin la glace atteint,
Comme on compte les morts sur un champ de batailles,
Chaque douleur tombée et chaque songe éteint,

Comme quelqu'un qui cherche en tenant une lampe,
Loin des objets réels, loin du monde rieur,
Elle arrive à pas lents par une obscure rampe
Jusqu'au fond désolé du gouffre intérieur;

Et là, dans cette nuit qu'aucun rayon n'étoile,
L'âme, en un repli sombre tout semble finir,
Sent quelque chose encor palpiter sous un voile...
C'est toi qui dors dans l'ombre, ô sacré souvenir! " Thefieldsweren'tquiteblack,theheavensweren'tnotdull.No,thedayshoneinanazurewithoutboundsUpontheearthextended,The-airwasfullof-encenseandthemeadowsofgreennessesWhenherevivedtheseplaceswherebyso-manyofwoundsHishearthasdiffused!The-autumnsmiled;thehillstowardstheplainWere-leaningtheircharming-woodswhichwhowere-beginning-to-yellowtohardly;Theskywasgilded;Andthebirds,turnedtowardshimwhomallnames,SayingperhapstoGodsomethingthingofman,Sangtheirchantsacred!Hewishedallto-resee,the-pondnearofthespring,Thecottagewherecharityhademptiedtheirpurse,Theoldashbent,Theretreatsof-loveat-thebottomof-thewoodslost,The-treewhereinthekissestheirsoulsmixedHadallforgotten!Hesoughtthegarden,thedetached-house,isolated,Thegatewhencethe-eyeplungesinaobliquealley,Theorchardsinslope.Pale,hewalked.-At-thesoundofhisstepgraveandsolemn,Hesawateverytree,alas!himselfraisethe-shadeOf-thedaysthatnotaremore!Hedid hearto-shiverintheforestwhich-helovesThissweetwindwhich,makingallto-vibrateinourselves,itreviveslove,And,movingtheoakorwavingtherose,Seemsthe-soulofallthatgoesuponeachthingItselfto-reposeturnata-turn!Theleaveswhichlayinthewoodsolitary,Endeavouringunderitsstepstorisefromearth,raninthegarden;Thus,sometimes,whenthe-soulissad,ourthoughtsSoar-awayamomentontheirwingswounded,Thenfall-backsuddenly.Hecontemplateslong-timetheformsmagnificentWhichnaturetakestakesinthepeaceful-fields;peaceful;Hedreamtuntil-theevening;Everythedayhewanderedthealongoftheravine,Admiringturntoturnthesky,divinedivine,Thelake,divinemirror!Alas!himselfrecallinghispleasantadventures,Looking,withoutentering,overthefences,Thusaspariah,Hewanderedalltheday,towardsthe hourwherethenightfalls,Hehimselffelttheheartsadasatomb,Thenheexclaimed:!UNKNOWNOpain!I havewished,Iof whomthe-soulistroubled,To-knowifthe-urnstillpreservedtheliquid,Andto-seewhathadmadethishappyvalleyOfallthatwhichI-hadleftthereofmyheart!Whatlittleoftimesufficesforto-changeallthings!Naturewith-theforeheadserene,howyouforget!AndhowyoubreakinyourmetamorphosesThethreadsmysteriouswhereourheartsaretied!Ourroomsoffoliageincopsarechanged!The-treewherewasourmonogramisdeadoroverturned;Ourrosesinthe-hedgehavebeenravagedBythelittlechildrenwholeaptheditch.Awallinclosedthefountainwhere,bythe hourwarmed,Sportif,shedrankindescendingofwoods;Shetookofthe-waterinherhand,sweetfairy,Andletfall-backsomepearlsfromherfingers!Onhaspavedtheroadroughandbadlylevelled,Where,inthesandpureitselftracingsowell,Andofitssmallnessdisplayingthe-irony,Hisfootcharmingseemedto-laughatsideof-themine!Thelandmarkof-theroad,whichsawof-thedayswithoutnumber,Whereformerlyforme-to-waitshelovedtosit,Haswastedin-hitting,whentheroadisdark,Thegreatwagonsgroaningwhichreturntheevening.Theforestherewantsandtherehasenlarged.Ofallthiswhowaswealmostnothingisliving;And,likeaheapofashesextinguishedandcooled,The-heapofrecollectionsitselfdispersestoeverywind!Do-we not-existthenmore?Have-wehadourhour?Nothingnotitwill-he-rendertoourcriessuperfluous?The-airplayswiththebranchat-themomentwhereIweep;MyhousemeregardsandnotmeknowsmoreOthersgonowto-passwherewepassed.Wetherearecome,othersgothereto-come;Andthedreamwhich-hadsketchedourtwosouls,Theyitwill-continuewithoutbeing-ableitto-finish!Fornobodyhere-belownefinishesandn'ends;Theworstof-thehumansarelikethebest;Weourselvesawakenallat-thesamespotof-thedream.Allbeginsinthisworldandallfinisheselsewhere.Yes,othersattheirturnwill-come,coupleswithoutspot,To-drawinthisasylumhappy,calm,enchanted,Allthiswhichthenaturetolovewhich(it) hidesconcealsBlendsofreverieandofsolemnity!Othersshall haveourfields,ourpaths,ourretreats;Thywood,mybeloved,isto(the)unknowns.Otherwomenwill come,bathersindiscreet,To disturbthewavesacredthat-havetouchedthyfeetbare!Whatthen!isin-vainthat-hereweusloved!Nothingnotto-uswill-remainofthesehillsfloweryWherewedid-fondourbeinginthereminglingourflames!The-impassiblenaturehasalreadyallreclaimed.Oh!tell-me,ravines,coolbrooks,vinesripe,Branchesloadedofnests,caverns,woods,bushes.Is-itthatyouwill-doforothersyourmurmurs?Is-itthatyouwill-saytoothersyoursongs?Weyouunderstoodso much!sweet,attentive,austere,Allourechoesdid opensowelltoyourvoice!Andwelentsowell,withouttroublingyourmysteries,The-earto-thewordsprofoundwhichyousaysometimes!Answer,valleypure,answer,solitary,Onatureshelteredinthisdesertsobeautiful,Whenweshall sleepalltwointhe attitudeWhichgivesto (it)deadpensivetheformof-thetomb.Is-itthatyouwill-betothispointinsensibleTousto-knowcouched,deadwithourloves,Andtocontinueyourfestivalpeaceful,Andtoalwayssmileandtosingalways?Is-itthat,wefeelingto-errinyourretreats,Ghostsrecognizedbyyourmountainsandyourwoods,Younotto-uswill-saynotofthesethingssecretWhich-aresaidinseeing-again(by)-somefriendsof-former-times?Is-itthatyouwill-be-able,withoutsadnessandwithoutcomplaint,To-seeourshadesto-floatwheremarchedoursteps,Andherto-seeme-drag,inadullembrace,Towardsomefountainintearswhichsobsalllow?Andif heissomewherepart,inthe-shadewherenothingnotwatches,Twoloversunderyourflowersshelteringtheirraptures,Notto-themwill-you-gonotto-murmurto-theear:-Youwholive,giveathoughtto-thedead!Godto-uslendamomentthemeadows,andthefountains,Thegreatwoodstrembling,therocksprofoundanddullAndtheheavensazuredandthelakesandtheplains,In-orderthereto-putourhearts,ourdreams,ourloves;Thenheusthewithdraws.Heblowsourflame;Heplungesintothenightthe-cavewhereweshone;Andsaystothevalley,wherewas-impressedoursoul,To-effaceourtraceandto-forgetournames.Ehwell!forget-us,house,garden,shades!Grass,useourthreshold!bramble,hideoursteps!Sing,birds!streams,flow!increase,leaves!Thosewhomyouforgetnotyouwill-forgetnot.Foryouareforusthe-shadeofloveeven!Youarethe-oasiswhich-onemeetsinway!Youare,Ohollow,theretreatsupremeWherewehaveweptusholdingbythehand!Allthepassionswithdrawwithage,Onecarrying-offhermaskandthe-otherhisknife,Likeaswarmsingingof-playersintravelOf-whichthegroupdecreasesbehindthehill.Butthou,nothingnoteffaces,love!thouwhouscharmest,Thouwho,candleortorch,shinestinourmist!Thouusholdestbythejoy,andabove allbythetears.Youngmantheytheecurseth,theyadoreold (man.)Inthesedayswheretheheadat-theweightof-theyearsinclines,Wherethe-man,withoutprojects,withoutend,withoutvisions,Feelsthat-heis-notalreadymorethan-atombinruinWhereliehisvirtuesandhisillusions;Whenoursoulindreamingdescendsintoourbowels,Countinginourheart,that finallytheicereached,Likeonecountsthedeaduponafieldofbattles,Eachpainfallenandeachdreamextinguished,Likesome onewhoseeksinholdingalamp,Farfrom-theobjectsreal,farfrom-theworldlaughing,ShearrivestostepsslowbyanobscureslopeUntil-thebottomdesolateof-thegulfinterior;Andthere,inthisnightthat noraystarThe-soul,inadark-foldsombrewhereallseemsto-finish,Feelssomethingthingyetto-throbunderaveil...It-isthouwhosleepestinthe-shade,Osacredmemory!!UNKNOWN
"] \ No newline at end of file diff --git a/src/backend/gs_index/src/corpusStorage.js b/src/backend/gs_index/src/corpusStorage.js new file mode 100644 index 0000000..f8bcf42 --- /dev/null +++ b/src/backend/gs_index/src/corpusStorage.js @@ -0,0 +1,165 @@ +export { corpusStorage }; + +import { EventBus } from "./EventBus.js"; + +class CorpusStorageInner { + constructor() { + this.initCache(); + this.connectDb(); + this.initCursors(); + } + + create(content) { + return new Promise((resolve, reject) => { + const transaction = this.db.transaction(['corpuses'], 'readwrite'); + const store = transaction.objectStore('corpuses'); + + const checkAndAdd = (content, id) => { + const getRequest = store.get(id); + + getRequest.onsuccess = () => { + if (getRequest.result) { + // If id exists, modify it + const match = id.match(/^(.*?)( \((\d+)\))?$/); + const baseId = match[1]; + const num = match[3] ? parseInt(match[3], 10) + 1 : 1; + const newId = `${baseId} (${num})`; + content.id = newId; + checkAndAdd(content, newId); + } else { + // If id does not exist, add the content + const addRequest = store.add(content); + addRequest.onsuccess = () => resolve(addRequest.result); + addRequest.onerror = (event) => reject(event.target.error); + this.setCache(); + } + }; + + getRequest.onerror = (event) => reject(event.target.error); + }; + + checkAndAdd(content, content.id); + }); + } + + read(id) { + return new Promise((resolve, reject) => { + const transaction = this.db.transaction(['corpuses'], 'readonly'); + const store = transaction.objectStore('corpuses'); + + const request = store.get(id); + + request.onsuccess = () => resolve(request.result); + request.onerror = (event) => reject(event.target.error); + this.setCache(); + }); + } + + update(content) { + content = JSON.parse(JSON.stringify(content)); + + return new Promise((resolve, reject) => { + const transaction = this.db.transaction(['corpuses'], 'readwrite'); + const store = transaction.objectStore('corpuses'); + + const request = store.put(content); + + request.onsuccess = () => resolve(request.result); + request.onerror = (event) => reject(event.target.error); + this.setCache(); + }); + } + + delete(id) { + return new Promise((resolve, reject) => { + const transaction = this.db.transaction(['corpuses'], 'readwrite'); + const store = transaction.objectStore('corpuses'); + + const request = store.delete(id); + + request.onsuccess = () => resolve(); + request.onerror = (event) => reject(event.target.error); + this.setCache(); + }); + } + + reset() { + console.log("Resetting."); + return new Promise((resolve, reject) => { + const transaction = this.db.transaction(['corpuses'], 'readwrite'); + const store = transaction.objectStore('corpuses'); + + const clearRequest = store.clear(); + this.setCache(); + + clearRequest.onsuccess = () => resolve(); + clearRequest.onerror = (event) => reject(event.target.error); + }); + } + + initCache() { + this.cache = ["loading..."]; + } + + async connectDb() { + this.db = await openDB('corpusDBv5', 1, (db) => { + if (!db.objectStoreNames.contains('corpuses')) { + const _ = db.createObjectStore('corpuses', { keyPath: 'id', autoIncrement: true}); + } + }); + // {id: json} + + this.setCache(); + } + + async setCache() { + //Following the db. + return new Promise((resolve, reject) => { + const transaction = this.db.transaction(['corpuses'], 'readonly'); + const store = transaction.objectStore('corpuses'); + const request = store.openCursor(); + const ids = []; + + request.onsuccess = (event) => { + const cursor = event.target.result; + if (cursor) { + ids.push(cursor.key); // Assuming the key is the `id` + cursor.continue(); + } else { + this.cache = ids; + EventBus.emit("updateCorpusIds"); + resolve(); + } + }; + request.onerror = (event) => { + reject(event.target.error); + }; + }); + } + + initCursors() { + this.cursors = JSON.parse(localStorage.getItem('corpusCursors')) || {}; + } + setCursor(corpusId, val) { + console.log(val); + this.cursors[corpusId] = val; + localStorage.setItem('corpusCursors', JSON.stringify(this.cursors)); + } + getCursor(corpusId) { + return this.cursors[corpusId]; + } +} + +function openDB(name, version, upgradeCallback) { + return new Promise((resolve, reject) => { + const request = indexedDB.open(name, version); + request.onupgradeneeded = (event) => { + const db = event.target.result; + upgradeCallback(db); + }; + request.onsuccess = (event) => resolve(event.target.result); + request.onerror = (event) => reject(event.target.error); + }); +} + +const corpusStorage = new CorpusStorageInner(); diff --git a/src/backend/gs_index/src/components/Alert.vue b/src/backend/gs_index/src/deprecated/Alert.vue similarity index 100% rename from src/backend/gs_index/src/components/Alert.vue rename to src/backend/gs_index/src/deprecated/Alert.vue diff --git a/src/backend/gs_index/src/components/AlertsView.vue b/src/backend/gs_index/src/deprecated/AlertsView.vue similarity index 100% rename from src/backend/gs_index/src/components/AlertsView.vue rename to src/backend/gs_index/src/deprecated/AlertsView.vue diff --git a/src/backend/gs_index/src/GsApi.js b/src/backend/gs_index/src/deprecated/GsApi.js similarity index 100% rename from src/backend/gs_index/src/GsApi.js rename to src/backend/gs_index/src/deprecated/GsApi.js diff --git a/src/backend/gs_index/src/components/RestAuth.vue b/src/backend/gs_index/src/deprecated/RestAuth.vue similarity index 100% rename from src/backend/gs_index/src/components/RestAuth.vue rename to src/backend/gs_index/src/deprecated/RestAuth.vue diff --git a/src/backend/gs_index/src/components/Task.vue b/src/backend/gs_index/src/deprecated/Task.vue similarity index 100% rename from src/backend/gs_index/src/components/Task.vue rename to src/backend/gs_index/src/deprecated/Task.vue diff --git a/src/backend/gs_index/src/components/TasksView.vue b/src/backend/gs_index/src/deprecated/TasksView.vue similarity index 100% rename from src/backend/gs_index/src/components/TasksView.vue rename to src/backend/gs_index/src/deprecated/TasksView.vue diff --git a/src/backend/gs_index/src/sharedState.js b/src/backend/gs_index/src/sharedState.js index f188fca..52d78b0 100644 --- a/src/backend/gs_index/src/sharedState.js +++ b/src/backend/gs_index/src/sharedState.js @@ -8,8 +8,6 @@ export const sharedState = reactive({ lang_from: 'German', lang_to: 'English', - toRemote: true, - openaiApiKey: null, openaiModel: "gpt-4o-mini", outerRetry: 2, diff --git a/src/tools/gsv5/.gitignore b/src/tools/gsv5/.gitignore index 8cd3833..b2f0224 100644 --- a/src/tools/gsv5/.gitignore +++ b/src/tools/gsv5/.gitignore @@ -1 +1,2 @@ -*.corpus.json \ No newline at end of file +*.json +*.xml \ No newline at end of file diff --git a/src/tools/gsv5/Tristesse d'Olympio.corpus.xml b/src/tools/gsv5/Tristesse d'Olympio.corpus.xml deleted file mode 100644 index effb497..0000000 --- a/src/tools/gsv5/Tristesse d'Olympio.corpus.xml +++ /dev/null @@ -1 +0,0 @@ - Tristesse d'Olympio Victor Hugo Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl) fr en Initially generated as a v4 file. Les champs n'étaient point noirs, les cieux n'étaient pas mornes.
Non, le jour rayonnait dans un azur sans bornes
Sur la terre étendu,
L'air était plein d'encens et les prés de verdures
Quand il revit ces lieux par tant de blessures
Son coeur s'est répandu!

L'automne souriait; les coteaux vers la plaine
Penchaient leurs bois charmants qui jaunissaient à peine;
Le ciel était doré;
Et les oiseaux, tournés vers celui que tout nomme,
Disant peut-être à Dieu quelque chose de l'homme,
Chantaient leur chant sacré!

Il voulut tout revoir, l'étang près de la source,
La masure l'aumône avait vidé leur bourse,
Le vieux frêne plié,
Les retraites d'amour au fond des bois perdues,
L'arbre dans les baisers leurs âmes confondues
Avaient tout oublié!

Il chercha le jardin, la maison isolée,
La grille d'où l'oeil plonge en une oblique allée,
Les vergers en talus.
Pâle, il marchait. - Au bruit de son pas grave et sombre,
Il voyait à chaque arbre, hélas! se dresser l'ombre
Des jours qui ne sont plus!

Il entendait frémir dans la forêt qu'il aime
Ce doux vent qui, faisant tout vibrer en nous-même,
Y réveille l'amour,
Et, remuant le chêne ou balançant la rose,
Semble l'âme de tout qui va sur chaque chose
Se poser tour à tour!

Les feuilles qui gisaient dans le bois solitaire,
S'efforçant sous ses pas de s'élever de terre,
Couraient dans le jardin;
Ainsi, parfois, quand l'âme est triste, nos pensées
S'envolent un moment sur leurs ailes blessées,
Puis retombent soudain.

Il contempla longtemps les formes magnifiques
Que la nature prend dans les champs pacifiques;
Il rêva jusqu'au soir;
Tout le jour il erra le long de la ravine,
Admirant tour à tour le ciel, face divine,
Le lac, divin miroir!

Hélas! se rappelant ses douces aventures,
Regardant, sans entrer, par-dessus les clôtures,
Ainsi qu'un paria,
Il erra tout le jour, vers l'heure la nuit tombe,
Il se sentit le coeur triste comme une tombe,
Alors il s'écria:

" O douleur! j'ai voulu, moi dont l'âme est troublée,
Savoir si l'urne encor conservait la liqueur,
Et voir ce qu'avait fait cette heureuse vallée
De tout ce que j'avais laissé de mon coeur!

Que peu de temps suffit pour changer toutes choses!
Nature au front serein, comme vous oubliez!
Et comme vous brisez dans vos métamorphoses
Les fils mystérieux nos coeurs sont liés!

Nos chambres de feuillage en halliers sont changées!
L'arbre fut notre chiffre est mort ou renversé;
Nos roses dans l'enclos ont été ravagées
Par les petits enfants qui sautent le fossé.

Un mur clôt la fontaine où, par l'heure échauffée,
Folâtre, elle buvait en descendant des bois;
Elle prenait de l'eau dans sa main, douce fée,
Et laissait retomber des perles de ses doigts!

On a pavé la route âpre et mal aplanie,
Où, dans le sable pur se dessinant si bien,
Et de sa petitesse étalant l'ironie,
Son pied charmant semblait rire à côté du mien!

La borne du chemin, qui vit des jours sans nombre,
jadis pour m'attendre elle aimait à s'asseoir,
S'est usée en heurtant, lorsque la route est sombre,
Les grands chars gémissants qui reviennent le soir.

La forêt ici manque et s'est agrandie.
De tout ce qui fut nous presque rien n'est vivant;
Et, comme un tas de cendre éteinte et refroidie,
L'amas des souvenirs se disperse à tout vent!

N'existons-nous donc plus? Avons-nous eu notre heure ?
Rien ne la rendra-t-il à nos cris superflus?
L'air joue avec la branche au moment je pleure;
Ma maison me regarde et ne me connaît plus.

D'autres vont maintenant passer nous passâmes.
Nous y sommes venus, d'autres vont y venir;
Et le songe qu'avaient ébauché nos deux âmes,
Ils le continueront sans pouvoir le finir!

Car personne ici-bas ne termine et n'achève;
Les pires des humains sont comme les meilleurs;
Nous nous réveillons tous au même endroit du rêve.
Tout commence en ce monde et tout finit ailleurs.

Oui, d'autres à leur tour viendront, couples sans tache,
Puiser dans cet asile heureux, calme, enchanté,
Tout ce que la nature à l'amour qui se cache
Mêle de rêverie et de solennité!

D'autres auront nos champs, nos sentiers, nos retraites;
Ton bois, ma bien-aimée, est à des inconnus.
D'autres femmes viendront, baigneuses indiscrètes,
Troubler le flot sacré qu'ont touché tes pieds nus!

Quoi donc! c'est vainement qu'ici nous nous aimâmes !
Rien ne nous restera de ces coteaux fleuris
nous fondions notre être en y mêlant nos flammes!
L'impassible nature a déjà tout repris.

Oh! dites-moi, ravins, frais ruisseaux, treilles mûres,
Rameaux chargés de nids, grottes, forêts, buissons.
Est-ce que vous ferez pour d'autres vos murmures?
Est-ce que vous direz à d'autres vos chansons?

Nous vous comprenions tant! doux, attentifs, austères,
Tous nos échos s'ouvraient si bien à votre voix!
Et nous prêtions si bien, sans troubler vos mystères,
L'oreille aux mots profonds que vous dites parfois!

Répondez, vallon pur, répondez, solitude,
O nature abritée en ce désert si beau,
Lorsque nous dormirons tous deux dans l'attitude
Que donne aux morts pensifs la forme du tombeau,

Est-ce que vous serez à ce point insensible
De nous savoir couchés, morts avec nos amours,
Et de continuer votre fête paisible,
Et de toujours sourire et de chanter toujours?

Est-ce que, nous sentant errer dans vos retraites,
Fantômes reconnus par vos monts et vos bois,
Vous ne nous direz pas de ces choses secrètes
Qu'on dit en revoyant des amis d'autrefois?

Est-ce que vous pourrez, sans tristesse et sans plainte,
Voir nos ombres flotter marchèrent nos pas,
Et la voir m'entraîner, dans une morne étreinte,
Vers quelque source en pleurs qui sanglote tout bas?

Et s'il est quelque part, dans l'ombre rien ne veille,
Deux amants sous vos fleurs abritant leurs transports,
Ne leur irez-vous pas murmurer à l'oreille:
- Vous qui vivez, donnez une pensée aux morts!

Dieu nous prête un moment les prés et les fontaines,
Les grands bois frissonnants, les rocs profonds et sourds
Et les cieux azurés et les lacs et les plaines,
Pour y mettre nos coeurs, nos rêves, nos amours;

Puis il nous les retire. Il souffle notre flamme;
Il plonge dans la nuit l'antre nous rayonnons;
Et dit à la vallée, s'imprima notre âme,
D'effacer notre trace et d'oublier nos noms.

Eh bien! oubliez-nous, maison, jardin, ombrages !
Herbe, use notre seuil! ronce, cache nos pas !
Chantez, oiseaux! ruisseaux, coulez ! croissez, feuillages !
Ceux que vous oubliez ne vous oublieront pas.

Car vous êtes pour nous l'ombre de l'amour même!
Vous êtes l'oasis qu'on rencontre en chemin!
Vous êtes, ô vallon, la retraite suprême
nous avons pleuré nous tenant par la main!

Toutes les passions s'éloignent avec l'âge,
L'une emportant son masque et l'autre son couteau,
Comme un essaim chantant d'histrions en voyage
Dont le groupe décroît derrière le coteau.

Mais toi, rien ne t'efface, amour! toi qui nous charmes,
Toi qui, torche ou flambeau, luis dans notre brouillard!
Tu nous tiens par la joie, et surtout par les larmes.
Jeune homme on te maudit, on t'adore vieillard.

Dans ces jours la tête au poids des ans s'incline,
l'homme, sans projets, sans but, sans visions,
Sent qu'il n'est déjà plus qu'une tombe en ruine
gisent ses vertus et ses illusions;

Quand notre âme en rêvant descend dans nos entrailles,
Comptant dans notre coeur, qu'enfin la glace atteint,
Comme on compte les morts sur un champ de batailles,
Chaque douleur tombée et chaque songe éteint,

Comme quelqu'un qui cherche en tenant une lampe,
Loin des objets réels, loin du monde rieur,
Elle arrive à pas lents par une obscure rampe
Jusqu'au fond désolé du gouffre intérieur;

Et là, dans cette nuit qu'aucun rayon n'étoile,
L'âme, en un repli sombre tout semble finir,
Sent quelque chose encor palpiter sous un voile...
C'est toi qui dors dans l'ombre, ô sacré souvenir! " Thefieldsweren'tquiteblack,theheavensweren'tnotdull.No,thedayshoneinanazurewithoutboundsUpontheearthextended,The-airwasfullof-encenseandthemeadowsofgreennessesWhenherevivedtheseplaceswherebyso-manyofwoundsHishearthasdiffused!The-autumnsmiled;thehillstowardstheplainWere-leaningtheircharming-woodswhichwhowere-beginning-to-yellowtohardly;Theskywasgilded;Andthebirds,turnedtowardshimwhomallnames,SayingperhapstoGodsomethingthingofman,Sangtheirchantsacred!Hewishedallto-resee,the-pondnearofthespring,Thecottagewherecharityhademptiedtheirpurse,Theoldashbent,Theretreatsof-loveat-thebottomof-thewoodslost,The-treewhereinthekissestheirsoulsmixedHadallforgotten!Hesoughtthegarden,thedetached-house,isolated,Thegatewhencethe-eyeplungesinaobliquealley,Theorchardsinslope.Pale,hewalked.-At-thesoundofhisstepgraveandsolemn,Hesawateverytree,alas!himselfraisethe-shadeOf-thedaysthatnotaremore!Hedid hearto-shiverintheforestwhich-helovesThissweetwindwhich,makingallto-vibrateinourselves,itreviveslove,And,movingtheoakorwavingtherose,Seemsthe-soulofallthatgoesuponeachthingItselfto-reposeturnata-turn!Theleaveswhichlayinthewoodsolitary,Endeavouringunderitsstepstorisefromearth,raninthegarden;Thus,sometimes,whenthe-soulissad,ourthoughtsSoar-awayamomentontheirwingswounded,Thenfall-backsuddenly.Hecontemplateslong-timetheformsmagnificentWhichnaturetakestakesinthepeaceful-fields;peaceful;Hedreamtuntil-theevening;Everythedayhewanderedthealongoftheravine,Admiringturntoturnthesky,divinedivine,Thelake,divinemirror!Alas!himselfrecallinghispleasantadventures,Looking,withoutentering,overthefences,Thusaspariah,Hewanderedalltheday,towardsthe hourwherethenightfalls,Hehimselffelttheheartsadasatomb,Thenheexclaimed:!UNKNOWNOpain!I havewished,Iof whomthe-soulistroubled,To-knowifthe-urnstillpreservedtheliquid,Andto-seewhathadmadethishappyvalleyOfallthatwhichI-hadleftthereofmyheart!Whatlittleoftimesufficesforto-changeallthings!Naturewith-theforeheadserene,howyouforget!AndhowyoubreakinyourmetamorphosesThethreadsmysteriouswhereourheartsaretied!Ourroomsoffoliageincopsarechanged!The-treewherewasourmonogramisdeadoroverturned;Ourrosesinthe-hedgehavebeenravagedBythelittlechildrenwholeaptheditch.Awallinclosedthefountainwhere,bythe hourwarmed,Sportif,shedrankindescendingofwoods;Shetookofthe-waterinherhand,sweetfairy,Andletfall-backsomepearlsfromherfingers!Onhaspavedtheroadroughandbadlylevelled,Where,inthesandpureitselftracingsowell,Andofitssmallnessdisplayingthe-irony,Hisfootcharmingseemedto-laughatsideof-themine!Thelandmarkof-theroad,whichsawof-thedayswithoutnumber,Whereformerlyforme-to-waitshelovedtosit,Haswastedin-hitting,whentheroadisdark,Thegreatwagonsgroaningwhichreturntheevening.Theforestherewantsandtherehasenlarged.Ofallthiswhowaswealmostnothingisliving;And,likeaheapofashesextinguishedandcooled,The-heapofrecollectionsitselfdispersestoeverywind!Do-we not-existthenmore?Have-wehadourhour?Nothingnotitwill-he-rendertoourcriessuperfluous?The-airplayswiththebranchat-themomentwhereIweep;MyhousemeregardsandnotmeknowsmoreOthersgonowto-passwherewepassed.Wetherearecome,othersgothereto-come;Andthedreamwhich-hadsketchedourtwosouls,Theyitwill-continuewithoutbeing-ableitto-finish!Fornobodyhere-belownefinishesandn'ends;Theworstof-thehumansarelikethebest;Weourselvesawakenallat-thesamespotof-thedream.Allbeginsinthisworldandallfinisheselsewhere.Yes,othersattheirturnwill-come,coupleswithoutspot,To-drawinthisasylumhappy,calm,enchanted,Allthiswhichthenaturetolovewhich(it) hidesconcealsBlendsofreverieandofsolemnity!Othersshall haveourfields,ourpaths,ourretreats;Thywood,mybeloved,isto(the)unknowns.Otherwomenwill come,bathersindiscreet,To disturbthewavesacredthat-havetouchedthyfeetbare!Whatthen!isin-vainthat-hereweusloved!Nothingnotto-uswill-remainofthesehillsfloweryWherewedid-fondourbeinginthereminglingourflames!The-impassiblenaturehasalreadyallreclaimed.Oh!tell-me,ravines,coolbrooks,vinesripe,Branchesloadedofnests,caverns,woods,bushes.Is-itthatyouwill-doforothersyourmurmurs?Is-itthatyouwill-saytoothersyoursongs?Weyouunderstoodso much!sweet,attentive,austere,Allourechoesdid opensowelltoyourvoice!Andwelentsowell,withouttroublingyourmysteries,The-earto-thewordsprofoundwhichyousaysometimes!Answer,valleypure,answer,solitary,Onatureshelteredinthisdesertsobeautiful,Whenweshall sleepalltwointhe attitudeWhichgivesto (it)deadpensivetheformof-thetomb.Is-itthatyouwill-betothispointinsensibleTousto-knowcouched,deadwithourloves,Andtocontinueyourfestivalpeaceful,Andtoalwayssmileandtosingalways?Is-itthat,wefeelingto-errinyourretreats,Ghostsrecognizedbyyourmountainsandyourwoods,Younotto-uswill-saynotofthesethingssecretWhich-aresaidinseeing-again(by)-somefriendsof-former-times?Is-itthatyouwill-be-able,withoutsadnessandwithoutcomplaint,To-seeourshadesto-floatwheremarchedoursteps,Andherto-seeme-drag,inadullembrace,Towardsomefountainintearswhichsobsalllow?Andif heissomewherepart,inthe-shadewherenothingnotwatches,Twoloversunderyourflowersshelteringtheirraptures,Notto-themwill-you-gonotto-murmurto-theear:-Youwholive,giveathoughtto-thedead!Godto-uslendamomentthemeadows,andthefountains,Thegreatwoodstrembling,therocksprofoundanddullAndtheheavensazuredandthelakesandtheplains,In-orderthereto-putourhearts,ourdreams,ourloves;Thenheusthewithdraws.Heblowsourflame;Heplungesintothenightthe-cavewhereweshone;Andsaystothevalley,wherewas-impressedoursoul,To-effaceourtraceandto-forgetournames.Ehwell!forget-us,house,garden,shades!Grass,useourthreshold!bramble,hideoursteps!Sing,birds!streams,flow!increase,leaves!Thosewhomyouforgetnotyouwill-forgetnot.Foryouareforusthe-shadeofloveeven!Youarethe-oasiswhich-onemeetsinway!Youare,Ohollow,theretreatsupremeWherewehaveweptusholdingbythehand!Allthepassionswithdrawwithage,Onecarrying-offhermaskandthe-otherhisknife,Likeaswarmsingingof-playersintravelOf-whichthegroupdecreasesbehindthehill.Butthou,nothingnoteffaces,love!thouwhouscharmest,Thouwho,candleortorch,shinestinourmist!Thouusholdestbythejoy,andabove allbythetears.Youngmantheytheecurseth,theyadoreold (man.)Inthesedayswheretheheadat-theweightof-theyearsinclines,Wherethe-man,withoutprojects,withoutend,withoutvisions,Feelsthat-heis-notalreadymorethan-atombinruinWhereliehisvirtuesandhisillusions;Whenoursoulindreamingdescendsintoourbowels,Countinginourheart,that finallytheicereached,Likeonecountsthedeaduponafieldofbattles,Eachpainfallenandeachdreamextinguished,Likesome onewhoseeksinholdingalamp,Farfrom-theobjectsreal,farfrom-theworldlaughing,ShearrivestostepsslowbyanobscureslopeUntil-thebottomdesolateof-thegulfinterior;Andthere,inthisnightthat noraystarThe-soul,inadark-foldsombrewhereallseemsto-finish,Feelssomethingthingyetto-throbunderaveil...It-isthouwhosleepestinthe-shade,Osacredmemory!!UNKNOWN
\ No newline at end of file diff --git a/src/tools/gsv5/v4_to_v5.ipynb b/src/tools/gsv5/v4_to_v5.ipynb index 4613285..2204a9d 100644 --- a/src/tools/gsv5/v4_to_v5.ipynb +++ b/src/tools/gsv5/v4_to_v5.ipynb @@ -9,105 +9,129 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 7, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'pstate': 'ANNOTATED', 'tokens': [{'txt': 'Les', 'is_delimiter': False, 'gloss': 'The'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'champs', 'is_delimiter': False, 'gloss': 'fields'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': \"n'étaient\", 'is_delimiter': False, 'gloss': \"weren't\"}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'point', 'is_delimiter': False, 'gloss': 'quite'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'noirs,', 'is_delimiter': False, 'gloss': 'black,'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'les', 'is_delimiter': False, 'gloss': 'the'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'cieux', 'is_delimiter': False, 'gloss': 'heavens'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': \"n'étaient\", 'is_delimiter': False, 'gloss': \"weren't\"}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'pas', 'is_delimiter': False, 'gloss': 'not'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'mornes.', 'is_delimiter': False, 'gloss': 'dull.'}, {'txt': '\\n', 'is_delimiter': True, 'gloss': None}, {'txt': 'Non,', 'is_delimiter': False, 'gloss': 'No,'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'le', 'is_delimiter': False, 'gloss': 'the'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'jour', 'is_delimiter': False, 'gloss': 'day'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'rayonnait', 'is_delimiter': False, 'gloss': 'shone'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'dans', 'is_delimiter': False, 'gloss': 'in'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'un', 'is_delimiter': False, 'gloss': 'an'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'azur', 'is_delimiter': False, 'gloss': 'azure'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'sans', 'is_delimiter': False, 'gloss': 'without'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'bornes', 'is_delimiter': False, 'gloss': 'bounds'}, {'txt': '\\n', 'is_delimiter': True, 'gloss': None}, {'txt': 'Sur', 'is_delimiter': False, 'gloss': 'Upon'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'la', 'is_delimiter': False, 'gloss': 'the'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'terre', 'is_delimiter': False, 'gloss': 'earth'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'étendu,', 'is_delimiter': False, 'gloss': 'extended,'}, {'txt': '\\n', 'is_delimiter': True, 'gloss': None}, {'txt': \"L'air\", 'is_delimiter': False, 'gloss': 'The-air'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'était', 'is_delimiter': False, 'gloss': 'was'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'plein', 'is_delimiter': False, 'gloss': 'full'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': \"d'encens\", 'is_delimiter': False, 'gloss': 'of-encense'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'et', 'is_delimiter': False, 'gloss': 'and'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'les', 'is_delimiter': False, 'gloss': 'the'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'prés', 'is_delimiter': False, 'gloss': 'meadows'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'de', 'is_delimiter': False, 'gloss': 'of'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'verdures', 'is_delimiter': False, 'gloss': 'greennesses'}, {'txt': '\\n', 'is_delimiter': True, 'gloss': None}, {'txt': 'Quand', 'is_delimiter': False, 'gloss': 'When'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'il', 'is_delimiter': False, 'gloss': 'he'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'revit', 'is_delimiter': False, 'gloss': 'revived'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'ces', 'is_delimiter': False, 'gloss': 'these'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'lieux', 'is_delimiter': False, 'gloss': 'places'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'où', 'is_delimiter': False, 'gloss': 'where'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'par', 'is_delimiter': False, 'gloss': 'by'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'tant', 'is_delimiter': False, 'gloss': 'so-many'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'de', 'is_delimiter': False, 'gloss': 'of'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'blessures', 'is_delimiter': False, 'gloss': 'wounds'}, {'txt': '\\n', 'is_delimiter': True, 'gloss': None}, {'txt': 'Son', 'is_delimiter': False, 'gloss': 'His'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'coeur', 'is_delimiter': False, 'gloss': 'heart'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': \"s'est\", 'is_delimiter': False, 'gloss': 'has'}, {'txt': ' ', 'is_delimiter': True, 'gloss': None}, {'txt': 'répandu!', 'is_delimiter': False, 'gloss': 'diffused!'}], 'is_delimiter': False, 'token_delimiters': ' \\t\\n\\r\\x0b\\x0c', 'annotator_info': 'ChatGptAnnotator_`French`_`English`', 'original_text': \"Les champs n'étaient point noirs, les cieux n'étaient pas mornes.\\nNon, le jour rayonnait dans un azur sans bornes\\nSur la terre étendu,\\nL'air était plein d'encens et les prés de verdures\\nQuand il revit ces lieux où par tant de blessures\\nSon coeur s'est répandu!\", 'annotator_info_obj': {'annotator_name': 'chatgpt_ft0', 'lang_from': 'French', 'lang_to': 'English'}}\n", - "{'pstate': 'PARSED', 'tokens': [{'txt': '\\n\\n', 'is_delimiter': True, 'gloss': None}], 'is_delimiter': True, 'token_delimiters': ' \\t\\n\\r\\x0b\\x0c', 'annotator_info': '', 'original_text': '\\n\\n', 'annotator_info_obj': {'annotator_name': None, 'lang_from': None, 'lang_to': None}}\n" - ] - } - ], + "outputs": [], "source": [ "import json\n", "\n", - "v4_filename = \"Tristesse d'Olympio.corpus.json\"\n", - "with open(v4_filename, \"rt\", encoding=\"utf-8\") as fin:\n", - "\tv4 = json.load(fin)\n", + "class Metadata:\n", + "\tdef __init__(self, v4_filename, author, annotation_info, original_language, gloss_language, note):\n", + "\t\tself.v4_filename = v4_filename\n", + "\t\tself.author = author\n", + "\t\tself.annotation_info = annotation_info\n", + "\t\tself.original_language = original_language\n", + "\t\tself.gloss_language = gloss_language\n", + "\t\tself.note = note\n", + "\t\n", + "v4s = [\n", + "\tMetadata(\n", + "\t\tv4_filename=\"Tristesse d'Olympio.corpus.json\",\n", + "\t\tauthor=\"Victor Hugo\",\n", + "\t\tannotation_info=\"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\",\n", + "\t\toriginal_language=\"fr\",\n", + "\t\tgloss_language=\"en\",\n", + "\t\tnote=\"Initially generated as a v4 file.\",\n", + "\t),\n", + "\tMetadata(\n", + "\t\tv4_filename=\"Der Prozess.corpus.json\",\n", + "\t\tauthor=\"Franz Kafka\",\n", + "\t\tannotation_info=\"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\",\n", + "\t\toriginal_language=\"de\",\n", + "\t\tgloss_language=\"en\",\n", + "\t\tnote=\"Initially generated as a v4 file.\",\n", + "\t),\n", + "\tMetadata(\n", + "\t\tv4_filename=\"Die Leiden des jungen Werther.corpus.json\",\n", + "\t\tauthor=\"Goethe\",\n", + "\t\tannotation_info=\"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\",\n", + "\t\toriginal_language=\"de\",\n", + "\t\tgloss_language=\"en\",\n", + "\t\tnote=\"Initially generated as a v4 file.\",\n", + "\t),\n", + "\tMetadata(\n", + "\t\tv4_filename=\"Ethica - Pars I.corpus.json\",\n", + "\t\tauthor=\"Spinoza\",\n", + "\t\tannotation_info=\"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\",\n", + "\t\toriginal_language=\"la\",\n", + "\t\tgloss_language=\"en\",\n", + "\t\tnote=\"Initially generated as a v4 file.\",\n", + "\t),\n", + "\tMetadata(\n", + "\t\tv4_filename=\"Le papillon et le fleur.corpus.json\",\n", + "\t\tauthor=\"Victor Hugo\",\n", + "\t\tannotation_info=\"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\",\n", + "\t\toriginal_language=\"fr\",\n", + "\t\tgloss_language=\"en\",\n", + "\t\tnote=\"Initially generated as a v4 file.\",\n", + "\t),\n", + "\tMetadata(\n", + "\t\tv4_filename=\"Winterreise.corpus.json\",\n", + "\t\tauthor=\"Wilhelm Müller\",\n", + "\t\tannotation_info=\"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\",\n", + "\t\toriginal_language=\"de\",\n", + "\t\tgloss_language=\"en\",\n", + "\t\tnote=\"Initially generated as a v4 file.\",\n", + "\t),\n", + "]\n", "\n", - "ps = v4[\"paragraphs\"]\n", - "for p in ps[:2]:\n", - "\tprint(p)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# Naive\n", + "def v4_to_v5(meta):\n", + "\twith open(meta.v4_filename, \"rt\", encoding=\"utf-8\") as fin:\n", + "\t\tv4 = json.load(fin)\n", + "\t\n", + "\t# Naive\n", "\n", - "title = v4_filename.replace(\".corpus.json\", \"\")\n", - "author = \"Victor Hugo\"\n", - "annotation_info = \"Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)\"\n", - "original_language = \"fr\"\n", - "gloss_language = \"en\"\n", - "note = \"Initially generated as a v4 file.\"\n", + "\ttitle = meta.v4_filename.replace(\".corpus.json\", \"\")\n", "\n", - "p_out_all = \"\"\n", - "g_out_all = \"\"\n", - "t_id = 0\n", - "for p in v4[\"paragraphs\"]:\n", - "\tfor t in p[\"tokens\"]:\n", - "\t\t#Escape XML characters\n", - "\t\tp_out = t[\"txt\"].replace('&', \"&\").replace('<', \"<\").replace('>', \">\") \\\n", - "\t\t\t.replace('\\'', \"'\").replace('\\\"', \""\")\n", - "\t\tp_out = p_out.replace('\\n', \"
\") #Take care of the newlines\n", + "\tp_out_all = \"\"\n", + "\tg_out_all = \"\"\n", + "\tt_id = 0\n", + "\tfor p in v4[\"paragraphs\"]:\n", + "\t\tfor t in p[\"tokens\"]:\n", + "\t\t\t#Escape XML characters\n", + "\t\t\tp_out = t[\"txt\"].replace('&', \"&\").replace('<', \"<\").replace('>', \">\") \\\n", + "\t\t\t\t.replace('\\'', \"'\").replace('\\\"', \""\")\n", + "\t\t\tp_out = p_out.replace('\\n', \"
\") #Take care of the newlines\n", "\n", - "\t\thas_gloss = not t[\"is_delimiter\"]\n", - "\t\tif has_gloss:\n", - "\t\t\tp_out = f\"{ p_out }\"\n", + "\t\t\thas_gloss = not t[\"is_delimiter\"]\n", + "\t\t\tif has_gloss:\n", + "\t\t\t\tp_out = f\"{ p_out }\"\n", "\n", - "\t\t\tg_out = t[\"gloss\"]\n", - "\t\t\tspecial = \"\"\n", - "\t\t\tif g_out == \"!UNKNOWN\":\n", - "\t\t\t\tspecial = \" special='unknown'\"\n", - "\t\t\telif g_out == \"!TO_REANNOTATE\":\n", - "\t\t\t\tspecial = \" special='to-reannotate'\"\n", - "\t\t\tg_out = f\"{ g_out }\"\n", - "\t\t\tg_out_all += g_out\n", + "\t\t\t\tg_out = t[\"gloss\"]\n", + "\t\t\t\tspecial = \"\"\n", + "\t\t\t\tif g_out == \"!UNKNOWN\":\n", + "\t\t\t\t\tspecial = \" special='unknown'\"\n", + "\t\t\t\telif g_out == \"!TO_REANNOTATE\":\n", + "\t\t\t\t\tspecial = \" special='to-reannotate'\"\n", + "\t\t\t\tg_out = f\"{ g_out }\"\n", + "\t\t\t\tg_out_all += g_out\n", "\n", - "\t\t\tt_id += 1 #Unique\n", - "\t\tp_out_all += p_out\n", - "\t\n", - "out = f\"\"\"\n", - "\n", - "\t\n", - "\t\t{ title }\n", - "\t\t{ author }\n", - "\t\t{ annotation_info }\n", - "\t\t{ original_language }\n", - "\t\t{ gloss_language }\n", - "\t\t{ note }\n", - "\t\n", + "\t\t\t\tt_id += 1 #Unique\n", + "\t\t\tp_out_all += p_out\n", + "\t\t\n", + "\tout = f\"\"\"\n", + "\t\n", + "\t\t\n", + "\t\t\t{ title }\n", + "\t\t\t{ meta.author }\n", + "\t\t\t{ meta.annotation_info }\n", + "\t\t\t{ meta.original_language }\n", + "\t\t\t{ meta.gloss_language }\n", + "\t\t\t{ meta.note }\n", + "\t\t\n", "\n", - "\t{ p_out_all }\n", + "\t\t{ p_out_all }\n", "\n", - "\t{ g_out_all }\n", - "\"\"\".replace('\\n', ' ').replace('\\t', ' ')" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "with open(v4_filename.replace(\".json\", \".xml\"), \"wt\", encoding=\"utf-8\") as fout:\n", - "\tfout.write(out)" + "\t\t{ g_out_all }\n", + "\t\"\"\".replace('\\n', ' ').replace('\\t', ' ')\n", + "\n", + "\twith open(meta.v4_filename.replace(\".json\", \".xml\"), \"wt\", encoding=\"utf-8\") as fout:\n", + "\t\tfout.write(out)\n", + "\n", + "for v4 in v4s:\n", + "\tv4_to_v5(v4)" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, diff --git a/src/tools/gsv5/v5_xml_to_json.ipynb b/src/tools/gsv5/v5_xml_to_json.ipynb new file mode 100644 index 0000000..ebf9eeb --- /dev/null +++ b/src/tools/gsv5/v5_xml_to_json.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ad-hoc code for v4 JSON -> v5 xml -> JSON" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "xml_filename = \"Winterreise.corpus.xml\"\n", + "with open(xml_filename, \"rt\", encoding=\"utf-8\") as fin:\n", + "\txml = fin.read()\n", + "xml = xml.replace(\"\", \"\")\n", + "xml = xml.replace(\"\", \"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Chanjin Park\\AppData\\Local\\Temp\\ipykernel_16800\\1576356528.py:2: XMLParsedAsHTMLWarning: It looks like you're parsing an XML document using an HTML parser. If this really is an HTML document (maybe it's XHTML?), you can ignore or filter this warning. If it's XML, you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the lxml package installed, and pass the keyword argument `features=\"xml\"` into the BeautifulSoup constructor.\n", + " soup = Soup(xml, \"lxml\")\n" + ] + } + ], + "source": [ + "from bs4 import BeautifulSoup as Soup\n", + "soup = Soup(xml, \"lxml\")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'title': 'Winterreise', 'author': 'Wilhelm Müller', 'annotation-info': 'Machine-glossed with fine-tuned gpt-4o-mini (https://github.com/parkchamchi/GlossySnake/blob/master/src/tools/data/gs_240918.jsonl)', 'original-language': 'de', 'gloss-language': 'en', 'note': 'Initially generated as a v4 file.'}\n" + ] + } + ], + "source": [ + "metadata_e = soup.find(\"metadata\")\n", + "metadata = {}\n", + "for item in metadata_e.find_all(\"item\"):\n", + "\tk = item[\"type\"]\n", + "\tv = item.get_text()\n", + "\tmetadata[k] = v\n", + "print(metadata)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'0': {'g_txt': '#', 'g_special': None}, '1': {'g_txt': 'Good', 'g_special': None}, '2': {'g_txt': 'Night.', 'g_special': None}, '3': {'g_txt': 'Stranger', 'g_special': None}, '4': {'g_txt': 'am', 'g_special': None}, '5': {'g_txt': 'I', 'g_special': None}, '6': {'g_txt': 'gone-in,', 'g_special': None}, '7': {'g_txt': 'stranger', 'g_special': None}, '8': {'g_txt': 'draw', 'g_special': None}, '9': {'g_txt': 'I', 'g_special': None}, '10': {'g_txt': 'again (now)', 'g_special': None}, '11': {'g_txt': 'out.', 'g_special': None}, '12': {'g_txt': 'The', 'g_special': None}, '13': {'g_txt': 'May', 'g_special': None}, '14': {'g_txt': 'was', 'g_special': None}, '15': {'g_txt': 'to-me', 'g_special': None}, '16': {'g_txt': 'favourable', 'g_special': None}, '17': {'g_txt': 'With', 'g_special': None}, '18': {'g_txt': 'many-a', 'g_special': None}, '19': {'g_txt': 'flower-bunch.', 'g_special': None}, '20': {'g_txt': 'The', 'g_special': None}, '21': {'g_txt': 'girl', 'g_special': None}, '22': {'g_txt': 'spake', 'g_special': None}, '23': {'g_txt': 'of', 'g_special': None}, '24': {'g_txt': 'love,', 'g_special': None}, '25': {'g_txt': 'The', 'g_special': None}, '26': {'g_txt': 'mother', 'g_special': None}, '27': {'g_txt': 'even', 'g_special': None}, '28': {'g_txt': 'of', 'g_special': None}, '29': {'g_txt': 'marriage', 'g_special': None}, '30': {'g_txt': '—', 'g_special': None}, '31': {'g_txt': 'Now', 'g_special': None}, '32': {'g_txt': 'is', 'g_special': None}, '33': {'g_txt': 'the', 'g_special': None}, '34': {'g_txt': 'world', 'g_special': None}, '35': {'g_txt': 'so', 'g_special': None}, '36': {'g_txt': 'dreary,', 'g_special': None}, '37': {'g_txt': 'The', 'g_special': None}, '38': {'g_txt': 'way', 'g_special': None}, '39': {'g_txt': 'enveloped', 'g_special': None}, '40': {'g_txt': 'in', 'g_special': None}, '41': {'g_txt': 'snow.', 'g_special': None}, '42': {'g_txt': 'I', 'g_special': None}, '43': {'g_txt': 'can', 'g_special': None}, '44': {'g_txt': 'to', 'g_special': None}, '45': {'g_txt': 'my', 'g_special': None}, '46': {'g_txt': 'journeys', 'g_special': None}, '47': {'g_txt': 'not', 'g_special': None}, '48': {'g_txt': 'choose', 'g_special': None}, '49': {'g_txt': 'with', 'g_special': None}, '50': {'g_txt': 'the', 'g_special': None}, '51': {'g_txt': 'time:', 'g_special': None}, '52': {'g_txt': 'Must', 'g_special': None}, '53': {'g_txt': 'myself', 'g_special': None}, '54': {'g_txt': 'the', 'g_special': None}, '55': {'g_txt': 'way', 'g_special': None}, '56': {'g_txt': 'to-me', 'g_special': None}, '57': {'g_txt': 'point-out', 'g_special': None}, '58': {'g_txt': 'In', 'g_special': None}, '59': {'g_txt': 'this', 'g_special': None}, '60': {'g_txt': 'darkness.', 'g_special': None}, '61': {'g_txt': 'A', 'g_special': None}, '62': {'g_txt': 'draws', 'g_special': None}, '63': {'g_txt': 'a', 'g_special': None}, '64': {'g_txt': 'moon-shade', 'g_special': None}, '65': {'g_txt': 'As', 'g_special': None}, '66': {'g_txt': 'my', 'g_special': None}, '67': {'g_txt': 'companion', 'g_special': None}, '68': {'g_txt': 'with,', 'g_special': None}, '69': {'g_txt': 'And', 'g_special': None}, '70': {'g_txt': 'on', 'g_special': None}, '71': {'g_txt': 'the', 'g_special': None}, '72': {'g_txt': 'white', 'g_special': None}, '73': {'g_txt': 'meadows', 'g_special': None}, '74': {'g_txt': 'Such’', 'g_special': None}, '75': {'g_txt': 'I', 'g_special': None}, '76': {'g_txt': 'of-the', 'g_special': None}, '77': {'g_txt': 'wild-thing', 'g_special': None}, '78': {'g_txt': 'tread.', 'g_special': None}, '79': {'g_txt': 'What', 'g_special': None}, '80': {'g_txt': 'shall', 'g_special': None}, '81': {'g_txt': 'I', 'g_special': None}, '82': {'g_txt': 'longer', 'g_special': None}, '83': {'g_txt': 'tarry,', 'g_special': None}, '84': {'g_txt': 'Until', 'g_special': None}, '85': {'g_txt': 'one', 'g_special': None}, '86': {'g_txt': 'me', 'g_special': None}, '87': {'g_txt': 'drove', 'g_special': None}, '88': {'g_txt': 'forth?', 'g_special': None}, '89': {'g_txt': 'Let', 'g_special': None}, '90': {'g_txt': 'loiter', 'g_special': None}, '91': {'g_txt': 'dogs', 'g_special': None}, '92': {'g_txt': 'howl', 'g_special': None}, '93': {'g_txt': 'Before', 'g_special': None}, '94': {'g_txt': 'their', 'g_special': None}, '95': {'g_txt': \"master's\", 'g_special': None}, '96': {'g_txt': 'house!', 'g_special': None}, '97': {'g_txt': 'The', 'g_special': None}, '98': {'g_txt': 'Love', 'g_special': None}, '99': {'g_txt': 'loves', 'g_special': None}, '100': {'g_txt': 'the', 'g_special': None}, '101': {'g_txt': 'wandering,', 'g_special': None}, '102': {'g_txt': '—', 'g_special': None}, '103': {'g_txt': 'God', 'g_special': None}, '104': {'g_txt': 'has', 'g_special': None}, '105': {'g_txt': 'it', 'g_special': None}, '106': {'g_txt': 'so', 'g_special': None}, '107': {'g_txt': 'made', 'g_special': None}, '108': {'g_txt': '—', 'g_special': None}, '109': {'g_txt': 'From', 'g_special': None}, '110': {'g_txt': 'one', 'g_special': None}, '111': {'g_txt': 'to', 'g_special': None}, '112': {'g_txt': 'the', 'g_special': None}, '113': {'g_txt': 'other', 'g_special': None}, '114': {'g_txt': '—', 'g_special': None}, '115': {'g_txt': 'Sweet', 'g_special': None}, '116': {'g_txt': 'darling,', 'g_special': None}, '117': {'g_txt': 'good', 'g_special': None}, '118': {'g_txt': 'night!', 'g_special': None}, '119': {'g_txt': 'Will', 'g_special': None}, '120': {'g_txt': 'thee', 'g_special': None}, '121': {'g_txt': 'in-the', 'g_special': None}, '122': {'g_txt': 'dream', 'g_special': None}, '123': {'g_txt': 'not', 'g_special': None}, '124': {'g_txt': 'disturb,', 'g_special': None}, '125': {'g_txt': 'Were’t', 'g_special': None}, '126': {'g_txt': 'Sh’were', 'g_special': None}, '127': {'g_txt': 'about', 'g_special': None}, '128': {'g_txt': 'thy', 'g_special': None}, '129': {'g_txt': 'rest,', 'g_special': None}, '130': {'g_txt': 'Shalt', 'g_special': None}, '131': {'g_txt': 'my', 'g_special': None}, '132': {'g_txt': 'tread', 'g_special': None}, '133': {'g_txt': 'not', 'g_special': None}, '134': {'g_txt': 'hear', 'g_special': None}, '135': {'g_txt': '—', 'g_special': None}, '136': {'g_txt': 'Soft,', 'g_special': None}, '137': {'g_txt': 'soft', 'g_special': None}, '138': {'g_txt': 'the', 'g_special': None}, '139': {'g_txt': 'door', 'g_special': None}, '140': {'g_txt': 'to!', 'g_special': None}, '141': {'g_txt': 'I', 'g_special': None}, '142': {'g_txt': 'write', 'g_special': None}, '143': {'g_txt': 'only', 'g_special': None}, '144': {'g_txt': 'in-the', 'g_special': None}, '145': {'g_txt': 'going', 'g_special': None}, '146': {'g_txt': 'At-the', 'g_special': None}, '147': {'g_txt': 'gate', 'g_special': None}, '148': {'g_txt': 'yet-(wishing)', 'g_special': None}, '149': {'g_txt': 'good', 'g_special': None}, '150': {'g_txt': 'night-', 'g_special': None}, '151': {'g_txt': 'that', 'g_special': None}, '152': {'g_txt': 'thou', 'g_special': None}, '153': {'g_txt': 'may', 'g_special': None}, '154': {'g_txt': 'see,', 'g_special': None}, '155': {'g_txt': 'I', 'g_special': None}, '156': {'g_txt': 'have', 'g_special': None}, '157': {'g_txt': 'on', 'g_special': None}, '158': {'g_txt': 'thee', 'g_special': None}, '159': {'g_txt': 'thought.', 'g_special': None}, '160': {'g_txt': '#', 'g_special': None}, '161': {'g_txt': 'The', 'g_special': None}, '162': {'g_txt': 'Weather-vanes.', 'g_special': None}, '163': {'g_txt': 'The', 'g_special': None}, '164': {'g_txt': 'Wind', 'g_special': None}, '165': {'g_txt': 'plays', 'g_special': None}, '166': {'g_txt': 'with', 'g_special': None}, '167': {'g_txt': 'the', 'g_special': None}, '168': {'g_txt': 'weather-vane', 'g_special': None}, '169': {'g_txt': 'On', 'g_special': None}, '170': {'g_txt': 'my', 'g_special': None}, '171': {'g_txt': 'pretty', 'g_special': None}, '172': {'g_txt': \"love's\", 'g_special': None}, '173': {'g_txt': 'house.', 'g_special': None}, '174': {'g_txt': 'There', 'g_special': None}, '175': {'g_txt': 'thought', 'g_special': None}, '176': {'g_txt': 'I', 'g_special': None}, '177': {'g_txt': 'already', 'g_special': None}, '178': {'g_txt': 'in', 'g_special': None}, '179': {'g_txt': 'my', 'g_special': None}, '180': {'g_txt': 'fancy,', 'g_special': None}, '181': {'g_txt': 'She', 'g_special': None}, '182': {'g_txt': 'whistled', 'g_special': None}, '183': {'g_txt': 'the', 'g_special': None}, '184': {'g_txt': 'poor', 'g_special': None}, '185': {'g_txt': 'fugitive', 'g_special': None}, '186': {'g_txt': 'out.', 'g_special': None}, '187': {'g_txt': 'He', 'g_special': None}, '188': {'g_txt': 'ought-have', 'g_special': None}, '189': {'g_txt': 'it', 'g_special': None}, '190': {'g_txt': 'sooner', 'g_special': None}, '191': {'g_txt': 'to-notice', 'g_special': None}, '192': {'g_txt': 'to-have-been-able,', 'g_special': None}, '193': {'g_txt': 'Of-the', 'g_special': None}, '194': {'g_txt': 'house’s', 'g_special': None}, '195': {'g_txt': 'hung-up', 'g_special': None}, '196': {'g_txt': 'sign,', 'g_special': None}, '197': {'g_txt': 'Then', 'g_special': None}, '198': {'g_txt': 'ought', 'g_special': None}, '199': {'g_txt': 'he', 'g_special': None}, '200': {'g_txt': 'never', 'g_special': None}, '201': {'g_txt': 'to-search', 'g_special': None}, '202': {'g_txt': 'to-have-will', 'g_special': None}, '203': {'g_txt': 'In-the', 'g_special': None}, '204': {'g_txt': 'house', 'g_special': None}, '205': {'g_txt': 'a', 'g_special': None}, '206': {'g_txt': 'faithful', 'g_special': None}, '207': {'g_txt': 'female-portrait.', 'g_special': None}, '208': {'g_txt': 'The', 'g_special': None}, '209': {'g_txt': 'Wind', 'g_special': None}, '210': {'g_txt': 'plays', 'g_special': None}, '211': {'g_txt': 'within', 'g_special': None}, '212': {'g_txt': 'with', 'g_special': None}, '213': {'g_txt': 'the', 'g_special': None}, '214': {'g_txt': 'hearts,', 'g_special': None}, '215': {'g_txt': 'As', 'g_special': None}, '216': {'g_txt': 'on', 'g_special': None}, '217': {'g_txt': 'the', 'g_special': None}, '218': {'g_txt': 'roof,', 'g_special': None}, '219': {'g_txt': 'only', 'g_special': None}, '220': {'g_txt': 'not', 'g_special': None}, '221': {'g_txt': 'so', 'g_special': None}, '222': {'g_txt': 'loud.', 'g_special': None}, '223': {'g_txt': 'What', 'g_special': None}, '224': {'g_txt': 'ask', 'g_special': None}, '225': {'g_txt': 'they', 'g_special': None}, '226': {'g_txt': 'after (care for)', 'g_special': None}, '227': {'g_txt': 'my', 'g_special': None}, '228': {'g_txt': 'pains?', 'g_special': None}, '229': {'g_txt': 'Your', 'g_special': None}, '230': {'g_txt': 'child', 'g_special': None}, '231': {'g_txt': 'is', 'g_special': None}, '232': {'g_txt': 'a', 'g_special': None}, '233': {'g_txt': 'rich', 'g_special': None}, '234': {'g_txt': 'bride.', 'g_special': None}, '235': {'g_txt': '!UNKNOWN', 'g_special': None}, '236': {'g_txt': '!UNKNOWN', 'g_special': None}, '237': {'g_txt': '!UNKNOWN', 'g_special': None}, '238': {'g_txt': 'Frozen', 'g_special': None}, '239': {'g_txt': 'drops', 'g_special': None}, '240': {'g_txt': 'fall', 'g_special': None}, '241': {'g_txt': 'From', 'g_special': None}, '242': {'g_txt': 'my', 'g_special': None}, '243': {'g_txt': 'cheeks', 'g_special': None}, '244': {'g_txt': 'off:', 'g_special': None}, '245': {'g_txt': 'And', 'g_special': None}, '246': {'g_txt': 'is-it', 'g_special': None}, '247': {'g_txt': 'to-me', 'g_special': None}, '248': {'g_txt': 'then', 'g_special': None}, '249': {'g_txt': 'escaped,', 'g_special': None}, '250': {'g_txt': 'That', 'g_special': None}, '251': {'g_txt': 'I', 'g_special': None}, '252': {'g_txt': 'wept', 'g_special': None}, '253': {'g_txt': 'have?', 'g_special': None}, '254': {'g_txt': 'Ah', 'g_special': None}, '255': {'g_txt': 'Tears,', 'g_special': None}, '256': {'g_txt': 'my', 'g_special': None}, '257': {'g_txt': 'tears,', 'g_special': None}, '258': {'g_txt': 'And', 'g_special': None}, '259': {'g_txt': 'are', 'g_special': None}, '260': {'g_txt': 'ye', 'g_special': None}, '261': {'g_txt': 'quite', 'g_special': None}, '262': {'g_txt': 'so', 'g_special': None}, '263': {'g_txt': 'lukewarm,', 'g_special': None}, '264': {'g_txt': 'That', 'g_special': None}, '265': {'g_txt': 'ye', 'g_special': None}, '266': {'g_txt': 'congealed', 'g_special': None}, '267': {'g_txt': 'to', 'g_special': None}, '268': {'g_txt': 'ice,', 'g_special': None}, '269': {'g_txt': 'How', 'g_special': None}, '270': {'g_txt': 'cool', 'g_special': None}, '271': {'g_txt': 'dew?', 'g_special': None}, '272': {'g_txt': 'And', 'g_special': None}, '273': {'g_txt': 'wells', 'g_special': None}, '274': {'g_txt': 'yet', 'g_special': None}, '275': {'g_txt': 'out', 'g_special': None}, '276': {'g_txt': 'of-the', 'g_special': None}, '277': {'g_txt': 'fount', 'g_special': None}, '278': {'g_txt': 'Of-the', 'g_special': None}, '279': {'g_txt': 'breast', 'g_special': None}, '280': {'g_txt': 'so', 'g_special': None}, '281': {'g_txt': 'glowing', 'g_special': None}, '282': {'g_txt': 'hot,', 'g_special': None}, '283': {'g_txt': 'As', 'g_special': None}, '284': {'g_txt': 'ye-would', 'g_special': None}, '285': {'g_txt': 'it', 'g_special': None}, '286': {'g_txt': 'to-vanquish', 'g_special': None}, '287': {'g_txt': 'The', 'g_special': None}, '288': {'g_txt': 'whole', 'g_special': None}, '289': {'g_txt': \"winter's\", 'g_special': None}, '290': {'g_txt': 'ice.', 'g_special': None}, '291': {'g_txt': '!UNKNOWN', 'g_special': None}, '292': {'g_txt': 'Stupor.', 'g_special': None}, '293': {'g_txt': 'I', 'g_special': None}, '294': {'g_txt': 'sought', 'g_special': None}, '295': {'g_txt': 'in-the', 'g_special': None}, '296': {'g_txt': 'snow', 'g_special': None}, '297': {'g_txt': 'in-vain', 'g_special': None}, '298': {'g_txt': 'after', 'g_special': None}, '299': {'g_txt': 'her', 'g_special': None}, '300': {'g_txt': 'foot', 'g_special': None}, '301': {'g_txt': 'track,', 'g_special': None}, '302': {'g_txt': 'Here,', 'g_special': None}, '303': {'g_txt': 'where', 'g_special': None}, '304': {'g_txt': 'we', 'g_special': None}, '305': {'g_txt': 'often', 'g_special': None}, '306': {'g_txt': 'walked', 'g_special': None}, '307': {'g_txt': 'each-other', 'g_special': None}, '308': {'g_txt': 'through', 'g_special': None}, '309': {'g_txt': 'the', 'g_special': None}, '310': {'g_txt': 'field.', 'g_special': None}, '311': {'g_txt': 'I', 'g_special': None}, '312': {'g_txt': 'will', 'g_special': None}, '313': {'g_txt': 'the', 'g_special': None}, '314': {'g_txt': 'ground', 'g_special': None}, '315': {'g_txt': 'kiss,', 'g_special': None}, '316': {'g_txt': 'Penetrate', 'g_special': None}, '317': {'g_txt': 'ice', 'g_special': None}, '318': {'g_txt': 'and', 'g_special': None}, '319': {'g_txt': 'snow', 'g_special': None}, '320': {'g_txt': 'with', 'g_special': None}, '321': {'g_txt': 'my', 'g_special': None}, '322': {'g_txt': 'hot', 'g_special': None}, '323': {'g_txt': 'tears,', 'g_special': None}, '324': {'g_txt': 'till', 'g_special': None}, '325': {'g_txt': 'I', 'g_special': None}, '326': {'g_txt': 'the', 'g_special': None}, '327': {'g_txt': 'earth', 'g_special': None}, '328': {'g_txt': 'see.', 'g_special': None}, '329': {'g_txt': 'Where', 'g_special': None}, '330': {'g_txt': 'find', 'g_special': None}, '331': {'g_txt': 'I', 'g_special': None}, '332': {'g_txt': 'a', 'g_special': None}, '333': {'g_txt': 'blossom,', 'g_special': None}, '334': {'g_txt': 'Where', 'g_special': None}, '335': {'g_txt': 'find', 'g_special': None}, '336': {'g_txt': 'I', 'g_special': None}, '337': {'g_txt': 'green', 'g_special': None}, '338': {'g_txt': 'grass?', 'g_special': None}, '339': {'g_txt': 'The', 'g_special': None}, '340': {'g_txt': 'flowers', 'g_special': None}, '341': {'g_txt': 'are', 'g_special': None}, '342': {'g_txt': 'withered,', 'g_special': None}, '343': {'g_txt': 'The', 'g_special': None}, '344': {'g_txt': 'turf', 'g_special': None}, '345': {'g_txt': 'looks', 'g_special': None}, '346': {'g_txt': 'so', 'g_special': None}, '347': {'g_txt': 'pale.', 'g_special': None}, '348': {'g_txt': 'Shall', 'g_special': None}, '349': {'g_txt': 'then', 'g_special': None}, '350': {'g_txt': 'no', 'g_special': None}, '351': {'g_txt': 'remembrance', 'g_special': None}, '352': {'g_txt': 'I', 'g_special': None}, '353': {'g_txt': 'take', 'g_special': None}, '354': {'g_txt': 'with', 'g_special': None}, '355': {'g_txt': 'from', 'g_special': None}, '356': {'g_txt': 'here?', 'g_special': None}, '357': {'g_txt': 'When', 'g_special': None}, '358': {'g_txt': 'my', 'g_special': None}, '359': {'g_txt': 'pains', 'g_special': None}, '360': {'g_txt': 'cease,', 'g_special': None}, '361': {'g_txt': 'Who', 'g_special': None}, '362': {'g_txt': 'says', 'g_special': None}, '363': {'g_txt': 'to-me', 'g_special': None}, '364': {'g_txt': 'then', 'g_special': None}, '365': {'g_txt': 'of', 'g_special': None}, '366': {'g_txt': 'her?', 'g_special': None}, '367': {'g_txt': 'My', 'g_special': None}, '368': {'g_txt': 'heart', 'g_special': None}, '369': {'g_txt': 'is', 'g_special': None}, '370': {'g_txt': 'like', 'g_special': None}, '371': {'g_txt': 'frozen,', 'g_special': None}, '372': {'g_txt': 'cold', 'g_special': None}, '373': {'g_txt': 'stares', 'g_special': None}, '374': {'g_txt': 'her', 'g_special': None}, '375': {'g_txt': 'picture', 'g_special': None}, '376': {'g_txt': 'in-it:', 'g_special': None}, '377': {'g_txt': 'melts', 'g_special': None}, '378': {'g_txt': 'ever', 'g_special': None}, '379': {'g_txt': 'the', 'g_special': None}, '380': {'g_txt': 'heart', 'g_special': None}, '381': {'g_txt': 'to-me', 'g_special': None}, '382': {'g_txt': 'agin,', 'g_special': None}, '383': {'g_txt': 'flows', 'g_special': None}, '384': {'g_txt': 'also', 'g_special': None}, '385': {'g_txt': 'the', 'g_special': None}, '386': {'g_txt': 'picture', 'g_special': None}, '387': {'g_txt': 'thither.', 'g_special': None}, '388': {'g_txt': '!UNKNOWN', 'g_special': None}, '389': {'g_txt': 'The', 'g_special': None}, '390': {'g_txt': 'Linde-tree.', 'g_special': None}, '391': {'g_txt': 'At-the', 'g_special': None}, '392': {'g_txt': 'well', 'g_special': None}, '393': {'g_txt': 'before', 'g_special': None}, '394': {'g_txt': 'the', 'g_special': None}, '395': {'g_txt': 'gate', 'g_special': None}, '396': {'g_txt': 'There', 'g_special': None}, '397': {'g_txt': 'stands', 'g_special': None}, '398': {'g_txt': 'a', 'g_special': None}, '399': {'g_txt': 'lime-tree:', 'g_special': None}, '400': {'g_txt': 'I', 'g_special': None}, '401': {'g_txt': 'dreamt', 'g_special': None}, '402': {'g_txt': 'in', 'g_special': None}, '403': {'g_txt': 'its', 'g_special': None}, '404': {'g_txt': 'shade', 'g_special': None}, '405': {'g_txt': 'So', 'g_special': None}, '406': {'g_txt': 'many', 'g_special': None}, '407': {'g_txt': 'sweet', 'g_special': None}, '408': {'g_txt': 'dream.', 'g_special': None}, '409': {'g_txt': 'I', 'g_special': None}, '410': {'g_txt': 'cut', 'g_special': None}, '411': {'g_txt': 'in', 'g_special': None}, '412': {'g_txt': 'its', 'g_special': None}, '413': {'g_txt': 'rind', 'g_special': None}, '414': {'g_txt': 'So', 'g_special': None}, '415': {'g_txt': 'many-a', 'g_special': None}, '416': {'g_txt': 'dear', 'g_special': None}, '417': {'g_txt': 'word;', 'g_special': None}, '418': {'g_txt': 'It', 'g_special': None}, '419': {'g_txt': 'drew', 'g_special': None}, '420': {'g_txt': 'in', 'g_special': None}, '421': {'g_txt': 'joy', 'g_special': None}, '422': {'g_txt': 'and', 'g_special': None}, '423': {'g_txt': 'sorrow', 'g_special': None}, '424': {'g_txt': 'To', 'g_special': None}, '425': {'g_txt': 'it', 'g_special': None}, '426': {'g_txt': 'me', 'g_special': None}, '427': {'g_txt': 'always', 'g_special': None}, '428': {'g_txt': 'forth.', 'g_special': None}, '429': {'g_txt': 'I', 'g_special': None}, '430': {'g_txt': 'must’', 'g_special': None}, '431': {'g_txt': 'also', 'g_special': None}, '432': {'g_txt': 'to-day', 'g_special': None}, '433': {'g_txt': 'wander', 'g_special': None}, '434': {'g_txt': 'Past', 'g_special': None}, '435': {'g_txt': 'in', 'g_special': None}, '436': {'g_txt': 'deep', 'g_special': None}, '437': {'g_txt': 'night,', 'g_special': None}, '438': {'g_txt': 'Then', 'g_special': None}, '439': {'g_txt': 'have', 'g_special': None}, '440': {'g_txt': 'I', 'g_special': None}, '441': {'g_txt': 'yet', 'g_special': None}, '442': {'g_txt': 'in-the', 'g_special': None}, '443': {'g_txt': 'dark', 'g_special': None}, '444': {'g_txt': 'The', 'g_special': None}, '445': {'g_txt': 'eyes', 'g_special': None}, '446': {'g_txt': 'shut.', 'g_special': None}, '447': {'g_txt': 'And', 'g_special': None}, '448': {'g_txt': 'its', 'g_special': None}, '449': {'g_txt': 'branches', 'g_special': None}, '450': {'g_txt': 'rustled,', 'g_special': None}, '451': {'g_txt': 'As', 'g_special': None}, '452': {'g_txt': 'called', 'g_special': None}, '453': {'g_txt': 'they', 'g_special': None}, '454': {'g_txt': 'to-me', 'g_special': None}, '455': {'g_txt': 'to:', 'g_special': None}, '456': {'g_txt': 'Come', 'g_special': None}, '457': {'g_txt': 'hither', 'g_special': None}, '458': {'g_txt': 'to', 'g_special': None}, '459': {'g_txt': 'me,', 'g_special': None}, '460': {'g_txt': 'Comrade,', 'g_special': None}, '461': {'g_txt': 'Here', 'g_special': None}, '462': {'g_txt': 'findest', 'g_special': None}, '463': {'g_txt': 'thou', 'g_special': None}, '464': {'g_txt': 'thy', 'g_special': None}, '465': {'g_txt': 'Rest!', 'g_special': None}, '466': {'g_txt': 'The', 'g_special': None}, '467': {'g_txt': 'cold', 'g_special': None}, '468': {'g_txt': 'winds', 'g_special': None}, '469': {'g_txt': 'blew', 'g_special': None}, '470': {'g_txt': 'to-me', 'g_special': None}, '471': {'g_txt': 'straight', 'g_special': None}, '472': {'g_txt': 'into-the', 'g_special': None}, '473': {'g_txt': 'face,', 'g_special': None}, '474': {'g_txt': 'The', 'g_special': None}, '475': {'g_txt': 'hat', 'g_special': None}, '476': {'g_txt': 'flew', 'g_special': None}, '477': {'g_txt': 'to-me', 'g_special': None}, '478': {'g_txt': 'from-the', 'g_special': None}, '479': {'g_txt': 'head,', 'g_special': None}, '480': {'g_txt': 'I', 'g_special': None}, '481': {'g_txt': 'turned', 'g_special': None}, '482': {'g_txt': 'me', 'g_special': None}, '483': {'g_txt': 'not.', 'g_special': None}, '484': {'g_txt': 'Now', 'g_special': None}, '485': {'g_txt': 'am', 'g_special': None}, '486': {'g_txt': 'I', 'g_special': None}, '487': {'g_txt': 'many (an)', 'g_special': None}, '488': {'g_txt': 'hour', 'g_special': None}, '489': {'g_txt': 'distant', 'g_special': None}, '490': {'g_txt': 'from', 'g_special': None}, '491': {'g_txt': 'that', 'g_special': None}, '492': {'g_txt': 'place,', 'g_special': None}, '493': {'g_txt': 'And', 'g_special': None}, '494': {'g_txt': 'always', 'g_special': None}, '495': {'g_txt': 'hear', 'g_special': None}, '496': {'g_txt': 'it’s', 'g_special': None}, '497': {'g_txt': 'rustling:', 'g_special': None}, '498': {'g_txt': 'Thou', 'g_special': None}, '499': {'g_txt': 'wouldst-find', 'g_special': None}, '500': {'g_txt': 'rest', 'g_special': None}, '501': {'g_txt': 'there!', 'g_special': None}, '502': {'g_txt': '#', 'g_special': None}, '503': {'g_txt': 'The', 'g_special': None}, '504': {'g_txt': 'Postman.', 'g_special': None}, '505': {'g_txt': 'From', 'g_special': None}, '506': {'g_txt': 'the', 'g_special': None}, '507': {'g_txt': 'street', 'g_special': None}, '508': {'g_txt': 'hence', 'g_special': None}, '509': {'g_txt': 'a', 'g_special': None}, '510': {'g_txt': 'posthorn', 'g_special': None}, '511': {'g_txt': 'sounds.', 'g_special': None}, '512': {'g_txt': 'What', 'g_special': None}, '513': {'g_txt': 'has', 'g_special': None}, '514': {'g_txt': 'it,', 'g_special': None}, '515': {'g_txt': 'that', 'g_special': None}, '516': {'g_txt': 'it', 'g_special': None}, '517': {'g_txt': 'so', 'g_special': None}, '518': {'g_txt': 'high (so)', 'g_special': None}, '519': {'g_txt': 'leaps,', 'g_special': None}, '520': {'g_txt': 'My', 'g_special': None}, '521': {'g_txt': 'heart?', 'g_special': None}, '522': {'g_txt': 'The', 'g_special': None}, '523': {'g_txt': 'Post', 'g_special': None}, '524': {'g_txt': 'brings', 'g_special': None}, '525': {'g_txt': 'no', 'g_special': None}, '526': {'g_txt': 'letter', 'g_special': None}, '527': {'g_txt': 'for', 'g_special': None}, '528': {'g_txt': 'thee:', 'g_special': None}, '529': {'g_txt': 'Why', 'g_special': None}, '530': {'g_txt': 'art-urging', 'g_special': None}, '531': {'g_txt': 'thou', 'g_special': None}, '532': {'g_txt': 'then', 'g_special': None}, '533': {'g_txt': 'so', 'g_special': None}, '534': {'g_txt': 'wonderfully,', 'g_special': None}, '535': {'g_txt': 'My', 'g_special': None}, '536': {'g_txt': 'Heart?', 'g_special': None}, '537': {'g_txt': 'Well', 'g_special': None}, '538': {'g_txt': 'yes,', 'g_special': None}, '539': {'g_txt': 'the', 'g_special': None}, '540': {'g_txt': 'Post', 'g_special': None}, '541': {'g_txt': 'comes', 'g_special': None}, '542': {'g_txt': 'from', 'g_special': None}, '543': {'g_txt': 'the', 'g_special': None}, '544': {'g_txt': 'city,', 'g_special': None}, '545': {'g_txt': 'where', 'g_special': None}, '546': {'g_txt': 'I', 'g_special': None}, '547': {'g_txt': 'a', 'g_special': None}, '548': {'g_txt': 'dear', 'g_special': None}, '549': {'g_txt': 'girl', 'g_special': None}, '550': {'g_txt': 'had,', 'g_special': None}, '551': {'g_txt': 'My', 'g_special': None}, '552': {'g_txt': 'Heart!', 'g_special': None}, '553': {'g_txt': 'Wilt', 'g_special': None}, '554': {'g_txt': 'well', 'g_special': None}, '555': {'g_txt': 'once', 'g_special': None}, '556': {'g_txt': \"o'er-look,\", 'g_special': None}, '557': {'g_txt': 'And', 'g_special': None}, '558': {'g_txt': 'ask,', 'g_special': None}, '559': {'g_txt': 'how', 'g_special': None}, '560': {'g_txt': 'it', 'g_special': None}, '561': {'g_txt': 'yonder', 'g_special': None}, '562': {'g_txt': 'may', 'g_special': None}, '563': {'g_txt': 'go,', 'g_special': None}, '564': {'g_txt': 'My', 'g_special': None}, '565': {'g_txt': 'Heart?', 'g_special': None}, '566': {'g_txt': '#', 'g_special': None}, '567': {'g_txt': 'Water-flood.', 'g_special': None}, '568': {'g_txt': 'Many', 'g_special': None}, '569': {'g_txt': 'tear', 'g_special': None}, '570': {'g_txt': 'from', 'g_special': None}, '571': {'g_txt': 'my', 'g_special': None}, '572': {'g_txt': 'eyes', 'g_special': None}, '573': {'g_txt': 'is', 'g_special': None}, '574': {'g_txt': 'fallen', 'g_special': None}, '575': {'g_txt': 'into', 'g_special': None}, '576': {'g_txt': 'the', 'g_special': None}, '577': {'g_txt': 'snow;', 'g_special': None}, '578': {'g_txt': 'its', 'g_special': None}, '579': {'g_txt': 'cold', 'g_special': None}, '580': {'g_txt': 'flakes', 'g_special': None}, '581': {'g_txt': 'suck (up)', 'g_special': None}, '582': {'g_txt': 'thirstily', 'g_special': None}, '583': {'g_txt': 'out', 'g_special': None}, '584': {'g_txt': 'the', 'g_special': None}, '585': {'g_txt': 'hot', 'g_special': None}, '586': {'g_txt': 'woe.', 'g_special': None}, '587': {'g_txt': 'When', 'g_special': None}, '588': {'g_txt': 'the', 'g_special': None}, '589': {'g_txt': 'grasses', 'g_special': None}, '590': {'g_txt': 'sprout', 'g_special': None}, '591': {'g_txt': 'will,', 'g_special': None}, '592': {'g_txt': 'There-blows', 'g_special': None}, '593': {'g_txt': 'thence', 'g_special': None}, '594': {'g_txt': 'a', 'g_special': None}, '595': {'g_txt': 'languid', 'g_special': None}, '596': {'g_txt': 'wind,', 'g_special': None}, '597': {'g_txt': 'And', 'g_special': None}, '598': {'g_txt': 'the', 'g_special': None}, '599': {'g_txt': 'ice', 'g_special': None}, '600': {'g_txt': 'bursts', 'g_special': None}, '601': {'g_txt': 'into', 'g_special': None}, '602': {'g_txt': 'pieces,', 'g_special': None}, '603': {'g_txt': 'And', 'g_special': None}, '604': {'g_txt': 'the', 'g_special': None}, '605': {'g_txt': 'soft', 'g_special': None}, '606': {'g_txt': 'snow', 'g_special': None}, '607': {'g_txt': 'melts.', 'g_special': None}, '608': {'g_txt': 'Snow,', 'g_special': None}, '609': {'g_txt': 'thou', 'g_special': None}, '610': {'g_txt': 'knowest', 'g_special': None}, '611': {'g_txt': 'of', 'g_special': None}, '612': {'g_txt': 'my', 'g_special': None}, '613': {'g_txt': 'longing:', 'g_special': None}, '614': {'g_txt': 'Say', 'g_special': None}, '615': {'g_txt': 'to-me,', 'g_special': None}, '616': {'g_txt': 'whither', 'g_special': None}, '617': {'g_txt': 'goest', 'g_special': None}, '618': {'g_txt': 'thy', 'g_special': None}, '619': {'g_txt': 'course?', 'g_special': None}, '620': {'g_txt': 'Follow', 'g_special': None}, '621': {'g_txt': 'after', 'g_special': None}, '622': {'g_txt': 'only', 'g_special': None}, '623': {'g_txt': 'my', 'g_special': None}, '624': {'g_txt': 'tears,', 'g_special': None}, '625': {'g_txt': 'Takes', 'g_special': None}, '626': {'g_txt': 'thee', 'g_special': None}, '627': {'g_txt': 'soon', 'g_special': None}, '628': {'g_txt': 'the', 'g_special': None}, '629': {'g_txt': 'brooklet', 'g_special': None}, '630': {'g_txt': 'up.', 'g_special': None}, '631': {'g_txt': 'Wilt', 'g_special': None}, '632': {'g_txt': 'with', 'g_special': None}, '633': {'g_txt': 'him', 'g_special': None}, '634': {'g_txt': 'the', 'g_special': None}, '635': {'g_txt': 'city', 'g_special': None}, '636': {'g_txt': 'traverse,', 'g_special': None}, '637': {'g_txt': 'Muntre', 'g_special': None}, '638': {'g_txt': 'streets', 'g_special': None}, '639': {'g_txt': 'in', 'g_special': None}, '640': {'g_txt': 'and', 'g_special': None}, '641': {'g_txt': 'out:', 'g_special': None}, '642': {'g_txt': 'Feelst', 'g_special': None}, '643': {'g_txt': 'thou', 'g_special': None}, '644': {'g_txt': 'my', 'g_special': None}, '645': {'g_txt': 'tears', 'g_special': None}, '646': {'g_txt': 'glow,', 'g_special': None}, '647': {'g_txt': 'There', 'g_special': None}, '648': {'g_txt': 'is', 'g_special': None}, '649': {'g_txt': 'of-my', 'g_special': None}, '650': {'g_txt': 'love-best', 'g_special': None}, '651': {'g_txt': 'house.', 'g_special': None}, '652': {'g_txt': '#', 'g_special': None}, '653': {'g_txt': 'On', 'g_special': None}, '654': {'g_txt': 'the', 'g_special': None}, '655': {'g_txt': 'river.', 'g_special': None}, '656': {'g_txt': 'The', 'g_special': None}, '657': {'g_txt': 'thou', 'g_special': None}, '658': {'g_txt': 'so', 'g_special': None}, '659': {'g_txt': 'cheerful', 'g_special': None}, '660': {'g_txt': 'rattlest,', 'g_special': None}, '661': {'g_txt': 'Thou', 'g_special': None}, '662': {'g_txt': 'clear,', 'g_special': None}, '663': {'g_txt': 'wild', 'g_special': None}, '664': {'g_txt': 'river,', 'g_special': None}, '665': {'g_txt': 'How', 'g_special': None}, '666': {'g_txt': 'silent', 'g_special': None}, '667': {'g_txt': 'art', 'g_special': None}, '668': {'g_txt': 'thou', 'g_special': None}, '669': {'g_txt': 'become,', 'g_special': None}, '670': {'g_txt': 'Givest', 'g_special': None}, '671': {'g_txt': 'no', 'g_special': None}, '672': {'g_txt': 'parting-greeting.', 'g_special': None}, '673': {'g_txt': 'With', 'g_special': None}, '674': {'g_txt': 'hard,', 'g_special': None}, '675': {'g_txt': 'rigid', 'g_special': None}, '676': {'g_txt': 'rind', 'g_special': None}, '677': {'g_txt': 'Hast', 'g_special': None}, '678': {'g_txt': 'thou', 'g_special': None}, '679': {'g_txt': 'thyself', 'g_special': None}, '680': {'g_txt': 'covered,', 'g_special': None}, '681': {'g_txt': 'Liest', 'g_special': None}, '682': {'g_txt': 'cold', 'g_special': None}, '683': {'g_txt': 'and', 'g_special': None}, '684': {'g_txt': 'motionless', 'g_special': None}, '685': {'g_txt': 'In-the', 'g_special': None}, '686': {'g_txt': 'sand', 'g_special': None}, '687': {'g_txt': 'stretched.', 'g_special': None}, '688': {'g_txt': 'In', 'g_special': None}, '689': {'g_txt': 'thy', 'g_special': None}, '690': {'g_txt': 'mantle', 'g_special': None}, '691': {'g_txt': 'carve', 'g_special': None}, '692': {'g_txt': 'I', 'g_special': None}, '693': {'g_txt': 'with', 'g_special': None}, '694': {'g_txt': 'a', 'g_special': None}, '695': {'g_txt': 'sharp', 'g_special': None}, '696': {'g_txt': 'stone', 'g_special': None}, '697': {'g_txt': 'the', 'g_special': None}, '698': {'g_txt': 'name', 'g_special': None}, '699': {'g_txt': 'of-my', 'g_special': None}, '700': {'g_txt': 'dearest', 'g_special': None}, '701': {'g_txt': 'And', 'g_special': None}, '702': {'g_txt': 'hour', 'g_special': None}, '703': {'g_txt': 'and', 'g_special': None}, '704': {'g_txt': 'day', 'g_special': None}, '705': {'g_txt': 'therein', 'g_special': None}, '706': {'g_txt': 'The', 'g_special': None}, '707': {'g_txt': 'day', 'g_special': None}, '708': {'g_txt': 'of-the', 'g_special': None}, '709': {'g_txt': 'first', 'g_special': None}, '710': {'g_txt': 'greeting,', 'g_special': None}, '711': {'g_txt': 'the', 'g_special': None}, '712': {'g_txt': 'day,', 'g_special': None}, '713': {'g_txt': 'on', 'g_special': None}, '714': {'g_txt': 'which', 'g_special': None}, '715': {'g_txt': 'I', 'g_special': None}, '716': {'g_txt': 'went,', 'g_special': None}, '717': {'g_txt': 'about', 'g_special': None}, '718': {'g_txt': 'nam’', 'g_special': None}, '719': {'g_txt': 'and', 'g_special': None}, '720': {'g_txt': 'numbers', 'g_special': None}, '721': {'g_txt': 'windet', 'g_special': None}, '722': {'g_txt': 'itself', 'g_special': None}, '723': {'g_txt': 'a', 'g_special': None}, '724': {'g_txt': 'broken', 'g_special': None}, '725': {'g_txt': 'ring.', 'g_special': None}, '726': {'g_txt': 'My', 'g_special': None}, '727': {'g_txt': 'heart,', 'g_special': None}, '728': {'g_txt': 'in', 'g_special': None}, '729': {'g_txt': 'this', 'g_special': None}, '730': {'g_txt': 'brook', 'g_special': None}, '731': {'g_txt': 'Recognizest', 'g_special': None}, '732': {'g_txt': 'thou', 'g_special': None}, '733': {'g_txt': 'now', 'g_special': None}, '734': {'g_txt': 'thy', 'g_special': None}, '735': {'g_txt': 'image?', 'g_special': None}, '736': {'g_txt': 'Whether-it’s', 'g_special': None}, '737': {'g_txt': 'under', 'g_special': None}, '738': {'g_txt': 'its', 'g_special': None}, '739': {'g_txt': 'bark', 'g_special': None}, '740': {'g_txt': 'well', 'g_special': None}, '741': {'g_txt': 'also', 'g_special': None}, '742': {'g_txt': 'so', 'g_special': None}, '743': {'g_txt': 'rushing', 'g_special': None}, '744': {'g_txt': 'swells?', 'g_special': None}, '745': {'g_txt': '!UNKNOWN', 'g_special': None}, '746': {'g_txt': 'Retrospective.', 'g_special': None}, '747': {'g_txt': 'It', 'g_special': None}, '748': {'g_txt': 'burns', 'g_special': None}, '749': {'g_txt': 'to-me', 'g_special': None}, '750': {'g_txt': 'under', 'g_special': None}, '751': {'g_txt': 'both', 'g_special': None}, '752': {'g_txt': 'soles,', 'g_special': None}, '753': {'g_txt': 'Tread', 'g_special': None}, '754': {'g_txt': 'I', 'g_special': None}, '755': {'g_txt': 'also', 'g_special': None}, '756': {'g_txt': 'already', 'g_special': None}, '757': {'g_txt': 'upon', 'g_special': None}, '758': {'g_txt': 'ice', 'g_special': None}, '759': {'g_txt': 'and', 'g_special': None}, '760': {'g_txt': 'snow.', 'g_special': None}, '761': {'g_txt': 'I', 'g_special': None}, '762': {'g_txt': 'might', 'g_special': None}, '763': {'g_txt': 'not', 'g_special': None}, '764': {'g_txt': 'again', 'g_special': None}, '765': {'g_txt': 'breath', 'g_special': None}, '766': {'g_txt': 'fetch,', 'g_special': None}, '767': {'g_txt': 'Until', 'g_special': None}, '768': {'g_txt': 'I', 'g_special': None}, '769': {'g_txt': 'not', 'g_special': None}, '770': {'g_txt': 'more', 'g_special': None}, '771': {'g_txt': 'the', 'g_special': None}, '772': {'g_txt': 'towers', 'g_special': None}, '773': {'g_txt': 'see.', 'g_special': None}, '774': {'g_txt': 'Had', 'g_special': None}, '775': {'g_txt': 'me', 'g_special': None}, '776': {'g_txt': 'on', 'g_special': None}, '777': {'g_txt': 'every', 'g_special': None}, '778': {'g_txt': 'stone', 'g_special': None}, '779': {'g_txt': 'stumbled,', 'g_special': None}, '780': {'g_txt': 'So', 'g_special': None}, '781': {'g_txt': 'hastened', 'g_special': None}, '782': {'g_txt': 'I', 'g_special': None}, '783': {'g_txt': 'to', 'g_special': None}, '784': {'g_txt': 'the', 'g_special': None}, '785': {'g_txt': 'city', 'g_special': None}, '786': {'g_txt': 'out;', 'g_special': None}, '787': {'g_txt': 'The', 'g_special': None}, '788': {'g_txt': 'crows', 'g_special': None}, '789': {'g_txt': 'threw', 'g_special': None}, '790': {'g_txt': 'balls', 'g_special': None}, '791': {'g_txt': 'and', 'g_special': None}, '792': {'g_txt': 'buckles', 'g_special': None}, '793': {'g_txt': '(from) on', 'g_special': None}, '794': {'g_txt': 'my', 'g_special': None}, '795': {'g_txt': 'hat', 'g_special': None}, '796': {'g_txt': 'from', 'g_special': None}, '797': {'g_txt': 'every', 'g_special': None}, '798': {'g_txt': 'house.', 'g_special': None}, '799': {'g_txt': 'How', 'g_special': None}, '800': {'g_txt': 'differently', 'g_special': None}, '801': {'g_txt': 'hast', 'g_special': None}, '802': {'g_txt': 'thou', 'g_special': None}, '803': {'g_txt': 'me', 'g_special': None}, '804': {'g_txt': 'received,', 'g_special': None}, '805': {'g_txt': 'Thou', 'g_special': None}, '806': {'g_txt': 'city', 'g_special': None}, '807': {'g_txt': 'of-the', 'g_special': None}, '808': {'g_txt': 'inconstancy!', 'g_special': None}, '809': {'g_txt': 'At', 'g_special': None}, '810': {'g_txt': 'thy', 'g_special': None}, '811': {'g_txt': 'bright', 'g_special': None}, '812': {'g_txt': 'windows', 'g_special': None}, '813': {'g_txt': 'sang', 'g_special': None}, '814': {'g_txt': 'the', 'g_special': None}, '815': {'g_txt': 'lark', 'g_special': None}, '816': {'g_txt': 'and', 'g_special': None}, '817': {'g_txt': 'nightingale', 'g_special': None}, '818': {'g_txt': 'in-the', 'g_special': None}, '819': {'g_txt': 'strife.', 'g_special': None}, '820': {'g_txt': 'The', 'g_special': None}, '821': {'g_txt': 'round', 'g_special': None}, '822': {'g_txt': 'linden-trees', 'g_special': None}, '823': {'g_txt': 'bloomed,', 'g_special': None}, '824': {'g_txt': 'The', 'g_special': None}, '825': {'g_txt': 'clear', 'g_special': None}, '826': {'g_txt': 'rivulets', 'g_special': None}, '827': {'g_txt': 'murmured', 'g_special': None}, '828': {'g_txt': 'bright,', 'g_special': None}, '829': {'g_txt': 'And', 'g_special': None}, '830': {'g_txt': 'ah,', 'g_special': None}, '831': {'g_txt': 'two', 'g_special': None}, '832': {'g_txt': 'maiden-eyes', 'g_special': None}, '833': {'g_txt': 'shone!', 'g_special': None}, '834': {'g_txt': '-', 'g_special': None}, '835': {'g_txt': 'Then', 'g_special': None}, '836': {'g_txt': 'was-it', 'g_special': None}, '837': {'g_txt': 'happened', 'g_special': None}, '838': {'g_txt': 'about', 'g_special': None}, '839': {'g_txt': 'thee,', 'g_special': None}, '840': {'g_txt': 'comrade!', 'g_special': None}, '841': {'g_txt': 'Comes', 'g_special': None}, '842': {'g_txt': 'unto-me', 'g_special': None}, '843': {'g_txt': 'the', 'g_special': None}, '844': {'g_txt': 'day', 'g_special': None}, '845': {'g_txt': 'into', 'g_special': None}, '846': {'g_txt': 'the', 'g_special': None}, '847': {'g_txt': 'thoughts,', 'g_special': None}, '848': {'g_txt': 'I-might-like', 'g_special': None}, '849': {'g_txt': 'I', 'g_special': None}, '850': {'g_txt': 'yet', 'g_special': None}, '851': {'g_txt': 'once', 'g_special': None}, '852': {'g_txt': 'backwards', 'g_special': None}, '853': {'g_txt': 'see,', 'g_special': None}, '854': {'g_txt': 'I-might-like', 'g_special': None}, '855': {'g_txt': 'I', 'g_special': None}, '856': {'g_txt': 'backward', 'g_special': None}, '857': {'g_txt': 'again', 'g_special': None}, '858': {'g_txt': 'to-fortify-the-walk,', 'g_special': None}, '859': {'g_txt': 'Before', 'g_special': None}, '860': {'g_txt': 'her', 'g_special': None}, '861': {'g_txt': 'house', 'g_special': None}, '862': {'g_txt': 'still', 'g_special': None}, '863': {'g_txt': 'stand.', 'g_special': None}, '864': {'g_txt': '#', 'g_special': None}, '865': {'g_txt': 'The', 'g_special': None}, '866': {'g_txt': 'old', 'g_special': None}, '867': {'g_txt': 'Head.', 'g_special': None}, '868': {'g_txt': 'The', 'g_special': None}, '869': {'g_txt': 'Hoar-frost', 'g_special': None}, '870': {'g_txt': 'had', 'g_special': None}, '871': {'g_txt': 'a', 'g_special': None}, '872': {'g_txt': 'white', 'g_special': None}, '873': {'g_txt': 'appearance', 'g_special': None}, '874': {'g_txt': 'To-me', 'g_special': None}, '875': {'g_txt': 'over-the', 'g_special': None}, '876': {'g_txt': 'hair', 'g_special': None}, '877': {'g_txt': 'strewed.', 'g_special': None}, '878': {'g_txt': 'Then', 'g_special': None}, '879': {'g_txt': 'thought', 'g_special': None}, '880': {'g_txt': 'I', 'g_special': None}, '881': {'g_txt': 'already', 'g_special': None}, '882': {'g_txt': 'an', 'g_special': None}, '883': {'g_txt': 'old-man', 'g_special': None}, '884': {'g_txt': 'to', 'g_special': None}, '885': {'g_txt': 'be,', 'g_special': None}, '886': {'g_txt': 'And', 'g_special': None}, '887': {'g_txt': 'have', 'g_special': None}, '888': {'g_txt': 'myself', 'g_special': None}, '889': {'g_txt': 'very', 'g_special': None}, '890': {'g_txt': 'rejoiced.', 'g_special': None}, '891': {'g_txt': 'But', 'g_special': None}, '892': {'g_txt': 'soon', 'g_special': None}, '893': {'g_txt': 'is', 'g_special': None}, '894': {'g_txt': 'he', 'g_special': None}, '895': {'g_txt': 'cropped,', 'g_special': None}, '896': {'g_txt': 'Have', 'g_special': None}, '897': {'g_txt': 'again', 'g_special': None}, '898': {'g_txt': 'black', 'g_special': None}, '899': {'g_txt': 'hairs,', 'g_special': None}, '900': {'g_txt': 'That', 'g_special': None}, '901': {'g_txt': 'to-me-it', 'g_special': None}, '902': {'g_txt': 'from', 'g_special': None}, '903': {'g_txt': 'my', 'g_special': None}, '904': {'g_txt': 'youth', 'g_special': None}, '905': {'g_txt': 'shudders', 'g_special': None}, '906': {'g_txt': '—', 'g_special': None}, '907': {'g_txt': 'How', 'g_special': None}, '908': {'g_txt': 'far', 'g_special': None}, '909': {'g_txt': 'still', 'g_special': None}, '910': {'g_txt': 'to', 'g_special': None}, '911': {'g_txt': 'the', 'g_special': None}, '912': {'g_txt': 'coffin!', 'g_special': None}, '913': {'g_txt': 'From the', 'g_special': None}, '914': {'g_txt': 'evening-red (sunset)', 'g_special': None}, '915': {'g_txt': 'to the', 'g_special': None}, '916': {'g_txt': 'morning-light (sunrise)', 'g_special': None}, '917': {'g_txt': 'Was', 'g_special': None}, '918': {'g_txt': 'many', 'g_special': None}, '919': {'g_txt': 'head (man)', 'g_special': None}, '920': {'g_txt': 'to', 'g_special': None}, '921': {'g_txt': 'grey-haired.', 'g_special': None}, '922': {'g_txt': 'Who', 'g_special': None}, '923': {'g_txt': 'believes it?', 'g_special': None}, '924': {'g_txt': 'And', 'g_special': None}, '925': {'g_txt': 'mine', 'g_special': None}, '926': {'g_txt': 'was', 'g_special': None}, '927': {'g_txt': 'it', 'g_special': None}, '928': {'g_txt': 'not', 'g_special': None}, '929': {'g_txt': 'On', 'g_special': None}, '930': {'g_txt': 'this', 'g_special': None}, '931': {'g_txt': 'whole', 'g_special': None}, '932': {'g_txt': 'journey!', 'g_special': None}, '933': {'g_txt': '!UNKNOWN', 'g_special': None}, '934': {'g_txt': '!UNKNOWN', 'g_special': None}, '935': {'g_txt': 'The-Crow', 'g_special': None}, '936': {'g_txt': 'A', 'g_special': None}, '937': {'g_txt': 'crow', 'g_special': None}, '938': {'g_txt': 'was', 'g_special': None}, '939': {'g_txt': 'with', 'g_special': None}, '940': {'g_txt': 'me', 'g_special': None}, '941': {'g_txt': 'out', 'g_special': None}, '942': {'g_txt': 'of-the', 'g_special': None}, '943': {'g_txt': 'city', 'g_special': None}, '944': {'g_txt': 'drawn-(companion),', 'g_special': None}, '945': {'g_txt': 'Is', 'g_special': None}, '946': {'g_txt': 'until', 'g_special': None}, '947': {'g_txt': 'to-day', 'g_special': None}, '948': {'g_txt': 'for', 'g_special': None}, '949': {'g_txt': 'and', 'g_special': None}, '950': {'g_txt': 'for', 'g_special': None}, '951': {'g_txt': 'about', 'g_special': None}, '952': {'g_txt': 'my', 'g_special': None}, '953': {'g_txt': 'head', 'g_special': None}, '954': {'g_txt': 'flown.', 'g_special': None}, '955': {'g_txt': 'Crow,', 'g_special': None}, '956': {'g_txt': 'wonderful', 'g_special': None}, '957': {'g_txt': 'animal,', 'g_special': None}, '958': {'g_txt': 'Wilt', 'g_special': None}, '959': {'g_txt': 'me', 'g_special': None}, '960': {'g_txt': 'not', 'g_special': None}, '961': {'g_txt': 'leave?', 'g_special': None}, '962': {'g_txt': 'Meinst', 'g_special': None}, '963': {'g_txt': 'well', 'g_special': None}, '964': {'g_txt': 'soon', 'g_special': None}, '965': {'g_txt': 'as', 'g_special': None}, '966': {'g_txt': 'prey', 'g_special': None}, '967': {'g_txt': 'here', 'g_special': None}, '968': {'g_txt': 'my', 'g_special': None}, '969': {'g_txt': 'body', 'g_special': None}, '970': {'g_txt': 'to', 'g_special': None}, '971': {'g_txt': 'grasp?', 'g_special': None}, '972': {'g_txt': 'Well,', 'g_special': None}, '973': {'g_txt': 'it', 'g_special': None}, '974': {'g_txt': 'will', 'g_special': None}, '975': {'g_txt': 'not', 'g_special': None}, '976': {'g_txt': 'far', 'g_special': None}, '977': {'g_txt': 'more (longer)', 'g_special': None}, '978': {'g_txt': 'go', 'g_special': None}, '979': {'g_txt': 'Upon', 'g_special': None}, '980': {'g_txt': 'the', 'g_special': None}, '981': {'g_txt': 'walking-stick.', 'g_special': None}, '982': {'g_txt': 'Crow,', 'g_special': None}, '983': {'g_txt': 'suffer', 'g_special': None}, '984': {'g_txt': 'me', 'g_special': None}, '985': {'g_txt': 'finally', 'g_special': None}, '986': {'g_txt': 'see', 'g_special': None}, '987': {'g_txt': 'fidelity', 'g_special': None}, '988': {'g_txt': 'till', 'g_special': None}, '989': {'g_txt': 'to-the', 'g_special': None}, '990': {'g_txt': 'grave!', 'g_special': None}, '991': {'g_txt': '!UNKNOWN', 'g_special': None}, '992': {'g_txt': 'Last', 'g_special': None}, '993': {'g_txt': 'hope.', 'g_special': None}, '994': {'g_txt': 'Here', 'g_special': None}, '995': {'g_txt': 'and', 'g_special': None}, '996': {'g_txt': 'there', 'g_special': None}, '997': {'g_txt': 'is', 'g_special': None}, '998': {'g_txt': 'on', 'g_special': None}, '999': {'g_txt': 'the', 'g_special': None}, '1000': {'g_txt': 'trees', 'g_special': None}, '1001': {'g_txt': 'yet', 'g_special': None}, '1002': {'g_txt': 'a', 'g_special': None}, '1003': {'g_txt': 'coloured', 'g_special': None}, '1004': {'g_txt': 'leaf', 'g_special': None}, '1005': {'g_txt': 'to', 'g_special': None}, '1006': {'g_txt': 'see,', 'g_special': None}, '1007': {'g_txt': 'And', 'g_special': None}, '1008': {'g_txt': 'I', 'g_special': None}, '1009': {'g_txt': 'remain', 'g_special': None}, '1010': {'g_txt': 'before', 'g_special': None}, '1011': {'g_txt': 'the', 'g_special': None}, '1012': {'g_txt': 'trees', 'g_special': None}, '1013': {'g_txt': 'oft-times', 'g_special': None}, '1014': {'g_txt': 'in', 'g_special': None}, '1015': {'g_txt': 'thoughts', 'g_special': None}, '1016': {'g_txt': 'stand.', 'g_special': None}, '1017': {'g_txt': 'Look', 'g_special': None}, '1018': {'g_txt': 'after', 'g_special': None}, '1019': {'g_txt': 'the', 'g_special': None}, '1020': {'g_txt': 'one', 'g_special': None}, '1021': {'g_txt': 'leaf,', 'g_special': None}, '1022': {'g_txt': 'Hinge', 'g_special': None}, '1023': {'g_txt': 'my', 'g_special': None}, '1024': {'g_txt': 'hope', 'g_special': None}, '1025': {'g_txt': 'thereon;', 'g_special': None}, '1026': {'g_txt': 'Plays', 'g_special': None}, '1027': {'g_txt': 'the', 'g_special': None}, '1028': {'g_txt': 'wind', 'g_special': None}, '1029': {'g_txt': 'with', 'g_special': None}, '1030': {'g_txt': 'my', 'g_special': None}, '1031': {'g_txt': 'leaf,', 'g_special': None}, '1032': {'g_txt': 'Tremble', 'g_special': None}, '1033': {'g_txt': 'I,', 'g_special': None}, '1034': {'g_txt': 'what', 'g_special': None}, '1035': {'g_txt': 'I', 'g_special': None}, '1036': {'g_txt': 'can-tremble', 'g_special': None}, '1037': {'g_txt': 'can.', 'g_special': None}, '1038': {'g_txt': 'Ah,', 'g_special': None}, '1039': {'g_txt': 'and', 'g_special': None}, '1040': {'g_txt': 'falls', 'g_special': None}, '1041': {'g_txt': 'the', 'g_special': None}, '1042': {'g_txt': 'leaf', 'g_special': None}, '1043': {'g_txt': 'to', 'g_special': None}, '1044': {'g_txt': 'ground,', 'g_special': None}, '1045': {'g_txt': 'Falls', 'g_special': None}, '1046': {'g_txt': 'with', 'g_special': None}, '1047': {'g_txt': 'it', 'g_special': None}, '1048': {'g_txt': 'the', 'g_special': None}, '1049': {'g_txt': 'hope', 'g_special': None}, '1050': {'g_txt': 'off,', 'g_special': None}, '1051': {'g_txt': 'Fall’', 'g_special': None}, '1052': {'g_txt': 'I', 'g_special': None}, '1053': {'g_txt': 'myself', 'g_special': None}, '1054': {'g_txt': 'with', 'g_special': None}, '1055': {'g_txt': 'to', 'g_special': None}, '1056': {'g_txt': 'ground,', 'g_special': None}, '1057': {'g_txt': 'weep', 'g_special': None}, '1058': {'g_txt': 'on', 'g_special': None}, '1059': {'g_txt': 'my', 'g_special': None}, '1060': {'g_txt': 'hope', 'g_special': None}, '1061': {'g_txt': 'grave.', 'g_special': None}, '1062': {'g_txt': '!UNKNOWN', 'g_special': None}, '1063': {'g_txt': 'In-the', 'g_special': None}, '1064': {'g_txt': 'village', 'g_special': None}, '1065': {'g_txt': 'It', 'g_special': None}, '1066': {'g_txt': 'bark', 'g_special': None}, '1067': {'g_txt': 'the', 'g_special': None}, '1068': {'g_txt': 'dogs,', 'g_special': None}, '1069': {'g_txt': 'it', 'g_special': None}, '1070': {'g_txt': 'rattle', 'g_special': None}, '1071': {'g_txt': 'the', 'g_special': None}, '1072': {'g_txt': 'chains.', 'g_special': None}, '1073': {'g_txt': 'The', 'g_special': None}, '1074': {'g_txt': 'men', 'g_special': None}, '1075': {'g_txt': 'snore', 'g_special': None}, '1076': {'g_txt': 'in', 'g_special': None}, '1077': {'g_txt': 'their', 'g_special': None}, '1078': {'g_txt': 'beds,', 'g_special': None}, '1079': {'g_txt': 'dreaming', 'g_special': None}, '1080': {'g_txt': 'to-themselves', 'g_special': None}, '1081': {'g_txt': 'many-a-thing,', 'g_special': None}, '1082': {'g_txt': 'which', 'g_special': None}, '1083': {'g_txt': 'they', 'g_special': None}, '1084': {'g_txt': 'not', 'g_special': None}, '1085': {'g_txt': 'have,', 'g_special': None}, '1086': {'g_txt': 'Do', 'g_special': None}, '1087': {'g_txt': 'to-themselves', 'g_special': None}, '1088': {'g_txt': 'in', 'g_special': None}, '1089': {'g_txt': 'good', 'g_special': None}, '1090': {'g_txt': 'and', 'g_special': None}, '1091': {'g_txt': 'bad', 'g_special': None}, '1092': {'g_txt': 'to-rejoice:', 'g_special': None}, '1093': {'g_txt': 'And', 'g_special': None}, '1094': {'g_txt': 'morning', 'g_special': None}, '1095': {'g_txt': 'early', 'g_special': None}, '1096': {'g_txt': 'is', 'g_special': None}, '1097': {'g_txt': 'All', 'g_special': None}, '1098': {'g_txt': 'melted-away.', 'g_special': None}, '1099': {'g_txt': '—', 'g_special': None}, '1100': {'g_txt': 'Well', 'g_special': None}, '1101': {'g_txt': 'then,', 'g_special': None}, '1102': {'g_txt': 'they', 'g_special': None}, '1103': {'g_txt': 'have', 'g_special': None}, '1104': {'g_txt': 'their', 'g_special': None}, '1105': {'g_txt': 'share', 'g_special': None}, '1106': {'g_txt': 'enjoyed,', 'g_special': None}, '1107': {'g_txt': 'And', 'g_special': None}, '1108': {'g_txt': 'hope,', 'g_special': None}, '1109': {'g_txt': 'what', 'g_special': None}, '1110': {'g_txt': 'they', 'g_special': None}, '1111': {'g_txt': 'yet', 'g_special': None}, '1112': {'g_txt': 'left', 'g_special': None}, '1113': {'g_txt': 'may-have-left,', 'g_special': None}, '1114': {'g_txt': 'Yet', 'g_special': None}, '1115': {'g_txt': 'again', 'g_special': None}, '1116': {'g_txt': 'to', 'g_special': None}, '1117': {'g_txt': 'find', 'g_special': None}, '1118': {'g_txt': 'upon', 'g_special': None}, '1119': {'g_txt': 'their', 'g_special': None}, '1120': {'g_txt': 'pillow.', 'g_special': None}, '1121': {'g_txt': 'Bark', 'g_special': None}, '1122': {'g_txt': 'me', 'g_special': None}, '1123': {'g_txt': 'only', 'g_special': None}, '1124': {'g_txt': 'forth,', 'g_special': None}, '1125': {'g_txt': 'ye', 'g_special': None}, '1126': {'g_txt': 'wake', 'g_special': None}, '1127': {'g_txt': 'dogs,', 'g_special': None}, '1128': {'g_txt': 'Let', 'g_special': None}, '1129': {'g_txt': 'me', 'g_special': None}, '1130': {'g_txt': 'not', 'g_special': None}, '1131': {'g_txt': 'rest', 'g_special': None}, '1132': {'g_txt': 'in', 'g_special': None}, '1133': {'g_txt': 'the', 'g_special': None}, '1134': {'g_txt': 'slumber-hour!', 'g_special': None}, '1135': {'g_txt': 'I', 'g_special': None}, '1136': {'g_txt': 'am', 'g_special': None}, '1137': {'g_txt': 'to', 'g_special': None}, '1138': {'g_txt': 'end', 'g_special': None}, '1139': {'g_txt': 'with', 'g_special': None}, '1140': {'g_txt': 'all', 'g_special': None}, '1141': {'g_txt': 'dreams', 'g_special': None}, '1142': {'g_txt': '—', 'g_special': None}, '1143': {'g_txt': 'What', 'g_special': None}, '1144': {'g_txt': 'will', 'g_special': None}, '1145': {'g_txt': 'I', 'g_special': None}, '1146': {'g_txt': 'among', 'g_special': None}, '1147': {'g_txt': 'the', 'g_special': None}, '1148': {'g_txt': 'sleepers', 'g_special': None}, '1149': {'g_txt': 'delay?', 'g_special': None}, '1150': {'g_txt': '#', 'g_special': None}, '1151': {'g_txt': 'The', 'g_special': None}, '1152': {'g_txt': 'stormy', 'g_special': None}, '1153': {'g_txt': 'Morning.', 'g_special': None}, '1154': {'g_txt': 'How', 'g_special': None}, '1155': {'g_txt': 'has', 'g_special': None}, '1156': {'g_txt': 'the', 'g_special': None}, '1157': {'g_txt': 'storm', 'g_special': None}, '1158': {'g_txt': 'torn', 'g_special': None}, '1159': {'g_txt': 'Of-the', 'g_special': None}, '1160': {'g_txt': 'sky', 'g_special': None}, '1161': {'g_txt': 'gray', 'g_special': None}, '1162': {'g_txt': 'robe!', 'g_special': None}, '1163': {'g_txt': 'The', 'g_special': None}, '1164': {'g_txt': 'cloud-patches', 'g_special': None}, '1165': {'g_txt': 'flutter', 'g_special': None}, '1166': {'g_txt': 'About', 'g_special': None}, '1167': {'g_txt': 'in', 'g_special': None}, '1168': {'g_txt': 'dull', 'g_special': None}, '1169': {'g_txt': 'strife.', 'g_special': None}, '1170': {'g_txt': 'And', 'g_special': None}, '1171': {'g_txt': 'red', 'g_special': None}, '1172': {'g_txt': 'fire-flames', 'g_special': None}, '1173': {'g_txt': 'move', 'g_special': None}, '1174': {'g_txt': 'between', 'g_special': None}, '1175': {'g_txt': 'them', 'g_special': None}, '1176': {'g_txt': 'hither-thither', 'g_special': None}, '1177': {'g_txt': 'That', 'g_special': None}, '1178': {'g_txt': 'call', 'g_special': None}, '1179': {'g_txt': 'I', 'g_special': None}, '1180': {'g_txt': 'a', 'g_special': None}, '1181': {'g_txt': 'morn', 'g_special': None}, '1182': {'g_txt': 'So', 'g_special': None}, '1183': {'g_txt': 'right', 'g_special': None}, '1184': {'g_txt': 'after', 'g_special': None}, '1185': {'g_txt': 'my', 'g_special': None}, '1186': {'g_txt': 'mind!', 'g_special': None}, '1187': {'g_txt': 'My', 'g_special': None}, '1188': {'g_txt': 'heart', 'g_special': None}, '1189': {'g_txt': 'sees', 'g_special': None}, '1190': {'g_txt': 'in', 'g_special': None}, '1191': {'g_txt': 'the', 'g_special': None}, '1192': {'g_txt': 'heaven', 'g_special': None}, '1193': {'g_txt': 'portrayed', 'g_special': None}, '1194': {'g_txt': 'its', 'g_special': None}, '1195': {'g_txt': 'own', 'g_special': None}, '1196': {'g_txt': 'picture', 'g_special': None}, '1197': {'g_txt': '—', 'g_special': None}, '1198': {'g_txt': 'It', 'g_special': None}, '1199': {'g_txt': 'is', 'g_special': None}, '1200': {'g_txt': 'nothing', 'g_special': None}, '1201': {'g_txt': 'than', 'g_special': None}, '1202': {'g_txt': 'the', 'g_special': None}, '1203': {'g_txt': 'winter,', 'g_special': None}, '1204': {'g_txt': 'The', 'g_special': None}, '1205': {'g_txt': 'winter', 'g_special': None}, '1206': {'g_txt': 'cold', 'g_special': None}, '1207': {'g_txt': 'and', 'g_special': None}, '1208': {'g_txt': 'wild!', 'g_special': None}, '1209': {'g_txt': '!UNKNOWN', 'g_special': None}, '1210': {'g_txt': 'Deception.', 'g_special': None}, '1211': {'g_txt': 'A', 'g_special': None}, '1212': {'g_txt': 'light', 'g_special': None}, '1213': {'g_txt': 'dances', 'g_special': None}, '1214': {'g_txt': 'friendly', 'g_special': None}, '1215': {'g_txt': 'before', 'g_special': None}, '1216': {'g_txt': 'me', 'g_special': None}, '1217': {'g_txt': 'there;', 'g_special': None}, '1218': {'g_txt': 'I', 'g_special': None}, '1219': {'g_txt': 'follow', 'g_special': None}, '1220': {'g_txt': 'it', 'g_special': None}, '1221': {'g_txt': 'now', 'g_special': None}, '1222': {'g_txt': 'the', 'g_special': None}, '1223': {'g_txt': 'cross', 'g_special': None}, '1224': {'g_txt': 'and', 'g_special': None}, '1225': {'g_txt': 'queer;', 'g_special': None}, '1226': {'g_txt': 'I', 'g_special': None}, '1227': {'g_txt': 'follow', 'g_special': None}, '1228': {'g_txt': 'it', 'g_special': None}, '1229': {'g_txt': 'gladly,', 'g_special': None}, '1230': {'g_txt': 'and', 'g_special': None}, '1231': {'g_txt': 'see-it’s', 'g_special': None}, '1232': {'g_txt': 'it', 'g_special': None}, '1233': {'g_txt': 'on,', 'g_special': None}, '1234': {'g_txt': 'That', 'g_special': None}, '1235': {'g_txt': 'it', 'g_special': None}, '1236': {'g_txt': 'allures', 'g_special': None}, '1237': {'g_txt': 'the', 'g_special': None}, '1238': {'g_txt': 'wayfarer.', 'g_special': None}, '1239': {'g_txt': 'Ah,', 'g_special': None}, '1240': {'g_txt': 'who', 'g_special': None}, '1241': {'g_txt': 'like', 'g_special': None}, '1242': {'g_txt': 'I', 'g_special': None}, '1243': {'g_txt': 'so', 'g_special': None}, '1244': {'g_txt': 'wretched', 'g_special': None}, '1245': {'g_txt': 'is,', 'g_special': None}, '1246': {'g_txt': 'Giveth', 'g_special': None}, '1247': {'g_txt': 'gladly', 'g_special': None}, '1248': {'g_txt': 'himself', 'g_special': None}, '1249': {'g_txt': '(given) in', 'g_special': None}, '1250': {'g_txt': 'to-the', 'g_special': None}, '1251': {'g_txt': 'gaudy', 'g_special': None}, '1252': {'g_txt': 'lure,', 'g_special': None}, '1253': {'g_txt': 'Which', 'g_special': None}, '1254': {'g_txt': 'behind', 'g_special': None}, '1255': {'g_txt': 'rest', 'g_special': None}, '1256': {'g_txt': 'and', 'g_special': None}, '1257': {'g_txt': 'night', 'g_special': None}, '1258': {'g_txt': 'and', 'g_special': None}, '1259': {'g_txt': 'horror', 'g_special': None}, '1260': {'g_txt': 'To-him', 'g_special': None}, '1261': {'g_txt': 'points', 'g_special': None}, '1262': {'g_txt': 'a', 'g_special': None}, '1263': {'g_txt': 'bright,', 'g_special': None}, '1264': {'g_txt': 'warm', 'g_special': None}, '1265': {'g_txt': 'house,', 'g_special': None}, '1266': {'g_txt': 'And', 'g_special': None}, '1267': {'g_txt': 'a', 'g_special': None}, '1268': {'g_txt': 'dear', 'g_special': None}, '1269': {'g_txt': 'soul', 'g_special': None}, '1270': {'g_txt': 'therein', 'g_special': None}, '1271': {'g_txt': '—', 'g_special': None}, '1272': {'g_txt': 'Only', 'g_special': None}, '1273': {'g_txt': 'Delusion', 'g_special': None}, '1274': {'g_txt': 'is', 'g_special': None}, '1275': {'g_txt': 'for', 'g_special': None}, '1276': {'g_txt': 'me', 'g_special': None}, '1277': {'g_txt': 'Gain!', 'g_special': None}, '1278': {'g_txt': '#', 'g_special': None}, '1279': {'g_txt': 'The', 'g_special': None}, '1280': {'g_txt': 'Waypointer.', 'g_special': None}, '1281': {'g_txt': 'What', 'g_special': None}, '1282': {'g_txt': 'avoid', 'g_special': None}, '1283': {'g_txt': 'I', 'g_special': None}, '1284': {'g_txt': 'then', 'g_special': None}, '1285': {'g_txt': 'the', 'g_special': None}, '1286': {'g_txt': 'ways,', 'g_special': None}, '1287': {'g_txt': 'Where', 'g_special': None}, '1288': {'g_txt': 'the', 'g_special': None}, '1289': {'g_txt': 'other', 'g_special': None}, '1290': {'g_txt': 'wanderers', 'g_special': None}, '1291': {'g_txt': 'go,', 'g_special': None}, '1292': {'g_txt': 'Seek', 'g_special': None}, '1293': {'g_txt': 'to-me', 'g_special': None}, '1294': {'g_txt': 'concealed', 'g_special': None}, '1295': {'g_txt': 'causeways', 'g_special': None}, '1296': {'g_txt': 'Through', 'g_special': None}, '1297': {'g_txt': 'snow-covered', 'g_special': None}, '1298': {'g_txt': 'rock-highs?', 'g_special': None}, '1299': {'g_txt': 'Have', 'g_special': None}, '1300': {'g_txt': 'yes', 'g_special': None}, '1301': {'g_txt': 'yet', 'g_special': None}, '1302': {'g_txt': 'nothing', 'g_special': None}, '1303': {'g_txt': 'perpetrated,', 'g_special': None}, '1304': {'g_txt': 'That', 'g_special': None}, '1305': {'g_txt': 'I', 'g_special': None}, '1306': {'g_txt': 'men', 'g_special': None}, '1307': {'g_txt': 'should', 'g_special': None}, '1308': {'g_txt': 'shun', 'g_special': None}, '1309': {'g_txt': '—', 'g_special': None}, '1310': {'g_txt': 'What', 'g_special': None}, '1311': {'g_txt': 'a', 'g_special': None}, '1312': {'g_txt': 'foolish', 'g_special': None}, '1313': {'g_txt': 'desire', 'g_special': None}, '1314': {'g_txt': 'Drives', 'g_special': None}, '1315': {'g_txt': 'me', 'g_special': None}, '1316': {'g_txt': 'into', 'g_special': None}, '1317': {'g_txt': 'the', 'g_special': None}, '1318': {'g_txt': 'waste?', 'g_special': None}, '1319': {'g_txt': 'Wise', 'g_special': None}, '1320': {'g_txt': 'stand', 'g_special': None}, '1321': {'g_txt': 'upon', 'g_special': None}, '1322': {'g_txt': 'the', 'g_special': None}, '1323': {'g_txt': 'streets,', 'g_special': None}, '1324': {'g_txt': 'wise(ly)', 'g_special': None}, '1325': {'g_txt': 'upon', 'g_special': None}, '1326': {'g_txt': 'the', 'g_special': None}, '1327': {'g_txt': 'cities', 'g_special': None}, '1328': {'g_txt': 'to,', 'g_special': None}, '1329': {'g_txt': 'And', 'g_special': None}, '1330': {'g_txt': 'I', 'g_special': None}, '1331': {'g_txt': 'wander', 'g_special': None}, '1332': {'g_txt': 'without', 'g_special': None}, '1333': {'g_txt': 'measure,', 'g_special': None}, '1334': {'g_txt': 'Without', 'g_special': None}, '1335': {'g_txt': 'rest,', 'g_special': None}, '1336': {'g_txt': 'and', 'g_special': None}, '1337': {'g_txt': 'seek', 'g_special': None}, '1338': {'g_txt': 'rest.', 'g_special': None}, '1339': {'g_txt': 'A', 'g_special': None}, '1340': {'g_txt': 'Sure', 'g_special': None}, '1341': {'g_txt': 'see', 'g_special': None}, '1342': {'g_txt': 'I', 'g_special': None}, '1343': {'g_txt': 'standing', 'g_special': None}, '1344': {'g_txt': 'Unmoved', 'g_special': None}, '1345': {'g_txt': 'before', 'g_special': None}, '1346': {'g_txt': 'my', 'g_special': None}, '1347': {'g_txt': 'sight;', 'g_special': None}, '1348': {'g_txt': 'A', 'g_special': None}, '1349': {'g_txt': 'road', 'g_special': None}, '1350': {'g_txt': 'must', 'g_special': None}, '1351': {'g_txt': 'I', 'g_special': None}, '1352': {'g_txt': 'go,', 'g_special': None}, '1353': {'g_txt': 'Which', 'g_special': None}, '1354': {'g_txt': 'yet', 'g_special': None}, '1355': {'g_txt': 'Nobody', 'g_special': None}, '1356': {'g_txt': 'went', 'g_special': None}, '1357': {'g_txt': 'back.', 'g_special': None}, '1358': {'g_txt': '!UNKNOWN', 'g_special': None}, '1359': {'g_txt': '!UNKNOWN', 'g_special': None}, '1360': {'g_txt': '!UNKNOWN', 'g_special': None}, '1361': {'g_txt': 'On', 'g_special': None}, '1362': {'g_txt': 'a', 'g_special': None}, '1363': {'g_txt': 'graveyard', 'g_special': None}, '1364': {'g_txt': 'Has', 'g_special': None}, '1365': {'g_txt': 'me', 'g_special': None}, '1366': {'g_txt': 'my', 'g_special': None}, '1367': {'g_txt': 'way', 'g_special': None}, '1368': {'g_txt': 'brought.', 'g_special': None}, '1369': {'g_txt': 'Here', 'g_special': None}, '1370': {'g_txt': 'will', 'g_special': None}, '1371': {'g_txt': 'I', 'g_special': None}, '1372': {'g_txt': 'pause:', 'g_special': None}, '1373': {'g_txt': 'Have', 'g_special': None}, '1374': {'g_txt': 'I', 'g_special': None}, '1375': {'g_txt': 'by', 'g_special': None}, '1376': {'g_txt': 'myself', 'g_special': None}, '1377': {'g_txt': 'thought.', 'g_special': None}, '1378': {'g_txt': 'Ye', 'g_special': None}, '1379': {'g_txt': 'green', 'g_special': None}, '1380': {'g_txt': 'wreaths-of-death', 'g_special': None}, '1381': {'g_txt': 'May', 'g_special': None}, '1382': {'g_txt': 'well', 'g_special': None}, '1383': {'g_txt': 'the', 'g_special': None}, '1384': {'g_txt': 'signs', 'g_special': None}, '1385': {'g_txt': 'be,', 'g_special': None}, '1386': {'g_txt': 'Which', 'g_special': None}, '1387': {'g_txt': 'weary', 'g_special': None}, '1388': {'g_txt': 'wayfarer', 'g_special': None}, '1389': {'g_txt': 'invite', 'g_special': None}, '1390': {'g_txt': 'Into-the', 'g_special': None}, '1391': {'g_txt': 'cool', 'g_special': None}, '1392': {'g_txt': 'inn', 'g_special': None}, '1393': {'g_txt': 'one.', 'g_special': None}, '1394': {'g_txt': 'Are', 'g_special': None}, '1395': {'g_txt': 'then', 'g_special': None}, '1396': {'g_txt': 'in', 'g_special': None}, '1397': {'g_txt': 'this', 'g_special': None}, '1398': {'g_txt': 'house', 'g_special': None}, '1399': {'g_txt': 'the (these)', 'g_special': None}, '1400': {'g_txt': 'chambers', 'g_special': None}, '1401': {'g_txt': 'all', 'g_special': None}, '1402': {'g_txt': 'occupied?', 'g_special': None}, '1403': {'g_txt': 'Am', 'g_special': None}, '1404': {'g_txt': 'weary', 'g_special': None}, '1405': {'g_txt': 'to', 'g_special': None}, '1406': {'g_txt': 'sinking-down', 'g_special': None}, '1407': {'g_txt': 'And', 'g_special': None}, '1408': {'g_txt': 'deadly', 'g_special': None}, '1409': {'g_txt': 'heavily', 'g_special': None}, '1410': {'g_txt': 'wounded.', 'g_special': None}, '1411': {'g_txt': 'O', 'g_special': None}, '1412': {'g_txt': 'unmerciful', 'g_special': None}, '1413': {'g_txt': 'inn,', 'g_special': None}, '1414': {'g_txt': 'But', 'g_special': None}, '1415': {'g_txt': 'wilt-send-away', 'g_special': None}, '1416': {'g_txt': 'thou', 'g_special': None}, '1417': {'g_txt': 'me', 'g_special': None}, '1418': {'g_txt': 'off?', 'g_special': None}, '1419': {'g_txt': 'Now', 'g_special': None}, '1420': {'g_txt': 'further', 'g_special': None}, '1421': {'g_txt': 'then,', 'g_special': None}, '1422': {'g_txt': 'only', 'g_special': None}, '1423': {'g_txt': 'further,', 'g_special': None}, '1424': {'g_txt': 'My', 'g_special': None}, '1425': {'g_txt': 'faithful', 'g_special': None}, '1426': {'g_txt': 'staff!', 'g_special': None}, '1427': {'g_txt': '#', 'g_special': None}, '1428': {'g_txt': 'The', 'g_special': None}, '1429': {'g_txt': \"Will-o'-the-wisp.\", 'g_special': None}, '1430': {'g_txt': 'In', 'g_special': None}, '1431': {'g_txt': 'the', 'g_special': None}, '1432': {'g_txt': 'deepest', 'g_special': None}, '1433': {'g_txt': 'rock-bottoms', 'g_special': None}, '1434': {'g_txt': 'Enticed', 'g_special': None}, '1435': {'g_txt': 'me', 'g_special': None}, '1436': {'g_txt': 'a', 'g_special': None}, '1437': {'g_txt': \"Will-o'-the-wisp\", 'g_special': None}, '1438': {'g_txt': 'thither:', 'g_special': None}, '1439': {'g_txt': 'How', 'g_special': None}, '1440': {'g_txt': 'I', 'g_special': None}, '1441': {'g_txt': 'an', 'g_special': None}, '1442': {'g_txt': 'issue', 'g_special': None}, '1443': {'g_txt': 'find,', 'g_special': None}, '1444': {'g_txt': 'Lies', 'g_special': None}, '1445': {'g_txt': 'not', 'g_special': None}, '1446': {'g_txt': 'heavy (hard)', 'g_special': None}, '1447': {'g_txt': 'to-me', 'g_special': None}, '1448': {'g_txt': 'in', 'g_special': None}, '1449': {'g_txt': 'the', 'g_special': None}, '1450': {'g_txt': 'mind.', 'g_special': None}, '1451': {'g_txt': 'Am', 'g_special': None}, '1452': {'g_txt': 'accustomed', 'g_special': None}, '1453': {'g_txt': 'to-the', 'g_special': None}, '1454': {'g_txt': 'erring', 'g_special': None}, '1455': {'g_txt': 'going,', 'g_special': None}, '1456': {'g_txt': '’S', 'g_special': None}, '1457': {'g_txt': 'leads', 'g_special': None}, '1458': {'g_txt': 'indeed', 'g_special': None}, '1459': {'g_txt': 'every', 'g_special': None}, '1460': {'g_txt': 'way', 'g_special': None}, '1461': {'g_txt': 'to-the', 'g_special': None}, '1462': {'g_txt': 'goal:', 'g_special': None}, '1463': {'g_txt': 'Our', 'g_special': None}, '1464': {'g_txt': 'joys,', 'g_special': None}, '1465': {'g_txt': 'our', 'g_special': None}, '1466': {'g_txt': 'pains,', 'g_special': None}, '1467': {'g_txt': 'All-(is)', 'g_special': None}, '1468': {'g_txt': '(merely)-a', 'g_special': None}, '1469': {'g_txt': \"will-o'-the-wisp\", 'g_special': None}, '1470': {'g_txt': 'play!', 'g_special': None}, '1471': {'g_txt': 'Through', 'g_special': None}, '1472': {'g_txt': 'the', 'g_special': None}, '1473': {'g_txt': \"mountain-stream's\", 'g_special': None}, '1474': {'g_txt': 'dry', 'g_special': None}, '1475': {'g_txt': 'channels', 'g_special': None}, '1476': {'g_txt': 'wends', 'g_special': None}, '1477': {'g_txt': 'I', 'g_special': None}, '1478': {'g_txt': 'quietly', 'g_special': None}, '1479': {'g_txt': 'myself', 'g_special': None}, '1480': {'g_txt': 'down', 'g_special': None}, '1481': {'g_txt': '—', 'g_special': None}, '1482': {'g_txt': 'Every', 'g_special': None}, '1483': {'g_txt': 'stream', 'g_special': None}, '1484': {'g_txt': 'will-for-it-(obtain-it)', 'g_special': None}, '1485': {'g_txt': 'sea', 'g_special': None}, '1486': {'g_txt': 'to-gain,', 'g_special': None}, '1487': {'g_txt': 'Every', 'g_special': None}, '1488': {'g_txt': 'suffering', 'g_special': None}, '1489': {'g_txt': 'also', 'g_special': None}, '1490': {'g_txt': 'a', 'g_special': None}, '1491': {'g_txt': 'grave.', 'g_special': None}, '1492': {'g_txt': '!UNKNOWN', 'g_special': None}, '1493': {'g_txt': 'Rest.', 'g_special': None}, '1494': {'g_txt': 'Now', 'g_special': None}, '1495': {'g_txt': 'perceive', 'g_special': None}, '1496': {'g_txt': 'I', 'g_special': None}, '1497': {'g_txt': 'first,', 'g_special': None}, '1498': {'g_txt': 'how', 'g_special': None}, '1499': {'g_txt': 'tired', 'g_special': None}, '1500': {'g_txt': 'I', 'g_special': None}, '1501': {'g_txt': 'am,', 'g_special': None}, '1502': {'g_txt': 'When', 'g_special': None}, '1503': {'g_txt': 'I', 'g_special': None}, '1504': {'g_txt': 'to', 'g_special': None}, '1505': {'g_txt': 'rest', 'g_special': None}, '1506': {'g_txt': 'myself', 'g_special': None}, '1507': {'g_txt': 'lay;', 'g_special': None}, '1508': {'g_txt': 'The', 'g_special': None}, '1509': {'g_txt': 'wandering', 'g_special': None}, '1510': {'g_txt': 'held', 'g_special': None}, '1511': {'g_txt': 'me', 'g_special': None}, '1512': {'g_txt': 'merry', 'g_special': None}, '1513': {'g_txt': 'on', 'g_special': None}, '1514': {'g_txt': 'Upon', 'g_special': None}, '1515': {'g_txt': 'unfit-for habitation', 'g_special': None}, '1516': {'g_txt': 'way.', 'g_special': None}, '1517': {'g_txt': 'The', 'g_special': None}, '1518': {'g_txt': 'feet', 'g_special': None}, '1519': {'g_txt': \"ask'd\", 'g_special': None}, '1520': {'g_txt': 'not', 'g_special': None}, '1521': {'g_txt': 'after', 'g_special': None}, '1522': {'g_txt': 'rest,', 'g_special': None}, '1523': {'g_txt': 'It', 'g_special': None}, '1524': {'g_txt': 'was', 'g_special': None}, '1525': {'g_txt': 'too', 'g_special': None}, '1526': {'g_txt': 'cold', 'g_special': None}, '1527': {'g_txt': 'to', 'g_special': None}, '1528': {'g_txt': 'stand,', 'g_special': None}, '1529': {'g_txt': 'The', 'g_special': None}, '1530': {'g_txt': 'back', 'g_special': None}, '1531': {'g_txt': 'felt', 'g_special': None}, '1532': {'g_txt': 'no', 'g_special': None}, '1533': {'g_txt': 'load,', 'g_special': None}, '1534': {'g_txt': 'The', 'g_special': None}, '1535': {'g_txt': 'storm', 'g_special': None}, '1536': {'g_txt': 'helped', 'g_special': None}, '1537': {'g_txt': 'forth', 'g_special': None}, '1538': {'g_txt': 'me', 'g_special': None}, '1539': {'g_txt': 'to-blow.', 'g_special': None}, '1540': {'g_txt': 'In', 'g_special': None}, '1541': {'g_txt': 'one (a)', 'g_special': None}, '1542': {'g_txt': 'coalman’s', 'g_special': None}, '1543': {'g_txt': 'close', 'g_special': None}, '1544': {'g_txt': 'house', 'g_special': None}, '1545': {'g_txt': 'Have', 'g_special': None}, '1546': {'g_txt': 'shelter', 'g_special': None}, '1547': {'g_txt': 'I', 'g_special': None}, '1548': {'g_txt': 'found;', 'g_special': None}, '1549': {'g_txt': 'Yet', 'g_special': None}, '1550': {'g_txt': 'my', 'g_special': None}, '1551': {'g_txt': 'limbs', 'g_special': None}, '1552': {'g_txt': 'rest', 'g_special': None}, '1553': {'g_txt': 'not', 'g_special': None}, '1554': {'g_txt': 'out (therefrom):', 'g_special': None}, '1555': {'g_txt': 'So', 'g_special': None}, '1556': {'g_txt': 'burn', 'g_special': None}, '1557': {'g_txt': 'their', 'g_special': None}, '1558': {'g_txt': 'wounds.', 'g_special': None}, '1559': {'g_txt': 'Also', 'g_special': None}, '1560': {'g_txt': 'thou,', 'g_special': None}, '1561': {'g_txt': 'my', 'g_special': None}, '1562': {'g_txt': 'heart,', 'g_special': None}, '1563': {'g_txt': 'in-the', 'g_special': None}, '1564': {'g_txt': 'battle', 'g_special': None}, '1565': {'g_txt': 'and', 'g_special': None}, '1566': {'g_txt': 'storm', 'g_special': None}, '1567': {'g_txt': 'So', 'g_special': None}, '1568': {'g_txt': 'wild', 'g_special': None}, '1569': {'g_txt': 'and', 'g_special': None}, '1570': {'g_txt': 'so', 'g_special': None}, '1571': {'g_txt': 'daring,', 'g_special': None}, '1572': {'g_txt': 'Feel’st', 'g_special': None}, '1573': {'g_txt': 'in', 'g_special': None}, '1574': {'g_txt': 'the', 'g_special': None}, '1575': {'g_txt': 'stillness', 'g_special': None}, '1576': {'g_txt': 'first', 'g_special': None}, '1577': {'g_txt': 'thy', 'g_special': None}, '1578': {'g_txt': 'worm', 'g_special': None}, '1579': {'g_txt': 'With', 'g_special': None}, '1580': {'g_txt': 'hot', 'g_special': None}, '1581': {'g_txt': 'sting', 'g_special': None}, '1582': {'g_txt': 'itself', 'g_special': None}, '1583': {'g_txt': 'move!', 'g_special': None}, '1584': {'g_txt': '#', 'g_special': None}, '1585': {'g_txt': 'The', 'g_special': None}, '1586': {'g_txt': 'Sundogs.', 'g_special': None}, '1587': {'g_txt': 'Three', 'g_special': None}, '1588': {'g_txt': 'suns', 'g_special': None}, '1589': {'g_txt': 'saw', 'g_special': None}, '1590': {'g_txt': 'I', 'g_special': None}, '1591': {'g_txt': 'on-the', 'g_special': None}, '1592': {'g_txt': 'heaven', 'g_special': None}, '1593': {'g_txt': 'to-stand,', 'g_special': None}, '1594': {'g_txt': 'Have', 'g_special': None}, '1595': {'g_txt': 'long', 'g_special': None}, '1596': {'g_txt': 'and', 'g_special': None}, '1597': {'g_txt': 'firm', 'g_special': None}, '1598': {'g_txt': 'them', 'g_special': None}, '1599': {'g_txt': 'gazed-on;', 'g_special': None}, '1600': {'g_txt': 'And', 'g_special': None}, '1601': {'g_txt': 'they', 'g_special': None}, '1602': {'g_txt': 'also', 'g_special': None}, '1603': {'g_txt': 'stood', 'g_special': None}, '1604': {'g_txt': 'there', 'g_special': None}, '1605': {'g_txt': 'so', 'g_special': None}, '1606': {'g_txt': 'sterr,', 'g_special': None}, '1607': {'g_txt': 'As', 'g_special': None}, '1608': {'g_txt': 'they-could', 'g_special': None}, '1609': {'g_txt': 'they', 'g_special': None}, '1610': {'g_txt': 'not', 'g_special': None}, '1611': {'g_txt': 'away', 'g_special': None}, '1612': {'g_txt': 'from', 'g_special': None}, '1613': {'g_txt': 'me.', 'g_special': None}, '1614': {'g_txt': 'Ah,', 'g_special': None}, '1615': {'g_txt': 'my', 'g_special': None}, '1616': {'g_txt': 'suns', 'g_special': None}, '1617': {'g_txt': 'be-(are)', 'g_special': None}, '1618': {'g_txt': 'you', 'g_special': None}, '1619': {'g_txt': 'not!', 'g_special': None}, '1620': {'g_txt': 'Look-(ye)', 'g_special': None}, '1621': {'g_txt': 'on-(the-)others', 'g_special': None}, '1622': {'g_txt': 'however', 'g_special': None}, '1623': {'g_txt': 'into-the', 'g_special': None}, '1624': {'g_txt': 'face!', 'g_special': None}, '1625': {'g_txt': 'Yes,', 'g_special': None}, '1626': {'g_txt': 'lately', 'g_special': None}, '1627': {'g_txt': 'had', 'g_special': None}, '1628': {'g_txt': 'I', 'g_special': None}, '1629': {'g_txt': 'also', 'g_special': None}, '1630': {'g_txt': 'well-(perhaps)', 'g_special': None}, '1631': {'g_txt': 'three:', 'g_special': None}, '1632': {'g_txt': 'now', 'g_special': None}, '1633': {'g_txt': 'are', 'g_special': None}, '1634': {'g_txt': 'down-(gone)', 'g_special': None}, '1635': {'g_txt': 'the', 'g_special': None}, '1636': {'g_txt': 'best', 'g_special': None}, '1637': {'g_txt': 'two.', 'g_special': None}, '1638': {'g_txt': 'May-(it)', 'g_special': None}, '1639': {'g_txt': 'only', 'g_special': None}, '1640': {'g_txt': 'the', 'g_special': None}, '1641': {'g_txt': 'third', 'g_special': None}, '1642': {'g_txt': 'first', 'g_special': None}, '1643': {'g_txt': 'behind-the-first!(may-it)', 'g_special': None}, '1644': {'g_txt': 'In', 'g_special': None}, '1645': {'g_txt': 'darkness', 'g_special': None}, '1646': {'g_txt': 'will', 'g_special': None}, '1647': {'g_txt': 'to-me', 'g_special': None}, '1648': {'g_txt': 'better', 'g_special': None}, '1649': {'g_txt': 'be.', 'g_special': None}, '1650': {'g_txt': '!UNKNOWN', 'g_special': None}, '1651': {'g_txt': 'Spring-dream.', 'g_special': None}, '1652': {'g_txt': 'I', 'g_special': None}, '1653': {'g_txt': 'dreamt', 'g_special': None}, '1654': {'g_txt': 'of', 'g_special': None}, '1655': {'g_txt': 'bright-colored', 'g_special': None}, '1656': {'g_txt': 'flowers,', 'g_special': None}, '1657': {'g_txt': 'So', 'g_special': None}, '1658': {'g_txt': 'as', 'g_special': None}, '1659': {'g_txt': 'they', 'g_special': None}, '1660': {'g_txt': 'well', 'g_special': None}, '1661': {'g_txt': 'bloom', 'g_special': None}, '1662': {'g_txt': 'in-the', 'g_special': None}, '1663': {'g_txt': 'May,', 'g_special': None}, '1664': {'g_txt': 'I', 'g_special': None}, '1665': {'g_txt': 'dreamt', 'g_special': None}, '1666': {'g_txt': 'of', 'g_special': None}, '1667': {'g_txt': 'green', 'g_special': None}, '1668': {'g_txt': 'meadows,', 'g_special': None}, '1669': {'g_txt': 'From', 'g_special': None}, '1670': {'g_txt': 'merry', 'g_special': None}, '1671': {'g_txt': 'bird-calls.', 'g_special': None}, '1672': {'g_txt': 'And', 'g_special': None}, '1673': {'g_txt': 'when', 'g_special': None}, '1674': {'g_txt': 'the', 'g_special': None}, '1675': {'g_txt': 'cocks', 'g_special': None}, '1676': {'g_txt': 'crowed,', 'g_special': None}, '1677': {'g_txt': 'Then', 'g_special': None}, '1678': {'g_txt': 'was', 'g_special': None}, '1679': {'g_txt': 'my', 'g_special': None}, '1680': {'g_txt': 'eye', 'g_special': None}, '1681': {'g_txt': 'awake;', 'g_special': None}, '1682': {'g_txt': 'Then', 'g_special': None}, '1683': {'g_txt': 'was', 'g_special': None}, '1684': {'g_txt': 'it', 'g_special': None}, '1685': {'g_txt': 'cold', 'g_special': None}, '1686': {'g_txt': 'and', 'g_special': None}, '1687': {'g_txt': 'dark,', 'g_special': None}, '1688': {'g_txt': '(There)', 'g_special': None}, '1689': {'g_txt': 'cawed', 'g_special': None}, '1690': {'g_txt': 'the', 'g_special': None}, '1691': {'g_txt': 'ravens', 'g_special': None}, '1692': {'g_txt': 'from the', 'g_special': None}, '1693': {'g_txt': 'roof.', 'g_special': None}, '1694': {'g_txt': 'But', 'g_special': None}, '1695': {'g_txt': 'on', 'g_special': None}, '1696': {'g_txt': 'the', 'g_special': None}, '1697': {'g_txt': 'windowpanes', 'g_special': None}, '1698': {'g_txt': 'Who', 'g_special': None}, '1699': {'g_txt': 'painted', 'g_special': None}, '1700': {'g_txt': 'the', 'g_special': None}, '1701': {'g_txt': 'leaves', 'g_special': None}, '1702': {'g_txt': 'there?', 'g_special': None}, '1703': {'g_txt': 'You', 'g_special': None}, '1704': {'g_txt': 'laugh', 'g_special': None}, '1705': {'g_txt': 'well', 'g_special': None}, '1706': {'g_txt': 'about', 'g_special': None}, '1707': {'g_txt': 'the', 'g_special': None}, '1708': {'g_txt': 'dreamer,', 'g_special': None}, '1709': {'g_txt': 'Who', 'g_special': None}, '1710': {'g_txt': 'flowers', 'g_special': None}, '1711': {'g_txt': 'in', 'g_special': None}, '1712': {'g_txt': 'winter', 'g_special': None}, '1713': {'g_txt': 'saw?', 'g_special': None}, '1714': {'g_txt': 'I', 'g_special': None}, '1715': {'g_txt': 'dreamt', 'g_special': None}, '1716': {'g_txt': 'of', 'g_special': None}, '1717': {'g_txt': 'love', 'g_special': None}, '1718': {'g_txt': 'about', 'g_special': None}, '1719': {'g_txt': 'love,', 'g_special': None}, '1720': {'g_txt': 'Of', 'g_special': None}, '1721': {'g_txt': 'a', 'g_special': None}, '1722': {'g_txt': 'beautiful', 'g_special': None}, '1723': {'g_txt': 'girl,', 'g_special': None}, '1724': {'g_txt': 'Of', 'g_special': None}, '1725': {'g_txt': 'hearts', 'g_special': None}, '1726': {'g_txt': 'and', 'g_special': None}, '1727': {'g_txt': 'of', 'g_special': None}, '1728': {'g_txt': 'kisses,', 'g_special': None}, '1729': {'g_txt': 'Of', 'g_special': None}, '1730': {'g_txt': 'bliss', 'g_special': None}, '1731': {'g_txt': 'and', 'g_special': None}, '1732': {'g_txt': 'happiness.', 'g_special': None}, '1733': {'g_txt': 'And', 'g_special': None}, '1734': {'g_txt': 'when', 'g_special': None}, '1735': {'g_txt': 'the', 'g_special': None}, '1736': {'g_txt': 'Cocks', 'g_special': None}, '1737': {'g_txt': 'crew,', 'g_special': None}, '1738': {'g_txt': 'Then', 'g_special': None}, '1739': {'g_txt': 'was', 'g_special': None}, '1740': {'g_txt': 'my', 'g_special': None}, '1741': {'g_txt': 'heart', 'g_special': None}, '1742': {'g_txt': 'awake;', 'g_special': None}, '1743': {'g_txt': 'Now', 'g_special': None}, '1744': {'g_txt': 'sit', 'g_special': None}, '1745': {'g_txt': 'I', 'g_special': None}, '1746': {'g_txt': 'here', 'g_special': None}, '1747': {'g_txt': 'alone', 'g_special': None}, '1748': {'g_txt': 'And', 'g_special': None}, '1749': {'g_txt': 'think', 'g_special': None}, '1750': {'g_txt': 'of-the', 'g_special': None}, '1751': {'g_txt': 'dream', 'g_special': None}, '1752': {'g_txt': 'afterwards-counter.', 'g_special': None}, '1753': {'g_txt': 'The', 'g_special': None}, '1754': {'g_txt': 'eyes', 'g_special': None}, '1755': {'g_txt': 'close-I', 'g_special': None}, '1756': {'g_txt': 'I', 'g_special': None}, '1757': {'g_txt': 'again,', 'g_special': None}, '1758': {'g_txt': 'Nor', 'g_special': None}, '1759': {'g_txt': 'beats', 'g_special': None}, '1760': {'g_txt': 'the', 'g_special': None}, '1761': {'g_txt': 'heart', 'g_special': None}, '1762': {'g_txt': 'so', 'g_special': None}, '1763': {'g_txt': 'warm.', 'g_special': None}, '1764': {'g_txt': 'When', 'g_special': None}, '1765': {'g_txt': 'greens', 'g_special': None}, '1766': {'g_txt': 'your', 'g_special': None}, '1767': {'g_txt': 'leaves', 'g_special': None}, '1768': {'g_txt': 'at-the', 'g_special': None}, '1769': {'g_txt': 'window?', 'g_special': None}, '1770': {'g_txt': 'When', 'g_special': None}, '1771': {'g_txt': 'hold', 'g_special': None}, '1772': {'g_txt': 'I', 'g_special': None}, '1773': {'g_txt': 'thee,', 'g_special': None}, '1774': {'g_txt': 'dear-one,', 'g_special': None}, '1775': {'g_txt': 'in-the', 'g_special': None}, '1776': {'g_txt': 'arm?', 'g_special': None}, '1777': {'g_txt': '!UNKNOWN', 'g_special': None}, '1778': {'g_txt': '!UNKNOWN', 'g_special': None}, '1779': {'g_txt': 'Like', 'g_special': None}, '1780': {'g_txt': 'a', 'g_special': None}, '1781': {'g_txt': 'dark', 'g_special': None}, '1782': {'g_txt': 'cloud', 'g_special': None}, '1783': {'g_txt': 'Through', 'g_special': None}, '1784': {'g_txt': 'bright', 'g_special': None}, '1785': {'g_txt': 'airs', 'g_special': None}, '1786': {'g_txt': 'goes,', 'g_special': None}, '1787': {'g_txt': 'When', 'g_special': None}, '1788': {'g_txt': 'in', 'g_special': None}, '1789': {'g_txt': 'the', 'g_special': None}, '1790': {'g_txt': 'fir-tree', 'g_special': None}, '1791': {'g_txt': 'top', 'g_special': None}, '1792': {'g_txt': 'A', 'g_special': None}, '1793': {'g_txt': 'languid', 'g_special': None}, '1794': {'g_txt': 'little-breeze', 'g_special': None}, '1795': {'g_txt': 'blows:', 'g_special': None}, '1796': {'g_txt': 'So', 'g_special': None}, '1797': {'g_txt': 'zieh’', 'g_special': None}, '1798': {'g_txt': 'ich', 'g_special': None}, '1799': {'g_txt': 'meine', 'g_special': None}, '1800': {'g_txt': 'Strasse', 'g_special': None}, '1801': {'g_txt': 'dahin', 'g_special': None}, '1802': {'g_txt': 'mit', 'g_special': None}, '1803': {'g_txt': 'trägem', 'g_special': None}, '1804': {'g_txt': 'Fuße,', 'g_special': None}, '1805': {'g_txt': 'Durch', 'g_special': None}, '1806': {'g_txt': 'helles,', 'g_special': None}, '1807': {'g_txt': 'frohes', 'g_special': None}, '1808': {'g_txt': 'Leben,', 'g_special': None}, '1809': {'g_txt': 'einsam', 'g_special': None}, '1810': {'g_txt': 'und', 'g_special': None}, '1811': {'g_txt': 'ohne', 'g_special': None}, '1812': {'g_txt': 'Gruss.', 'g_special': None}, '1813': {'g_txt': 'Ah,', 'g_special': None}, '1814': {'g_txt': 'that', 'g_special': None}, '1815': {'g_txt': 'the', 'g_special': None}, '1816': {'g_txt': 'air', 'g_special': None}, '1817': {'g_txt': 'so', 'g_special': None}, '1818': {'g_txt': 'quiet!', 'g_special': None}, '1819': {'g_txt': 'Ah,', 'g_special': None}, '1820': {'g_txt': 'that', 'g_special': None}, '1821': {'g_txt': 'the', 'g_special': None}, '1822': {'g_txt': 'world', 'g_special': None}, '1823': {'g_txt': 'so', 'g_special': None}, '1824': {'g_txt': 'light!', 'g_special': None}, '1825': {'g_txt': 'When', 'g_special': None}, '1826': {'g_txt': 'yet', 'g_special': None}, '1827': {'g_txt': 'the', 'g_special': None}, '1828': {'g_txt': 'storms', 'g_special': None}, '1829': {'g_txt': 'raged,', 'g_special': None}, '1830': {'g_txt': 'was', 'g_special': None}, '1831': {'g_txt': 'I', 'g_special': None}, '1832': {'g_txt': 'so', 'g_special': None}, '1833': {'g_txt': 'wretched', 'g_special': None}, '1834': {'g_txt': 'not.', 'g_special': None}, '1835': {'g_txt': '!UNKNOWN', 'g_special': None}, '1836': {'g_txt': '!UNKNOWN', 'g_special': None}, '1837': {'g_txt': 'Flies', 'g_special': None}, '1838': {'g_txt': 'the', 'g_special': None}, '1839': {'g_txt': 'snow', 'g_special': None}, '1840': {'g_txt': 'to-me', 'g_special': None}, '1841': {'g_txt': 'into-the', 'g_special': None}, '1842': {'g_txt': 'face,', 'g_special': None}, '1843': {'g_txt': 'shake-I', 'g_special': None}, '1844': {'g_txt': 'I', 'g_special': None}, '1845': {'g_txt': 'it', 'g_special': None}, '1846': {'g_txt': 'down.', 'g_special': None}, '1847': {'g_txt': 'When', 'g_special': None}, '1848': {'g_txt': 'my', 'g_special': None}, '1849': {'g_txt': 'heart', 'g_special': None}, '1850': {'g_txt': 'in-the', 'g_special': None}, '1851': {'g_txt': 'bosom', 'g_special': None}, '1852': {'g_txt': 'speaks,', 'g_special': None}, '1853': {'g_txt': 'Sing', 'g_special': None}, '1854': {'g_txt': 'I', 'g_special': None}, '1855': {'g_txt': 'merry', 'g_special': None}, '1856': {'g_txt': 'and', 'g_special': None}, '1857': {'g_txt': 'gay.', 'g_special': None}, '1858': {'g_txt': 'Hear', 'g_special': None}, '1859': {'g_txt': 'not,', 'g_special': None}, '1860': {'g_txt': 'what', 'g_special': None}, '1861': {'g_txt': 'it', 'g_special': None}, '1862': {'g_txt': 'to-me', 'g_special': None}, '1863': {'g_txt': 'says,', 'g_special': None}, '1864': {'g_txt': 'Have', 'g_special': None}, '1865': {'g_txt': 'no', 'g_special': None}, '1866': {'g_txt': 'ears.', 'g_special': None}, '1867': {'g_txt': 'Feel', 'g_special': None}, '1868': {'g_txt': 'not,', 'g_special': None}, '1869': {'g_txt': 'what', 'g_special': None}, '1870': {'g_txt': 'it', 'g_special': None}, '1871': {'g_txt': 'to-me', 'g_special': None}, '1872': {'g_txt': 'complains,', 'g_special': None}, '1873': {'g_txt': 'Complaining', 'g_special': None}, '1874': {'g_txt': 'is', 'g_special': None}, '1875': {'g_txt': 'for', 'g_special': None}, '1876': {'g_txt': 'Fools.', 'g_special': None}, '1877': {'g_txt': 'Merry', 'g_special': None}, '1878': {'g_txt': 'into', 'g_special': None}, '1879': {'g_txt': 'the', 'g_special': None}, '1880': {'g_txt': 'world', 'g_special': None}, '1881': {'g_txt': 'therein', 'g_special': None}, '1882': {'g_txt': 'Against', 'g_special': None}, '1883': {'g_txt': 'wind', 'g_special': None}, '1884': {'g_txt': 'and', 'g_special': None}, '1885': {'g_txt': 'weather!', 'g_special': None}, '1886': {'g_txt': 'Will', 'g_special': None}, '1887': {'g_txt': 'no', 'g_special': None}, '1888': {'g_txt': 'God', 'g_special': None}, '1889': {'g_txt': 'upon', 'g_special': None}, '1890': {'g_txt': 'earth', 'g_special': None}, '1891': {'g_txt': 'be,', 'g_special': None}, '1892': {'g_txt': 'Are', 'g_special': None}, '1893': {'g_txt': 'we', 'g_special': None}, '1894': {'g_txt': 'self', 'g_special': None}, '1895': {'g_txt': 'gods.', 'g_special': None}, '1896': {'g_txt': '!UNKNOWN', 'g_special': None}, '1897': {'g_txt': '!UNKNOWN', 'g_special': None}, '1898': {'g_txt': 'The-organ-grinder.', 'g_special': None}, '1899': {'g_txt': 'Over-there', 'g_special': None}, '1900': {'g_txt': 'behind-the', 'g_special': None}, '1901': {'g_txt': 'village', 'g_special': None}, '1902': {'g_txt': 'Stands', 'g_special': None}, '1903': {'g_txt': 'a', 'g_special': None}, '1904': {'g_txt': 'hurdy-gurdy-man,', 'g_special': None}, '1905': {'g_txt': 'And', 'g_special': None}, '1906': {'g_txt': 'with', 'g_special': None}, '1907': {'g_txt': 'stiff', 'g_special': None}, '1908': {'g_txt': 'fingers', 'g_special': None}, '1909': {'g_txt': 'turns', 'g_special': None}, '1910': {'g_txt': 'he', 'g_special': None}, '1911': {'g_txt': 'what', 'g_special': None}, '1912': {'g_txt': 'he', 'g_special': None}, '1913': {'g_txt': 'can.', 'g_special': None}, '1914': {'g_txt': 'Bare-foot', 'g_special': None}, '1915': {'g_txt': 'on', 'g_special': None}, '1916': {'g_txt': 'the', 'g_special': None}, '1917': {'g_txt': 'ice', 'g_special': None}, '1918': {'g_txt': 'staggering', 'g_special': None}, '1919': {'g_txt': 'he', 'g_special': None}, '1920': {'g_txt': 'hither', 'g_special': None}, '1921': {'g_txt': 'and', 'g_special': None}, '1922': {'g_txt': 'thither;', 'g_special': None}, '1923': {'g_txt': 'And', 'g_special': None}, '1924': {'g_txt': 'his', 'g_special': None}, '1925': {'g_txt': 'little', 'g_special': None}, '1926': {'g_txt': 'plate', 'g_special': None}, '1927': {'g_txt': 'remains', 'g_special': None}, '1928': {'g_txt': 'to-him', 'g_special': None}, '1929': {'g_txt': 'always', 'g_special': None}, '1930': {'g_txt': 'empty.', 'g_special': None}, '1931': {'g_txt': 'Nobody', 'g_special': None}, '1932': {'g_txt': 'may', 'g_special': None}, '1933': {'g_txt': 'him', 'g_special': None}, '1934': {'g_txt': 'hear,', 'g_special': None}, '1935': {'g_txt': 'Nobody', 'g_special': None}, '1936': {'g_txt': 'looks', 'g_special': None}, '1937': {'g_txt': 'him', 'g_special': None}, '1938': {'g_txt': 'on;', 'g_special': None}, '1939': {'g_txt': 'And', 'g_special': None}, '1940': {'g_txt': 'the', 'g_special': None}, '1941': {'g_txt': 'dogs', 'g_special': None}, '1942': {'g_txt': 'growl', 'g_special': None}, '1943': {'g_txt': 'about', 'g_special': None}, '1944': {'g_txt': 'the', 'g_special': None}, '1945': {'g_txt': 'old', 'g_special': None}, '1946': {'g_txt': 'man.', 'g_special': None}, '1947': {'g_txt': 'And', 'g_special': None}, '1948': {'g_txt': 'he', 'g_special': None}, '1949': {'g_txt': 'leaves', 'g_special': None}, '1950': {'g_txt': 'it', 'g_special': None}, '1951': {'g_txt': 'go', 'g_special': None}, '1952': {'g_txt': 'all,', 'g_special': None}, '1953': {'g_txt': 'as', 'g_special': None}, '1954': {'g_txt': 'it', 'g_special': None}, '1955': {'g_txt': 'will,', 'g_special': None}, '1956': {'g_txt': 'Turn,', 'g_special': None}, '1957': {'g_txt': 'and', 'g_special': None}, '1958': {'g_txt': 'his', 'g_special': None}, '1959': {'g_txt': 'lyre', 'g_special': None}, '1960': {'g_txt': 'Stands', 'g_special': None}, '1961': {'g_txt': 'to-him', 'g_special': None}, '1962': {'g_txt': 'never', 'g_special': None}, '1963': {'g_txt': 'still.', 'g_special': None}, '1964': {'g_txt': 'Wondering', 'g_special': None}, '1965': {'g_txt': 'Old-man,', 'g_special': None}, '1966': {'g_txt': 'Shall', 'g_special': None}, '1967': {'g_txt': 'I', 'g_special': None}, '1968': {'g_txt': 'with', 'g_special': None}, '1969': {'g_txt': 'thee', 'g_special': None}, '1970': {'g_txt': 'go?', 'g_special': None}, '1971': {'g_txt': 'Wilt', 'g_special': None}, '1972': {'g_txt': 'to', 'g_special': None}, '1973': {'g_txt': 'my', 'g_special': None}, '1974': {'g_txt': 'songs', 'g_special': None}, '1975': {'g_txt': 'thy', 'g_special': None}, '1976': {'g_txt': 'lyre', 'g_special': None}, '1977': {'g_txt': 'turn?', 'g_special': None}}\n" + ] + } + ], + "source": [ + "glosses_e = soup.find(\"glosses\")\n", + "glosses = {}\n", + "for g in glosses_e.find_all(\"gloss\"):\n", + "\tg_target = g[\"for\"]\n", + "\tg_txt = g.get_text()\n", + "\tg_special = g[\"special\"] if g.has_attr(\"special\") in g else None\n", + "\tif g_special:\n", + "\t\tprint(g_special)\n", + "\tglosses[g_target] = {\"g_txt\": g_txt, \"g_special\": g_special}\n", + "\n", + "print(glosses)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3670 3808 2314 2204 2742 2678 2955 2626 2527 2404 2106 2762 2717 2564 3141 2334 2835 2155 2188 2858 2400 5214 3005 2721 2817 2110 2217 2134 3197 2149 2869 2105 3014 2735 2428 691 " + ] + } + ], + "source": [ + "paragraph_delimiter = r\"
\\s*
\"\n", + "chars_per_paragraph = 2048\n", + "\n", + "html = soup.find(\"huh\").decode_contents()\n", + "#print(html)\n", + "\n", + "import re\n", + "\n", + "def divide_into_paragraphs(html, chars_per_paragraph, paragraph_delimiter):\n", + " splitted = re.split(\n", + " f\"({paragraph_delimiter})\",\n", + " html\n", + " )\n", + " toret = []\n", + " for s in splitted:\n", + " #Init.\n", + " if toret == []:\n", + " toret.append(s)\n", + " continue \n", + "\n", + " last = toret[-1]\n", + " \n", + " s_is_delim = re.fullmatch(paragraph_delimiter, s)\n", + " if s_is_delim or len(last) < chars_per_paragraph:\n", + " toret[-1] = last + s\n", + " continue\n", + "\n", + " toret.append(s)\n", + " continue\n", + "\n", + " return toret\n", + "\n", + "paragraphs = divide_into_paragraphs(html, chars_per_paragraph, paragraph_delimiter)\n", + "assert ''.join(paragraphs) == html\n", + "for p in paragraphs:\n", + " print(len(p), end=\" \")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "def construct_paragraph(p):\n", + "\t#Assuming from v4.\n", + "\n", + "\tspanpattern = r\"()\"\n", + "\n", + "\t#Get the s first.\n", + "\ttokens = re.split(spanpattern, p)\n", + "\ttokens = [e for e in tokens if e != \"\"]\n", + "\tassert p == ''.join(tokens)\n", + "\n", + "\ttoret = []\n", + "\tfor t in tokens:\n", + "\t\tis_span = re.fullmatch(spanpattern, t) is not None\n", + "\t\t#print(is_span, t)\n", + "\n", + "\t\tif is_span:\n", + "\t\t\t#Fetch id\n", + "\t\t\tmatch = re.search(r'id=\"(\\d+)\"', t)\n", + "\t\t\tspan_id = match.group(1)\n", + "\t\t\tgloss = glosses[span_id]\n", + "\t\t\tif gloss[\"g_special\"] == \"unknown\":\n", + "\t\t\t\tgloss = \"!UNKNOWN\"\n", + "\t\t\telif gloss[\"g_special\"] == \"to-reannotate\":\n", + "\t\t\t\tgloss = \"!TO_REANNOTATE\"\n", + "\t\t\telse:\n", + "\t\t\t\tgloss = gloss[\"g_txt\"]\n", + "\n", + "\t\t\tinner_text_match = re.search(r'(.*?)', t)\n", + "\t\t\tinner_text = inner_text_match.group(1) if inner_text_match else \"\"\n", + "\n", + "\t\t\ttoret.append({\"txt\": inner_text, \"gloss\": gloss, \"is_delimiter\": False})\n", + "\t\telse:\n", + "\t\t\t#Divide\n", + "\t\t\tfor sub_t in re.split(r\"(\\s+)\", t):\n", + "\t\t\t\tif sub_t == \"\":\n", + "\t\t\t\t\tcontinue\n", + "\t\t\t\tsub_t = sub_t.replace(\"
\", \"\\n\")\n", + "\t\t\t\ttoret.append({\"txt\": sub_t, \"gloss\": None, \"is_delimiter\": True})\n", + "\n", + "\t#tokens = re.split(r\"(\\s+)\", p)\n", + "\t#print(tokens)\n", + "\treturn toret\n", + "\n", + "new_paragraphs = []\n", + "for p in paragraphs:\n", + "\tnew_paragraphs.append(\n", + "\t\tconstruct_paragraph(p)\n", + "\t)\n", + "paragraphs = [{\"tokens\": e} for e in new_paragraphs]\n", + "\t" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "corpus = {\n", + "\t\"version\": 5,\n", + "\t\"meatadata\": metadata,\n", + "\t\n", + "\t\"paragraphs\": paragraphs,\n", + "}\n", + "\n", + "with open(xml_filename.replace(\".xml\", \"..json\"), \"wt\", encoding=\"utf-8\") as fout:\n", + "\tjson.dump(corpus, fout)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}