diff --git a/tests/length_test.py b/tests/length_test.py new file mode 100644 index 0000000..4b1a44b --- /dev/null +++ b/tests/length_test.py @@ -0,0 +1,64 @@ +"""Tests truncation of long sentences. + +This test simply attempts to train on, and then predict the analysis for, +a vey long sentence, one that exceeds the BERT sequence length limitations. + +This was reported to fail at #82. +""" + +import os +import tempfile +import unittest + +from parameterized import parameterized + +from udtube import cli + +# Directory the unit test is located in, relative to the working directory. +DIR = os.path.relpath(os.path.dirname(__file__), os.getcwd()) +CONFIG_PATH = os.path.join(DIR, "testdata/length_config.yaml") +TESTDATA_DIR = os.path.join(DIR, "testdata") + + +class LengthTest(unittest.TestCase): + def assertNonEmptyFileExists(self, path: str): + self.assertTrue(os.path.exists(path), msg=f"file {path} not found") + self.assertGreater( + os.stat(path).st_size, 0, msg="file {path} is empty" + ) + + def setUp(self): + self.tempdir = tempfile.TemporaryDirectory(prefix="udtube_test-") + self.assertNonEmptyFileExists(CONFIG_PATH) + + def tearDown(self): + self.tempdir.cleanup() + + def test_truncation(self): + # Fits the model for one epoch. + model_dir = os.path.join(self.tempdir.name, "models") + cli.udtube_python_interface( + [ + "fit", + f"--config={CONFIG_PATH}", + f"--data.model_dir={model_dir}", + ], + ) + # Confirms a checkpoint was created. + checkpoint_path = ( + f"{model_dir}/lightning_logs/version_0/checkpoints/last.ckpt" + ) + self.assertNonEmptyFileExists(checkpoint_path) + # Attempts prediction. + cli.udtube_python_interface( + [ + "predict", + f"--ckpt_path={checkpoint_path}", + f"--config={CONFIG_PATH}", + f"--data.model_dir={model_dir}", + ] + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/testdata/length_config.yaml b/tests/testdata/length_config.yaml new file mode 100644 index 0000000..6005d72 --- /dev/null +++ b/tests/testdata/length_config.yaml @@ -0,0 +1,17 @@ +checkpoint: + monitor: val_loss + save_last: true +data: + train: tests/testdata/toolong.conllu + val: tests/testdata/toolong.conllu + predict: tests/testdata/toolong.conllu + batch_size: 1 +model: + # We reuse this because other tests need it; it supports up to 512 tokens + # and the sentence in `toolong.conllu` is 585 tokens. + encoder: google-bert/bert-base-cased +seed_everything: 42 +trainer: + accelerator: cpu # Because that's what CircleCI has. + enable_progress_bar: false + max_epochs: 1 diff --git a/tests/testdata/toolong.conllu b/tests/testdata/toolong.conllu new file mode 100644 index 0000000..7e237e9 --- /dev/null +++ b/tests/testdata/toolong.conllu @@ -0,0 +1,264 @@ +# sent_id = 3695636 +# text = EFFECT WITHOUT THAT PROVISION OR APPLICATION; AND TO THAT END, THE OF THIS TITLE SHALL BE LIBERALLY CONSTRUED TO GIVE EFFECT TO THE amended by section 2-a of part C of chapter 58 of the laws of 2008, is (referred to in this article as "Medicaid"), the elderly pharmaceutical the elder law (referred to in this article as "EPIC"), and the [family of the social services law to the extent that section provides that the TION AND FINANCE A SPECIAL REVENUE FUND TO BE KNOWN AS THE "NEW YORK SECTION FIFTY-ONE HUNDRED OF THE PUBLIC HEALTH LAW SHALL APPLY TO THIS (B) FEDERAL PAYMENTS RECEIVED AS A RESULT OF ANY WAIVER OF REQUIRE- MENTS GRANTED OR OTHER ARRANGEMENTS AGREED TO BY THE UNITED STATES SECRETARY OF HEALTH AND HUMAN SERVICES OR OTHER APPROPRIATE FEDERAL (C) THE AMOUNTS PAID BY THE DEPARTMENT OF HEALTH THAT ARE EQUIVALENT TO THOSE AMOUNTS THAT ARE PAID ON BEHALF OF RESIDENTS OF THIS STATE (D) FEDERAL AND STATE FUNDS FOR PURPOSES OF THE PROVISION OF SERVICES OTHERWISE BE COVERED UNDER ARTICLE FIFTY-ONE OF THE PUBLIC HEALTH LAW; (E) STATE MONIES THAT WOULD OTHERWISE BE APPROPRIATED TO ANY GOVERN- PROVIDES HEALTH SERVICES, FOR SERVICES AND BENEFITS COVERED UNDER NEW AN AMOUNT EQUAL TO THE MONEY APPROPRIATED FOR SUCH PURPOSES IN THE FISCAL YEAR BEGINNING IMMEDIATELY PRECEDING THE EFFECTIVE DATE OF THE 3. +1 EFFECT effect VERB VB Mood=Imp|VerbForm=Fin _ _ _ SpacesAfter=\s\s +2 WITHOUT without ADP RP _ _ _ _ SpacesAfter=\s\s +3 THAT that DET DT Number=Sing|PronType=Dem _ _ _ SpacesAfter=\s\s +4 PROVISION provision NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +5 OR or CCONJ CC _ _ _ _ SpacesAfter=\s\s +6 APPLICATION application NOUN NN Number=Sing _ _ _ SpaceAfter=No +7 ; ; PUNCT , _ _ _ _ SpacesAfter=\s\s +8 AND and CCONJ CC _ _ _ _ _ +9 TO to ADP IN _ _ _ _ _ +10 THAT that DET DT Number=Sing|PronType=Dem _ _ _ _ +11 END end NOUN NN Number=Sing _ _ _ SpaceAfter=No +12 , , PUNCT , _ _ _ _ _ +13 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\n +14 OF of ADP IN _ _ _ _ SpacesAfter=\s\s +15 THIS this DET DT Number=Sing|PronType=Dem _ _ _ SpacesAfter=\s\s +16 TITLE title NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +17 SHALL shall AUX MD VerbForm=Fin _ _ _ SpacesAfter=\s\s +18 BE be AUX VB VerbForm=Inf _ _ _ SpacesAfter=\s\s +19 LIBERALLY Liberally ADV RB _ _ _ _ SpacesAfter=\s\s +20 CONSTRUED Construe VERB VBD Mood=Ind|Tense=Past|Typo=Yes|VerbForm=Fin _ _ _ SpacesAfter=\s\s +21 TO to PART TO _ _ _ _ SpacesAfter=\s\s +22 GIVE give VERB VB VerbForm=Inf _ _ _ _ +23 EFFECT effect NOUN NN Number=Sing _ _ _ _ +24 TO to ADP IN _ _ _ _ _ +25 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\n +26 amended amend VERB VBN Tense=Past|VerbForm=Part _ _ _ SpacesAfter=\s\s +27 by by ADP IN _ _ _ _ SpacesAfter=\s\s +28 section section NOUN NN Number=Sing _ _ _ _ +29 2 2 NUM CD NumType=Card _ _ _ SpaceAfter=No +30 - - PUNCT : _ _ _ _ SpaceAfter=No +31 a a NOUN NN Number=Sing _ _ _ _ +32 of of ADP IN _ _ _ _ _ +33 part part NOUN NN Number=Sing _ _ _ _ +34 C care NOUN NN Number=Sing _ _ _ _ +35 of of ADP IN _ _ _ _ _ +36 chapter chapter NOUN NN Number=Sing _ _ _ _ +37 58 58 NUM CD NumType=Card _ _ _ _ +38 of of ADP IN _ _ _ _ _ +39 the the DET DT Definite=Def|PronType=Art _ _ _ _ +40 laws law NOUN NNS Number=Plur _ _ _ _ +41 of of ADP IN _ _ _ _ _ +42 2008 2008 NUM CD NumType=Card _ _ _ SpaceAfter=No +43 , , PUNCT , _ _ _ _ _ +44 is be AUX VBZ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin _ _ _ SpacesAfter=\n +45 ( ( PUNCT -LRB- _ _ _ _ SpaceAfter=No +46 referred refer VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +47 to to ADP IN _ _ _ _ _ +48 in in ADP IN _ _ _ _ _ +49 this this DET DT Number=Sing|PronType=Dem _ _ _ _ +50 article article NOUN NN Number=Sing _ _ _ _ +51 as as SCONJ IN _ _ _ _ _ +52 " " PUNCT `` _ _ _ _ SpaceAfter=No +53 Medicaid Medicaid PROPN NNP Number=Sing _ _ _ SpaceAfter=No +54 " " PUNCT '' _ _ _ _ SpaceAfter=No +55 ) ) PUNCT -RRB- _ _ _ _ SpaceAfter=No +56 , , PUNCT , _ _ _ _ _ +57 the the DET DT Definite=Def|PronType=Art _ _ _ _ +58 elderly elderly ADJ JJ Degree=Pos _ _ _ SpacesAfter=\s\s +59 pharmaceutical pharmaceutical ADJ JJ Degree=Pos _ _ _ SpacesAfter=\n +60 the the DET DT Definite=Def|PronType=Art _ _ _ _ +61 elder elder ADJ JJ Degree=Pos _ _ _ _ +62 law law NOUN NN Number=Sing _ _ _ _ +63 ( ( PUNCT -LRB- _ _ _ _ SpaceAfter=No +64 referred refer VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +65 to to ADP IN _ _ _ _ _ +66 in in ADP IN _ _ _ _ _ +67 this this DET DT Number=Sing|PronType=Dem _ _ _ _ +68 article article NOUN NN Number=Sing _ _ _ _ +69 as as ADP IN _ _ _ _ _ +70 " " PUNCT `` _ _ _ _ SpaceAfter=No +71 EPIC EPIC PROPN NNP Number=Sing _ _ _ SpaceAfter=No +72 " " PUNCT '' _ _ _ _ SpaceAfter=No +73 ) ) PUNCT -RRB- _ _ _ _ SpaceAfter=No +74 , , PUNCT , _ _ _ _ _ +75 and and CCONJ CC _ _ _ _ SpacesAfter=\s\s +76 the the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\s\s +77 [ [ PUNCT -LRB- _ _ _ _ SpaceAfter=No +78 family family NOUN NN Number=Sing _ _ _ SpacesAfter=\n +79 of of ADP IN _ _ _ _ _ +80 the the DET DT Definite=Def|PronType=Art _ _ _ _ +81 social social ADJ JJ Degree=Pos _ _ _ _ +82 services service NOUN NNS Number=Plur _ _ _ _ +83 law law NOUN NN Number=Sing _ _ _ _ +84 to to ADP IN _ _ _ _ _ +85 the the DET DT Definite=Def|PronType=Art _ _ _ _ +86 extent extent NOUN NN Number=Sing _ _ _ _ +87 that that PRON WDT PronType=Rel _ _ _ _ +88 section section NOUN NN Number=Sing _ _ _ _ +89 provides provide VERB VBZ Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin _ _ _ _ +90 that that SCONJ IN _ _ _ _ SpacesAfter=\s\s +91 the the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\n +92 TION Tion NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +93 AND and CCONJ CC _ _ _ _ SpacesAfter=\s\s +94 FINANCE finance VERB VBP Mood=Ind|Tense=Pres|VerbForm=Fin _ _ _ SpacesAfter=\s\s +95 A a DET DT Definite=Ind|PronType=Art _ _ _ SpacesAfter=\s\s +96 SPECIAL special ADJ JJ Degree=Pos _ _ _ _ +97 REVENUE revenue PROPN NNP Number=Sing _ _ _ _ +98 FUND fund PROPN NNP Number=Sing _ _ _ _ +99 TO to PART TO _ _ _ _ _ +100 BE be AUX VB VerbForm=Inf _ _ _ _ +101 KNOWN know VERB VBN Tense=Past|VerbForm=Part|Voice=Pass _ _ _ _ +102 AS as ADP IN _ _ _ _ _ +103 THE the DET DT Definite=Def|PronType=Art _ _ _ _ +104 " " PUNCT `` _ _ _ _ SpaceAfter=No +105 NEW new PROPN NNP Number=Sing _ _ _ _ +106 YORK York PROPN NNP Number=Sing _ _ _ SpacesAfter=\n +107 SECTION section PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +108 FIFTY fifty NUM CD NumType=Card _ _ _ SpaceAfter=No +109 - - SYM SYM _ _ _ _ SpaceAfter=No +110 ONE one NUM CD NumType=Card _ _ _ SpacesAfter=\s\s +111 HUNDRED hundred NUM CD NumType=Card _ _ _ _ +112 OF of ADP IN _ _ _ _ _ +113 THE the DET DT Definite=Def|PronType=Art _ _ _ _ +114 PUBLIC Public PROPN NNP Number=Sing _ _ _ _ +115 HEALTH Health PROPN NNP Number=Sing _ _ _ _ +116 LAW law PROPN NNP Number=Sing _ _ _ _ +117 SHALL shall PROPN NNP Number=Sing _ _ _ _ +118 APPLY apply ADV RB _ _ _ _ _ +119 TO to ADP IN _ _ _ _ _ +120 THIS this PRON DT Number=Sing|PronType=Dem _ _ _ SpacesAfter=\n +121 ( ( PUNCT -LRB- _ _ _ _ SpaceAfter=No +122 B b X LS _ _ _ _ SpaceAfter=No +123 ) ) PUNCT -RRB- _ _ _ _ SpacesAfter=\s\s +124 FEDERAL federal ADJ JJ Degree=Pos _ _ _ SpacesAfter=\s\s +125 PAYMENTS payment NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +126 RECEIVED receive VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +127 AS as ADP IN _ _ _ _ _ +128 A a DET DT Definite=Ind|PronType=Art _ _ _ _ +129 RESULT result NOUN NN Number=Sing _ _ _ _ +130 OF of ADP IN _ _ _ _ _ +131 ANY any DET DT _ _ _ _ _ +132 WAIVER waiver NOUN NN Number=Sing _ _ _ _ +133 OF of ADP IN _ _ _ _ _ +134 REQUIRE require PROPN NNP Number=Sing _ _ _ SpaceAfter=No +135 - - PUNCT HYPH _ _ _ _ SpacesAfter=\n +136 MENTS MENTS PROPN NNP Number=Sing _ _ _ _ +137 GRANTED granted PROPN NNP Number=Sing _ _ _ _ +138 OR or CCONJ CC _ _ _ _ _ +139 OTHER other PROPN NNP Number=Sing _ _ _ _ +140 ARRANGEMENTS arrangement PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +141 AGREED agree PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +142 TO to PART TO _ _ _ _ SpacesAfter=\s\s +143 BY by ADP IN _ _ _ _ SpacesAfter=\s\s +144 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\s\s +145 UNITED UNITED PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +146 STATES States PROPN NNP Number=Sing _ _ _ SpacesAfter=\n +147 SECRETARY Secretary PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +148 OF of ADP IN _ _ _ _ SpacesAfter=\s\s +149 HEALTH Health PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +150 AND and CCONJ CC _ _ _ _ SpacesAfter=\s\s +151 HUMAN human PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +152 SERVICES service PROPN NNPS Number=Plur _ _ _ _ +153 OR or CCONJ CC _ _ _ _ _ +154 OTHER other PROPN NNP Number=Sing _ _ _ _ +155 APPROPRIATE appropriate PROPN NNP Number=Sing _ _ _ _ +156 FEDERAL federal PROPN NNP Number=Sing _ _ _ SpacesAfter=\n +157 ( ( PUNCT -LRB- _ _ _ _ SpaceAfter=No +158 C c PROPN NNP Number=Sing _ _ _ SpaceAfter=No +159 ) ) PUNCT -RRB- _ _ _ _ SpacesAfter=\s\s +160 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\s\s +161 AMOUNTS amount PROPN NNPS Number=Plur _ _ _ _ +162 PAID pay VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +163 BY by ADP IN _ _ _ _ _ +164 THE the DET DT Definite=Def|PronType=Art _ _ _ _ +165 DEPARTMENT Department NOUN NN Number=Sing _ _ _ _ +166 OF of ADP IN _ _ _ _ _ +167 HEALTH Health PROPN NNP Number=Sing _ _ _ _ +168 THAT that PRON WDT PronType=Rel _ _ _ _ +169 ARE be AUX VBP Mood=Ind|Tense=Pres|VerbForm=Fin _ _ _ _ +170 EQUIVALENT equivalent ADJ JJ Degree=Pos _ _ _ SpacesAfter=\n +171 TO to PART TO _ _ _ _ _ +172 THOSE those VERB VB VerbForm=Inf _ _ _ _ +173 AMOUNTS amount NOUN NNS Number=Plur _ _ _ _ +174 THAT that PRON WDT PronType=Rel _ _ _ _ +175 ARE be AUX VBP Mood=Ind|Tense=Pres|VerbForm=Fin _ _ _ _ +176 PAID pay VERB VBN Tense=Past|VerbForm=Part|Voice=Pass _ _ _ _ +177 ON on ADP IN _ _ _ _ _ +178 BEHALF behalf NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +179 OF of ADP IN _ _ _ _ SpacesAfter=\s\s +180 RESIDENTS resident NOUN NNS Number=Plur _ _ _ SpacesAfter=\s\s +181 OF of ADP IN _ _ _ _ SpacesAfter=\s\s +182 THIS this DET DT Number=Sing|PronType=Dem _ _ _ SpacesAfter=\s\s +183 STATE State NOUN NN Number=Sing _ _ _ SpacesAfter=\n +184 ( ( PUNCT -LRB- _ _ _ _ SpaceAfter=No +185 D d PROPN NNP Number=Sing _ _ _ SpaceAfter=No +186 ) ) PUNCT -RRB- _ _ _ _ SpacesAfter=\s\s +187 FEDERAL Federal ADJ JJ Degree=Pos _ _ _ _ +188 AND and CCONJ CC _ _ _ _ _ +189 STATE state ADJ JJ Degree=Pos _ _ _ _ +190 FUNDS fund NOUN NNS Number=Plur _ _ _ _ +191 FOR for ADP IN _ _ _ _ _ +192 PURPOSES purpose NOUN NNS Number=Plur _ _ _ _ +193 OF of ADP IN _ _ _ _ _ +194 THE the DET DT Definite=Def|PronType=Art _ _ _ _ +195 PROVISION provision NOUN NN Number=Sing _ _ _ _ +196 OF of ADP IN _ _ _ _ _ +197 SERVICES SERVICES PROPN NNP Number=Sing _ _ _ SpacesAfter=\n +198 OTHERWISE otherwise PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +199 BE be AUX VB VerbForm=Inf _ _ _ SpacesAfter=\s\s +200 COVERED cover VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +201 UNDER under PROPN NNP Number=Sing _ _ _ _ +202 ARTICLE article PROPN NNP Number=Sing _ _ _ _ +203 FIFTY fifty PROPN NNP Number=Sing _ _ _ SpaceAfter=No +204 - - PUNCT HYPH _ _ _ _ SpaceAfter=No +205 ONE one NUM CD NumType=Card _ _ _ _ +206 OF of ADP IN _ _ _ _ _ +207 THE the DET DT Definite=Def|PronType=Art _ _ _ _ +208 PUBLIC Public PROPN NNP Number=Sing _ _ _ _ +209 HEALTH Health PROPN NNP Number=Sing _ _ _ _ +210 LAW law PROPN NNP Number=Sing _ _ _ SpaceAfter=No +211 ; ; PUNCT , _ _ _ _ SpacesAfter=\n +212 ( ( PUNCT -LRB- _ _ _ _ SpaceAfter=No +213 E e PROPN NNP Number=Sing _ _ _ SpaceAfter=No +214 ) ) PUNCT -RRB- _ _ _ _ _ +215 STATE state NOUN NN Number=Sing _ _ _ _ +216 MONIES money NOUN NNS Number=Plur _ _ _ _ +217 THAT that PRON WDT PronType=Rel _ _ _ _ +218 WOULD would AUX MD VerbForm=Fin _ _ _ _ +219 OTHERWISE otherwise ADV RB _ _ _ _ _ +220 BE be AUX VB VerbForm=Inf _ _ _ _ +221 APPROPRIATED appropriate VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +222 TO to ADP IN _ _ _ _ SpacesAfter=\s\s +223 ANY any PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +224 GOVERN Govern PROPN NNP Number=Sing _ _ _ SpaceAfter=No +225 - - PUNCT HYPH _ _ _ _ SpacesAfter=\n +226 PROVIDES provide PROPN NNP Number=Sing _ _ _ _ +227 HEALTH Health PROPN NNP Number=Sing _ _ _ _ +228 SERVICES SERVICES PROPN NNPS Number=Plur _ _ _ SpaceAfter=No +229 , , PUNCT , _ _ _ _ _ +230 FOR for ADP IN _ _ _ _ _ +231 SERVICES service PROPN NNPS Number=Plur _ _ _ _ +232 AND and CCONJ CC _ _ _ _ _ +233 BENEFITS benefit PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +234 COVERED cover PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +235 UNDER under PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +236 NEW NEW PROPN NNP Number=Sing _ _ _ SpacesAfter=\n +237 AN and PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +238 AMOU AMOU PROPN NNP Number=Sing _ _ _ SpaceAfter=No +239 NT not PART RB _ _ _ _ SpacesAfter=\s\s +240 EQUAL equal PROPN NNP Number=Sing _ _ _ SpacesAfter=\s\s +241 TO to ADP IN _ _ _ _ SpacesAfter=\s\s +242 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\s\s +243 MONEY MONEy NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +244 APPROPRIATED appropriate VERB VBN Tense=Past|VerbForm=Part _ _ _ _ +245 FOR for ADP IN _ _ _ _ _ +246 SUCH such ADJ JJ Degree=Pos _ _ _ _ +247 PURPOSES purpose NOUN NNS Number=Plur _ _ _ _ +248 IN in ADP IN _ _ _ _ _ +249 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\n +250 FISCAL fiscal NOUN NN Number=Sing _ _ _ _ +251 YEAR year SCONJ IN _ _ _ _ _ +252 BEGINNING beginning VERB VBG VerbForm=Ger _ _ _ _ +253 IMMEDIATELY immediately ADV RB _ _ _ _ _ +254 PRECEDING Preced VERB VBG VerbForm=Ger _ _ _ _ +255 THE the DET DT Definite=Def|PronType=Art _ _ _ _ +256 EFFECTIVE effective ADJ JJ Degree=Pos _ _ _ SpacesAfter=\s\s +257 DATE date NOUN NN Number=Sing _ _ _ SpacesAfter=\s\s +258 OF of ADP IN _ _ _ _ SpacesAfter=\s\s +259 THE the DET DT Definite=Def|PronType=Art _ _ _ SpacesAfter=\n +260 3 3 NUM CD NumType=Card _ _ _ SpaceAfter=No +261 . . PUNCT . _ _ _ _ SpacesAfter=\s\s +