diff --git a/.gitattributes b/.gitattributes
index 90f45893740269b7f1776806dfc5b8c2d1f81789..00c8408ac97f37266719bfe2288ae3b2a8e5841a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -143,3 +143,24 @@ CoreNLP/edu/stanford/nlp/models/dcoref/ne.signatures.txt filter=lfs diff=lfs mer
CoreNLP/edu/stanford/nlp/models/kbp/english/gazetteers/regexner_caseless.tab filter=lfs diff=lfs merge=lfs -text
CoreNLP/edu/stanford/nlp/models/pos-tagger/english-left3words-distsim.tagger filter=lfs diff=lfs merge=lfs -text
CoreNLP/edu/stanford/nlp/models/supervised_relation_extractor/roth_relation_model_pipelineNER.ser filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/joda-time-2.10.5-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/joda-time.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/jollyday-0.4.9-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/jollyday.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/protobuf-java-3.19.6.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-javadoc.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-models.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/StanfordDependenciesManual.pdf filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/xom-1.3.9-sources.jar filter=lfs diff=lfs merge=lfs -text
+CoreNLP/stanford-corenlp-4.5.7/xom.jar filter=lfs diff=lfs merge=lfs -text
diff --git a/CoreNLP/stanford-corenlp-4.5.7/CoreNLP-to-HTML.xsl b/CoreNLP/stanford-corenlp-4.5.7/CoreNLP-to-HTML.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..b175d895db0bb3878b7717e5a3b8537be01e319f
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/CoreNLP-to-HTML.xsl
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+ Stanford CoreNLP XML Output
+
+ Document
+
+
+ | Document Info |
+
+
+ DocId:
+
+
+ DocDate:
+
+
+ DocSourceType:
+
+
+ DocType:
+
+
+ Author:
+
+
+ Location:
+
+ |
+
+
+ | Text |
+ |
+
+
+
+ |
+
+
+ | Sentences |
+
+ |
+
+
+
+ |
+
+
+ | Coreference resolution graph |
+ |
+
+ |
+
+
+
+
+
+
+
+
+ Sentence #
+
+ Sentiment:
+
+
+
+
+ Tokens
+
+
+
+
+ Parse tree
+
+
+
+
+ Uncollapsed dependencies
+
+
+
+
+ Enhanced dependencies
+
+
+
+
+
+
+
+ | Id |
+ Word |
+ Lemma |
+ Char begin |
+ Char end |
+ POS |
+ NER |
+ Normalized NER |
+ Speaker |
+ Sentiment |
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+ (
+ ^-
+ ,
+ ^-
+ )
+ (extra)
+
+
+
+
+
+
+ -
+
+
+ | Sentence |
+ Head |
+ Text |
+ Context |
+
+
+
+ |
+ (gov) |
+ |
+
+ ...
+
+
+
+
+ ...
+
+ |
+
+
+
+
+
+
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/LIBRARY-LICENSES b/CoreNLP/stanford-corenlp-4.5.7/LIBRARY-LICENSES
new file mode 100644
index 0000000000000000000000000000000000000000..f34f46d9b4060224d73d339ef030f41a5beb1183
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/LIBRARY-LICENSES
@@ -0,0 +1,63 @@
+These are the 3rd party libraries which we currently distribute with Stanford CoreNLP.
+All of them have licenses that are compatible with GPL v3.
+All but the JSON library allow commercial use.
+A compatible JSON library is a component of Java EE (JSR 374).
+
+-----------------------------------------------------------------
+
+ejml-0.38.jar
+
+URL: http://ejml.org/
+
+License: Apache v2.0
+
+-----------------------------------------------------------------
+
+javax.json.jar
+
+URL: http://central.maven.org/maven2/javax/json/javax.json-api/1.0/javax.json-api-1.0.pom
+ https://json-processing-spec.java.net/
+
+License: GNU GPLv2 with Classpath Exception (or CDDL)
+
+-----------------------------------------------------------------
+
+joda-time-2.9.4.jar
+
+URL: http://www.joda.org/joda-time/
+
+License: Apache License 2.0
+ http://www.joda.org/joda-time/license.html
+
+-----------------------------------------
+
+jollyday-0.4.9.jar
+
+URL: http://jollyday.sourceforge.net/
+
+License: Apache License 2.0
+ http://jollyday.sourceforge.net/license.html
+
+-----------------------------------------
+
+protobuf.jar
+
+URL: https://github.com/google/protobuf/
+ https://developers.google.com/protocol-buffers/
+
+License: BSD 3-clause license
+ https://github.com/google/protobuf/blob/master/LICENSE
+ http://opensource.org/licenses/BSD-3-Clause
+
+-----------------------------------------
+
+xom-1.2.10.jar
+
+Url: http://www.xom.nu/
+ OR http://www.cafeconleche.org/XOM/
+
+License: LGPL v2.1 Gnu lesser general public license
+ http://www.xom.nu/license.xhtml
+
+-----------------------------------------
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/LICENSE.txt b/CoreNLP/stanford-corenlp-4.5.7/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..94a9ed024d3859793618152ea559a168bbcbb5e2
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/LICENSE.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/CoreNLP/stanford-corenlp-4.5.7/Makefile b/CoreNLP/stanford-corenlp-4.5.7/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..2c23e8eb85428ae21b33726cfd1f7725b2d7f41b
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/Makefile
@@ -0,0 +1,25 @@
+# This is a rudimentary Makefile for rebuilding Stanford CoreNLP.
+# We actually use ant (q.v.) or a Java IDE.
+
+JAVAC = javac
+JAVAFLAGS = -O -d classes -encoding utf-8
+
+# Builds the classes' jar file
+corenlp: source
+ mkdir -p classes
+ $(JAVAC) $(JAVAFLAGS) src/edu/stanford/nlp/*/*.java \
+ src/edu/stanford/nlp/*/*/*.java \
+ src/edu/stanford/nlp/*/*/*/*.java \
+ src/edu/stanford/nlp/*/*/*/*/*.java \
+ src/edu/stanford/nlp/*/*/*/*/*/*.java
+ cd classes ; jar -cfm ../stanford-corenlp-`date +%Y-%m-%d`.jar ../src/META-INF/MANIFEST.MF edu ; cd ..
+
+# Before making, unjar the source jar file in the 'src' directory
+source:
+ if [ ! -e src ] ; then \
+ mkdir src ; cd src ; jar -xf ../stanford-corenlp-*-sources.jar; \
+ fi;
+
+clean:
+ rm -rf classes
+ rm -rf src
diff --git a/CoreNLP/stanford-corenlp-4.5.7/README.txt b/CoreNLP/stanford-corenlp-4.5.7/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7b198f661cba659a75df7ef2e990e61150a4202b
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/README.txt
@@ -0,0 +1,180 @@
+Stanford CoreNLP - Stanford's Suite of NLP Tools
+------------------------------------------------
+
+Copyright © 2009-2020 The Board of Trustees of
+The Leland Stanford Junior University. All Rights Reserved.
+
+DOCUMENTATION
+
+Please look at the URL below for documentation for Stanford CoreNLP:
+
+ https://nlp.stanford.edu/software/corenlp.html
+
+LICENSE
+
+//
+// StanfordCoreNLP -- a suite of NLP tools
+// Copyright © 2009-2020 The Board of Trustees of
+// The Leland Stanford Junior University. All Rights Reserved.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see http://www.gnu.org/licenses/ .
+//
+// For more information, bug reports, fixes, contact:
+// Christopher Manning
+// Dept of Computer Science, Gates 2A
+// Stanford CA 94305-9020
+// USA
+//
+
+---------------------------------
+CHANGES
+---------------------------------
+
+2024-04-18 4.5.7 Add the f1 scores to the parser output,
+ improve the dependency converter
+
+2024-04-18 4.5.7 Add the f1 scores to the parser output
+
+2024-01-31 4.5.6 Minor lemmatizer and tokenizer fixes
+
+2023-09-06 4.5.5 Fix up some SD and UD conversion errors. Add
+ SceneGraph to the server. Fix Tregex optional
+ bug. "fourty" and forty (40) days in SUTime.
+
+2023-03-15 4.5.4 Minor updates to Ssurgeon, include the
+ Morphology CLI
+
+2023-03-10 4.5.3 Fix the collinizer. Add an Ssurgeon interface
+
+2023-01-19 4.5.2 Update package dependencies to avoid security
+ problems. Add protobuf CLI tools for use in
+ Python or elsewhere
+
+2022-08-29 4.5.1 Bugfixes to tokenizer and semgrex
+
+2022-07-21 4.5.0 Tokenizer and lemmatizer upgrades, along with
+ a new tsurgeon operation and some bugfixes
+
+2022-01-20 4.4.0 Fix issue with Italian depparse, tsurgeon CLI,
+ fix security issues, bug fixes
+
+2021-10-14 4.3.1 Minor bugfixes to German umlaut tokenization,
+ CDC tokenizer offset, Hungarian model package
+
+2021-09-26 4.3.0 Add trained tokenizer from corenlp-it, add
+ Italian and Hungarian pipelines using data
+ from FBK, UD, Szeged, NYTK, and SPMRL. Better
+ emoji support in the PTB tokenizer
+
+2021-05-14 4.2.2 Fix issue with demo.
+
+2021-05-05 4.2.1 Fix Turkish locale bug, QuoteAnnotator crash
+ fixes, smaller srparser models, improvements
+ to enhanced UD converter, Updated dependencies
+ (istack, protobuf), batch processing of
+ semgrex & enhancer requests when using stanza
+
+2020-11-16 4.2.0 Bug fixes, Retrained English parser models
+ with improved trees, Updated dependencies
+ (ejml, junit, jflex), Speed up loading
+ Wikidict annotator, New features for server
+ handling of tokensregex and tregex requests,
+ Release built directly from GitHub repo
+
+2020-07-31 4.1.0 Improved server interface, improved memory
+ usage of sutime, spanish tokenization upgrades
+
+2020-04-19 4.0.0 Changed to UDv2 tokenization ("new" LDC Treebank,
+ for English); handles multi-word-tokens;
+ improved UDv2-based taggers and parsers for
+ English, French, German, Spanish; new French NER;
+ new Chinese segmenter; library updates, bug fixes
+
+2018-10-05 3.9.2 improved NER pipeline and entity mention
+ confidences; support for Java 11; new POS
+ models for English; 4 methods for setting
+ document dates; tokenizer improvements;
+ CoreNLP runs as filter from stdin to stdout;
+ bug fixes
+
+2018-02-27 3.9.1 Bug fixes, minor enhancements
+
+2018-01-31 3.9.0 Spanish KBP and new dependency parse model,
+ wrapper API for data, quote attribution
+ improvements, easier use of coref info, bug
+ fixes
+
+2017-06-09 3.8.0 Web service annotator, discussion forum
+ handling, new French and Spanish models
+
+2016-10-31 3.7.0 KBP Annotator, improved coreference, Arabic
+ pipeline
+
+2015-12-09 3.6.0 Improved coreference, OpenIE integration,
+ Stanford CoreNLP server
+
+2015-04-20 3.5.2 Switch to Universal dependencies, add Chinese
+ coreference system to CoreNLP
+
+2015-01-29 3.5.1 NER, dependency parser, SPIED improvements;
+ general bugfixes
+
+2014-10-26 3.5.0 Upgrade to Java 1.8; add annotators for
+ dependency parsing and relation extraction
+
+2014-08-27 3.4.1 Add Spanish models
+
+2014-06-16 3.4 Add shift reduce parser
+
+2014-01-04 3.3.1 Bugfix release
+
+2013-11-12 3.3.0 Add sentiment model, minor sutime improvements
+
+2013-06-19 3.2.0 New RNN parser model, more efficient tagger
+
+2013-04-04 1.3.5 Speed improvements, coref improvements,
+ Chinese version, -nthreads option
+
+2012-11-12 1.3.4 Improved ner model and dependency code,
+ now possible to change annotator pool for
+ later StanfordCoreNLP objects
+
+2012-07-09 1.3.3 Minor bug fixes
+
+2012-05-22 1.3.2 Improvements to sutime
+
+2012-03-09 1.3.1 Now supports caseless models (available as DLC)
+
+2011-12-16 1.3.0 Threadsafe!
+ Bugs in time annotation fixed
+
+2011-09-14 1.2.0 Time expression recognizer added to ner annotator
+ Output bugfixes
+ Parser can now substitute for tagger
+
+2011-06-19 1.1.0 Improved coref release
+
+2011-05-15 1.0.4 More efficient dcoref data structure
+ Supports already-tokenized input text
+
+2011-04-17 1.0.3 Compatible with other releases
+ Support loading arbitrary annotators
+ Tagger bug fixes, such as "EOS" token
+
+2010-11-11 1.0.2 Remove wn.jar
+
+2010-11-11 1.0.1 Add xml removal
+
+2010-10-07 1.0 Initial release
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/RESOURCE-LICENSES b/CoreNLP/stanford-corenlp-4.5.7/RESOURCE-LICENSES
new file mode 100644
index 0000000000000000000000000000000000000000..87bb3532ddb5cecf4ff2fbe1f04072900f52217d
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/RESOURCE-LICENSES
@@ -0,0 +1,10 @@
+These resources were used in the creation of Stanford CoreNLP:
+
+-----------------------------------------------------------------
+Spanish Billion Word Corpus Embeddings
+
+Notes: These embeddings were used in the training of the Spanish dependency parser.
+
+URL: http://crscardellino.me/SBWCE/
+
+License: Creative Commons Attribution-ShareAlike 4.0 International License
diff --git a/CoreNLP/stanford-corenlp-4.5.7/SemgrexDemo.java b/CoreNLP/stanford-corenlp-4.5.7/SemgrexDemo.java
new file mode 100644
index 0000000000000000000000000000000000000000..aef1677243822c2b88d730929d5a6d72fefdc6c8
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/SemgrexDemo.java
@@ -0,0 +1,56 @@
+
+import edu.stanford.nlp.parser.lexparser.TreebankLangParserParams;
+import edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams;
+import edu.stanford.nlp.semgraph.SemanticGraph;
+import edu.stanford.nlp.semgraph.SemanticGraphFactory;
+import edu.stanford.nlp.semgraph.semgrex.SemgrexMatcher;
+import edu.stanford.nlp.semgraph.semgrex.SemgrexPattern;
+import edu.stanford.nlp.trees.GrammaticalStructure;
+import edu.stanford.nlp.trees.GrammaticalStructureFactory;
+import edu.stanford.nlp.trees.Tree;
+import edu.stanford.nlp.util.logging.Redwood;
+
+/**
+ * A small demo that shows how to convert a tree to a SemanticGraph
+ * and then run a SemgrexPattern on it
+ *
+ * @author John Bauer
+ */
+public class SemgrexDemo {
+
+ /** A logger for this class */
+ private static final Redwood.RedwoodChannels log = Redwood.channels(SemgrexDemo.class);
+
+ private SemgrexDemo() {} // just static main
+
+ public static void main(String[] args) {
+ String treeString = "(ROOT (S (NP (PRP$ My) (NN dog)) (ADVP (RB also)) (VP (VBZ likes) (S (VP (VBG eating) (NP (NN sausage))))) (. .)))";
+ // Typically the tree is constructed by parsing or reading a
+ // treebank. This is just for example purposes
+ Tree tree = Tree.valueOf(treeString);
+
+ // This creates English uncollapsed dependencies as a
+ // SemanticGraph. If you are creating many SemanticGraphs, you
+ // should use a GrammaticalStructureFactory and use it to generate
+ // the intermediate GrammaticalStructure instead
+ SemanticGraph graph = SemanticGraphFactory.generateUncollapsedDependencies(tree);
+
+ // Alternatively, this could have been the Chinese params or any
+ // other language supported. As of 2014, only English and Chinese
+ TreebankLangParserParams params = new EnglishTreebankParserParams();
+ GrammaticalStructureFactory gsf = params.treebankLanguagePack().grammaticalStructureFactory(params.treebankLanguagePack().punctuationWordRejectFilter(), params.typedDependencyHeadFinder());
+
+ GrammaticalStructure gs = gsf.newGrammaticalStructure(tree);
+
+ log.info(graph);
+
+ SemgrexPattern semgrex = SemgrexPattern.compile("{}=A < sentence : tokenizer) {
+ List tagged = tagger.tagSentence(sentence);
+ Tree tree = model.apply(tagged);
+ log.info(tree);
+ }
+ }
+}
diff --git a/CoreNLP/stanford-corenlp-4.5.7/StanfordCoreNlpDemo.java b/CoreNLP/stanford-corenlp-4.5.7/StanfordCoreNlpDemo.java
new file mode 100644
index 0000000000000000000000000000000000000000..63b42da8c764cebb959d68236d3f40fa21680d5f
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/StanfordCoreNlpDemo.java
@@ -0,0 +1,156 @@
+
+import java.io.*;
+import java.util.*;
+
+import edu.stanford.nlp.coref.CorefCoreAnnotations;
+
+import edu.stanford.nlp.coref.data.CorefChain;
+import edu.stanford.nlp.io.*;
+import edu.stanford.nlp.ling.*;
+import edu.stanford.nlp.pipeline.*;
+import edu.stanford.nlp.semgraph.SemanticGraph;
+import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations;
+import edu.stanford.nlp.semgraph.SemanticGraphEdge;
+import edu.stanford.nlp.sentiment.SentimentCoreAnnotations;
+import edu.stanford.nlp.trees.*;
+import edu.stanford.nlp.util.*;
+
+/** This class demonstrates building and using a Stanford CoreNLP pipeline. */
+public class StanfordCoreNlpDemo {
+
+ private StanfordCoreNlpDemo() { } // static meain metho
+
+ /** Usage: java -cp "*" StanfordCoreNlpDemo [inputFile [outputTextFile [outputXmlFile]]] */
+ public static void main(String[] args) throws IOException {
+ // set up optional output files
+ PrintWriter out;
+ if (args.length > 1) {
+ out = new PrintWriter(args[1]);
+ } else {
+ out = new PrintWriter(System.out);
+ }
+ PrintWriter xmlOut = null;
+ if (args.length > 2) {
+ xmlOut = new PrintWriter(args[2]);
+ }
+
+ // Create a CoreNLP pipeline. To build the default pipeline, you can just use:
+ // StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
+ // Here's a more complex setup example:
+ // Properties props = new Properties();
+ // props.put("annotators", "tokenize, ssplit, pos, lemma, ner, depparse");
+ // props.put("ner.model", "edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz");
+ // props.put("ner.applyNumericClassifiers", "false");
+ // StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
+
+ // Add in sentiment
+ Properties props = new Properties();
+ props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref, sentiment");
+
+ StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
+
+ // Initialize an Annotation with some text to be annotated. The text is the argument to the constructor.
+ Annotation annotation;
+ if (args.length > 0) {
+ annotation = new Annotation(IOUtils.slurpFileNoExceptions(args[0]));
+ } else {
+ annotation = new Annotation("Kosgi Santosh sent an email to Stanford University. He didn't get a reply.");
+ }
+
+ // run all the selected Annotators on this text
+ pipeline.annotate(annotation);
+
+ // this prints out the results of sentence analysis to file(s) in good formats
+ pipeline.prettyPrint(annotation, out);
+ if (xmlOut != null) {
+ pipeline.xmlPrint(annotation, xmlOut);
+ }
+
+ // Access the Annotation in code
+ // The toString() method on an Annotation just prints the text of the Annotation
+ // But you can see what is in it with other methods like toShorterString()
+ out.println();
+ out.println("The top level annotation");
+ out.println(annotation.toShorterString());
+ out.println();
+
+ // An Annotation is a Map with Class keys for the linguistic analysis types.
+ // You can get and use the various analyses individually.
+ // For instance, this gets the parse tree of the first sentence in the text.
+ List sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class);
+ if (sentences != null && ! sentences.isEmpty()) {
+ CoreMap sentence = sentences.get(0);
+ out.println("The keys of the first sentence's CoreMap are:");
+ out.println(sentence.keySet());
+ out.println();
+ out.println("The first sentence is:");
+ out.println(sentence.toShorterString());
+ out.println();
+ out.println("The first sentence tokens are:");
+ for (CoreMap token : sentence.get(CoreAnnotations.TokensAnnotation.class)) {
+ out.println(token.toShorterString());
+ }
+ Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class);
+ out.println();
+ out.println("The first sentence parse tree is:");
+ tree.pennPrint(out);
+ out.println();
+ out.println("The first sentence basic dependencies are:");
+ out.println(sentence.get(SemanticGraphCoreAnnotations.BasicDependenciesAnnotation.class).toString(SemanticGraph.OutputFormat.LIST));
+ out.println("The first sentence collapsed, CC-processed dependencies are:");
+ SemanticGraph graph = sentence.get(SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation.class);
+ out.println(graph.toString(SemanticGraph.OutputFormat.LIST));
+
+ // Print out dependency structure around one word
+ // This give some idea of how to navigate the dependency structure in a SemanticGraph
+ IndexedWord node = graph.getNodeByIndexSafe(5);
+ // The below way also works
+ // IndexedWord node = new IndexedWord(sentences.get(0).get(CoreAnnotations.TokensAnnotation.class).get(5 - 1));
+ out.println("Printing dependencies around \"" + node.word() + "\" index " + node.index());
+ List edgeList = graph.getIncomingEdgesSorted(node);
+ if (! edgeList.isEmpty()) {
+ assert edgeList.size() == 1;
+ int head = edgeList.get(0).getGovernor().index();
+ String headWord = edgeList.get(0).getGovernor().word();
+ String deprel = edgeList.get(0).getRelation().toString();
+ out.println("Parent is word \"" + headWord + "\" index " + head + " via " + deprel);
+ } else {
+ out.println("Parent is ROOT via root");
+ }
+ edgeList = graph.outgoingEdgeList(node);
+ for (SemanticGraphEdge edge : edgeList) {
+ String depWord = edge.getDependent().word();
+ int depIdx = edgeList.get(0).getDependent().index();
+ String deprel = edge.getRelation().toString();
+ out.println("Child is \"" + depWord + "\" (" + depIdx + ") via " + deprel);
+ }
+ out.println();
+
+
+ // Access coreference. In the coreference link graph,
+ // each chain stores a set of mentions that co-refer with each other,
+ // along with a method for getting the most representative mention.
+ // Both sentence and token offsets start at 1!
+ out.println("Coreference information");
+ Map corefChains =
+ annotation.get(CorefCoreAnnotations.CorefChainAnnotation.class);
+ if (corefChains == null) { return; }
+ for (Map.Entry entry: corefChains.entrySet()) {
+ out.println("Chain " + entry.getKey());
+ for (CorefChain.CorefMention m : entry.getValue().getMentionsInTextualOrder()) {
+ // We need to subtract one since the indices count from 1 but the Lists start from 0
+ List tokens = sentences.get(m.sentNum - 1).get(CoreAnnotations.TokensAnnotation.class);
+ // We subtract two for end: one for 0-based indexing, and one because we want last token of mention not one following.
+ out.println(" " + m + ", i.e., 0-based character offsets [" + tokens.get(m.startIndex - 1).beginPosition() +
+ ", " + tokens.get(m.endIndex - 2).endPosition() + ')');
+ }
+ }
+ out.println();
+
+ out.println("The first sentence overall sentiment rating is " + sentence.get(SentimentCoreAnnotations.SentimentClass.class));
+ }
+ IOUtils.closeIgnoringExceptions(out);
+ IOUtils.closeIgnoringExceptions(xmlOut);
+ }
+
+}
diff --git a/CoreNLP/stanford-corenlp-4.5.7/StanfordDependenciesManual.pdf b/CoreNLP/stanford-corenlp-4.5.7/StanfordDependenciesManual.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cbf07890e6e67f5d9a5a437f658508c94e64a810
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/StanfordDependenciesManual.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6a90a59b2fa5f2a15b034b873ae50e45aa149d4b1eb4e28070480a75694c367
+size 199885
diff --git a/CoreNLP/stanford-corenlp-4.5.7/build.xml b/CoreNLP/stanford-corenlp-4.5.7/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fe50ea40b7f71414a6a0924e42fd1677064f9c77
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/build.xml
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stanford NLP Group]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/corenlp.sh b/CoreNLP/stanford-corenlp-4.5.7/corenlp.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a60e1d107e9f3a9965d320e3f06ce36bd16ffb84
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/corenlp.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+#
+# Runs Stanford CoreNLP.
+# Simple uses for xml and plain text output to files are:
+# ./corenlp.sh -file filename
+# ./corenlp.sh -file filename -outputFormat text
+# Split into sentences, run POS tagger and NER, write CoNLL-style TSV file:
+# ./corenlp.sh -annotators tokenize,ssplit,pos,lemma,ner -outputFormat conll -file input.txt
+# You can also start a simple shell where you can enter sentences to be processed:
+# ./corenlp.sh
+
+OS=`uname`
+# Some machines (older OS X, BSD, Windows environments) don't support readlink -e
+if hash readlink 2>/dev/null; then
+ scriptdir=`dirname $0`
+else
+ scriptpath=$(readlink -e "$0") || scriptpath=$0
+ scriptdir=$(dirname "$scriptpath")
+fi
+
+echo java -mx5g -cp \"$scriptdir/*\" edu.stanford.nlp.pipeline.StanfordCoreNLP $*
+java -mx5g -cp "$scriptdir/*" edu.stanford.nlp.pipeline.StanfordCoreNLP $*
diff --git a/CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..e8c891a7cba9f1453406dc249e57673c59f86921
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1a325d01adf3fb42c049578e75e9bcd0189d96a35a3b7e73229528fda09ef8e
+size 196966
diff --git a/CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39.jar b/CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ee23c74455d2cfc2f57a66713b781cd73a834ff8
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/ejml-core-0.39.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:175ae3369898dd5f2648c59832727c8985e067e207f747757d9f336df8f37a2d
+size 199192
diff --git a/CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..32c0debe836a18467da2064eee5aaa222a224231
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea6ca7416d27b0e7a91ff4ea703b3948f80913b412f07fd89088c7a237adb6d7
+size 314835
diff --git a/CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39.jar b/CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39.jar
new file mode 100644
index 0000000000000000000000000000000000000000..7fdc28a55b1ba6646b198022b17c542f10d87ea9
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/ejml-ddense-0.39.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2083041c0e1af8f7cb6ebb6ffda2aedd869d0e331275f3731ad16ce36bc510ca
+size 335068
diff --git a/CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..44213584cb94c8ed1b0e0d226d5c5619fac13d8a
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39-sources.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39.jar b/CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39.jar
new file mode 100644
index 0000000000000000000000000000000000000000..448ca346d153a75765d09107f82d8f3a0f1d9cb1
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/ejml-simple-0.39.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29d0c255a792c7441cc22cefce35e977078790ee74605c6bab96847a499a4d76
+size 178321
diff --git a/CoreNLP/stanford-corenlp-4.5.7/input.txt b/CoreNLP/stanford-corenlp-4.5.7/input.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7e2de0908e0be8e704a12d846bca6ac41b69a9c1
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/input.txt
@@ -0,0 +1 @@
+Stanford University is located in California. It is a great university, founded in 1891.
diff --git a/CoreNLP/stanford-corenlp-4.5.7/input.txt.out b/CoreNLP/stanford-corenlp-4.5.7/input.txt.out
new file mode 100644
index 0000000000000000000000000000000000000000..f70f9082acfa0c7811a24e19b5effeab3a57cacc
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/input.txt.out
@@ -0,0 +1,62 @@
+Document: ID=input.txt (2 sentences, 17 tokens)
+
+Sentence #1 (7 tokens):
+Stanford University is located in California.
+
+Tokens:
+[Text=Stanford CharacterOffsetBegin=0 CharacterOffsetEnd=8 PartOfSpeech=NNP Lemma=Stanford NamedEntityTag=ORGANIZATION]
+[Text=University CharacterOffsetBegin=9 CharacterOffsetEnd=19 PartOfSpeech=NNP Lemma=University NamedEntityTag=ORGANIZATION]
+[Text=is CharacterOffsetBegin=20 CharacterOffsetEnd=22 PartOfSpeech=VBZ Lemma=be NamedEntityTag=O]
+[Text=located CharacterOffsetBegin=23 CharacterOffsetEnd=30 PartOfSpeech=VBN Lemma=locate NamedEntityTag=O]
+[Text=in CharacterOffsetBegin=31 CharacterOffsetEnd=33 PartOfSpeech=IN Lemma=in NamedEntityTag=O]
+[Text=California CharacterOffsetBegin=34 CharacterOffsetEnd=44 PartOfSpeech=NNP Lemma=California NamedEntityTag=STATE_OR_PROVINCE]
+[Text=. CharacterOffsetBegin=44 CharacterOffsetEnd=45 PartOfSpeech=. Lemma=. NamedEntityTag=O]
+
+Dependency Parse (enhanced plus plus dependencies):
+root(ROOT-0, located-4)
+compound(University-2, Stanford-1)
+nsubj:pass(located-4, University-2)
+aux:pass(located-4, is-3)
+case(California-6, in-5)
+obl:in(located-4, California-6)
+punct(located-4, .-7)
+
+Extracted the following NER entity mentions:
+Stanford University ORGANIZATION ORGANIZATION:0.9997806909488275
+California STATE_OR_PROVINCE LOCATION:0.9994287460271556
+
+Extracted the following KBP triples:
+1.0 Stanford University org:stateorprovince_of_headquarters California
+
+Sentence #2 (10 tokens):
+It is a great university, founded in 1891.
+
+Tokens:
+[Text=It CharacterOffsetBegin=46 CharacterOffsetEnd=48 PartOfSpeech=PRP Lemma=it NamedEntityTag=O]
+[Text=is CharacterOffsetBegin=49 CharacterOffsetEnd=51 PartOfSpeech=VBZ Lemma=be NamedEntityTag=O]
+[Text=a CharacterOffsetBegin=52 CharacterOffsetEnd=53 PartOfSpeech=DT Lemma=a NamedEntityTag=O]
+[Text=great CharacterOffsetBegin=54 CharacterOffsetEnd=59 PartOfSpeech=JJ Lemma=great NamedEntityTag=O]
+[Text=university CharacterOffsetBegin=60 CharacterOffsetEnd=70 PartOfSpeech=NN Lemma=university NamedEntityTag=O]
+[Text=, CharacterOffsetBegin=70 CharacterOffsetEnd=71 PartOfSpeech=, Lemma=, NamedEntityTag=O]
+[Text=founded CharacterOffsetBegin=72 CharacterOffsetEnd=79 PartOfSpeech=VBN Lemma=found NamedEntityTag=O]
+[Text=in CharacterOffsetBegin=80 CharacterOffsetEnd=82 PartOfSpeech=IN Lemma=in NamedEntityTag=O]
+[Text=1891 CharacterOffsetBegin=83 CharacterOffsetEnd=87 PartOfSpeech=CD Lemma=1891 NamedEntityTag=DATE NormalizedNamedEntityTag=1891 Timex=1891]
+[Text=. CharacterOffsetBegin=87 CharacterOffsetEnd=88 PartOfSpeech=. Lemma=. NamedEntityTag=O]
+
+Dependency Parse (enhanced plus plus dependencies):
+root(ROOT-0, university-5)
+nsubj(university-5, It-1)
+cop(university-5, is-2)
+det(university-5, a-3)
+amod(university-5, great-4)
+punct(university-5, ,-6)
+acl(university-5, founded-7)
+case(1891-9, in-8)
+obl:in(founded-7, 1891-9)
+punct(university-5, .-10)
+
+Extracted the following NER entity mentions:
+1891 DATE DATE:0.9867899766348976
+
+Coreference set:
+ (2,1,[1,2]) -> (1,2,[1,3]), that is: "It" -> "Stanford University"
diff --git a/CoreNLP/stanford-corenlp-4.5.7/input.txt.xml b/CoreNLP/stanford-corenlp-4.5.7/input.txt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5763d16f38346f9662de519240224452d7b3860
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/input.txt.xml
@@ -0,0 +1,324 @@
+
+
+
+
+
+
+
+
+ Stanford
+ Stanford
+ 0
+ 8
+ NNP
+ ORGANIZATION
+
+
+ University
+ University
+ 9
+ 19
+ NNP
+ ORGANIZATION
+
+
+ is
+ be
+ 20
+ 22
+ VBZ
+ O
+
+
+ located
+ located
+ 23
+ 30
+ JJ
+ O
+
+
+ in
+ in
+ 31
+ 33
+ IN
+ O
+
+
+ California
+ California
+ 34
+ 44
+ NNP
+ LOCATION
+
+
+ .
+ .
+ 44
+ 45
+ .
+ O
+
+
+ (ROOT (S (NP (NNP Stanford) (NNP University)) (VP (VBZ is) (ADJP (JJ located) (PP (IN in) (NP (NNP California))))) (. .)))
+
+
+ University
+ Stanford
+
+
+ located
+ University
+
+
+ located
+ is
+
+
+ located
+ in
+
+
+ in
+ California
+
+
+
+
+ University
+ Stanford
+
+
+ located
+ University
+
+
+ located
+ is
+
+
+ located
+ California
+
+
+
+
+ University
+ Stanford
+
+
+ located
+ University
+
+
+ located
+ is
+
+
+ located
+ California
+
+
+
+
+
+
+ It
+ it
+ 46
+ 48
+ PRP
+ O
+
+
+ is
+ be
+ 49
+ 51
+ VBZ
+ O
+
+
+ a
+ a
+ 52
+ 53
+ DT
+ O
+
+
+ great
+ great
+ 54
+ 59
+ JJ
+ O
+
+
+ university
+ university
+ 60
+ 70
+ NN
+ O
+
+
+ ,
+ ,
+ 70
+ 71
+ ,
+ O
+
+
+ founded
+ found
+ 72
+ 79
+ VBN
+ O
+
+
+ in
+ in
+ 80
+ 82
+ IN
+ O
+
+
+ 1891
+ 1891
+ 83
+ 87
+ CD
+ DATE
+ 1891
+ 1891
+
+
+ .
+ .
+ 87
+ 88
+ .
+ O
+
+
+ (ROOT (S (NP (PRP It)) (VP (VBZ is) (NP (NP (DT a) (JJ great) (NN university)) (, ,) (VP (VBN founded) (PP (IN in) (NP (CD 1891)))))) (. .)))
+
+
+ university
+ It
+
+
+ university
+ is
+
+
+ university
+ a
+
+
+ university
+ great
+
+
+ university
+ founded
+
+
+ founded
+ in
+
+
+ in
+ 1891
+
+
+
+
+ university
+ It
+
+
+ university
+ is
+
+
+ university
+ a
+
+
+ university
+ great
+
+
+ university
+ founded
+
+
+ founded
+ 1891
+
+
+
+
+ university
+ It
+
+
+ university
+ is
+
+
+ university
+ a
+
+
+ university
+ great
+
+
+ university
+ founded
+
+
+ founded
+ 1891
+
+
+
+
+
+
+
+ 1
+ 1
+ 3
+ 2
+
+
+ 2
+ 1
+ 2
+ 1
+
+
+ 2
+ 3
+ 10
+ 5
+
+
+ 2
+ 3
+ 6
+ 5
+
+
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/istack-commons-runtime-3.0.7-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/istack-commons-runtime-3.0.7-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2e1c69935282b0c4108a6eccb07f36498590d18a
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/istack-commons-runtime-3.0.7-sources.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/istack-commons-runtime-3.0.7.jar b/CoreNLP/stanford-corenlp-4.5.7/istack-commons-runtime-3.0.7.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2fe5b82620b5765e4a77dc3cca97d3424b6cbaed
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/istack-commons-runtime-3.0.7.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/javax.activation-api-1.2.0-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/javax.activation-api-1.2.0-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..27c13e1152ee12bcf71c6204559884442bf68e0b
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/javax.activation-api-1.2.0-sources.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/javax.activation-api-1.2.0.jar b/CoreNLP/stanford-corenlp-4.5.7/javax.activation-api-1.2.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..986c365096a18b43ea6ec9df09f2f52d10902144
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/javax.activation-api-1.2.0.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/javax.json-api-1.0-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/javax.json-api-1.0-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..4bd203ae1961965ff65d2b82f51be911dc9ad339
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/javax.json-api-1.0-sources.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/javax.json.jar b/CoreNLP/stanford-corenlp-4.5.7/javax.json.jar
new file mode 100644
index 0000000000000000000000000000000000000000..09967d8158efd05ffaf33d45d48544f680ef0d52
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/javax.json.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..4e68cbe4a4dec3865d4103a38d2bc805dc072819
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80bf9ccae5e202fd898340ba1e8daf061d3e539d21c6dbd238a4cac919b84f15
+size 270926
diff --git a/CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359.jar b/CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d35407268a690ef4c450c23fa43cbd21c786221b
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/jaxb-api-2.4.0-b180830.0359.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56b9e9702753763007435162ea788055efcfefc86ab920f032c0411dc547b836
+size 128032
diff --git a/CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ff6d86cd09f8543de28d6e2c1db4a571604b11cd
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3fc7893d43b2e1ee222a9746e14c8ed985b9c99399a3109a6c2f5da0acc3fe6
+size 1132702
diff --git a/CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438.jar b/CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d3ed687a0fad680cb4c7c175902fc9cbe983a0dd
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/jaxb-impl-2.4.0-b180830.0438.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce22a84983e330de8628aa57168398e98eea8dff0ce73c902534aba09681a63d
+size 1128097
diff --git a/CoreNLP/stanford-corenlp-4.5.7/joda-time-2.10.5-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/joda-time-2.10.5-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..7ea35f87ea8f0281b70d8b958e266b434e58af55
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/joda-time-2.10.5-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:250a7b443d6cef34634b6044e4f042276d16e5f815747c46da8427eb5335ffd2
+size 821105
diff --git a/CoreNLP/stanford-corenlp-4.5.7/joda-time.jar b/CoreNLP/stanford-corenlp-4.5.7/joda-time.jar
new file mode 100644
index 0000000000000000000000000000000000000000..51da44e598d05ddada974330d940d85b7bd5f9ec
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/joda-time.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ee73e7ff8e2df0d4e3408cf1a1527a59f265dd9fb43fb9b2eb818d87f93759e
+size 643043
diff --git a/CoreNLP/stanford-corenlp-4.5.7/jollyday-0.4.9-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/jollyday-0.4.9-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..22eaf680bb3c7947488e938238720415931e5408
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/jollyday-0.4.9-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3bd83510a47a3d08878d7777283a3dcb8adf1b2473139aae56ab4c84684310a3
+size 196945
diff --git a/CoreNLP/stanford-corenlp-4.5.7/jollyday.jar b/CoreNLP/stanford-corenlp-4.5.7/jollyday.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f37d470bc3becde888cd9436d81c8e7f2fed6650
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/jollyday.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:556a1a11275d1d1df094b127a3e158377c0026ad150c0e651c9c46c533027e48
+size 213591
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/example.properties b/CoreNLP/stanford-corenlp-4.5.7/patterns/example.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e9c0dc4ae0c20b500d39c6cec3adec7864668ef5
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/example.properties
@@ -0,0 +1,297 @@
+#### NOTE: for all flags and their description, see the javadoc. Important parameters (in our experience) that you should tune for your dataset are marked with ***. Pay special attention to flags like targetAllowedNERs. Use batchProcesssSents and Lucene based options if you want low memory (but slower) runs.
+
+#***Which type of patterns. Options are SURFACE and DEP
+patternType=SURFACE
+
+#name for the saved files for the output of the system (useful for comparing results of different experiments with different variables etc.)
+identifier=useNERRestriction
+
+#Directory where data lives
+DIR=patterns
+
+outDir=SPIEDPatternsout
+
+#If you want output in which each labeled phrase has around it
+#markedOutputTextFile=${outDir}/markedtext.txt
+
+#Number of threads available on the machine
+numThreads=1
+#***Use these options if you are limited by memory
+batchProcessSents = false
+#This name is a misnomer. Max number of *lines* per batch file. Works only for text file format; ser files cannot be broken down
+numMaxSentencesPerBatchFile=100
+saveInvertedIndex=false
+invertedIndexDirectory=${outDir}/invertedIndex
+#Loading index from invertedIndexDirectory
+#loadInvertedIndex=true
+
+#Useful for memory heavy apps.
+#invertedIndexClass=edu.stanford.nlp.patterns.LuceneSentenceIndex
+
+
+### Example for running it on presidents biographies. For more data examples, see the bottom of this file
+
+#can be text. the code will tokenize it.
+fileFormat=text
+#Input file(s) (default assumed text). Can be one or more of (concatenated by comma or semi-colon): file, directory, files with regex in the filename (for example: "mydir/health-.*-processed.txt")
+file=${DIR}/presidents.txt
+
+#to save the serialized sentences into a file - text split into sentences, processed using ner, parse etc (depending on the flags) and labeled with seed set. Existing files will get deleted (if the fileFormat is not ser).
+saveSentencesSerDir=${outDir}/sents
+
+#if you use the flag above to save the file, you can use the saved file like this
+#fileFormat=ser
+#file=${outDir}/sents
+
+#We are learning names of presidential candidates, places, and other names. In each line, all text after tabs are ignored in these seed files
+seedWordsFiles=NAME,${DIR}/names.txt;PLACE,${DIR}/places.txt;OTHER,${DIR}/otherpeople.txt
+#Useful for matching lemmas or spelling mistakes
+fuzzyMatch=false
+#Used if fuzzyMatch is true. minimum length of words to do fuzzy matching.
+minLen4FuzzyForPattern=6
+
+#You can evaluate two ways; both presented here.
+evaluate=true
+goldEntitiesEvalFiles=NAME,${DIR}/goldnames.txt;PLACE,${DIR}/goldplaces.txt
+#evalFileWithGoldLabels=${DIR}/presidents_eval.txt
+#default as true, false if you want scores per token
+evalPerEntity=true
+
+
+#SAVE n LOAD the model (patterns and phrases) options
+patternsWordsDir=${outDir}/${identifier}/model/
+#save the learned patterns and learned words in patternsWordsDir directory
+savePatternsWordsDir=true
+#load the patterns and words from patternsWordsDir directory
+#loadSavedPatternsWordsDir=true
+
+#false if you just want to process the text into sents but not do anything with it, or you want to use loadSavedPatternsWordsDir option. Useful for batch processing and saving text as serialized objects, then running the learning system on all the serialized objects (see saveSentences* and saveEvalSent* flags) or domain adaptation.
+learn=true
+
+
+#posModelPath=
+
+#In case the seeds have overlapping words like "lung" as bodyPart and "lung cancer" as disease. "lung" in "lung cancer" will be labeled as only disease, if the flag is true.
+removeOverLappingLabelsFromSeed=true
+
+######## creating patterns flags ##########
+#***use context on the left
+usePreviousContext=true
+
+#***use context on the right
+useNextContext = true
+
+#***the context should be at least this long
+minWindow4Pattern = 2
+
+#***the context can be at most this long
+maxWindow4Pattern = 4
+
+#if the context consists of only stop words, add only if it's more than these many stop words
+numMinStopWordsToAdd = 3
+
+#***use POS tag restriction for the target phrase
+usePOS4Pattern = true
+
+#Ignore words {a, an, the} while matching the patterns to text (advisable true)
+useFillerWordsInPat = false
+
+#***Specific allowed tags' initials for the target phrase for each label while creating the patterns (if not specified, every tag is acceptable to create a pattern). Tag initials can be written as N or NN or J or N,J etc. E.g.: NAME,N,J;PLACE,N. If
+targetAllowedTagsInitialsStr=NAME,N;OTHER,N
+
+#You can save all possible patterns for all tokens in the flag allPatternsDir so you wouldn't need to calculate them everytime.
+computeAllPatterns = true
+
+#Options: MEMORY, DB, LUCENE. If using SQL for storing patterns for each token --- populate SQLConnection class, that is provide those properties!
+storePatsForEachToken=MEMORY
+#***If your code is running too slow, try to reduce this number. Samples % of sentences for learning patterns
+sampleSentencesForSufficientStats=1.0
+
+#Save or read (if computeAllPatterns is false) from here
+allPatternsDir= ${DIR}/${identifier}_allpatterns
+
+#***maximum Num of allowed words in the target phrase
+numWordsCompound = 3
+
+#***consider patterns without the POS restricion on the target phrase
+addPatWithoutPOS = true
+
+#Ignore common stop words occuring just before the target phrase
+useStopWordsBeforeTerm=false
+
+#Use lemma instead of words of the context tokens
+useLemmaContextTokens=true
+
+#make context matching lowercase (advisable)
+matchLowerCaseContext=true
+
+#***use named entity tag (predicted using StanfordCoreNLP NER) restriction of the target phrase
+useTargetNERRestriction=true
+
+#***If useTargetNERRestriction is true, you can give NER tags that the target phrase can take. Do not mention anything if you don't want any specific restriction
+targetAllowedNERs=NAME,PERSON;PLACE,LOCATION;OTHER,PERSON
+
+#use named entity tag restrictions for the context (neighboring) tokens
+useContextNERRestriction=false
+
+#***use the parse tag of the grandparent node as restriction (note that parent node is the POS tag of the word)
+useTargetParserParentRestriction=false
+
+#do not extract phrase in which any word is labeled with another class (for example, you don't wanna extract 'HIV patients' as disease)
+doNotExtractPhraseAnyWordLabeledOtherClass = true
+
+#### matching patterns to text ######
+
+#kinda ignore this flag and use it as true. for those who care this too much: for each token, we use the phrase that originally matched that token instead of the token's word (in case you are using fuzzy matching)
+useMatchingPhrase=true
+
+#Use only the tokens that get matched by a pattern (advisable as false)
+restrictToMatched = false
+
+#Label the learned words in the text (advisable as true)
+usePatternResultAsLabel=true
+
+#remove common stop words from phrases to get clean phrases (for example, "disease" instead of "some disease")
+removeStopWordsFromSelectedPhrases = true
+
+#Do not learn phrases that have any stop word
+removePhrasesWithStopWords = false
+
+
+### evaluating candidate patterns
+
+#***Minimum number of positive phrases a candidate pattern should extract
+minPosPhraseSupportForPat = 1
+
+##### thresholds for selecting paterns and words #####
+
+#***threshold for learning a phrase
+thresholdWordExtract=0.01
+
+#***thrshold for learning a pattern
+thresholdSelectPattern = 0.01
+
+#keep lowering threshold as 0.8*threshold whenever the system doesn't learn any new patterns and phrases
+tuneThresholdKeepRunning=false
+
+#***discard phrases that do not have these many patterns extracting it
+thresholdNumPatternsApplied = 1
+
+#***max number of words to extract in each iteration
+numWordsToAdd = 5
+
+#***max number of words to extract in each pattern
+numPatterns = 5
+
+#***max number of iterations
+numIterationsForPatterns = 8
+
+#Consider words belonging to other labels as negative (advisable as true)
+useOtherLabelsWordsasNegative=true
+
+#***Pattern scoring measure. For more details, see the paper. The options are PhEvalInPatLogP, PhEvalInPat, PosNegUnlabOdds, RlogF, RlogFPosNeg, YanGarber02, PosNegOdds, LOGREG, LOGREGlogP, RatioAll, SqrtAllRatio
+patternScoring=RatioAll
+
+#Class to be used to score phrases. The valid options are edu.stanford.nlp.patterns.surface.ScorePhrasesAverageFeatures and edu.stanford.nlp.patterns.surface.ScorePhrasesLearnFeatWt
+phraseScorerClass=edu.stanford.nlp.patterns.ScorePhrasesAverageFeatures
+#phraseScorerClass=edu.stanford.nlp.patterns.ScorePhrasesLearnFeatWt
+
+#***Club neighboring labeled words (of the same label) when extracting phrases
+clubNeighboringLabeledWords=true
+
+#if you want to sqrt root the pattern score
+sqrtPatScore = false
+
+#Phrase scoring measure; ignore.
+wordScoring=WEIGHTEDNORM
+
+#For scoring phrases that are OOV, a score is the average of the score of individual words (instead of min, which is default)
+useAvgInsteadofMinPhraseScoring=true
+
+#*** what all features to use to evaluate phrases. See the paper for more details on each
+#only if wordClassClusterFile is provided
+usePhraseEvalWordClass=false
+
+#tf-idf scoring w.r.t to the domain
+usePhraseEvalDomainNgram=false
+
+#use pattern weights in scoring phrases extracted by them, if usePhraseEvalPatWtByFreq is true. otherwise it's just a tfidf like score
+usePatternWeights=true
+
+#basically patwt/log(freq), patwt = 1 if usePatternWeights is false
+usePhraseEvalPatWtByFreq=true
+
+#if using multiple label dictionaries etc, freq of the phrase in the label dictionary vs other dictionaries
+usePhraseEvalSemanticOdds=true
+
+#edit distance from positive entities
+usePhraseEvalEditDistSame=true
+
+#edit distance from the negative entities
+usePhraseEvalEditDistOther=true
+
+#if you have googlengrams, you can use googlengrams tf-idf scoring.
+usePhraseEvalGoogleNgram=false
+
+#% of positive labeled words with the same word class (see WordClassClassifier and chris2 for more details)
+usePhraseEvalWordShape=true
+
+
+#These flags are not valid if patternScoring is not PhEvalInPat* . Similar meaning as for the phrase ones above
+usePatternEvalWordClass=false
+usePatternEvalGoogleNgram=false
+usePatternEvalSemanticOdds=true
+usePatternEvalEditDistSame=true
+usePatternEvalEditDistOther=true
+usePatternEvalDomainNgram=false
+usePatternEvalWordShape=true
+
+#Options are LOG, NONE or SQRT
+wordFreqNorm = NONE
+
+######For logging
+
+#4 if you wanna print out every single thing happening in the system, 3 if you want fair amount of debug messages and justification, 2 means some debug msgs, 1 means only necessary msgs and 0 means (almost) no msgs
+debug = 3
+
+
+
+#stop words file
+stopWordsPatternFiles=${DIR}/stopwords.txt
+
+englishWordsFiles=${stopWordsPatternFiles}
+commonWordsPatternFiles= ${stopWordsPatternFiles}
+#You can give some common words like this
+#commonWordsPatternFiles =${DIR}/lists/commonEngWords1k.txt
+
+#If you are using Google Ngrams TF-IDF feature
+#googleNGramsFile=/u/nlp/scr/google-ngrams/1gms/vocab
+#weightDomainFreq=10
+
+#below is optional; comma separated files with list of phrases that def do not belong to any of the labels
+#otherSemanticClassesFiles=${DIR}/nondiseases.txt
+
+#The flags below are used when either LOGREG is used for patternScoring or ScorePhrasesLearnFeatWt class is used for phrase scoring
+#% unlabeled tokens selected as negative
+#perSelectRand=0.5
+#% negative tokens selected as negative
+#perSelectNeg=1
+
+
+### Example for running the code on BioMed articles and NCBI corpus (instead of the toy example above)
+
+#fileFormat=text
+#file=${DIR}/BioMedSample
+#saveSentencesSerFile=${DIR}/biomed_sents.ser
+
+#evalFileWithGoldLabels=${DIR}/NCBI_corpus_testing_processed.txt
+#saveEvalSentencesSerFile=${DIR}/ncbi_corpus_testing_sents.ser
+#addEvalSentsToTrain=true
+
+#seedWordsFiles=disease,${DIR}/diseases.txt;nondisease,${DIR}/nondiseases.txt
+
+#wordClassClusterFile=${DIR}/ncbi_disease_brownclusters_200_min5.txt
+
+#externalFeatureWeightsFile = ${DIR}/out/wordclass_weights
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/goldnames.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/goldnames.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ffe395e7bc1060189d41d657351110d5a7cb971
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/goldnames.txt
@@ -0,0 +1,85 @@
+Nelson Rockefeller
+Herbert Walker Bush
+contributed#
+Ronald Reagan
+Bush
+John Fitzgerald Kennedy
+Nixon
+Carter
+George Herber Walker Bush
+William Clinton
+William
+Nelle
+George Bush
+James Earl
+John
+Dwight D. Eisenhower
+Prescott Bush
+Wilkes Booth#
+Taft
+Prescott#
+Coolidge
+Kennedy
+W. Bush
+George
+Reagan
+Adams
+Eisenhower
+Ronald Wilson Reagan
+William Jefferson
+Roger#
+Blythe III
+Clinton
+Johnson
+Richard M.
+George W.
+George C. Marshall
+Gibbs McAdoo#
+Lyndon B.
+III
+John Quincy
+agenda#
+Governor Nelson Rockefeller
+President Jimmy
+Warren G. Harding
+promise#
+General Eisenhower
+business#
+Gerald R. Ford
+America#
+family#
+Administration#
+pledge#
+phrases#
+House#
+measures#
+campaign#
+Roosevelt
+Governor Jimmy
+cut taxes#
+Governor Nelson
+Albert Gore Jr.
+Gore Jr.
+Leonid I. Brezhnev#
+Albert Gore
+Bush
+James M. Cox
+Nixon
+George W. Bush
+Michael Dukakisi#
+Ronald Wilson Reagan
+Saddam Hussein#
+Dan Quayle
+Al Gore
+Carter
+John Kerry
+Spiro T. Agnew
+Clinton
+Walter F. Mondale
+Nelson Rockefeller
+Gerald R. Ford
+Taft
+Hubert H. Humphrey
+Mikhail Gorbachev#
+John Kennedy
+Richard M. Nixon
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/goldplaces.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/goldplaces.txt
new file mode 100644
index 0000000000000000000000000000000000000000..407f31ccc98af40a83255ee749a2c6847c6d5624
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/goldplaces.txt
@@ -0,0 +1,2 @@
+Brookline
+Plymouth
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/names.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/names.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5c5a32254b8abf2dbedf18cbb2cadf1188b9ca6f
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/names.txt
@@ -0,0 +1,3 @@
+President Obama
+President Bush
+Jimmy Carter
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/otherpeople.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/otherpeople.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fcedc2d970bf4c3fc265c7dafe52bc4c8f08c7a3
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/otherpeople.txt
@@ -0,0 +1,4 @@
+Sasha
+Michelle
+Laura Welch
+Jenna
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/places.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/places.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ffad346c3aa3a4ff8e231c94312788445a869557
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/places.txt
@@ -0,0 +1,3 @@
+Hawaii
+New Haven
+Milton
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/presidents.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/presidents.txt
new file mode 100644
index 0000000000000000000000000000000000000000..329d41718fceefcca949d44aadb7b2bf265e743c
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/presidents.txt
@@ -0,0 +1,275 @@
+Barack H. Obama is the 44th President of the United States.
+
+His story is the American story — values from the heartland, a middle-class upbringing in a strong family, hard work and education as the means of getting ahead, and the conviction that a life so blessed should be lived in service to others.
+
+With a father from Kenya and a mother from Kansas, President Obama was born in Hawaii on August 4, 1961. He was raised with help from his grandfather, who served in Patton's army, and his grandmother, who worked her way up from the secretarial pool to middle management at a bank.
+
+After working his way through college with the help of scholarships and student loans, President Obama moved to Chicago, where he worked with a group of churches to help rebuild communities devastated by the closure of local steel plants.
+
+He went on to attend law school, where he became the first African—American president of the Harvard Law Review. Upon graduation, he returned to Chicago to help lead a voter registration drive, teach constitutional law at the University of Chicago, and remain active in his community.
+
+President Obama's years of public service are based around his unwavering belief in the ability to unite people around a politics of purpose. In the Illinois State Senate, he passed the first major ethics reform in 25 years, cut taxes for working families, and expanded health care for children and their parents. As a United States Senator, he reached across the aisle to pass groundbreaking lobbying reform, lock up the world's most dangerous weapons, and bring transparency to government by putting federal spending online.
+
+He was elected the 44th President of the United States on November 4, 2008, and sworn in on January 20, 2009. He and his wife, Michelle, are the proud parents of two daughters, Malia, 14, and Sasha, 11.
+
+The airborne terrorist attacks on the World Trade Center, the Pentagon, and the thwarted flight against the White House or Capitol on September 11, 2001, in which nearly 3,000 Americans were killed, transformed George W. Bush into a wartime president. The attacks put on hold many of Bush’s hopes and plans, and Bush’s father, George Bush, the 41st president, declared that his son “faced the greatest challenge of any president since Abraham Lincoln.”
+
+In response, Bush formed a new cabinet-level Department of Homeland Security, sent American forces into Afghanistan to break up the Taliban, a movement under Osama bin Laden that trained financed and exported terrorist teams. The Taliban was successfully disrupted but Bin Laden was not captured and was still on the loose as Bush began his second term. Following the attacks, the president also recast the nation’s intelligence gathering and analysis services, and ordered reform of the military forces to meet the new enemy. At the same time he delivered major tax cuts which had been a campaign pledge. His most controversial act was the invasion of Iraq on the belief that Iraqi President Saddam Hussein posed a grave threat to the United States. Saddam was captured, but the disruption of Iraq and the killing of American servicemen and friendly Iraqis by insurgents became the challenge of Bush’s government as he began his second term. President Bush pledged during his 2005 State of the Union Address that the United States would help the Iraqi people establish a fully democratic government because the victory of freedom in Iraq would strengthen a new ally in the war on terror, bring hope to a troubled region, and lift a threat from the lives of future generations.
+
+Bush was born in New Haven, Connecticut while his father was attending Yale University after service in World War II. The family moved to Midland, Texas, where the senior Bush entered the oil exploration business. The son spent formative years there, attended Midland public schools, and formed friendships that stayed with him into the White House. Bush graduated from Yale, received a business degree from Harvard, and then returned to Midland where he too got into the oil business. In Midland he met and married Laura Welch, a teacher and librarian. They had twin daughters, Jenna and Barbara, now out of college and pursuing careers.
+
+When George W. Bush, at the age of 54, became the 43rd president of the United States, it was only the second time in American history that a president’s son went on to the White House. John Quincy Adams, elected the sixth president in 1824, was the son of John Adams, the second president. While John Adams had groomed his son to be president, George Bush, the 41st president, insisted he was surprised when the eldest of his six children became interested in politics, became governor of Texas, and then went on to the White House.
+
+During the early part of the 2000 campaign for the White House, Bush enjoyed a double-digit lead in the polls over his opponent Vice President Al Gore Jr. But the gap closed as the election approached and though Gore finally won the popular vote by 543,895 votes, victory or loss of the presidency hinged on Florida’s electoral votes. That struggle through recounts and lawsuits worked its way to the Supreme Court. In the end Bush won the electoral count 271 to 266. His new administration was focused on “compassionate conservatism,” which embraced excellence in education, tax relief and volunteerism among faith-based and community organizations.
+
+Bush was challenged in his re-election bid in 2004 by Massachusetts Democratic Senator John Kerry. The election was a good contest, but Bush’s contention that the invasion of Iraq had made the world more secure against terrorism won the national political debate. Bush was re-elected with 51 percent to 48 percent.
+
+On the inaugural stand, George W. Bush set the theme for his second term: “At this second gathering, our duties are defined not by the words I use, but by the history we have seen together. For half a century, America defended our own freedom by standing watch on distant borders. After the shipwreck of communism came years of relative quiet- and then there came a day of fire. There is only one force of history that can break the reign of hatred and resentment, and expose the pretensions of tyrants, and reward the hopes of the decent and tolerant, and that is the force of human freedom – tested but not weary… we are ready for the greatest achievements in the history of freedom.”
+
+
+
+During the administration of William Jefferson Clinton, the U.S. enjoyed more peace and economic well being than at any time in its history. He was the first Democratic president since Franklin D. Roosevelt to win a second term. He could point to the lowest unemployment rate in modern times, the lowest inflation in 30 years, the highest home ownership in the country's history, dropping crime rates in many places, and reduced welfare rolls. He proposed the first balanced budget in decades and achieved a budget surplus. As part of a plan to celebrate the millennium in 2000, Clinton called for a great national initiative to end racial discrimination.
+
+After the failure in his second year of a huge program of health care reform, Clinton shifted emphasis, declaring "the era of big government is over." He sought legislation to upgrade education, to protect jobs of parents who must care for sick children, to restrict handgun sales, and to strengthen environmental rules.
+
+President Clinton was born William Jefferson Blythe III on August 19, 1946, in Hope, Arkansas, three months after his father died in a traffic accident. When he was four years old, his mother wed Roger Clinton, of Hot Springs, Arkansas. In high school, he took the family name.
+
+He excelled as a student and as a saxophone player and once considered becoming a professional musician. As a delegate to Boys Nation while in high school, he met President John Kennedy in the White House Rose Garden. The encounter led him to enter a life of public service.
+
+Clinton was graduated from Georgetown University and in 1968 won a Rhodes Scholarship to Oxford University. He received a law degree from Yale University in 1973, and entered politics in Arkansas.
+
+He was defeated in his campaign for Congress in Arkansas's Third District in 1974. The next year he married Hillary Rodham, a graduate of Wellesley College and Yale Law School. In 1980, Chelsea, their only child, was born.
+
+Clinton was elected Arkansas Attorney General in 1976, and won the governorship in 1978. After losing a bid for a second term, he regained the office four years later, and served until he defeated incumbent George Bush and third party candidate Ross Perot in the 1992 presidential race.
+
+Clinton and his running mate, Tennessee's Senator Albert Gore Jr., then 44, represented a new generation in American political leadership. For the first time in 12 years both the White House and Congress were held by the same party. But that political edge was brief; the Republicans won both houses of Congress in 1994.
+
+In 1998, as a result of issues surrounding personal indiscretions with a young woman White House intern, Clinton was the second U.S. president to be impeached by the House of Representatives. He was tried in the Senate and found not guilty of the charges brought against him. He apologized to the nation for his actions and continued to have unprecedented popular approval ratings for his job as president.
+
+In the world, he successfully dispatched peace keeping forces to war-torn Bosnia and bombed Iraq when Saddam Hussein stopped United Nations inspections for evidence of nuclear, chemical, and biological weapons. He became a global proponent for an expanded NATO, more open international trade, and a worldwide campaign against drug trafficking. He drew huge crowds when he traveled through South America, Europe, Russia, Africa, and China, advocating U.S. style freedom.
+
+George Bush brought to the White House a dedication to traditional American values and a determination to direct them toward making the United States "a kinder and gentler nation." In his Inaugural Address he pledged in "a moment rich with promise" to use American strength as "a force for good."
+
+Coming from a family with a tradition of public service, George Herbert Walker Bush felt the responsibility to make his contribution both in time of war and in peace. Born in Milton, Massachusetts, on June 12, 1924, he became a student leader at Phillips Academy in Andover. On his 18th birthday he enlisted in the armed forces. The youngest pilot in the Navy when he received his wings, he flew 58 combat missions during World War II. On one mission over the Pacific as a torpedo bomber pilot he was shot down by Japanese antiaircraft fire and was rescued from the water by a U. S. submarine. He was awarded the Distinguished Flying Cross for bravery in action.
+
+Bush next turned his energies toward completing his education and raising a family. In January 1945 he married Barbara Pierce. They had six children-- George, Robin (who died as a child), John (known as Jeb), Neil, Marvin, and Dorothy.
+
+At Yale University he excelled both in sports and in his studies; he was captain of the baseball team and a member of Phi Beta Kappa. After graduation Bush embarked on a career in the oil industry of West Texas.
+
+Like his father, Prescott Bush, who was elected a Senator from Connecticut in 1952, George became interested in public service and politics. He served two terms as a Representative to Congress from Texas. Twice he ran unsuccessfully for the Senate. Then he was appointed to a series of high-level positions: Ambassador to the United Nations, Chairman of the Republican National Committee, Chief of the U. S. Liaison Office in the People's Republic of China, and Director of the Central Intelligence Agency.
+
+In 1980 Bush campaigned for the Republican nomination for President. He lost, but was chosen as a running mate by Ronald Reagan. As Vice President, Bush had responsibility in several domestic areas, including Federal deregulation and anti-drug programs, and visited scores of foreign countries. In 1988 Bush won the Republican nomination for President and, with Senator Dan Quayle of Indiana as his running mate, he defeated Massachusetts Governor Michael Dukakis in the general election.
+
+Bush faced a dramatically changing world, as the Cold War ended after 40 bitter years, the Communist empire broke up, and the Berlin Wall fell. The Soviet Union ceased to exist; and reformist President Mikhail Gorbachev, whom Bush had supported, resigned. While Bush hailed the march of democracy, he insisted on restraint in U. S. policy toward the group of new nations.
+
+In other areas of foreign policy, President Bush sent American troops into Panama to overthrow the corrupt regime of General Manuel Noriega, who was threatening the security of the canal and the Americans living there. Noriega was brought to the United States for trial as a drug trafficker.
+
+Bush's greatest test came when Iraqi President Saddam Hussein invaded Kuwait, then threatened to move into Saudi Arabia. Vowing to free Kuwait, Bush rallied the United Nations, the U. S. people, and Congress and sent 425,000 American troops. They were joined by 118,000 troops from allied nations. After weeks of air and missile bombardment, the 100-hour land battle dubbed Desert Storm routed Iraq's million-man army.
+
+Despite unprecedented popularity from this military and diplomatic triumph, Bush was unable to withstand discontent at home from a faltering economy, rising violence in inner cities, and continued high deficit spending. In 1992 he lost his bid for reelection to Democrat William Clinton.
+
+
+At the end of his two terms in office, Ronald Reagan viewed with satisfaction the achievements of his innovative program known as the Reagan Revolution, which aimed to reinvigorate the American people and reduce their reliance upon Government. He felt he had fulfilled his campaign pledge of 1980 to restore "the great, confident roar of American progress and growth and optimism."
+
+On February 6, 1911, Ronald Wilson Reagan was born to Nelle and John Reagan in Tampico, Illinois. He attended high school in nearby Dixon and then worked his way through Eureka College. There, he studied economics and sociology, played on the football team, and acted in school plays. Upon graduation, he became a radio sports announcer. A screen test in 1937 won him a contract in Hollywood. During the next two decades he appeared in 53 films.
+
+From his first marriage to actress Jane Wyman, he had two children, Maureen and Michael. Maureen passed away in 2001. In 1952 he married Nancy Davis, who was also an actress, and they had two children, Patricia Ann and Ronald Prescott.
+
+As president of the Screen Actors Guild, Reagan became embroiled in disputes over the issue of Communism in the film industry; his political views shifted from liberal to conservative. He toured the country as a television host, becoming a spokesman for conservatism. In 1966 he was elected Governor of California by a margin of a million votes; he was re-elected in 1970.
+
+Ronald Reagan won the Republican Presidential nomination in 1980 and chose as his running mate former Texas Congressman and United Nations Ambassador George Bush. Voters troubled by inflation and by the year-long confinement of Americans in Iran swept the Republican ticket into office. Reagan won 489 electoral votes to 49 for President Jimmy Carter.
+
+On January 20, 1981, Reagan took office. Only 69 days later he was shot by a would-be assassin, but quickly recovered and returned to duty. His grace and wit during the dangerous incident caused his popularity to soar.
+
+Dealing skillfully with Congress, Reagan obtained legislation to stimulate economic growth, curb inflation, increase employment, and strengthen national defense. He embarked upon a course of cutting taxes and Government expenditures, refusing to deviate from it when the strengthening of defense forces led to a large deficit.
+
+A renewal of national self-confidence by 1984 helped Reagan and Bush win a second term with an unprecedented number of electoral votes. Their victory turned away Democratic challengers Walter F. Mondale and Geraldine Ferraro.
+
+In 1986 Reagan obtained an overhaul of the income tax code, which eliminated many deductions and exempted millions of people with low incomes. At the end of his administration, the Nation was enjoying its longest recorded period of peacetime prosperity without recession or depression.
+
+In foreign policy, Reagan sought to achieve "peace through strength." During his two terms he increased defense spending 35 percent, but sought to improve relations with the Soviet Union. In dramatic meetings with Soviet leader Mikhail Gorbachev, he negotiated a treaty that would eliminate intermediate-range nuclear missiles. Reagan declared war against international terrorism, sending American bombers against Libya after evidence came out that Libya was involved in an attack on American soldiers in a West Berlin nightclub.
+
+By ordering naval escorts in the Persian Gulf, he maintained the free flow of oil during the Iran-Iraq war. In keeping with the Reagan Doctrine, he gave support to anti-Communist insurgencies in Central America, Asia, and Africa.
+
+Overall, the Reagan years saw a restoration of prosperity, and the goal of peace through strength seemed to be within grasp.
+
+Jimmy Carter aspired to make Government "competent and compassionate," responsive to the American people and their expectations. His achievements were notable, but in an era of rising energy costs, mounting inflation, and continuing tensions, it was impossible for his administration to meet these high expectations.
+
+Carter, who has rarely used his full name--James Earl Carter, Jr.--was born October 1, 1924, in Plains, Georgia. Peanut farming, talk of politics, and devotion to the Baptist faith were mainstays of his upbringing. Upon graduation in 1946 from the Naval Academy in Annapolis, Maryland, Carter married Rosalynn Smith. The Carters have three sons, John William (Jack), James Earl III (Chip), Donnel Jeffrey (Jeff), and a daughter, Amy Lynn.
+
+After seven years' service as a naval officer, Carter returned to Plains. In 1962 he entered state politics, and eight years later he was elected Governor of Georgia. Among the new young southern governors, he attracted attention by emphasizing ecology, efficiency in government, and the removal of racial barriers.
+
+Carter announced his candidacy for President in December 1974 and began a two-year campaign that gradually gained momentum. At the Democratic Convention, he was nominated on the first ballot. He chose Senator Walter F. Mondale of Minnesota as his running mate. Carter campaigned hard against President Gerald R. Ford, debating with him three times. Carter won by 297 electoral votes to 241 for Ford.
+
+Carter worked hard to combat the continuing economic woes of inflation and unemployment. By the end of his administration, he could claim an increase of nearly eight million jobs and a decrease in the budget deficit, measured in percentage of the gross national product. Unfortunately, inflation and interest rates were at near record highs, and efforts to reduce them caused a short recession.
+
+Carter could point to a number of achievements in domestic affairs. He dealt with the energy shortage by establishing a national energy policy and by decontrolling domestic petroleum prices to stimulate production. He prompted Government efficiency through civil service reform and proceeded with deregulation of the trucking and airline industries. He sought to improve the environment. His expansion of the national park system included protection of 103 million acres of Alaskan lands. To increase human and social services, he created the Department of Education, bolstered the Social Security system, and appointed record numbers of women, blacks, and Hispanics to Government jobs.
+
+In foreign affairs, Carter set his own style. His championing of human rights was coldly received by the Soviet Union and some other nations. In the Middle East, through the Camp David agreement of 1978, he helped bring amity between Egypt and Israel. He succeeded in obtaining ratification of the Panama Canal treaties. Building upon the work of predecessors, he established full diplomatic relations with the People's Republic of China and completed negotiation of the SALT II nuclear limitation treaty with the Soviet Union.
+
+There were serious setbacks, however. The Soviet invasion of Afghanistan caused the suspension of plans for ratification of the SALT II pact. The seizure as hostages of the U. S. embassy staff in Iran dominated the news during the last 14 months of the administration. The consequences of Iran's holding Americans captive, together with continuing inflation at home, contributed to Carter's defeat in 1980. Even then, he continued the difficult negotiations over the hostages. Iran finally released the 52 Americans the same day Carter left office.
+
+
+At 2:30 on the morning of August 3, 1923, while visiting in Vermont, Calvin Coolidge received word that he was President. By the light of a kerosene lamp, his father, who was a notary public, administered the oath of office as Coolidge placed his hand on the family Bible.
+
+Coolidge was "distinguished for character more than for heroic achievement," wrote a Democratic admirer, Alfred E. Smith. "His great task was to restore the dignity and prestige of the Presidency when it had reached the lowest ebb in our history ... in a time of extravagance and waste...."
+
+Born in Plymouth, Vermont, on July 4, 1872, Coolidge was the son of a village storekeeper. He was graduated from Amherst College with honors, and entered law and politics in Northampton, Massachusetts. Slowly, methodically, he went up the political ladder from councilman in Northampton to Governor of Massachusetts, as a Republican. En route he became thoroughly conservative.
+
+As President, Coolidge demonstrated his determination to preserve the old moral and economic precepts amid the material prosperity which many Americans were enjoying. He refused to use Federal economic power to check the growing boom or to ameliorate the depressed condition of agriculture and certain industries. His first message to Congress in December 1923 called for isolation in foreign policy, and for tax cuts, economy, and limited aid to farmers.
+
+He rapidly became popular. In 1924, as the beneficiary of what was becoming known as "Coolidge prosperity," he polled more than 54 percent of the popular vote.
+
+In his Inaugural he asserted that the country had achieved "a state of contentment seldom before seen," and pledged himself to maintain the status quo. In subsequent years he twice vetoed farm relief bills, and killed a plan to produce cheap Federal electric power on the Tennessee River.
+
+The political genius of President Coolidge, Walter Lippmann pointed out in 1926, was his talent for effectively doing nothing: "This active inactivity suits the mood and certain of the needs of the country admirably. It suits all the business interests which want to be let alone.... And it suits all those who have become convinced that government in this country has become dangerously complicated and top-heavy...."
+
+Coolidge was both the most negative and remote of Presidents, and the most accessible. He once explained to Bernard Baruch why he often sat silently through interviews: "Well, Baruch, many times I say only 'yes' or 'no' to people. Even that is too much. It winds them up for twenty minutes more."
+
+But no President was kinder in permitting himself to be photographed in Indian war bonnets or cowboy dress, and in greeting a variety of delegations to the White House.
+
+Both his dry Yankee wit and his frugality with words became legendary. His wife, Grace Goodhue Coolidge, recounted that a young woman sitting next to Coolidge at a dinner party confided to him she had bet she could get at least three words of conversation from him. Without looking at her he quietly retorted, "You lose." And in 1928, while vacationing in the Black Hills of South Dakota, he issued the most famous of his laconic statements, "I do not choose to run for President in 1928."
+
+By the time the disaster of the Great Depression hit the country, Coolidge was in retirement. Before his death in January 1933, he confided to an old friend, ". . . I feel I no longer fit in with these times."
+
+When Gerald R. Ford took the oath of office on August 9, 1974, he declared, "I assume the Presidency under extraordinary circumstances.... This is an hour of history that troubles our minds and hurts our hearts."
+
+It was indeed an unprecedented time. He had been the first Vice President chosen under the terms of the Twenty-fifth Amendment and, in the aftermath of the Watergate scandal, was succeeding the first President ever to resign.
+
+Ford was confronted with almost insuperable tasks. There were the challenges of mastering inflation, reviving a depressed economy, solving chronic energy shortages, and trying to ensure world peace.
+
+The President acted to curb the trend toward Government intervention and spending as a means of solving the problems of American society and the economy. In the long run, he believed, this shift would bring a better life for all Americans.
+
+Ford's reputation for integrity and openness had made him popular during his 25 years in Congress. From 1965 to 1973, he was House Minority Leader. Born in Omaha, Nebraska, in 1913, he grew up in Grand Rapids, Michigan. He starred on the University of Michigan football team, then went to Yale, where he served as assistant coach while earning his law degree. During World War II he attained the rank of lieutenant commander in the Navy. After the war he returned to Grand Rapids, where he began the practice of law, and entered Republican politics. A few weeks before his election to Congress in 1948, he married Elizabeth Bloomer. They have four children: Michael, John, Steven, and Susan.
+
+As President, Ford tried to calm earlier controversies by granting former President Nixon a full pardon. His nominee for Vice President, former Governor Nelson Rockefeller of New York, was the second person to fill that office by appointment. Gradually, Ford selected a cabinet of his own.
+
+Ford established his policies during his first year in office, despite opposition from a heavily Democratic Congress. His first goal was to curb inflation. Then, when recession became the Nation's most serious domestic problem, he shifted to measures aimed at stimulating the economy. But, still fearing inflation, Ford vetoed a number of non-military appropriations bills that would have further increased the already heavy budgetary deficit. During his first 14 months as President he vetoed 39 measures. His vetoes were usually sustained.
+
+Ford continued as he had in his Congressional days to view himself as "a moderate in domestic affairs, a conservative in fiscal affairs, and a dyed-in-the-wool internationalist in foreign affairs." A major goal was to help business operate more freely by reducing taxes upon it and easing the controls exercised by regulatory agencies. "We...declared our independence 200 years ago, and we are not about to lose it now to paper shufflers and computers," he said.
+
+In foreign affairs Ford acted vigorously to maintain U. S. power and prestige after the collapse of Cambodia and South Viet Nam. Preventing a new war in the Middle East remained a major objective; by providing aid to both Israel and Egypt, the Ford Administration helped persuade the two countries to accept an interim truce agreement. Detente with the Soviet Union continued. President Ford and Soviet leader Leonid I. Brezhnev set new limitations upon nuclear weapons.
+
+President Ford won the Republican nomination for the Presidency in 1976, but lost the election to his Democratic opponent, former Governor Jimmy Carter of Georgia.
+
+On Inauguration Day, President Carter began his speech: "For myself and for our Nation, I want to thank my predecessor for all he has done to heal our land." A grateful people concurred.
+
+Before his nomination, Warren G. Harding declared, "America's present need is not heroics, but healing; not nostrums, but normalcy; not revolution, but restoration; not agitation, but adjustment; not surgery, but serenity; not the dramatic, but the dispassionate; not experiment, but equipoise; not submergence in internationality, but sustainment in triumphant nationality...."
+
+A Democratic leader, William Gibbs McAdoo, called Harding's speeches "an army of pompous phrases moving across the landscape in search of an idea." Their very murkiness was effective, since Harding's pronouncements remained unclear on the League of Nations, in contrast to the impassioned crusade of the Democratic candidates, Governor James M. Cox of Ohio and Franklin D. Roosevelt.
+
+Thirty-one distinguished Republicans had signed a manifesto assuring voters that a vote for Harding was a vote for the League. But Harding interpreted his election as a mandate to stay out of the League of Nations.
+
+Harding, born near Marion, Ohio, in 1865, became the publisher of a newspaper. He married a divorcee, Mrs. Florence Kling De Wolfe. He was a trustee of the Trinity Baptist Church, a director of almost every important business, and a leader in fraternal organizations and charitable enterprises.
+
+He organized the Citizen's Cornet Band, available for both Republican and Democratic rallies; "I played every instrument but the slide trombone and the E-flat cornet," he once remarked.
+
+Harding's undeviating Republicanism and vibrant speaking voice, plus his willingness to let the machine bosses set policies, led him far in Ohio politics. He served in the state Senate and as Lieutenant Governor, and unsuccessfully ran for Governor. He delivered the nominating address for President Taft at the 1912 Republican Convention. In 1914 he was elected to the Senate, which he found "a very pleasant place."
+
+An Ohio admirer, Harry Daugherty, began to promote Harding for the 1920 Republican nomination because, he later explained, "He looked like a President."
+
+Thus a group of Senators, taking control of the 1920 Republican Convention when the principal candidates deadlocked, turned to Harding. He won the Presidential election by an unprecedented landslide of 60 percent of the popular vote.
+
+Republicans in Congress easily got the President's signature on their bills. They eliminated wartime controls and slashed taxes, established a Federal budget system, restored the high protective tariff, and imposed tight limitations upon immigration.
+
+By 1923 the postwar depression seemed to be giving way to a new surge of prosperity, and newspapers hailed Harding as a wise statesman carrying out his campaign promise--"Less government in business and more business in government."
+
+Behind the facade, not all of Harding's Administration was so impressive. Word began to reach the President that some of his friends were using their official positions for their own enrichment. Alarmed, he complained, "My...friends...they're the ones that keep me walking the floors nights!"
+
+Looking wan and depressed, Harding journeyed westward in the summer of 1923, taking with him his upright Secretary of Commerce, Herbert Hoover. "If you knew of a great scandal in our administration," he asked Hoover, "would you for the good of the country and the party expose it publicly or would you bury it?" Hoover urged publishing it, but Harding feared the political repercussions.
+
+He did not live to find out how the public would react to the scandals of his administration. In August of 1923, he died in San Francisco of a heart attack.
+
+Reconciliation was the first goal set by President Richard M. Nixon. The Nation was painfully divided, with turbulence in the cities and war overseas. During his Presidency, Nixon succeeded in ending American fighting in Viet Nam and improving relations with the U.S.S.R. and China. But the Watergate scandal brought fresh divisions to the country and ultimately led to his resignation.
+
+His election in 1968 had climaxed a career unusual on two counts: his early success and his comeback after being defeated for President in 1960 and for Governor of California in 1962.
+
+Born in California in 1913, Nixon had a brilliant record at Whittier College and Duke University Law School before beginning the practice of law. In 1940, he married Patricia Ryan; they had two daughters, Patricia (Tricia) and Julie. During World War II, Nixon served as a Navy lieutenant commander in the Pacific.
+
+On leaving the service, he was elected to Congress from his California district. In 1950, he won a Senate seat. Two years later, General Eisenhower selected Nixon, age 39, to be his running mate.
+
+As Vice President, Nixon took on major duties in the Eisenhower Administration. Nominated for President by acclamation in 1960, he lost by a narrow margin to John F. Kennedy. In 1968, he again won his party's nomination, and went on to defeat Vice President Hubert H. Humphrey and third-party candidate George C. Wallace.
+
+His accomplishments while in office included revenue sharing, the end of the draft, new anticrime laws, and a broad environmental program. As he had promised, he appointed Justices of conservative philosophy to the Supreme Court. One of the most dramatic events of his first term occurred in 1969, when American astronauts made the first moon landing.
+
+Some of his most acclaimed achievements came in his quest for world stability. During visits in 1972 to Beijing and Moscow, he reduced tensions with China and the U.S.S.R. His summit meetings with Russian leader Leonid I. Brezhnev produced a treaty to limit strategic nuclear weapons. In January 1973, he announced an accord with North Viet Nam to end American involvement in Indochina. In 1974, his Secretary of State, Henry Kissinger, negotiated disengagement agreements between Israel and
+its opponents, Egypt and Syria.
+
+In his 1972 bid for office, Nixon defeated Democratic candidate George McGovern by one of the widest margins on record.
+
+Within a few months, his administration was embattled over the so-called "Watergate" scandal, stemming from a break-in at the offices of the Democratic National Committee during the 1972 campaign. The break-in was traced to officials of the Committee to Re-elect the President. A number of administration officials resigned; some were later convicted of offenses connected with efforts to cover up the affair. Nixon denied any personal involvement, but the courts forced him to
+yield tape recordings which indicated that he had, in fact, tried to divert the investigation.
+
+As a result of unrelated scandals in Maryland, Vice President Spiro T. Agnew resigned in 1973. Nixon nominated, and Congress approved, House Minority Leader Gerald R. Ford as Vice President.
+
+Faced with what seemed almost certain impeachment, Nixon announced on August 8, 1974, that he would resign the next day to begin "that process of healing which is so desperately needed in America."
+
+In his last years, Nixon gained praise as an elder statesman. By the time of his death on April 22, 1994, he had written numerous books on his experiences in public life and on foreign policy.
+
+"A Great Society" for the American people and their fellow men elsewhere was the vision of Lyndon B. Johnson. In his first years of office he obtained passage of one of the most extensive legislative programs in the Nation's history. Maintaining collective security, he carried on the rapidly growing struggle to restrain Communist encroachment in Viet Nam.
+
+Johnson was born on August 27, 1908, in central Texas, not far from Johnson City, which his family had helped settle. He felt the pinch of rural poverty as he grew up, working his way through Southwest Texas State Teachers College (now known as Texas State University-San Marcos); he learned compassion for the poverty of others when he taught students of Mexican descent.
+
+In 1937 he campaigned successfully for the House of Representatives on a New Deal platform, effectively aided by his wife, the former Claudia "Lady Bird" Taylor, whom he had married in 1934.
+
+During World War II he served briefly in the Navy as a lieutenant commander, winning a Silver Star in the South Pacific. After six terms in the House, Johnson was elected to the Senate in 1948. In 1953, he became the youngest Minority Leader in Senate history, and the following year, when the Democrats won control, Majority Leader. With rare skill he obtained passage of a number of key Eisenhower measures.
+
+In the 1960 campaign, Johnson, as John F. Kennedy's running mate, was elected Vice President. On November 22, 1963, when Kennedy was assassinated, Johnson was sworn in as President.
+
+First he obtained enactment of the measures President Kennedy had been urging at the time of his death--a new civil rights bill and a tax cut. Next he urged the Nation "to build a great society, a place where the meaning of man's life matches the marvels of man's labor." In 1964, Johnson won the Presidency with 61 percent of the vote and had the widest popular margin in American history--more than 15,000,000 votes.
+
+The Great Society program became Johnson's agenda for Congress in January 1965: aid to education, attack on disease, Medicare, urban renewal, beautification, conservation, development of depressed regions, a wide-scale fight against poverty, control and prevention of crime and delinquency, removal of obstacles to the right to vote. Congress, at times augmenting or amending, rapidly enacted Johnson's recommendations. Millions of elderly people found succor through the 1965
+Medicare amendment to the Social Security Act.
+
+Under Johnson, the country made spectacular explorations of space in a program he had championed since its start. When three astronauts successfully orbited the moon in December 1968, Johnson congratulated them: "You've taken ... all of us, all over the world, into a new era. . . . "
+
+Nevertheless, two overriding crises had been gaining momentum since 1965. Despite the beginning of new antipoverty and anti-discrimination programs, unrest and rioting in black ghettos troubled the Nation. President Johnson steadily exerted his influence against segregation and on behalf of law and order, but there was no early solution.
+
+The other crisis arose from Viet Nam. Despite Johnson's efforts to end Communist aggression and achieve a settlement, fighting continued. Controversy over the war had become acute by the end of March 1968, when he limited the bombing of North Viet Nam in order to initiate negotiations. At the same time, he startled the world by withdrawing as a candidate for re-election so that he might devote his full efforts, unimpeded by politics, to the quest for peace.
+
+When he left office, peace talks were under way; he did not live to see them successful, but died suddenly of a heart attack at his Texas ranch on January 22, 1973.
+
+On November 22, 1963, when he was hardly past his first thousand days in office, John Fitzgerald Kennedy was killed by an assassin's bullets as his motorcade wound through Dallas, Texas. Kennedy was the youngest man elected President; he was the youngest to die.
+
+Of Irish descent, he was born in Brookline, Massachusetts, on May 29, 1917. Graduating from Harvard in 1940, he entered the Navy. In 1943, when his PT boat was rammed and sunk by a Japanese destroyer, Kennedy, despite grave injuries, led the survivors through perilous waters to safety.
+
+Back from the war, he became a Democratic Congressman from the Boston area, advancing in 1953 to the Senate. He married Jacqueline Bouvier on September 12, 1953. In 1955, while recuperating from a back operation, he wrote Profiles in Courage, which won the Pulitzer Prize in history.
+
+In 1956 Kennedy almost gained the Democratic nomination for Vice President, and four years later was a first-ballot nominee for President. Millions watched his television debates with the Republican candidate, Richard M. Nixon. Winning by a narrow margin in the popular vote, Kennedy became the first Roman Catholic President.
+
+His Inaugural Address offered the memorable injunction: "Ask not what your country can do for you--ask what you can do for your country." As President, he set out to redeem his campaign pledge to get America moving again. His economic programs launched the country on its longest sustained expansion since World War II; before his death, he laid plans for a massive assault on persisting pockets of privation and poverty.
+
+Responding to ever more urgent demands, he took vigorous action in the cause of equal rights, calling for new civil rights legislation. His vision of America extended to the quality of the national culture and the central role of the arts in a vital society.
+
+He wished America to resume its old mission as the first nation dedicated to the revolution of human rights. With the Alliance for Progress and the Peace Corps, he brought American idealism to the aid of developing nations. But the hard reality of the Communist challenge remained.
+
+Shortly after his inauguration, Kennedy permitted a band of Cuban exiles, already armed and trained, to invade their homeland. The attempt to overthrow the regime of Fidel Castro was a failure. Soon thereafter, the Soviet Union renewed its campaign against West Berlin. Kennedy replied by reinforcing the Berlin garrison and increasing the Nation's military strength, including new efforts in outer space. Confronted by this reaction, Moscow, after the erection of the Berlin Wall, relaxed its
+pressure in central Europe.
+
+Instead, the Russians now sought to install nuclear missiles in Cuba. When this was discovered by air reconnaissance in October 1962, Kennedy imposed a quarantine on all offensive weapons bound for Cuba. While the world trembled on the brink of nuclear war, the Russians backed down and agreed to take the missiles away. The American response to the Cuban crisis evidently persuaded Moscow of the futility of nuclear blackmail.
+
+Kennedy now contended that both sides had a vital interest in stopping the spread of nuclear weapons and slowing the arms race--a contention which led to the test ban treaty of 1963. The months after the Cuban crisis showed significant progress toward his goal of "a world of law and free choice, banishing the world of war and coercion." His administration thus saw the beginning of new hope for both the equal rights of Americans and the peace of the world.
+
+Bringing to the Presidency his prestige as commanding general of the victorious forces in Europe during World War II, Dwight D. Eisenhower obtained a truce in Korea and worked incessantly during his two terms to ease the tensions of the Cold War. He pursued the moderate policies of "Modern Republicanism," pointing out as he left office, "America is today the strongest, most influential, and most productive nation in the world."
+
+Born in Texas in 1890, brought up in Abilene, Kansas, Eisenhower was the third of seven sons. He excelled in sports in high school, and received an appointment to West Point. Stationed in Texas as a second lieutenant, he met Mamie Geneva Doud, whom he married in 1916.
+
+In his early Army career, he excelled in staff assignments, serving under Generals John J. Pershing, Douglas MacArthur, and Walter Krueger. After Pearl Harbor, General George C. Marshall called him to Washington for a war plans assignment. He commanded the Allied Forces landing in North Africa in November 1942; on D-Day, 1944, he was Supreme Commander of the troops invading France.
+
+After the war, he became President of Columbia University, then took leave to assume supreme command over the new NATO forces being assembled in 1951. Republican emissaries to his headquarters near Paris persuaded him to run for President in 1952.
+
+"I like Ike" was an irresistible slogan; Eisenhower won a sweeping victory.
+
+Negotiating from military strength, he tried to reduce the strains of the Cold War. In 1953, the signing of a truce brought an armed peace along the border of South Korea. The death of Stalin the same year caused shifts in relations with Russia.
+
+New Russian leaders consented to a peace treaty neutralizing Austria. Meanwhile, both Russia and the United States had developed hydrogen bombs. With the threat of such destructive force hanging over the world, Eisenhower, with the leaders of the British, French, and Russian governments, met at Geneva in July 1955.
+
+The President proposed that the United States and Russia exchange blueprints of each other's military establishments and "provide within our countries facilities for aerial photography to the other country." The Russians greeted the proposal with silence, but were so cordial throughout the meetings that tensions relaxed.
+
+Suddenly, in September 1955, Eisenhower suffered a heart attack in Denver, Colorado. After seven weeks he left the hospital, and in February 1956 doctors reported his recovery. In November he was elected for his second term.
+
+In domestic policy the President pursued a middle course, continuing most of the New Deal and Fair Deal programs, emphasizing a balanced budget. As desegregation of schools began, he sent troops into Little Rock, Arkansas, to assure compliance with the orders of a Federal court; he also ordered the complete desegregation of the Armed Forces. "There must be no second class citizens in this country," he wrote.
+
+Eisenhower concentrated on maintaining world peace. He watched with pleasure the development of his "atoms for peace" program--the loan of American uranium to "have not" nations for peaceful purposes.
+
+Before he left office in January 1961, for his farm in Gettysburg, he urged the necessity of maintaining an adequate military strength, but cautioned that vast, long-continued military expenditures could breed potential dangers to our way of life. He concluded with a prayer for peace "in the goodness of time." Both themes remained timely and urgent when he died, after a long illness, on March 28, 1969.
diff --git a/CoreNLP/stanford-corenlp-4.5.7/patterns/stopwords.txt b/CoreNLP/stanford-corenlp-4.5.7/patterns/stopwords.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a610b143ddd2e15ec8cb9473766ea6fe43bcae1e
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/patterns/stopwords.txt
@@ -0,0 +1,257 @@
+!!
+?!
+??
+!?
+`
+``
+''
+-lrb-
+-rrb-
+-lsb-
+-rsb-
+,
+.
+:
+;
+"
+'
+?
+<
+>
+{
+}
+[
+]
++
+-
+(
+)
+&
+%
+$
+@
+!
+^
+#
+*
+..
+...
+'ll
+'s
+'m
+a
+about
+above
+after
+again
+against
+all
+am
+an
+and
+any
+are
+aren't
+as
+at
+be
+because
+been
+before
+being
+below
+between
+both
+but
+by
+can
+can't
+cannot
+could
+couldn't
+did
+didn't
+do
+does
+doesn't
+doing
+don't
+down
+during
+each
+few
+for
+from
+further
+had
+hadn't
+has
+hasn't
+have
+haven't
+having
+he
+he'd
+he'll
+he's
+her
+here
+here's
+hers
+herself
+him
+himself
+his
+how
+how's
+i
+i'd
+i'll
+i'm
+i've
+if
+in
+into
+is
+isn't
+it
+it's
+its
+itself
+let's
+me
+more
+most
+mustn't
+my
+myself
+no
+nor
+not
+of
+off
+on
+once
+only
+or
+other
+ought
+our
+ours
+ourselves
+out
+over
+own
+same
+shan't
+she
+she'd
+she'll
+she's
+should
+shouldn't
+so
+some
+such
+than
+that
+that's
+the
+their
+theirs
+them
+themselves
+then
+there
+there's
+these
+they
+they'd
+they'll
+they're
+they've
+this
+those
+through
+to
+too
+under
+until
+up
+very
+was
+wasn't
+we
+we'd
+we'll
+we're
+we've
+were
+weren't
+what
+what's
+when
+when's
+where
+where's
+which
+while
+who
+who's
+whom
+why
+why's
+with
+won't
+would
+wouldn't
+you
+you'd
+you'll
+you're
+you've
+your
+yours
+yourself
+yourselves
+###
+return
+arent
+cant
+couldnt
+didnt
+doesnt
+dont
+hadnt
+hasnt
+havent
+hes
+heres
+hows
+im
+isnt
+its
+lets
+mustnt
+shant
+shes
+shouldnt
+thats
+theres
+theyll
+theyre
+theyve
+wasnt
+were
+werent
+whats
+whens
+wheres
+whos
+whys
+wont
+wouldnt
+youd
+youll
+youre
+youve
diff --git a/CoreNLP/stanford-corenlp-4.5.7/pom-java-11.xml b/CoreNLP/stanford-corenlp-4.5.7/pom-java-11.xml
new file mode 100644
index 0000000000000000000000000000000000000000..968030244626c53bcbcd99be10858bd3d66028b5
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/pom-java-11.xml
@@ -0,0 +1,228 @@
+
+ 4.0.0
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ jar
+ Stanford CoreNLP
+ Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, mark up the structure of sentences in terms of phrases and word dependencies, and indicate which noun phrases refer to the same entities. It provides the foundational building blocks for higher level text understanding applications.
+ https://nlp.stanford.edu/software/corenlp.html
+
+
+ GNU General Public License Version 3
+ http://www.gnu.org/licenses/gpl-3.0.txt
+
+
+
+ https://nlp.stanford.edu/software/stanford-corenlp-4.5.7.zip
+ https://nlp.stanford.edu/software/stanford-corenlp-4.5.7.zip
+
+
+
+ christopher.manning
+ Christopher Manning
+ manning@stanford.edu
+
+
+ jason.bolton
+ Jason Bolton
+ jebolton@stanford.edu
+
+
+ john.bauer
+ John Bauer
+ horatio@gmail.com
+
+
+
+ UTF-8
+
+
+
+
+ com.apple
+ AppleJavaExtensions
+ 1.4
+
+
+
+ de.jollyday
+ jollyday
+ 0.4.9
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.3.1
+
+
+
+ org.apache.lucene
+ lucene-queryparser
+ 7.5.0
+
+
+
+ org.apache.lucene
+ lucene-analyzers-common
+ 7.5.0
+
+
+
+ org.apache.lucene
+ lucene-core
+ 7.5.0
+
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ 4.0.4
+
+
+
+ xom
+ xom
+ 1.3.9
+
+
+
+
+ xalan
+ xalan
+ 2.7.3
+
+
+ xalan
+ serializer
+ 2.7.3
+
+
+
+ joda-time
+ joda-time
+ 2.10.5
+
+
+
+ org.ejml
+ ejml-core
+ 0.39
+
+
+
+ org.ejml
+ ejml-ddense
+ 0.39
+
+
+
+ org.ejml
+ ejml-simple
+ 0.39
+
+
+
+ org.glassfish
+ javax.json
+ 1.0.4
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.12
+
+
+
+ com.google.protobuf
+ protobuf-java
+ 3.19.6
+
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+
+ com.pholser
+ junit-quickcheck-core
+ 0.5
+ test
+
+
+
+ com.pholser
+ junit-quickcheck-generators
+ 0.5
+ test
+
+
+
+ javax.activation
+ javax.activation-api
+ 1.2.0
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.4.0-b180830.0359
+
+
+
+ com.sun.istack
+ istack-commons-runtime
+ 3.0.7
+
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ 2.4.0-b180830.0438
+
+
+
+
+ src
+ test/src
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.7
+
+
+ attach-models
+ package
+
+ attach-artifact
+
+
+
+
+ ${project.basedir}/stanford-corenlp-4.5.7-models.jar
+ jar
+ models
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 11
+
+
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/pom-java-17.xml b/CoreNLP/stanford-corenlp-4.5.7/pom-java-17.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f84ba861c4980606c2a8f8925cad9b48ce2c7241
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/pom-java-17.xml
@@ -0,0 +1,228 @@
+
+ 4.0.0
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ jar
+ Stanford CoreNLP
+ Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, mark up the structure of sentences in terms of phrases and word dependencies, and indicate which noun phrases refer to the same entities. It provides the foundational building blocks for higher level text understanding applications.
+ https://nlp.stanford.edu/software/corenlp.html
+
+
+ GNU General Public License Version 3
+ http://www.gnu.org/licenses/gpl-3.0.txt
+
+
+
+ https://nlp.stanford.edu/software/stanford-corenlp-4.5.7.zip
+ https://nlp.stanford.edu/software/stanford-corenlp-4.5.7.zip
+
+
+
+ christopher.manning
+ Christopher Manning
+ manning@stanford.edu
+
+
+ jason.bolton
+ Jason Bolton
+ jebolton@stanford.edu
+
+
+ john.bauer
+ John Bauer
+ horatio@gmail.com
+
+
+
+ UTF-8
+
+
+
+
+ com.apple
+ AppleJavaExtensions
+ 1.4
+
+
+
+ de.jollyday
+ jollyday
+ 0.4.9
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.3.1
+
+
+
+ org.apache.lucene
+ lucene-queryparser
+ 7.5.0
+
+
+
+ org.apache.lucene
+ lucene-analyzers-common
+ 7.5.0
+
+
+
+ org.apache.lucene
+ lucene-core
+ 7.5.0
+
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ 4.0.4
+
+
+
+ xom
+ xom
+ 1.3.9
+
+
+
+
+ xalan
+ xalan
+ 2.7.3
+
+
+ xalan
+ serializer
+ 2.7.3
+
+
+
+ joda-time
+ joda-time
+ 2.10.5
+
+
+
+ org.ejml
+ ejml-core
+ 0.39
+
+
+
+ org.ejml
+ ejml-ddense
+ 0.39
+
+
+
+ org.ejml
+ ejml-simple
+ 0.39
+
+
+
+ org.glassfish
+ javax.json
+ 1.0.4
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.12
+
+
+
+ com.google.protobuf
+ protobuf-java
+ 3.19.6
+
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+
+ com.pholser
+ junit-quickcheck-core
+ 0.5
+ test
+
+
+
+ com.pholser
+ junit-quickcheck-generators
+ 0.5
+ test
+
+
+
+ javax.activation
+ javax.activation-api
+ 1.2.0
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.4.0-b180830.0359
+
+
+
+ com.sun.istack
+ istack-commons-runtime
+ 3.0.7
+
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ 2.4.0-b180830.0438
+
+
+
+
+ src
+ test/src
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.7
+
+
+ attach-models
+ package
+
+ attach-artifact
+
+
+
+
+ ${project.basedir}/stanford-corenlp-4.5.7-models.jar
+ jar
+ models
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 17
+
+
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/pom.xml b/CoreNLP/stanford-corenlp-4.5.7/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ebfc2144e5e5838c29d464224cea3dcd1af381f5
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/pom.xml
@@ -0,0 +1,222 @@
+
+ 4.0.0
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ jar
+ Stanford CoreNLP
+ Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, mark up the structure of sentences in terms of phrases and word dependencies, and indicate which noun phrases refer to the same entities. It provides the foundational building blocks for higher level text understanding applications.
+ https://nlp.stanford.edu/software/corenlp.html
+
+
+ GNU General Public License Version 3
+ http://www.gnu.org/licenses/gpl-3.0.txt
+
+
+
+ https://nlp.stanford.edu/software/stanford-corenlp-4.5.7.zip
+ https://nlp.stanford.edu/software/stanford-corenlp-4.5.7.zip
+
+
+
+ christopher.manning
+ Christopher Manning
+ manning@stanford.edu
+
+
+ jason.bolton
+ Jason Bolton
+ jebolton@stanford.edu
+
+
+ john.bauer
+ John Bauer
+ horatio@gmail.com
+
+
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+
+ com.apple
+ AppleJavaExtensions
+ 1.4
+
+
+
+ de.jollyday
+ jollyday
+ 0.4.9
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.3.1
+
+
+
+ org.apache.lucene
+ lucene-queryparser
+ 7.5.0
+
+
+
+ org.apache.lucene
+ lucene-analyzers-common
+ 7.5.0
+
+
+
+ org.apache.lucene
+ lucene-core
+ 7.5.0
+
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ 4.0.4
+
+
+
+ xom
+ xom
+ 1.3.9
+
+
+
+
+ xalan
+ xalan
+ 2.7.3
+
+
+ xalan
+ serializer
+ 2.7.3
+
+
+
+ joda-time
+ joda-time
+ 2.10.5
+
+
+
+ org.ejml
+ ejml-core
+ 0.39
+
+
+
+ org.ejml
+ ejml-ddense
+ 0.39
+
+
+
+ org.ejml
+ ejml-simple
+ 0.39
+
+
+
+ org.glassfish
+ javax.json
+ 1.0.4
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.12
+
+
+
+ com.google.protobuf
+ protobuf-java
+ 3.19.6
+
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+
+ com.pholser
+ junit-quickcheck-core
+ 0.5
+ test
+
+
+
+ com.pholser
+ junit-quickcheck-generators
+ 0.5
+ test
+
+
+
+ javax.activation
+ javax.activation-api
+ 1.2.0
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.4.0-b180830.0359
+
+
+
+ com.sun.istack
+ istack-commons-runtime
+ 3.0.7
+
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ 2.4.0-b180830.0438
+
+
+
+
+ src
+ test/src
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.7
+
+
+ attach-models
+ package
+
+ attach-artifact
+
+
+
+
+ ${project.basedir}/stanford-corenlp-4.5.7-models.jar
+ jar
+ models
+
+
+
+
+
+
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/protobuf-java-3.19.6.jar b/CoreNLP/stanford-corenlp-4.5.7/protobuf-java-3.19.6.jar
new file mode 100644
index 0000000000000000000000000000000000000000..512ed88607e172b63c98b058a57074ec0ab36d87
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/protobuf-java-3.19.6.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a9a2dff91dcf71f85be71ae971f6164b5a631dcd34bff08f0618535ca44ad02
+size 1664824
diff --git a/CoreNLP/stanford-corenlp-4.5.7/sample-project-pom.xml b/CoreNLP/stanford-corenlp-4.5.7/sample-project-pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..451efcc3d3ca7d6e1d24ccb7694c4c06b48957ed
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/sample-project-pom.xml
@@ -0,0 +1,83 @@
+
+ 4.0.0
+ edu.stanford.nlp
+ stanford-corenlp-test-app
+ jar
+ 1.0-SNAPSHOT
+ stanford-corenlp-test-app
+ http://maven.apache.org
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ javadoc
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ sources
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-arabic
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-chinese
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-english
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-english-kbp
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-french
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-german
+
+
+ edu.stanford.nlp
+ stanford-corenlp
+ 4.5.7
+ models-spanish
+
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/slf4j-api.jar b/CoreNLP/stanford-corenlp-4.5.7/slf4j-api.jar
new file mode 100644
index 0000000000000000000000000000000000000000..51e2fad1b901330b5a7fe64f76a26a830c082826
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/slf4j-api.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/slf4j-simple.jar b/CoreNLP/stanford-corenlp-4.5.7/slf4j-simple.jar
new file mode 100644
index 0000000000000000000000000000000000000000..1684bb8c898bf552bb967160c0bd4e0e083f5e2a
Binary files /dev/null and b/CoreNLP/stanford-corenlp-4.5.7/slf4j-simple.jar differ
diff --git a/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-javadoc.jar b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-javadoc.jar
new file mode 100644
index 0000000000000000000000000000000000000000..07e1e1fa2968dcaac4c4d8d3862b958fc42c985b
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-javadoc.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf071b73307d56925ea4575f992e70c6d62397716c002981aaf38705df09e6d5
+size 9834703
diff --git a/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-models.jar b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-models.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d08d7b658131ff04aca658abff369e90140a9b82
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-models.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44da9423895c33613869596c3efe7be5975c2f0458626fb72e7cdd781674f889
+size 474412047
diff --git a/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..bdeff854cbd81c000e109db437963ac9828862f7
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf363c1d01d0055c4234c5d4abf60775781f4368d8cfab3f6bbc7c4dc5bfef87
+size 5734476
diff --git a/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7.jar b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7.jar
new file mode 100644
index 0000000000000000000000000000000000000000..090db9746ad08328f2d7532ccda63933922cb5a6
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/stanford-corenlp-4.5.7.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d8c74ddd1a199c5b1e50a8e91b056a225ece5763dde23eedc557106153da0d8
+size 8956174
diff --git a/CoreNLP/stanford-corenlp-4.5.7/sutime/british.sutime.txt b/CoreNLP/stanford-corenlp-4.5.7/sutime/british.sutime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f0aeddbcdb1a0ac25a1d9d5530a212d5e46493b
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/sutime/british.sutime.txt
@@ -0,0 +1,7 @@
+###############################################################
+
+ ENV.defaults["ruleType"] = "tokens"
+ ENV.defaults["priority"] = 0
+ ENV.defaults["locale"] = "en"
+
+ { ruleType: "time", pattern: /dd?\\?\/MM?\\?\/(yyyy|yy)/ }
\ No newline at end of file
diff --git a/CoreNLP/stanford-corenlp-4.5.7/sutime/defs.sutime.txt b/CoreNLP/stanford-corenlp-4.5.7/sutime/defs.sutime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6b027ecca5342b51ea24258234ff40193d650c89
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/sutime/defs.sutime.txt
@@ -0,0 +1,230 @@
+ RefTime = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$RefTime" }
+ SimpleTime = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$SimpleTime" }
+ InexactTime = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$InexactTime" }
+ InexactDuration = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$InexactDuration" }
+ DurationWithFields = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$DurationWithFields" }
+ //Duration = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$Duration" }
+ IsoDate = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$IsoDate" }
+ IsoTime = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$IsoTime" }
+ TimeRange = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$Range" }
+ TimeWithRange = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$TimeWithRange" }
+ RelativeTime = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$RelativeTime" }
+ OrdinalTime = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$OrdinalTime" }
+ PeriodicTemporalSet = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$PeriodicTemporalSet" }
+ ExplicitTemporalSet = { type: "CLASS", value: "edu.stanford.nlp.time.SUTime$ExplicitTemporalSet" }
+
+ ANY = -1;
+ NONE = -1;
+ NON_TEMPORAL = "NON_TEMPORAL";
+
+ DURATION_UNKNOWN = DurationWithFields();
+ DURATION_NONE = DurationWithFields();
+
+ TIME_NOW = {
+ type: REFTIME,
+ label: "PRESENT_REF",
+ value: RefTime("NOW")
+ }
+ TIME_PRESENT = {
+ type: REFDATE,
+ label: "PRESENT_REF",
+ value: InexactTime( TimeRange(TIME_NOW, TIME_NOW) )
+ }
+ TIME_PAST = {
+ type: REFDATE,
+ label: "PAST_REF",
+ value: InexactTime( TimeRange(TIME_UNKNOWN, TIME_NOW) )
+ }
+ TIME_FUTURE = {
+ type: REFDATE,
+ label: "FUTURE_REF",
+ value: InexactTime( TimeRange(TIME_NOW, TIME_UNKNOWN) )
+ }
+
+ // Predefined durations: YEAR, MONTH, DAY, WEEK, HOUR, MINUTE, SECOND
+ FORTNIGHT = { type: "TIMEUNIT", value: Duration(WEEK, 2) };
+ HALFHOUR = Duration(MINUTE, 30);
+ QUARTERHOUR = Duration(MINUTE, 15);
+
+ // Basic dates/times
+ MONDAY = DayOfWeek(1);
+ TUESDAY = DayOfWeek(2);
+ WEDNESDAY = DayOfWeek(3);
+ THURSDAY = DayOfWeek(4);
+ FRIDAY = DayOfWeek(5);
+ SATURDAY = DayOfWeek(6);
+ SUNDAY = DayOfWeek(7);
+
+ WEEKDAY = {
+ type: DAYS_OF_WEEK,
+ label: "WD",
+ value: TimeWithRange(TimeRange(MONDAY, FRIDAY, Duration(DAY, 5)))
+ }
+
+ WEEKEND = {
+ type: DAYS_OF_WEEK,
+ label: "WE",
+ value: TimeWithRange(TimeRange(SATURDAY, SUNDAY, Duration(DAY, 2)))
+ }
+
+ JANUARY = MonthOfYear(1);
+ FEBRUARY = MonthOfYear(2);
+ MARCH = MonthOfYear(3);
+ APRIL = MonthOfYear(4);
+ MAY = MonthOfYear(5);
+ JUNE = MonthOfYear(6);
+ JULY = MonthOfYear(7);
+ AUGUST = MonthOfYear(8);
+ SEPTEMBER = MonthOfYear(9);
+ OCTOBER = MonthOfYear(10);
+ NOVEMBER = MonthOfYear(11);
+ DECEMBER = MonthOfYear(12);
+
+ // Dates are rough with respect to northern hemisphere (actual
+ // solstice/equinox days depend on the year)
+ SPRING_EQUINOX = {
+ type: DAY_OF_YEAR,
+ value: InexactTime( TimeRange( IsoDate(ANY, 3, 20), IsoDate(ANY, 3, 21) ) )
+ }
+ SUMMER_SOLSTICE = {
+ type: DAY_OF_YEAR,
+ value: InexactTime( TimeRange( IsoDate(ANY, 6, 20), IsoDate(ANY, 6, 21) ) )
+ }
+ FALL_EQUINOX = {
+ type: DAY_OF_YEAR,
+ value: InexactTime( TimeRange( IsoDate(ANY, 9, 22), IsoDate(ANY, 9, 23) ) )
+ }
+ WINTER_SOLSTICE = {
+ type: DAY_OF_YEAR,
+ value: InexactTime( TimeRange( IsoDate(ANY, 12, 21), IsoDate(ANY, 12, 22) ) )
+ }
+
+ // Financial Quarters
+ FYQ1 = {
+ type: QUARTER_OF_YEAR,
+ label: "FYQ1",
+ value: TimeWithRange(TimeRange(IsoDate(ANY,10,1), IsoDate(ANY,12,31), QUARTER))
+ }
+ FYQ2 = {
+ type: QUARTER_OF_YEAR,
+ label: "FYQ2",
+ value: TimeWithRange(TimeRange(IsoDate(ANY,1,1), IsoDate(ANY,3,31), QUARTER))
+ }
+ FYQ3 = {
+ type: QUARTER_OF_YEAR,
+ label: "FYQ3",
+ value: TimeWithRange(TimeRange(IsoDate(ANY,4,1), IsoDate(ANY,6,30), QUARTER))
+ }
+ FYQ4 = {
+ type: QUARTER_OF_YEAR,
+ label: "FYQ4",
+ value: TimeWithRange(TimeRange(IsoDate(ANY,7,1), IsoDate(ANY,9,30), QUARTER))
+ }
+
+ // Dates for seasons are rough with respect to northern hemisphere
+ SPRING = {
+ type: SEASON_OF_YEAR,
+ label: "SP",
+ value: InexactTime( SPRING_EQUINOX, QUARTER, TimeRange( MARCH, JUNE, QUARTER ) ) }
+ SUMMER = {
+ type: SEASON_OF_YEAR,
+ label: "SU",
+ value: InexactTime( SUMMER_SOLSTICE, QUARTER, TimeRange( JUNE, SEPTEMBER, QUARTER ) )
+ }
+ FALL = {
+ type: SEASON_OF_YEAR,
+ label: "FA",
+ value: InexactTime( FALL_EQUINOX, QUARTER, TimeRange( SEPTEMBER, DECEMBER, QUARTER ) )
+ }
+ WINTER = {
+ type: SEASON_OF_YEAR,
+ label: "WI",
+ value: InexactTime( WINTER_SOLSTICE, QUARTER, TimeRange( DECEMBER, MARCH, QUARTER ) )
+ }
+
+ // Time of day
+ NOON = IsoTime( 12, 0, NONE )
+ MIDNIGHT = IsoTime( 0, 0, NONE )
+ MORNING = {
+ type: TIME_OF_DAY,
+ label: "MO",
+ value: InexactTime( TimeRange ( IsoTime( 6, NONE, NONE), NOON ) )
+ }
+ AM = IsoTime(NIL, NIL, NIL, NIL, HALFDAY_AM)
+ PM = IsoTime(NIL, NIL, NIL, NIL, HALFDAY_PM)
+ AFTERNOON = {
+ type: TIME_OF_DAY,
+ label: "AF",
+ value: InexactTime( TimeRange ( NOON, IsoTime( 18, NONE, NONE) ) )
+ }
+ EVENING = {
+ type: TIME_OF_DAY,
+ label: "EV",
+ value: InexactTime( TimeRange ( IsoTime( 18, NONE, NONE), IsoTime ( 20, NONE, NONE) ) )
+ }
+ NIGHT = {
+ type: TIME_OF_DAY,
+ label: "NI",
+ value: InexactTime( MIDNIGHT, TimeRange ( IsoTime( 19, NONE, NONE), Duration(HOUR, 10) ) )
+ }
+
+ SUNRISE = {
+ type: TIME_OF_DAY,
+ label: "MO",
+ modifier: "EARLY"
+ }
+
+ SUNSET = {
+ type: TIME_OF_DAY,
+ label: "EV",
+ modifier: "EARLY"
+ }
+
+ DAWN = {
+ type: TIME_OF_DAY,
+ label: "MO",
+ modifier: "EARLY"
+ }
+
+ DUSK = {
+ type: TIME_OF_DAY,
+ label: "EV",
+ modifier: "EARLY"
+ }
+
+ LUNCHTIME = InexactTime( TimeRange( IsoTime(12, NONE, NONE), IsoTime(14, NONE, NONE) ))
+ TEATIME = InexactTime( TimeRange( IsoTime(15, NONE, NONE), IsoTime(17, NONE, NONE) ))
+ DINNERTIME = InexactTime( TimeRange( IsoTime(18, NONE, NONE), IsoTime(20, NONE, NONE) ))
+ WORKDAY = InexactTime( TimeRange( IsoTime(9, NONE, NONE), IsoTime(17, NONE, NONE) ))
+
+ DAYTIME = {
+ type: TIME_OF_DAY,
+ label: "DT",
+ value: InexactTime( TimeRange(DAWN, SUNSET) )
+ }
+ MORNING_TWILIGHT = {
+ type: TIME_OF_DAY,
+ label: "MO",
+ value: InexactTime( TimeRange(DAWN, SUNRISE) )
+ }
+ EVENING_TWILIGHT = {
+ type: TIME_OF_DAY,
+ label: "EV",
+ value: InexactTime( TimeRange(SUNSET, DUSK) )
+ }
+ // For now, just have TWILIGHT be same as EVENING_TWILIGHT (could possibly be MORNING_TWILIGHT || EVENING_TWILIGHT)
+ TWILIGHT = EVENING_TWILIGHT
+
+ // Relative days
+ YESTERDAY = RelativeTime( Duration(DAY, -1) );
+ TOMORROW = RelativeTime( Duration(DAY, +1) );
+ TODAY = RelativeTime( THIS, DAY );
+ TONIGHT = RelativeTime( THIS, NIGHT );
+
+ HOURLY = PeriodicTemporalSet(NIL, HOUR, "EVERY", "P1X");
+ NIGHTLY = PeriodicTemporalSet(NIGHT, DAY, "EVERY", "P1X");
+ DAILY = PeriodicTemporalSet(NIL, DAY, "EVERY", "P1X");
+ MONTHLY = PeriodicTemporalSet(NIL, MONTH, "EVERY", "P1X");
+ QUARTERLY = PeriodicTemporalSet(NIL, QUARTER, "EVERY", "P1X");
+ YEARLY = PeriodicTemporalSet(NIL, YEAR, "EVERY", "P1X");
+ WEEKLY = PeriodicTemporalSet(NIL, WEEK, "EVERY", "P1X");
diff --git a/CoreNLP/stanford-corenlp-4.5.7/sutime/english.holidays.sutime.txt b/CoreNLP/stanford-corenlp-4.5.7/sutime/english.holidays.sutime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..69bf4a3e06d6fb151ffa9d81f4c32a84574fd1f4
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/sutime/english.holidays.sutime.txt
@@ -0,0 +1,29 @@
+ ENV.defaults["stage"] = 1
+ ENV.defaults["ruleType"] = "tokens"
+
+ $POSS = "( /(’|')s/ | /(’|')/ /s/ )"
+ { (/new/ /year/ $POSS? /eve/ ) => IsoDate(NIL, 12, 31) }
+ { (/new/ /year/ $POSS? /day/? ) => IsoDate(NIL, 1, 1) }
+ { (/inauguration/ /day/ ) => IsoDate(NIL, 1, 20) }
+ { (/groundhog/ /day/ ) => IsoDate(NIL, 2, 2) }
+ { (/st.?|saint/? /valentine/ $POSS? /day/ ) => IsoDate(NIL, 2, 14) }
+ { (/st.?|saint/ /patrick/ $POSS? /day/ ) => IsoDate(NIL, 3, 17) }
+ { (/april/ /fools/ /day/? ) => IsoDate(NIL, 4, 1) }
+ { (/cinco/ /de/ /mayo/ ) => IsoDate(NIL, 5, 5) }
+ { (/halloween/ ) => IsoDate(NIL, 10, 31) }
+ { (/x-?mas|christmas/ /eve/ ) => IsoDate(NIL, 12, 24) }
+ { (/x-?mas|christmas/ /day/? ) => IsoDate(NIL, 12, 25) }
+
+
+ { (/martin/ /luther/ /king/ /day/ | /mlk/ /day/) => JH_MARTIN_LUTHER_KING }
+ { (/memorial/ /day/) => JH_MEMORIAL }
+ { (/mother/ $POSS /day/) => JH_MOTHERS_DAY }
+ { (/father/ $POSS /day/) => JH_FATHERS_DAY }
+ { (/labou?r/ /day/) => JH_LABOUR_DAY }
+ { (/columbus/ /day/) => JH_COLUMBUS_DAY }
+ { (/thanksgiving/) => JH_THANKSGIVING }
+
+ { (/easter/ (/day/|/sunday/)?) => JH_EASTER }
+ { (/clean/ /monday/) => JH_CLEAN_MONDAY }
+ { (/good/ /friday/) => JH_GOOD_FRIDAY }
+ { (/ash/ /wednesday/) => JH_ASH_WEDNESDAY }
diff --git a/CoreNLP/stanford-corenlp-4.5.7/sutime/english.sutime.txt b/CoreNLP/stanford-corenlp-4.5.7/sutime/english.sutime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b61ff360d649140fba9b7cd57901b5b6970d3f05
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/sutime/english.sutime.txt
@@ -0,0 +1,1002 @@
+ ENV.defaults["stage.limitIters"] = 50
+
+ tokens = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$TokensAnnotation" }
+ numtokens = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NumerizedTokensAnnotation" }
+
+ $TIMEOFDAY = "/morning|afternoon|evening|night|noon|midnight|teatime|lunchtime|dinnertime|suppertime|afternoon|midday|dusk|dawn|sunup|sunrise|sundown|twilight|daybreak/";
+
+ $NUM = ( [ { numcomptype:NUMBER } ] );
+ $INT = ( [ { numcomptype:NUMBER } & !{ word:/.*\.\d+.*/} & !{ word:/.*,.*/ } ] );
+ $INTORD = ( [ ({ numcomptype:NUMBER } | { numcomptype:ORDINAL }) & !{ word:/.*\.\d+.*/} & !{ word:/.*,.*/ } ] );
+ $INT1000TO3000 = ( [ $INT & !{ word:/\+.*/} & { numcompvalue>1000 } & { numcompvalue<3000 } ] );
+ $INT1TO31 = ( [ $INTORD & !{ word:/\+.*/} & { numcompvalue>=1 } & { numcompvalue<=31 } ] );
+ $NUM_ORD = ( [ { numcomptype:ORDINAL } ] );
+
+ $INT_TIMES = ( $INT /times/ | once | twice | thrice );
+ $REL_MOD = ( /the/? /next|following|last|previous/ | /this/ /coming|past/? | /the/ /coming|past/ );
+ $FREQ_MOD = ( /each/ | /every/ $NUM_ORD | /every/ /other|alternate|alternating/? | /alternate|alternating/ );
+ $EARLY_LATE_MOD = ( /late|early|mid-?/ | /the/? /beginning|start|dawn|middle|end/ /of/ | /late|early/ /in|on/ );
+ $APPROX_MOD = ( /about|around|some|exactly|precisely/ );
+ $YEAR = ( /[012]\d\d\d/ | /'\d\d/ | /'/ /\d\d/ | /\w+teen|twenty/ [ { numcompvalue<100 } & { numcompvalue>0 } & $INT ] );
+ $POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | $INT1000TO3000 );
+ $hasTemporal = "( { temporal::EXISTS } & {{ temporal.value != NON_TEMPORAL }} & !{{ tags[\"TIMEZONE\"] }} )"
+
+ # Decades
+ # We might want to add "teens" but would need to change grammar to insist on "the" before it, but even then maybe too ambiguous?
+ # "teens": "1X",
+ DECADES_MAP = {
+ "oughts": "0X",
+ "noughts": "0X",
+ "twenties": "2X",
+ "thirties": "3X",
+ "forties": "4X",
+ "fifties": "5X",
+ "sixties": "6X",
+ "seventies": "7X",
+ "eighties": "8X",
+ "nineties": "9X"
+ }
+ $Decades = CreateRegex(Keys(DECADES_MAP))
+
+ # Durations
+ TIMEUNIT_MAP = {
+ "year": YEAR,
+ "yr": YEAR,
+ "month": MONTH,
+ "mo": MONTH,
+ "day": DAY,
+ "hour": HOUR,
+ "hr": HOUR,
+ "minute": MINUTE,
+ "min": MINUTE,
+ "second": SECOND,
+ "sec": SECOND,
+ "millisecond": MILLIS,
+ "millisec": MILLIS,
+ "week": WEEK,
+ "wk": WEEK,
+ "fortnight": FORTNIGHT,
+ "quarter": QUARTER,
+ "century": CENTURY,
+ "centuries": CENTURY,
+ "millennia": MILLENNIUM,
+ "millennium": MILLENNIUM,
+ "millenia": MILLENNIUM,
+ "millenium": MILLENNIUM
+ }
+ $TEUnits = CreateRegex(Keys(TIMEUNIT_MAP))
+ BASIC_NUMBER_MAP = {
+ "one": 1,
+ "two": 2,
+ "three": 3,
+ "four": 4,
+ "five": 5,
+ "six": 6,
+ "seven": 7,
+ "eight": 8,
+ "nine": 9,
+ "ten": 10,
+ "eleven": 11,
+ "twelve": 12,
+ "thirteen": 13,
+ "fourteen": 14,
+ "fifteen": 15,
+ "sixteen": 16,
+ "seventeen": 17,
+ "eighteen": 18,
+ "nineteen": 19,
+ "twenty": 20,
+ "thirty": 30,
+ "forty": 40,
+ "fifty": 50,
+ "sixty": 60,
+ "seventy": 70,
+ "eighty": 80,
+ "ninety": 90,
+ "hundred": 100
+ }
+ $BasicNumTerm = CreateRegex(Keys(BASIC_NUMBER_MAP))
+ BASIC_ORDINAL_MAP = {
+ "first": 1,
+ "second": 2,
+ "third": 3,
+ "fourth": 4,
+ "fifth": 5,
+ "sixth": 6,
+ "seventh": 7,
+ "eighth": 8,
+ "ninth": 9,
+ "tenth": 10,
+ "eleventh": 11,
+ "twelfth": 12,
+ "thirteenth": 13,
+ "fourteenth": 14,
+ "fifteenth": 15,
+ "sixteenth": 16,
+ "seventeenth": 17,
+ "eighteenth": 18,
+ "nineteenth": 19,
+ "twentieth": 20,
+ "thirtieth": 30,
+ "fortieth": 40,
+ "fiftieth": 50,
+ "sixtieth": 60,
+ "seventieth": 70,
+ "eightieth": 80,
+ "ninetieth": 90,
+ "hundredth": 100
+ }
+ $BasicOrdTerm = CreateRegex(Keys(BASIC_ORDINAL_MAP))
+
+ # Financial Quarters
+ FISCAL_YEAR_QUARTER_MAP = {
+ "Q1": FYQ1,
+ "Q2": FYQ2,
+ "Q3": FYQ3,
+ "Q4": FYQ4
+ }
+ FISCAL_YEAR_QUARTER_YEAR_OFFSETS_MAP = {
+ "Q1": 1,
+ "Q2": 0,
+ "Q3": 0,
+ "Q4": 0
+ }
+ $FiscalYearQuarterTerm = CreateRegex(Keys(FISCAL_YEAR_QUARTER_MAP))
+
+ ########################################################################################################################
+
+ ENV.defaults["stage"] = 0
+ ENV.defaults["ruleType"] = "tokens"
+
+ { pattern: ( $POSSIBLE_YEAR ),
+ action: (
+ Tag($0, "YEAR",
+ :case {
+ $0 =~ ( /\w+teen|twenty/ [ $INT ] ) => Add(Multiply($0[0].numcompvalue, 100), $0[1].numcompvalue),
+ $0 =~ ( /'/ /\d\d/ ) => Concat("XX", $0[1].word),
+ $0 =~ ( /'\d\d/ ) => Concat("XX", $0[0].word.substring(1)),
+ :else => $0[0].numcompvalue
+ }
+ ),
+ Tag($0, "YEAR_ERA",
+ :case {
+ $0 =~ ( $INT /a\.?d\.?/ ) => ERA_AD,
+ $0 =~ ( $INT /b\.?c\.?/ ) => ERA_BC,
+ :else => ERA_UNKNOWN
+ }
+ )
+ )
+ }
+
+ # Operators
+ { pattern: ( /this/ ),
+ action: Tag($0, "TemporalOp", THIS) }
+ { pattern: ( /next/ ),
+ action: Tag($0, "TemporalOp", NEXT) }
+ { pattern: ( /following/ ),
+ action: Tag($0, "TemporalOp", NEXT) }
+ { pattern: ( /previous/ ),
+ action: Tag($0, "TemporalOp", PREV) }
+ { pattern: ( /last/ ),
+ action: Tag($0, "TemporalOp", PREV) }
+ { pattern: ( /this|the/ /coming|following|next/ ),
+ action: Tag($0, "TemporalOp", NEXT_IMMEDIATE) }
+ { pattern: ( /this|the/ /past|previous|last/ ),
+ action: Tag($0, "TemporalOp", PREV_IMMEDIATE) }
+
+ # Modifiers
+
+ # Early late modifiers
+ { pattern: ( /late/ | /end/ ),
+ action: Tag($0, "Modifier", "LATE") }
+ { pattern: ( /early/ | /beginning|start|dawn/ ),
+ action: Tag($0, "Modifier", "EARLY") }
+ { pattern: ( /mid-?/ | /middle/ ),
+ action: Tag($0, "Modifier", "MID") }
+
+ # Frequency modifiers
+ { pattern: ( /each/ | /every/ ),
+ action: ( Tag($0, "PTS.quant", $0), Tag($0, "PTS.multiple", 1 ) ) }
+ { pattern: ( /every/ ($NUM_ORD|$INT) ),
+ action: ( Tag($0, "PTS.quant", $0), Tag($0, "PTS.multiple", $1[0].numcompvalue ) ) }
+ { pattern: ( /every/ /other|alternate|alternating/ | /alternate|alternating/ ),
+ action: ( Tag($0, "PTS.quant", $0), Tag($0, "PTS.multiple", 2 ) ) }
+
+ # Approximate modifiers
+ { pattern: ( /about|around|some/ ),
+ action: Tag($0, "Modifier", "APPROX") }
+ { pattern: ( /exactly|precisely/ ),
+ action: Tag($0, "Modifier", "EXACT") }
+
+ # Periodic Set
+ PERIODIC_SET = {
+ "centennial": TemporalCompose(MULTIPLY, YEARLY, 100),
+ "yearly": YEARLY,
+ "annually": YEARLY,
+ "annual": YEARLY,
+ "hourly": HOURLY,
+ "nightly": NIGHTLY,
+ "daily": DAILY,
+ "weekly": WEEKLY,
+ "monthly": MONTHLY,
+ "quarterly": QUARTERLY
+ }
+ $PeriodicSetRegex = CreateRegex(Keys(PERIODIC_SET))
+ { pattern: ( /.*($PeriodicSetRegex)/ ),
+ matchWithResults: TRUE,
+ action: Tag($0, "PeriodicSet", PERIODIC_SET[Lowercase($$0.matchResults[0].word.group(1))]) }
+
+ ########################################################################################################################
+
+ ENV.defaults["stage"] = 1
+ ENV.defaults["ruleType"] = "text"
+
+ # Durations: 3-months old or three-months old
+ { text: /(\d+)[-]($TEUnits)(s)?([-\s]old)?/ => Duration( TIMEUNIT_MAP[Lowercase($2)], $1 ) }
+ { text: /($BasicNumTerm)[-]($TEUnits)(s)?([-\s]old)?/ =>
+ Duration( TIMEUNIT_MAP[Lowercase($2)], BASIC_NUMBER_MAP[Lowercase($1)] ) }
+
+ # Durations
+ ENV.defaults["ruleType"] = "tokens"
+ { (/years?|yrs?/) => YEAR }
+ { (/months?|mos?/) => MONTH }
+ { (/days?/) => DAY }
+ { (/hours?|hrs?/) => HOUR }
+ { (/minutes?|mins?/) => MINUTE }
+ { (/seconds?|secs?/) => SECOND }
+ { (/milliseconds?|millisecs?/) => MILLIS }
+ { (/weeks?|wks?/) => WEEK }
+ { (/fortnights?/) => FORTNIGHT }
+ { (/quarters?/) => QUARTER }
+ { (/decades?/) => DECADE }
+ { (/centurys?|centuries?/) => CENTURY }
+ { (/millenn?ias?|millenn?iums?/) => MILLENNIUM }
+
+ # Time of Day
+ { (/mornings?/) => MORNING }
+ { (/afternoons?/) => AFTERNOON }
+ { (/evenings?/) => EVENING }
+ { (/dusks?/) => DUSK }
+ { (/twilights?/) => TWILIGHT }
+ { (/dawns?|daybreaks?/) => DAWN }
+ { (/sunrises?|sunups?/) => SUNRISE }
+ { (/sundowns?|sunsets?/) => SUNSET }
+ { (/middays?|noons?/) => NOON }
+ { (/midnights?/) => MIDNIGHT }
+ { (/teatimes?/) => TEATIME }
+ { (/lunchtimes?/) => LUNCHTIME }
+ { (/dinnertimes?/) => DINNERTIME }
+ { (/suppertimes?/) => SUPPERTIME }
+ { (/daylights?|days?|daytimes?/) => DAYTIME }
+ { (/nighttimes?|nights?|overnights?/) => NIGHT }
+ { (/workday|work(ing)? day|business hours/) => WORKDAY }
+
+ # Seasons
+ { (/summers?/) => SUMMER }
+ { (/winters?/) => WINTER }
+ { (/falls?|autumns?/) => FALL }
+ { (/springs?/) => SPRING }
+
+ # Relative times
+ { (/yesterdays?/) => YESTERDAY }
+ { (/todays?/) => TODAY }
+ { (/tomorrows?/) => TOMORROW }
+ { (/tonights?|tonites?/) => TONIGHT }
+
+ # Day of Week
+ { (/mondays?/) => MONDAY }
+ { (/tuesdays?/) => TUESDAY }
+ { (/wednesdays?/) => WEDNESDAY }
+ { (/thursdays?/) => THURSDAY }
+ { (/fridays?/) => FRIDAY }
+ { (/saturdays?/) => SATURDAY }
+ { (/sundays?/) => SUNDAY }
+ { (/mons?/) => MONDAY }
+ { (/tues?/) => TUESDAY }
+ { (/weds?/) => WEDNESDAY }
+ { (/thurs?/) => THURSDAY }
+ { (/fris?/) => FRIDAY }
+ { (/sats?/) => SATURDAY }
+ { (/suns?/) => SUNDAY }
+
+ { (/weekends?/) => WEEKEND }
+ { (/weekdays?|workweek/) => WEEKDAY }
+
+ # Month
+ { (/januarys?/) => JANUARY }
+ { (/februarys?/) => FEBRUARY }
+ { (/marchs?/) => MARCH }
+ { (/aprils?/) => APRIL }
+ { (/mays?/) => MAY }
+ { (/junes?/) => JUNE }
+ { (/julys?/) => JULY }
+ { (/augusts?/) => AUGUST }
+ { (/septembers?/) => SEPTEMBER }
+ { (/octobers?/) => OCTOBER }
+ { (/novembers?/) => NOVEMBER }
+ { (/decembers?/) => DECEMBER }
+ { (/jan\.?/) => JANUARY }
+ { (/feb\.?/) => FEBRUARY }
+ { (/mar\.?/) => MARCH }
+ { (/apr\.?/) => APRIL }
+ { (/jun\.?/) => JUNE }
+ { (/jul\.?/) => JULY }
+ { (/aug\.?/) => AUGUST }
+ { (/sept?\.?/) => SEPTEMBER }
+ { (/oct\.?/) => OCTOBER }
+ { (/nov\.?/) => NOVEMBER }
+ { (/dec\.?/) => DECEMBER }
+
+ { ruleType: "filter",
+ over: NIL,
+ // We added the end in "s" condition to avoid tagging mistakes (as with 1879) leading to non-plurals being SET
+ pattern: ( [ { temporal::IS_TIMEX_DATE } & {{ tokens[0].tag =~ /NN.*S/ }} & {{ tokens[0].word =~ /.+s/ }} ] ),
+ result: MakePeriodicTemporalSet($0[0].temporal.value),
+ // Set to TRUE to turn anything that is labeled a date but marked as plural to be a set
+ active: TRUE
+ }
+
+ ########################################################################################################################
+
+ ENV.defaults["ruleType"] = "tokens"
+ ENV.defaults["priority"] = 0
+ ENV.defaults["locale"] = "en"
+
+ // Military times with time zones from http://www.timeanddate.com/library/abbreviations/timezones/military/
+ MILITARY_TIME_ZONE_MAP = {
+ "A": 1,
+ "B": 2,
+ "C": 3,
+ "D": 4,
+ "E": 5,
+ "F": 6,
+ "G": 7,
+ "H": 8,
+ "I": 9,
+ "K": 10,
+ "L": 11,
+ "M": 12,
+ "N": -1,
+ "O": -2,
+ "P": -3,
+ "Q": -4,
+ "R": -5,
+ "S": -6,
+ "T": -7,
+ "U": -8,
+ "V": -9,
+ "W": -10,
+ "X": -11,
+ "Y": -12,
+ "Z": 0
+ }
+
+ {
+ ruleType: "tokens",
+ pattern: ( (/(\d\d)(\d\d)([A-Z])/) ),
+ matchWithResults: TRUE,
+ result: { type: "Temporal",
+ value: IsoTime($$1.matchResults[0].word.group(1), $$1.matchResults[0].word.group(2), NIL).setTimeZone(
+ MILITARY_TIME_ZONE_MAP[$$1.matchResults[0].word.group(3)] ) },
+ // Change to TRUE to support military time zones
+ active: FALSE
+ }
+
+ # ISO date/times
+ # TODO: Support other timezone formats
+ { ruleType: "time", pattern: /yyyy-?MM-?dd-?'T'HH(:?mm(:?ss([.,]S{1,3})?)?)?(Z)?/ }
+ { ruleType: "time", pattern: /yyyy-MM-dd/ }
+ { ruleType: "time", pattern: /'T'HH(:?mm(:?ss([.,](S{1,3}))?)?)?(Z)?/ }
+ # Tokenizer "sometimes adds extra slash
+ { ruleType: "time", pattern: /yyyy\\?\/MM\\?\/dd/ }
+ { ruleType: "time", pattern: /MM?\\?\/dd?\\?\/(yyyy|yy)/ }
+ { ruleType: "time", pattern: /MM?-dd?-(yyyy|yy)/ }
+ { ruleType: "time", pattern: /HH?:mm(:ss)?(Z)?/ }
+ { ruleType: "time", pattern: /yyyy-MM/ }
+
+ # Euro - Ambiguous pattern - interpret as dd.MM.yy(yy)
+ { ruleType: "time", pattern: /dd?\.MM?\.(yyyy|yy)/ }
+ { ruleType: "time", pattern: /HH?''hmm/ }
+
+ # Timezones
+ { ruleType: "time", pattern: /zzz/, action: Tag(_, "TIMEZONE", TRUE) }
+ { ruleType: "time", pattern: /ZZZ/, action: Tag(_, "TIMEZONE", TRUE) }
+
+ # Birthdays
+ { ( [ { tag:NNP } ]+ [ { tag:POS } ] /birthday/ ) => SimpleTime($0) }
+
+ # Generic decade
+ { ( /the/? ( /\w+teen|twenty/ /$Decades/ ) )
+ => IsoDate( Concat( Format("%02d", $0[0].numcompvalue), DECADES_MAP[Lowercase($0[1].word)]), NIL, NIL)
+ }
+ { ( /the/? ( /$Decades/ ) )
+ => IsoDate( Concat("XX", DECADES_MAP[Lowercase($0[0].word)]) , NIL, NIL)
+ }
+ { (/the/? /'|’/ /\d\d/ ) => IsoDate( Format( "XX%02d", $0[-1].numcompvalue), NIL, NIL) }
+ { (/the/? /'/ /\d0s/ | /the/? /'\d0s/ ) => IsoDate( Replace($0[-1].word, /'?(\d)0s/, "XX$1X"), NIL, NIL) }
+ { (/the/? /’/ /\d0s/ | /the/? /’\d0s/ ) => IsoDate( Replace($0[-1].word, /’?(\d)0s/, "XX$1X"), NIL, NIL) }
+ { (/the/? /\d\d\d0s/) => IsoDate( Replace($0[-1].word, /(\d\d\d)0s/, "$1X"), NIL, NIL) }
+ { (/the/? /\d\d00s/) => IsoDate( Replace($0[-1].word, /(\d\d)00s/, "$1XX"), NIL, NIL) }
+ { (/the/? /mid-\d\d\d0s/) => IsoDate( Replace($0[-1].word, /mid-(\d\d\d)0s/, "$1X"), NIL, NIL) }
+ { (/the/? /mid-\d\d00s/) => IsoDate( Replace($0[-1].word, /mid-(\d\d)00s/, "$1XX"), NIL, NIL) }
+
+ # some century expressions
+ { ( (/every/ $NUM_ORD) (/centurys?|ies/) ) =>
+ MakePeriodicTemporalSet(CENTURY, GetTag($1[0], "PTS.quant"), GetTag($1[0], "PTS.multiple") ) }
+
+ { ( /the/? ($NUM_ORD) /-/? /century/ (/b\.?c\.?/) )
+ => IsoDate(
+ Format("-%02dXX", Subtract($1[0].numcompvalue, 1)),
+ NIL, NIL)
+ }
+ { pattern: ( /the/? (/($BasicOrdTerm)-century/) (/b\.?c\.?/) ),
+ matchWithResults: TRUE,
+ result: IsoDate(
+ Format("-%02dXX", Subtract(BASIC_ORDINAL_MAP[Lowercase($$1.matchResults[0].word.group(1))], 1)),
+ NIL, NIL)
+ }
+ { pattern: ( /the/? (/(\d+)(st|nd|rd|th)-century/) (/b\.?c\.?/) ),
+ matchWithResults: TRUE,
+ result: IsoDate(
+ Format("-%02dXX", Subtract( { type: "NUMBER", value: $$1.matchResults[0].word.group(1) }, 1)),
+ NIL, NIL)
+ }
+
+ { ( /the/? ($NUM_ORD) /-/? /century/ (/a\.?d\.?/)? )
+ => IsoDate(
+ Format("%02dXX", Subtract($1[0].numcompvalue, 1)),
+ NIL, NIL)
+ }
+
+ { pattern: ( /the/? (/($BasicOrdTerm)-century/) (/a\.?d\.?/)? ),
+ matchWithResults: TRUE,
+ result: IsoDate(
+ Format("%02dXX", Subtract(BASIC_ORDINAL_MAP[Lowercase($$1.matchResults[0].word.group(1))], 1)),
+ NIL, NIL)
+ }
+ { pattern: ( /the/? (/(\d+)(st|nd|rd|th)-century/) (/a\.?d\.?/)? ),
+ matchWithResults: TRUE,
+ result: IsoDate(
+ Format("%02dXX", Subtract( { type: "NUMBER", value: $$1.matchResults[0].word.group(1) }, 1)),
+ NIL, NIL)
+ }
+
+ # some quarter expressions - need to add year refs
+ { ( /the/? [{tag:JJ}]? ($NUM_ORD) /-/? [{tag:JJ}]? /quarter/ ) =>
+ TemporalCompose(CREATE, QUARTER_OF_YEAR, $1[0].numcompvalue) }
+ { text: /(\d+)(st|nd|rd|th)-quarter/ =>
+ TemporalCompose(CREATE, QUARTER_OF_YEAR, $1 )
+ }
+ { text: /($BasicOrdTerm)-quarter/ =>
+ TemporalCompose(CREATE, QUARTER_OF_YEAR, BASIC_ORDINAL_MAP[Lowercase($1)])
+ }
+
+ # (unit)ly
+ { ruleType: "tokens",
+# pattern: ( (?m){1,3} /((bi|semi)\s*-?\s*)?((annual|year|month|week|dai|hour|night|quarter)ly|annual)/ ),
+ pattern: ( (?m){1,3} /((bi|semi)\s*-?\s*)?($PeriodicSetRegex)/ ),
+ result: :case {
+ $0[0].word =~ /bi.*/ => TemporalCompose(MULTIPLY, GetTag($0[-1], "PeriodicSet"), 2),
+ $0[0].word =~ /semi.*/ => TemporalCompose(DIVIDE, GetTag($0[-1], "PeriodicSet"), 2),
+ :else => GetTag($0[-1], "PeriodicSet") }
+ }
+
+ # some interval expressions
+ { text: /\b(\d{4})\s*(?:-)\s*(\d{4})\b/ =>
+ TimeRange( IsoDate($1, NIL, NIL), IsoDate($2, NIL, NIL) ) }
+ { ( /the/ /weekend/ ) => WEEKEND }
+ { ( /work(ing)?/ /day/ ) => WORKDAY }
+ { ( /business/ /hours/ ) => WORKDAY }
+ { ( /work(ing)?/ /week/ ) => WEEKDAY }
+ { ( /week|business/ /days?/ ) => WEEKDAY }
+
+ # Now a few time expressions
+ { ( (/\d\d\d\d/) /hours?/? (/universal|zulu/ | /[a-z]+/ /standard|daylight/) /time/ ) => IsoTime($1[0].word, NIL, NIL) }
+ { ( (/\d\d?/) /hours?/ (?: (/\d\d?/) /minutes?/?)? (/universal|zulu/ | /[a-z]+/ /standard|daylight/) /time/ )
+ => IsoTime($1[0].word, $1[0].word, NIL) }
+ { text: /(\d\d):?(\d\d)(:?(\d\d))?\s*h(ou)rs?/ => IsoTime($1,$2,$3) }
+ { text: /(\d\d?)(:?(\d\d))(:\d\d)?a\.?m\.?/ => TemporalCompose(INTERSECT, IsoTime($1,$3,$4), AM) }
+ { text: /(\d\d?)(:?(\d\d))(:\d\d)?p\.?m\.?/ => TemporalCompose(INTERSECT, IsoTime($1,$3,$4), PM) }
+ { text: /(\d\d?)a\.?m\.?/ => TemporalCompose(INTERSECT, IsoTime($1,"0",NIL), AM) }
+ { text: /(\d\d?)p\.?m\.?/ => TemporalCompose(INTERSECT, IsoTime($1,"0",NIL), PM) }
+
+ { ( /the/ /hour/ /of/ ([ $INT & { numcompvalue<=24 } ]) )=> IsoTime($1[0].numcompvalue, 0, NIL) }
+ { ( (?: /the/ /hour/ /of/?)? ([ $INT & { numcompvalue<=24 } ]) /o(’|')?clock/ ) => IsoTime($1[0].numcompvalue, 0, NIL) }
+
+ # Year
+ { ( /the/? /year/ ($POSSIBLE_YEAR) )
+ => :case {
+ $1[0].word =~ /'.*/ => IsoDate( GetTag($1[0], "YEAR"), NIL, NIL ),
+ :else => IsoDate( GetTag($1[0], "YEAR"), NIL, NIL, GetTag($1[0], "YEAR_ERA"), TRUE)
+ }
+ }
+
+ { ( ($POSSIBLE_YEAR) & [ { ner::IS_NIL } | { ner:DATE } | { ner:O } | { ner:NUMBER } ]+ )
+ => :case {
+ $1[0].word =~ /'.*/ => IsoDate( GetTag($1[0], "YEAR"), NIL, NIL ),
+ :else => IsoDate( GetTag($1[0], "YEAR"), NIL, NIL, GetTag($1[0], "YEAR_ERA"), TRUE)
+ }
+ }
+
+ { ( /the/ ($TIMEOFDAY) ) => $1[0].temporal.value }
+
+ { ( /good/ /morning|evening|day|afternoon|night/ ) => NON_TEMPORAL }
+
+ ########################################################################################################################
+ # Compositional rules
+
+ ENV.defaults["ruleType"] = "composite"
+
+ { name: "temporal-composite-6b",
+ priority: 20,
+ pattern: ( ( $REL_MOD ) ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
+ result: RelativeTime( GetTag($1[0], "TemporalOp"), $2[0].temporal.value )
+ }
+
+ ########################################################################################################################
+ # Composite Duration rules
+
+ ENV.defaults["priority"] = 10
+ ENV.defaults["stage"] = 2
+
+ # Duration (start, end, unit, range_start, range_end)
+ # Duration rules
+ # i.e. "the past twenty four years"
+ { pattern: ( /the/ /past|last|previous/ (?: ($NUM) /to|-/ )? ($NUM)? ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration($1,$2,$3,TIME_UNKNOWN,TIME_REF)
+ }
+
+ { pattern: ( /the/ /next|following/ (?: ($NUM) /to|-/ )? ($NUM)? ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration($1,$2,$3,TIME_REF,TIME_UNKNOWN)
+ }
+
+ # i.e. "another 3 years", "another thirteen months"
+ { pattern: ( /another/ (?: ($NUM) /to|-/ )? ($NUM)? ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration($1, $2, $3, TIME_REF, TIME_UNKNOWN) }
+
+ # i.e. "the 2 months following the crash", "for ten days before leaving"
+ # TODO: NEED TO FIX THIS, right now it doesn't include "the crash" or "leaving"
+ # ...need to be able to recognize NPs and VPs using POS tags
+ { pattern: ( /the/ (?: ($NUM) /to|-/ )? ($NUM) ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration($1, $2, $3) }
+
+ # i.e. "the first 9 months of 1997"
+ { pattern: ( /the/ /first|initial|last|final|latest/ (?: ($NUM) /to|-/ )? ($NUM)? ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration( $1, $2, $3 ) }
+ { pattern: ( /the/ /first|initial|last|final|latest/ /half/ /of/ ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration( $1, $2, $3 ) }
+
+ # i.e. "the fifth straight year", "the third straight month in a row", "the ninth day consecutively"
+ # i.e. "the eighth consecutive day in a row"
+ # i.e. "the twenty ninth day straight"
+ { pattern: ( /the/ ($NUM_ORD) /straight|consecutive/ ([ { temporal::IS_TIME_UNIT } ]) (?: /in/ /a/ /row/ | /consecutively/ )? ),
+ result: Duration (NIL, $1, $2, TIME_UNKNOWN, TIME_REF) }
+ { pattern: ( /the/ ($NUM_ORD) /straight|consecutive/? ([ { temporal::IS_TIME_UNIT } ]) (?: /in/ /a/ /row/ | /consecutively/ ) ),
+ result: Duration (NIL, $1, $2, TIME_UNKNOWN, TIME_REF) }
+
+ # hundreds of years
+ { pattern: ( (/(ten|hundred|thousand|million|billion|trillion)s/) /of/ ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration ( NIL, $1, $2) }
+
+ # i.e. "recent weeks", "several days"
+ { pattern: ( (/recent|several/) /-/? ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: InexactDuration( Duration(NIL, NIL, $2) ) }
+
+ # i.e. 3-months old, "four years", "four minutes"
+ { pattern: ( ($NUM) /to|-/ ($NUM) [ "-" ]? ([ { temporal::IS_TIME_UNIT } ]) (?: [ "-" ]? /old/ )? ),
+ result: Duration( $1, $2, $3) }
+ { pattern: ( ($NUM) [ "-" ]? (?: [ "(" ] $NUM [ ")" ])? ([ { temporal::IS_TIME_UNIT } ]) (?: [ "-" ]? /old/ )? ),
+ result: Duration( NIL, $1, $2 ) }
+
+ # i.e. "a decade", "a few decades", NOT "a few hundred decades"
+ { pattern: ( (?: /the/ /past|next|following|coming|last|first|final/ | /a|an/ )? (/couple/ /of/? ) ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration ( Duration( NIL, NIL, $2 ), 2 ) }
+ { pattern: ( (?: /the/ /past|next|following|coming|last|first|final/ /half/ /of/ ) ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: InexactDuration ( Duration( NIL, NIL, $2 ) ) }
+ { pattern: ( (?: /the/ /past|next|following|coming|last|first|final/ | /a|an/ )? (/few/) ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: InexactDuration ( Duration( NIL, NIL, $2 ) ) }
+
+ { pattern: ( /the/ [ { tag:JJ } ]? ([ { temporal::IS_TIME_UNIT } & { word:/.*s/ } ]) ),
+ priority: -1,
+ result: InexactDuration( $1[0].temporal.value ) }
+
+ { pattern: ( /a|an/ ([ { temporal::IS_TIME_UNIT } ]) ),
+ result: Duration( $1[0].temporal.value, 1) }
+
+ ######################################################################################################################
+ # Compositional date rules
+
+ ENV.defaults["priority"] = 0
+
+ { ( ($FREQ_MOD|/the/)? ($NUM_ORD) ([ { temporal::IS_TIME_UNIT } | { temporal::DAYOFWEEK } ]) ) =>
+ :case{
+ # Only attach ordinal to time if not prefixed by frequency modifier (e.g. every)
+ ($1 == NIL || $1 =~ ( /the/ ) ) => OrdinalTime($3[0].temporal.value, $2[0].numcompvalue),
+ # Return NIL otherwise - we have other patterns that handle sets (every 3rd months) later
+ :else => NIL
+ }
+ }
+
+ {
+ matchWithResults: TRUE,
+ pattern: ((/$FiscalYearQuarterTerm/) (FY)? (/(FY)?([0-9]{4})/)),
+ result: TemporalCompose(INTERSECT, IsoDate(Subtract({type: "NUMBER", value: $$3.matchResults[0].word.group(2)}, FISCAL_YEAR_QUARTER_YEAR_OFFSETS_MAP[$1[0].word]), ANY, ANY), FISCAL_YEAR_QUARTER_MAP[$1[0].word])
+ }
+
+ {
+ pattern: ((/$FiscalYearQuarterTerm/)),
+ result: FISCAL_YEAR_QUARTER_MAP[$1[0].word]
+ }
+
+
+ { name: "composite-date-expression-1a",
+ priority: 1,
+ pattern: ( (/every/ $NUM_ORD) (?$month [ { temporal::MONTH }]) ),
+ result: MakePeriodicTemporalSet(
+ $month[0].temporal,
+ GetTag($1[0], "PTS.quant"), GetTag($1[0], "PTS.multiple") ) }
+
+ { name: "composite-date-expression-1",
+ priority: 1,
+ pattern: ( ( /the/? (?$day $NUM_ORD & $INT1TO31) /of/? | (?$day /\d\d?/ & $INT1TO31) )?
+ (?$month [ { temporal::MONTH } ])
+ (?$day $NUM_ORD|/\d\d?/ & $INT1TO31)?
+ (?: /of|,/? (?$year $POSSIBLE_YEAR))? ),
+ result: TemporalCompose(INTERSECT,
+ $year[0].temporal,
+ IsoDate(NIL, $month[0].temporal.value.month, $day[0].numcompvalue))
+ }
+
+ { name: "composite-date-expression-1b",
+ pattern: ( /the/? /ides/ /of|in/? (?$month [ { temporal::MONTH } ]) (?: /of|,/? (?$year $POSSIBLE_YEAR))? ),
+ result: TemporalCompose(INTERSECT,
+ $year[0].temporal,
+ IsoDate(NIL,
+ $month[0].temporal.value.month,
+ :case {
+ $month[0].temporal.value.month == 3 => 15,
+ $month[0].temporal.value.month == 5 => 15,
+ $month[0].temporal.value.month == 7 => 15,
+ $month[0].temporal.value.month == 10 => 15,
+ :else => 13
+ }
+ ))
+ }
+
+ { name: "composite-date-expression-1c",
+ pattern: ( /the/? /nones/ /of|in/? (?$month [ { temporal::MONTH } ]) (?: /of|,/? (?$year $POSSIBLE_YEAR))? ),
+ result: IsoDate(
+ GetTag($year[0].numtokens[0], "YEAR"),
+ $month[0].temporal.value.month,
+ :case {
+ $month[0].temporal.value.month == 3 => 7,
+ $month[0].temporal.value.month == 5 => 7,
+ $month[0].temporal.value.month == 7 => 7,
+ $month[0].temporal.value.month == 10 => 7,
+ :else => 5
+ }
+ )
+ }
+
+ { name: "composite-date-expression-2",
+ pattern: ( /the/? (?$mod /beginning|start|middle|mid-?|end/ ) /of|in/? (?$date [ { temporal::IS_TIMEX_DATE } ]) ),
+ result: TemporalCompose(ADD_MODIFIER, $date[0].temporal, GetTag($mod[0], "Modifier") ) }
+
+ { name: "composite-date-expression-2a1",
+ pattern: ( /the/? (?$mod /first/ /half/) /of/ (?$date [ { temporal::IS_TIMEX_DATE } ]) ),
+ result: TemporalCompose(ADD_MODIFIER, $date[0].temporal, "EARLY" ) }
+
+ { name: "composite-date-expression-2a2",
+ pattern: ( /the/? (?$mod /second|last|latter/ /half/) /of/ (?$date [ { temporal::IS_TIMEX_DATE } ]) ),
+ result: TemporalCompose(ADD_MODIFIER, $date[0].temporal, "LATE" ) }
+
+ { name: "composite-date-expression-2b",
+ pattern: ( /the/? (?$date [ { temporal::IS_TIMEX_DATE } ]) (/'/ /s/ | /'s/ | /’/ /s/ | /’s/ )? (?$mod /beginning|end/) ),
+ result: TemporalCompose(ADD_MODIFIER, $date[0].temporal, GetTag($mod[0], "Modifier") ) }
+
+ { name: "composite-date-expression-3",
+ pattern: ( /the/? (?$weeknum ($NUM_ORD|last)) (?$week /week(end)?/ ) /of|in/? [ { temporal::IS_TIMEX_DATE } ] ),
+ result: TemporalCompose(
+ IN,
+ $0[-1].temporal,
+ TemporalCompose(
+ CREATE,
+ $week[0].temporal,
+ :case {
+ $weeknum =~ (/last/) => -1,
+ :else => $weeknum[0].numcompvalue
+ } ))
+ }
+
+ { name: "composite-date-expression-3b",
+ pattern: ( /the/? (?$week /week(end)?/ ) /of|in/? [ { temporal::IS_TIMEX_DATE } ] ),
+ result: TemporalCompose(
+ INTERSECT,
+ $0[-1].temporal,
+ $week[0].temporal)
+ }
+
+ { name: "composite-date-expression-3c",
+ pattern: ( ( [ { temporal::DAYOFWEEK } ] ) /the/? (?$day $NUM_ORD) ),
+ result: TemporalCompose(
+ INTERSECT,
+ $1[0].temporal,
+ IsoDate(NIL, NIL, $day[0].numcompvalue))
+ }
+
+ { name: "composite-date-expression-6",
+ pattern: ( ([ { temporal::IS_TIMEX_DATE } ]) (morning|afternoon|evening|night) ),
+ result: TemporalCompose(INTERSECT, $1[0].temporal, $2[0].temporal)
+ }
+
+ { name: "composite-date-expression-7a",
+ pattern: ( (?: /the/? /day/ (/before/|/prior/ /to/) ([ { temporal::IS_TIMEX_DATE } ]) ) ),
+ result: TemporalCompose(
+ PLUS,
+ $2[0].temporal,
+ TemporalCompose(
+ MULTIPLY,
+ DAY,
+ -1))
+ }
+
+ { name: "composite-date-expression-7b",
+ pattern: ( (?: /the/? /day/ (/after/) ([ { temporal::IS_TIMEX_DATE } ]) ) ),
+ result: TemporalCompose(
+ PLUS,
+ $2[0].temporal,
+ DAY)
+ }
+
+ { name: "composite-date-expression-8",
+ pattern: ( /the/ [ { tag:JJ } ]* ([ { temporal::IS_TIME_UNIT }
+ & !{ word:/.*s/ } ] )),
+ result: RelativeTime( THIS, $1[0].temporal.value )
+ }
+
+ ########################################################################################################################
+ # Composite time expressions
+
+ { name: "composite-time-expression-1a",
+ active: TRUE,
+ pattern: ( (?: (?$time [ { temporal::IS_TIMEX_TIME } ]) | (?$hour [ $INT & { numcompvalue<=24 } ]))
+ (?$context /in/ /the/ /morning/ | /a\.?m\.?/)
+ ),
+ result: :case {
+ $time => TemporalCompose(INTERSECT, $time[0].temporal.value, AM),
+ $hour[0].numcompvalue == 12 => IsoTime(0, 0, NIL),
+ :else => IsoTime($hour[0].numcompvalue, 0, NIL)
+ }
+ }
+
+ { name: "composite-time-expression-1b",
+ active: TRUE,
+ pattern: ( (?: (?$time [ { temporal::IS_TIMEX_TIME } ]) | (?$hour [ $INT & { numcompvalue<=24 } ]))
+ (?$context /in/ /the/ /afternoon|evening/| /at/ /night/| /p\.?m\.?/)
+ ),
+ result: :case {
+ $time => TemporalCompose(INTERSECT, $time[0].temporal.value, PM),
+ $hour[0].numcompvalue < 12 => IsoTime(Add($hour[0].numcompvalue, 12), 0, NIL),
+ ( ($hour[0].numcompvalue == 12) && ($context =~ ( []* /evening|night/)) )
+ => TemporalCompose(OFFSET_EXACT, IsoTime(0, 0, NIL), DAY),
+ :else => IsoTime($hour[0].numcompvalue, 0, NIL)
+ }
+ }
+
+ { name: "composite-time-expression-1c",
+ active: TRUE,
+ pattern: ( (?: (?$time [ { temporal::IS_TIMEX_TIME } ]) | (?$hour [ $INT & { numcompvalue==12 } ]))
+ (?$context /midnight/)
+ ),
+ result: :case {
+ $time[0].temporal.value.hour == 12 => MIDNIGHT,
+ $hour[0].numcompvalue == 12 => MIDNIGHT,
+ :else => NIL
+ }
+ }
+
+ { name: "composite-time-expression-2",
+ pattern: ( (?$minute /a/? /quarter/ | /a/? /half/ | [ $INT & { numcompvalue<=60 } ] /minutes?/? )
+ (?$rel /past|after|before|to|until/)
+ (?: (?$time [ { temporal::IS_TIMEX_TIME } ]) | (?$hour [ $INT & { numcompvalue<=24 } ]))
+ ),
+ result: TemporalCompose(
+ :case {
+ $rel[0].word =~ /past|after/ => PLUS,
+ :else => MINUS
+ },
+ :case {
+ $time => $time[0].temporal,
+ :else => IsoTime($hour[0].numcompvalue, 0, NIL)
+ },
+ Duration(
+ MINUTE,
+ :case {
+ $minute =~ ( /a/? /quarter/ ) => 15,
+ $minute =~ ( /a/? /half/ ) => 30,
+ :else => $0[0].numcompvalue
+ }
+ )
+ ) }
+
+ { pattern: ( ( /\d\d\d\d/ | $NUM ) [ {tag:/RB/} ] [ {tag:/JJ/} ]+ [ {tag:/NNS/} & !($hasTemporal) ] ),
+ result: NON_TEMPORAL,
+ priority: -1 }
+ { pattern: ( ( /\d\d\d\d/ | $NUM ) [ {tag:/JJ/} ]* [ {tag:/NNS/} & !($hasTemporal) ] ),
+ result: NON_TEMPORAL,
+ priority: -1 }
+
+ ########################################################################################################################
+ # General compositional rules
+ ENV.defaults["stage"] = 3
+
+ { name: "temporal-composite-timezone1",
+ pattern: ( (?$time [ { temporal::IS_TIMEX_TIME } ]) (?$timezone [ {{ tags["TIMEZONE"] }} ]) ),
+ result: TemporalCompose(INTERSECT, $time[0].temporal, $timezone[0].temporal)
+ }
+
+ { name: "temporal-composite-timezone2",
+ pattern: ( (?$time [ { temporal::IS_TIMEX_TIME } ]) "(" (?$timezone [ {{ tags["TIMEZONE"] }} ]) ")" ),
+ result: TemporalCompose(INTERSECT, $time[0].temporal, $timezone[0].temporal)
+ }
+
+ { name: "temporal-composite-1",
+ pattern: ( /the/?
+ (( [ $hasTemporal ] ) /,|of|in/? ( [ { temporal::IS_TIMEX_DATE } | { temporal::IS_TIMEX_TIME } ] ) |
+ ( [ { temporal::IS_TIMEX_DATE } ] ) /at/ ( [ { temporal::IS_TIMEX_TIME } ] ) |
+ ( [ { temporal::IS_TIMEX_TIME } | { temporal::IS_TIMEX_DURATION } ] ) /on/ ( [ { temporal::IS_TIMEX_DATE } ] | [ { temporal::IS_TIMEX_SET } ]) |
+ ( [ { temporal::IS_TIMEX_DATE } | { temporal::IS_TIMEX_TIME } ] ) (/'s/ | /'/ /s/ | /’s/ | /’/ /s/) ( [ $hasTemporal ] )) ),
+ result: TemporalCompose(INTERSECT, $1[0].temporal, $1[-1].temporal)
+ }
+
+ { name: "temporal-composite-2",
+ pattern: ( ( [ { temporal::IS_TIMEX_DATE } | { temporal::IS_TIMEX_TIME } ] ) (/today|tonight/) ),
+ result: $0[0].temporal.value
+ }
+
+ { name: "temporal-composite-3",
+ pattern: ( ( [ { temporal::IS_TIMEX_DURATION } ] ) (/before|from|since|after/ | /prior/ /to/)
+ ( [ ({ temporal::IS_TIMEX_TIME } | { temporal::IS_TIMEX_DATE }) ] ) ),
+ result: TemporalCompose(
+ OFFSET, $0[-1].temporal,
+ TemporalCompose(
+ MULTIPLY,
+ $0[0].temporal,
+ :case {
+ $2 =~ (/before/|/prior/ /to/) => -1,
+ :else => 1
+ } ))
+ }
+
+ # expand: timex later|earlier|late => one timex
+ { name: "temporal-composite-4",
+ pattern: ( ( [ { temporal::IS_TIMEX_DURATION } ] ) (/earlier|later|ago|hence/ | /from/ /now/) ),
+ result: TemporalCompose(OFFSET, TIME_REF,
+ TemporalCompose( MULTIPLY, $0[0].temporal,
+ :case {
+ $2 =~ (/earlier/|/ago/) => -1,
+ :else => 1
+ }))
+ }
+
+ # expand: timex later|earlier|late => one timex
+ { name: "temporal-composite-5",
+ pattern: ( ( [ $hasTemporal & !{ temporal::IS_TIMEX_DURATION } ] )
+ (/before|earlier|later|late|ago|hence/ | /from/ /now/) ),
+ result: $0[0].temporal.value }
+
+ { name: "temporal-composite-6a",
+ pattern: ( /the/? ( $EARLY_LATE_MOD ) ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
+ result: TemporalCompose( ADD_MODIFIER, $2[0].temporal.value, GetTag($1[0], "Modifier") )
+ }
+
+ { name: "temporal-composite-6b",
+ priority: 4,
+ pattern: ( ( $REL_MOD ) ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
+ result: RelativeTime( GetTag($1[0], "TemporalOp"), $2[0].temporal.value )
+ }
+
+ { name: "temporal-composite-6b1",
+ priority: 4,
+ pattern: ( ( /no/ /more/ /than/ | /at/ /most/ | /up/ /to/ )
+ ( [ { temporal::IS_TIMEX_DURATION } & !{{ temporal.value.mod }} ] ) ),
+ result: TemporalCompose( ADD_MODIFIER, $0[-1].temporal.value, "EQUAL_OR_LESS" )
+ }
+ { name: "temporal-composite-6b2",
+ priority: 4,
+ pattern: ( ( /more/ /than/ )
+ ( [ { temporal::IS_TIMEX_DURATION } & !{{ temporal.value.mod }} ] ) ),
+ result: TemporalCompose( ADD_MODIFIER, $0[-1].temporal.value, "MORE_THAN" )
+ }
+ { name: "temporal-composite-6b3",
+ priority: 4,
+ pattern: ( ( /no/ /less/ /than/ | /at/ /least/ )
+ ( [ { temporal::IS_TIMEX_DURATION } & !{{ temporal.value.mod }} ] ) ),
+ result: TemporalCompose( ADD_MODIFIER, $0[-1].temporal.value, "EQUAL_OR_MORE" )
+ }
+ { name: "temporal-composite-6b4",
+ priority: 4,
+ pattern: ( ( /less/ /than/ )
+ ( [ { temporal::IS_TIMEX_DURATION } & !{{ temporal.value.mod }} ] ) ),
+ result: TemporalCompose( ADD_MODIFIER, $0[-1].temporal.value, "LESS_THAN" )
+ }
+
+ # expand: (the|this|about|nearly|early|later|earlier|late) timex => one timex
+ # expand: more than| up to| less than timex => one timex
+ { name: "temporal-composite-6c",
+ pattern: ( ( /this|about|nearly|early|later|earlier|late/ )
+ ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
+ result: $0[-1].temporal.value
+ }
+
+ { name: "temporal-composite-7a",
+ pattern: ( /every/ ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
+ result: MakePeriodicTemporalSet($1[0].temporal, "every", 1 )
+ }
+
+ { name: "temporal-composite-7b",
+# pattern: ( ( $FREQ_MOD ) ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
+ pattern: ( ( $FREQ_MOD ) ( [ $hasTemporal ] ) ),
+ result: MakePeriodicTemporalSet($2[0].temporal, GetTag($1[0], "PTS.quant"), GetTag($1[0], "PTS.multiple") )
+ }
+
+ { name: "temporal-composite-8:ranges",
+ active: options."markTimeRanges",
+ pattern: ( /from/? ( [ { temporal::IS_TIMEX_TIME } | { temporal::IS_TIMEX_DATE } ] ) /to|-/ ( [ { temporal::IS_TIMEX_TIME } | { temporal::IS_TIMEX_DATE } ] ) ),
+ result: TimeRange( $1[0].temporal.value, $2[0].temporal.value ) }
+
+ { name: "temporal-composite-9",
+ pattern: ( [{ temporal::IS_TIMEX_TIME }] (?: /sharp/|/exactly/|/precisely/|/on/ /the/ /dot/) ),
+ result: $0[0].temporal.value }
+
+ ########################################################################################################################
+
+ ENV.defaults["stage"] = 4
+ ENV.defaults["ruleType"] = "tokens"
+
+ # Vague times
+ { ( /the/ /past/ | /recently/ ) => TIME_PAST }
+ { pattern: ( /at/ /the/ (/time/) ), matchedExpressionGroup: 1, result: TIME_PAST }
+ { ( /past|once|medieval|previously/ ) => TIME_PAST }
+ { ( /present|current|currently/ | /right/? /now/ ) => TIME_PRESENT }
+ { ( /the/? /near/? /future/ ) => TIME_FUTURE }
+
+ # Final rules to determine how to resolve date
+ ENV.defaults["ruleType"] = "composite"
+ ENV.defaults["stage.limitIters"] = 1
+ { pattern: ( [ { temporal::IS_TIMEX_DURATION } & {{ tokens =~ ( /.*s/ ) }} ] ),
+ result: InexactDuration( $0[0].temporal.value ) }
+
+ { pattern: ( [ { tag:/VBD/ } | /have/ ] []{0,2} [ $hasTemporal ] ),
+ action: VTag( $0[-1].temporal.value, "resolveTo", RESOLVE_TO_PAST )
+ }
+ { pattern: ( [ $hasTemporal ] []{0,2} [ { tag:/VBD/ } | /have/ ] ),
+ action: VTag( $0[0].temporal.value, "resolveTo", RESOLVE_TO_PAST )
+ }
+ { pattern: ( (/would/ | /could/ | /should/ | /will/ | /going/ /to/ | /'/ /ll/ | /'ll/ | /’/ /ll/ | /’ll/ )
+ []{0,2} [ $hasTemporal ]
+ ),
+ action: VTag( $0[-1].temporal.value, "resolveTo", RESOLVE_TO_FUTURE )
+ }
+ { pattern: ( [ $hasTemporal ] []{0,2}
+ (/would/ | /could/ | /should/ | /will/ | /going/ /to/ | /'/ /ll/ | /'ll/ | /’/ /ll/ | /’ll/ ) ),
+ action: VTag( $0[0].temporal.value, "resolveTo", RESOLVE_TO_FUTURE )
+ }
+
+
+ ########################################################################################################################
+ # Final filtering rules
+
+ ENV.defaults["ruleType"] = "filter"
+ ENV.defaultTokensAnnotationKey = tokens
+
+ { pattern: ( $NUM /to/ $NUM) }
+ { pattern: ( /(quarter|sun)s?/ ) }
+ { pattern: ( [ { word:/(fall|spring|second|march|may|sat|sun|min)s?/ } & !{ tag:/NN.*/ } ] ) }
+ { pattern: ( /the/ [ { word:/second/ } & !{ tag:/NN.*/ } ] ) }
+ { pattern: ( [ { word:/((twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety)-)?second/ } ] ) }
+ { pattern: ( [ {{ temporal.value == NON_TEMPORAL }} ] ), over: NIL }
+
+ # Reject anything that is just a timezone
+ { pattern: ( [ {{ tags["TIMEZONE"] }} ] ), over: NIL }
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/sutime/spanish.sutime.txt b/CoreNLP/stanford-corenlp-4.5.7/sutime/spanish.sutime.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8872a727f0e5e2c06b729d1ffccb157317dd4a2d
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/sutime/spanish.sutime.txt
@@ -0,0 +1,73 @@
+###############################################################
+
+ ENV.defaults["stage"] = 1
+ ENV.defaults["ruleType"] = "tokens"
+
+ # map month names to numbers
+ MONTH_MAP = {
+ "enero": 1,
+ "febrero": 2,
+ "marzo": 3,
+ "abril": 4,
+ "mayo": 5,
+ "junio": 6,
+ "julio": 7,
+ "agosto": 8,
+ "septiembre": 9,
+ "octubre": 10,
+ "noviembre": 11,
+ "diciembre": 12
+ }
+
+ # dates
+
+ $MONTH_NAME = "/enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre/";
+
+ # full date
+ { (/el/? (/[0-9]{1,2}/) /de/ ($MONTH_NAME) /de/ (/[0-9]{4}/)) => IsoDate($3[0].numcompvalue, MONTH_MAP[$2[0].word], $1[0].numcompvalue) }
+
+ # day and month
+ { (/el/? (/[0-9]{1,2}/) /de/ ($MONTH_NAME)) => IsoDate(NIL, MONTH_MAP[$2[0].word], $1[0].numcompvalue) }
+
+ # month and year
+ { (($MONTH_NAME) /de/ (/[0-9]{4}/)) => IsoDate($2[0].numcompvalue, MONTH_MAP[$1[0].numcompvalue], NIL) }
+
+ # month alone
+ { (/enero/) => JANUARY }
+ { (/febrero/) => FEBRUARY }
+ { (/marzo/) => MARCH }
+ { (/abril/) => APRIL }
+ { (/mayo/) => MAY }
+ { (/junio/) => JUNE }
+ { (/julio/) => JULY }
+ { (/agosto/) => AUGUST }
+ { (/septiembre/) => SEPTEMBER }
+ { (/octubre/) => OCTOBER }
+ { (/noviembre/) => NOVEMBER }
+ { (/diciembre/) => DECEMBER }
+
+ # relative times
+ { (/ayer/) => YESTERDAY }
+ { (/hoy/) => TODAY }
+ { (/mañana/) => TOMORROW }
+ { (/esta/ /noche/) => TONIGHT }
+
+ # days of the week
+ { (/el|este|hoy/? /lunes/) => MONDAY }
+ { (/el|este|hoy/? /martes/) => TUESDAY }
+ { (/el|este|hoy/? /miércoles/) => WEDNESDAY }
+ { (/el|este|hoy/? /jueves/) => THURSDAY }
+ { (/el|este|hoy/? /viernes/) => FRIDAY }
+ { (/el|este|hoy/? /sábado/) => SATURDAY }
+ { (/el|este|hoy/? /domingo/) => SUNDAY }
+
+###############################################################
+
+ ENV.defaults["ruleType"] = "tokens"
+ ENV.defaults["priority"] = 0
+ ENV.defaults["locale"] = "en"
+
+ { ruleType: "time", pattern: /yyyy-?MM-?dd-?'T'HH(:?mm(:?ss([.,]S{1,3})?)?)?(Z)?/ }
+ { ruleType: "time", pattern: /yyyy-MM-dd/ }
+
+ { ruleType: "time", pattern: /dd?\\?\/MM?\\?\/(yyyy|yy)/ }
\ No newline at end of file
diff --git a/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.input.txt b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.input.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e0891b1233899c4cce249f618ba63b4d57a90df1
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.input.txt
@@ -0,0 +1 @@
+Both blue and light blue are nice colors.
diff --git a/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.properties b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.properties
new file mode 100644
index 0000000000000000000000000000000000000000..b5f00d470e93ec0b16bb5449cdb32040e4b3d978
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.properties
@@ -0,0 +1,2 @@
+customAnnotatorClass.color=edu.stanford.nlp.pipeline.TokensRegexAnnotator
+color.rules = color.rules.txt
\ No newline at end of file
diff --git a/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.rules.txt b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.rules.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7458d9694751f48e724fd7ca26bda871fe42026f
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/color.rules.txt
@@ -0,0 +1,38 @@
+# Colors
+# Example to add "COLOR" as ner tag, and hex RGB code as the normalized tag for strings matching a color
+
+# Case insensitive pattern matching (see java.util.regex.Pattern flags)
+ENV.defaultStringPatternFlags = 2
+
+# Map variable names to annotation keys
+ner = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NamedEntityTagAnnotation" }
+normalized = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$NormalizedNamedEntityTagAnnotation" }
+tokens = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$TokensAnnotation" }
+
+# Create OR pattern of
+# regular expression over tokens to hex RGB code
+# for colors and save it in a variable
+$Colors = (
+ /red/ => "#FF0000" |
+ /green/ => "#00FF00" |
+ /blue/ => "#0000FF" |
+ /magenta/ => "#FF00FF" |
+ /cyan/ => "#00FFFF" |
+ /orange/ => "#FF7F00" |
+ /brown/ => "#964B00" |
+ /purple/ => "#800080" |
+ /gray/ => "#777777" |
+ /black/ => "#000000" |
+ /white/ => "#FFFFFF" |
+ (/pale|light/) /blue/ => "#ADD8E6"
+)
+
+# Define ruleType to be over tokens
+ENV.defaults["ruleType"] = "tokens"
+
+# Define rule that
+# upon matching pattern defined by $Color
+# annotate matched tokens ($0) with ner="COLOR" and normalized=matched value ($$0.value)
+{ pattern: ( $Colors ),
+ action: ( Annotate($0, ner, "COLOR"), Annotate($0, normalized, $$0.value ) ) }
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/tokensregex/retokenize.txt b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/retokenize.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2af5b877c32c6d4bbd66111a7eca920df5b474c0
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/tokensregex/retokenize.txt
@@ -0,0 +1,26 @@
+# Uses TokensRegex library to split further split tokens with -
+
+# Map variable names to annotation keys
+tokens = { type: "CLASS", value: "edu.stanford.nlp.ling.CoreAnnotations$TokensAnnotation" }
+
+# Indicates matched expressions should replace the tokens annotation
+options.matchedExpressionsAnnotationKey = tokens;
+# Indicates that the matched expressions and tokens should be combined
+options.extractWithTokens = TRUE;
+# Indicates that the matched expressions should be flattened to be just tokens
+options.flatten = TRUE;
+
+# Mark units
+
+# Define ruleType to be over tokens
+ENV.defaults["ruleType"] = "tokens"
+# Case insensitive pattern matching (see java.util.regex.Pattern flags)
+ENV.defaultStringPatternFlags = 2
+# Indicates that after matching, and computing the result, the result should be placed in the tokens annotation
+ENV.defaultResultAnnotationKey = tokens
+
+
+# Define rule where upon matching tokens with -, the matched token is split
+{ pattern: ( /.+-.+/ ), result: Split($0[0], /-/, TRUE) }
+
+
diff --git a/CoreNLP/stanford-corenlp-4.5.7/xom-1.3.9-sources.jar b/CoreNLP/stanford-corenlp-4.5.7/xom-1.3.9-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f951b2fd610e00f0b33edf53f8bc6d531b1dbe7f
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/xom-1.3.9-sources.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21c54a2c66bbd73bd230b572bbd3552189b72fee34539284b1ad57d37c49c3d5
+size 312377
diff --git a/CoreNLP/stanford-corenlp-4.5.7/xom.jar b/CoreNLP/stanford-corenlp-4.5.7/xom.jar
new file mode 100644
index 0000000000000000000000000000000000000000..f38c7fd54df813d9282c7c05b6ba6fe86c2088a2
--- /dev/null
+++ b/CoreNLP/stanford-corenlp-4.5.7/xom.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b45f6d5b882ec3c13de86cf23512d01377c1943e8f8ad767298f67e03e561c5
+size 326351