├── README.md ├── README └── intellij_screenshot_lrec2018.jpg ├── README_LICENSES.md ├── build.sbt ├── data └── lrec2018 │ └── WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial │ ├── README_partial.txt │ └── tsv │ ├── questionsAndExplanations.tsv │ ├── tableindex.txt │ └── tables │ ├── ACTION.tsv │ ├── AFFECT.tsv │ ├── AFFORDANCES.tsv │ ├── ATTRIBUTE-VALUE-RANGE.tsv │ ├── AVG-WEIGHT.tsv │ ├── CAUSE.tsv │ ├── CHANGE-VEC.tsv │ ├── CHANGE.tsv │ ├── CONSUMERS.tsv │ ├── CONTAINS.tsv │ ├── CONVERSIONS.tsv │ ├── COUNTRY-HEMISPHERE.tsv │ ├── COUPLEDRELATIONSHIP.tsv │ ├── DURATIONS.tsv │ ├── DURING.tsv │ ├── EXAMPLES.tsv │ ├── FORMEDBY.tsv │ ├── FREQUENCY.tsv │ ├── HABITAT.tsv │ ├── IF-THEN.tsv │ ├── INSTANCES.tsv │ ├── INTENSIVE-EXTENSIVE.tsv │ ├── KINDOF.tsv │ ├── LIFESPAN.tsv │ ├── LOCATIONS.tsv │ ├── MADEOF.tsv │ ├── MAGNETISM.tsv │ ├── MEASUREMENTS.tsv │ ├── NAMES.tsv │ ├── OPPOSITES.tsv │ ├── PARTOF.tsv │ ├── PERCEPTIONS.tsv │ ├── PREDATOR-PREY.tsv │ ├── PROCESSROLES.tsv │ ├── PROCESSSTAGES.tsv │ ├── PROP-ANIMAL-ATTRIB.tsv │ ├── PROP-CONDUCTIVITY.tsv │ ├── PROP-ENVIRONMENTATTRIB.tsv │ ├── PROP-FLEX-RIGIDITY.tsv │ ├── PROP-HARDNESS.tsv │ ├── PROP-INHERITEDLEARNED.tsv │ ├── PROP-ORBITAL-ROT.tsv │ ├── PROP-QUANTITY-DATE.tsv │ ├── PROP-RECYCLABLE.tsv │ ├── PROP-REL-DIST.tsv │ ├── PROP-RESOURCES-RENEWABLE.tsv │ ├── PROP-STATESOFMATTER.tsv │ ├── PROP-STATESOFMATTER1.tsv │ ├── PROP-WARM-COLD-BLOODED.tsv │ ├── PROPERTIES-GENERIC.tsv │ ├── PROPERTIES-THINGS.tsv │ ├── REQUIRES.tsv │ ├── SOURCEOF.tsv │ ├── STAGE-IN-PROCESS.tsv │ ├── SUBDIVISION-COUNTRY.tsv │ ├── SUBDIVISION-GENERICSPATIAL.tsv │ ├── SYNONYMY.tsv │ ├── TRANSFER.tsv │ ├── UNIT.tsv │ ├── USEDFOR.tsv │ ├── VEHICLE.tsv │ ├── WAVES.tsv │ └── XIVORE.tsv ├── props └── worldtreecorpus.lrec2018.properties ├── src └── main │ └── scala │ ├── data │ └── question │ │ ├── ExamQuestion.scala │ │ ├── ExamQuestionParserDynamic.scala │ │ ├── MCExplQuestion.scala │ │ └── MCQuestionRaw.scala │ ├── examples │ └── LoadQuestionsTablestore.scala │ ├── explanationexperiments │ ├── CharacterizeConnectivity.scala │ ├── GenerateQuestionClusterGraph.scala │ ├── MostCommonTableRows.scala │ ├── SummaryKnowledgeGrowth.scala │ └── SummaryStatistics.scala │ ├── explanationgraph │ ├── LookupLemmatizer.scala │ ├── Table.scala │ ├── TableStore.scala │ └── TableUtils.scala │ └── releasetools │ ├── MakePlainTextExplanations.scala │ └── RemoveTablestoreComments.scala └── web_tool └── lemmatization-en.txt /README.md: -------------------------------------------------------------------------------- 1 | # README.md (worldtree-api) 2 | *** 3 | 4 | ### Background 5 | The Worldtree project aims to produce methods of automated inference for question answering that are able to combine multiple pieces of information ("information aggregation") to answer questions. A central focus of Worldtree is on explanation-centered inference -- producing not only correct answers, but also compelling human-readable justifications for why the answers to those questions are correct. These explanations should be generated and used by the inference process to correctly answer a given question. The central evaluation mechanism is through standardized science exam questions, which contain a variety of very challenging forms of inference (Clark AKBC 2013, Jansen et al. COLING 2016). 6 | 7 | ### Repository 8 | This repository is for public releases of the Worldtree project. Code and data will be moved from the research repository to this repository once papers are accepted so that the code and analyses are easily replicable and can be reused by others. 9 | 10 | We hope this code and data are useful to you. Please feel free to get in touch if you have any questions, comments, or difficulties ( pajansen@email.arizona.edu ). 11 | 12 | ### Licenses 13 | Please see `README_LICENSES.md`, included in this repository. 14 | 15 | 16 | ### More Information 17 | The following papers describe more about the task of information aggregation, and explanation generation in the context of question answering. These papers are available at http://www.cognitiveai.org/publications : 18 | - **Fried et al. (TACL 2015) Higher-order Lexical Semantic Models for Non-factoid Answer Reranking:** We investigate a large number of multi-hop models for question answering that traverse word-level graphs built using a variety of lexical semantic methods, representations, and traversal methods including PageRank. Using a corpus of 10,000 questions from Yahoo! Answers, we experimentally demonstrate that higher-order methods are broadly applicable to alignment and language models, across both word and syntactic representations. We show that an important criterion for success is controlling for the "semantic drift" that accumulates during graph traversal. Without controlling for semantic drift, performance rarely increases beyond 2 hops. 19 | 20 | - **Jansen et al. (COLING 2016) What’s in an Explanation? Characterizing Knowledge and Inference Requirements for Elementary Science Exams:** We perform a fine-grained analysis of the knowledge and inference requirements required to answer and provide compelling human-readable explanations for elementary science exams by generating a small corpus of free-text explanations, then annotating these for common knowledge and inference types. We identify 3 coarse-grained and 21 fine-grained knowledge types that serve as the basis for future work in developing large corpora of structured explanations. We also empirically validate our analysis by showing that of two solvers using different mechanisms (one a retrieval or look-up solver, the other an "inference" solver), the "inference" solver successfully answers more questions requiring complex inference. 21 | 22 | - **Jansen et al. (CL 2017) Framing QA as Building and Ranking Answer Justifications:** We show it is possible to learn to aggregate free-text sentences from study guides to build partial explanations that answer elementary science questions. Because no explicit training data for the explaination construction task was available, we showed it was possible to learn this task latently. Performance benefits are shown when aggregating 2 and up to 3 free text sentences, after which semantic drift likely prevents further increases. 23 | 24 | - **Jansen (AKBC 2017) A Study of Automatically Acquiring Explanatory Inference Patterns from Corpora of Explanations: Lessons from Elementary Science Exams:** Constructing large explanations (more than 2 facts) by aggregating separate facts/sentences is very hard. This is very limiting, as we have shown that even elementary science exam questions require aggregating an average of 4 to 6 facts (and sometimes many more) to answer and explain the details of that inference. In this paper we explore whether new explanations can be constructed by reusing patterns (at various levels of abstraction) found in known explanations. We empirically demonstrate that there are sufficient common explanatory patterns in the Worldtree corpus that it is possible in principle to reconstruct unseen explanation graphs by merging multiple explanatory patterns, then adapting and/or adding to their knowledge. This may ultimately provide a mechanism to allow inference algorithms to surpass the two-fact “aggregation horizon” in practice by using common explanatory patterns as constraints to limit the search space during information aggregation. 25 | 26 | - **Jansen et al. (LREC 2018): WorldTree: A Corpus of Explanation Graphs for Elementary Science Questions supporting Multi-hop Inference:** We construct and analyze a large corpus of 1,680 explanations for elementary science questions, represented as lexically connected "explanation graphs", to support efforts in supervised multi-hop inference. Each sentence in an explanation is represented as a row in a semi-structured table, and each row in an explanation must have shared words (lexical overlap) with the question, answer, and/or another sentence in the explanation. The average explanation is 6 sentences/table rows in length. The semi-structured representation of explanations facilities a variety of automated analyses, and we show a number of predictable properties and relationships of this explanation corpus (knowledge frequency, explanation overlap and cluster size, and knowledge growth and reuse) that we hypothesize may apply to other corpora of semi-structured explanations when they are available. To the best of our knowledge, this corpus of explanations is unique both in it's scale (nearly everly publicly available elementary science question is included) and commitment to providing semi-structured relations from the level of complete explanations to individual sentences within explanations). 27 | 28 | 29 | 30 | *** 31 | # Release-specific notes 32 | ### LREC 2018 (Worldtree Corpus V1.0 Initial Release, Analysis of Explanation Corpus) 33 | This repository includes the analyses for the LREC 2018 paper, "Worldtree: A Corpus of Explanation Graphs for Elementary Science Questions supporting Multi-hop Inference" (Jansen, Wainwright, Marmorstein, and Morrison). The paper is available at http://www.cognitiveai.org/publications . 34 | 35 | The analyses include: 36 | - **explanationexperiments.SummaryStatistics:** Basic summary statistics (e.g. average explanation length) 37 | - **explanationexperiments.MostCommonTableRows:** (1) The proportion of explanations that contain knowledge from a given table (Table 3), as well as (2) an analysis sorting the most commonly reused table rows across explanations by frequency, illustrating a sort of Zipf's law for explanation corpora (only discussed briefly in the LREC 2018 paper). 38 | - **explanationexperiments.CharacterizeConnectivity:** The monte-carlo simulation to characterize the proportion of questions whose explanations overlap by 1 or more, 2 or more, 3 or more, etc, explanation sentences (Figure 5). The simulation also measures the average cluster size of questions with a given level of connectivity (footnote 6). 39 | - **explanationexperiments.SummaryKnowledgeGrowth:** * The monte-carlo analysis to determine the number of unique table rows required to explainably answer a given number of questions. This simulation generates the data for Figure 6 in the LREC2018 paper. 40 | 41 | The repository also includes: 42 | - **explanationexperiments.GenerateQuestionClusterGraph:** The conversion tool that exports connectivity graphs in DOT format. This generates the cool explanation connectivity/overlap graphs, such as Figure 4 from the paper. Gephi ( https://gephi.org/ ) is used to import, style, and render these graphs. 43 | - An easy-to-understand example, **examples.LoadQuestionsTablestore**, illustrating the use of the API, parsers, and storage classes for loading and making use of both the questions and tablestore annotation. 44 | 45 | ##### Corpora 46 | This repository includes a partial release of the Worldtree V1.0 corpus. The full corpus including additional formats, data, and visualizations is available at http://www.cognitiveai.org/explanationbank . 47 | 48 | 49 | ##### Running these experiments 50 | 51 | The experiments should run as-is, and require only reference to an external property file ( `props/worldtreecorpus.lrec2018.properties` ) that includes paths to the corpus, and modifiable parameters for each analysis/tool. Each of the experiments may require more than the default amount of memory on your machine, particularly the monte-carlo analyses, so you may need to increase this in your IDE or on the command line (e.g. -Xmx8g ). 52 | 53 | An example of configuring the command line paramters and memory to run one of the analyses in IntelliJ is as follows: 54 | ![alt text](https://github.com/clulab/worldtree-api/raw/master/README/intellij_screenshot_lrec2018.jpg "alt text") 55 | 56 | 57 | *** 58 | ### LREC 2018 (Explanation Annotation Tool) 59 | 60 | **TODO:** This tool will be released once it has been packaged, and installation instructions have been written. 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /README/intellij_screenshot_lrec2018.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clulab/worldtree-api/622babd682904faaf30a45778f17a229b791ce88/README/intellij_screenshot_lrec2018.jpg -------------------------------------------------------------------------------- /README_LICENSES.md: -------------------------------------------------------------------------------- 1 | # README_LICENSES.md (worldtree-api) 2 | *** 3 | 4 | # Data 5 | *** 6 | ##### 1. Worldtree Corpus V1.0 (Sept 2017 Snapshot) 7 | This repository includes a partial version of the Worldtree Corpus V1.0 (Sept 2017) snapshot, which includes questions, explanations, and tablestore annotation. The full version is available at http://cognitiveai.org/explanationbank 8 | - AI2 Science Questions: Included in the WorldTree corpus. The original version and documentation are available from AI2 ( http://allenai.org/data.html ) 9 | - AI2 Science Questions Mercury: A separately licensed set of questions with a non-commercial, non-distribution license. These questions are not included, but are available from AI2. 10 | - Aristo Tablestore: A number of the 62 tables in the WorldTree Tablestore are reused from the Aristo Tablestore ( http://allenai.org/data.html ), which is distributed under a CC-BY-SA license. 11 | 12 | ##### 2. Lemmatization List 13 | There are not currently any online lemmatizers available for the node.js annotation webtool that we're aware of, so the webtool makes use of a look-up lemmatizer. Some of the Worldtree code also makes use of this lemmatizer for 14 | consistency (LookupLemmatizer.scala). 15 | - The list of English lemmatizations is from Michal Boleslav Měchura ( http://www.lexiconista.com/datasets/lemmatization/http://www.lexiconista.com/datasets/lemmatization/ ). We have added a small number of domain-specific lemmatizations to this list. 16 | 17 | 18 | # Code 19 | *** 20 | -------------------------------------------------------------------------------- /build.sbt: -------------------------------------------------------------------------------- 1 | name := "worldtree-api" 2 | 3 | version := "1.0" 4 | 5 | scalaVersion := "2.11.6" 6 | 7 | libraryDependencies ++= Seq( 8 | "com.github.tototoshi" %% "scala-csv" % "1.2.2", 9 | "org.clulab" %% "processors" % "5.8.6", 10 | "org.clulab" %% "processors" % "5.8.6" classifier "models", 11 | "edu.mit" % "jwi" % "2.2.3", 12 | "org.scalatest" %% "scalatest" % "2.2.1" % "test", 13 | "junit" % "junit" % "4.10" % "test", 14 | "com.novocode" % "junit-interface" % "0.11" % "test", 15 | "ch.qos.logback" % "logback-classic" % "1.0.10", 16 | "org.json" % "json" % "20090211", 17 | "postgresql" % "postgresql" % "9.0-801.jdbc4", 18 | "xom" % "xom" % "1.2.5", 19 | "joda-time" % "joda-time" % "2.0", 20 | "org.joda" % "joda-convert" % "1.1", 21 | "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.5.1" 22 | 23 | ) 24 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/README_partial.txt: -------------------------------------------------------------------------------- 1 | ** Note, this is only a partial distribution included with worldtree-api intended to ** 2 | ** demonstrate the functionality of the accompanying code. ** 3 | ** Please visit http://www.cognitiveai.org/explanationbank for the full distribution ** 4 | 5 | 6 | Worldtree: A corpus of Explanation Graphs for Elementary Science Questions 7 | supporting Multi-hop Inference 8 | Version 1.0 (September 2017) 9 | http://www.cognitiveai.org/explanations 10 | =================================== 11 | 12 | This README describes the usage of the WorldTree corpus of explanations to 13 | standardized elementary science questions (3rd through 5th grade), which also 14 | form lexically-connected explanation graphs. The corpus also contains a 15 | semistructured Tablestore knowledge resource of elementary science and world 16 | knowledge. 17 | 18 | 19 | LICENSE 20 | ======== 21 | This work combines several datasets, and is distributed under mixed licenses. 22 | The questions in this corpus are drawn from the AI2 Science Questions V2 corpus, 23 | as well as the separately licensed AI2 Science Questions Mercury dataset 24 | containing science questions provided under license by a research partner 25 | affiliated with AI2. A number of the tables in the Tablestore are drawn from 26 | the AI2 Aristo Tablestore. 27 | 28 | For more information, please visit http://www.allenai.org/data.html . 29 | 30 | 31 | 1) AI2 Mercury Dataset 32 | ----------------------------------------- 33 | * Do not distribute * 34 | * Non-commercial use only * 35 | The terms of this data set's license agreement stipulate that this data should not 36 | be distributed except by the Allen Institute for Artificial Intelligence (AI2), and 37 | only with adherence to the terms contained in the End User License Agreement 38 | (included separately in this archive). 39 | 40 | All parties interested in acquiring this data must download it from AI2 directly 41 | and follow the terms of the the EULA, which specifies the data is to be used for 42 | non-commercial, research purposes only. 43 | 44 | Please contact ai2-data@allenai.org with any questions regarding AI2’s data sets. 45 | 46 | 2) Tablestore and Explanation Annotation 47 | ----------------------------------------- 48 | The Tablestore and explanations themselves (separate from the questions) are 49 | distributed under a CC-BY-SA license. The Tablestore includes a number of 50 | tables drawn from the AI2 Aristo Tablestore, which is also distributed under 51 | CC-BY-SA. 52 | 53 | The Creative Commons Attribution-ShareAlike 4.0 International License (http://creativecommons.org/licenses/by-sa/4.0/legalcode) 54 | 55 | This means you are free to: 56 | 1) Share — copy and redistribute the material in any medium or format 57 | 2) Adapt — remix, transform, and build upon the material 58 | for any purpose, even commercially. 59 | The licensor cannot revoke these freedoms as long as you follow the license terms. 60 | 61 | Under the following terms: 62 | 1) Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. 63 | 2) ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. 64 | 3) No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. 65 | 66 | 67 | ATTRIBUTION 68 | ============ 69 | If you make use of this resource in your work, please cite the following paper: 70 | 71 | Jansen, Wainwright, Marmorstein, and Morrison (2018). Worldtree: A corpus of 72 | Explanation Graphs for Elementary Science Questions supporting Multi-hop 73 | Inference. Proceedings of the Language Resource and Evaluation Conference 74 | (LREC 2018). 75 | 76 | 77 | 78 | USAGE 79 | ====== 80 | The corpus is distributed in three separate formats: (1) a set of tab-delimited files 81 | describing the questions, explanations, and tablestore, (2) a set of Excel files with 82 | the original version of the corpus prior to export, and (3) a plain-text version of 83 | the questions and explanations for easy review. 84 | 85 | * (1) Tab-delimited Questions, Explanations, and Tablestore. 86 | 87 | The primary method of use is through this format, a series of tab-delimited files that 88 | describe the questions, explanations, and tables from which the explanation sentences 89 | are drawn. 90 | 91 | "tsv/questionsAndExplanations.tsv" is in the AI2 questions corpus format, and includes 92 | an additional "explanation" field. This field contains a series of unique identifiers 93 | (UIDs) representing specific table rows, as well as the 'explanatory role' that each 94 | table row takes on in a given explanation. Within the explanation field, the UIDs:Role 95 | tuples are pipe-delimited ("|"), and separate UID:Role tuples are space-delimited. 96 | 97 | For example, for the first question: 98 | 99 | Q: Which of the following is an example of a form of energy? 100 | (A) the air in a sealed jar (B) the wire in a metal hanger (C) the water in a small puddle (D) the sound in a loud classroom 101 | 102 | The "explanation" field takes the form of four sentences, themselves represented as four 103 | UIDs referencing specific table rows: 104 | 105 | 1980-256d-b685-846c|CENTRAL 9f4e-2412-59cc-3383|CENTRAL 7c96-f704-e51e-1678|LEXGLUE 1b3f-b617-d7ef-1815|LEXGLUE 106 | 107 | By looking up these rows in the 63 tables within the tablestore, the plain text 108 | explanation can be reconstructed: 109 | 110 | Question: Which of the following is an example of a form of energy? [0]: the air in a sealed jar [1]: the wire in a metal hanger [2]: the water in a small puddle [3]: the sound in a loud classroom 111 | Correct Answer: 3 112 | Explanation: 113 | sound is a kind of energy (UID: 1980-256d-b685-846c) (ROLE: CENTRAL) 114 | loud means high in (sound energy ; sound intensity) (UID: 9f4e-2412-59cc-3383) (ROLE: CENTRAL) 115 | form means kind (UID: 7c96-f704-e51e-1678) (ROLE: LEXGLUE) 116 | a kind of something is an example of that something (UID: 1b3f-b617-d7ef-1815) (ROLE: LEXGLUE) 117 | 118 | 119 | * (2) Excel files 120 | 121 | As above, but in a Microsoft Excel format. Some additional comments on rows are included in this 122 | version of the corpus. 123 | 124 | 125 | * (3) Plain-text 126 | 127 | A plain-text version of the corpus for easy review is also included, in the file 128 | "explanations_plaintext.txt" 129 | 130 | 131 | TABLESTORE FORMAT 132 | ================== 133 | 134 | The first line of each table represents the table header, where each following line 135 | represents the rows of a given table. A given column in a table header may be 136 | preceded by a prefix that marks the column as either filler (e.g. "[FILL]") that 137 | allows the row to be read off as a natural language sentence, or take the form of 138 | a "[SKIP]" column with meta-data: 139 | 140 | [SKIP] COMMENTS: Annotator comments on this row (if any) 141 | [SKIP] DEP: The tablestore is a living document, and rows are occasionally 142 | refactored or moved if they can be better represented in another location. 143 | Having text populated in the "DEPrication" column represents that a given 144 | table row should not actively be used in explanation construction. 145 | [SKIP] UID: The unique identifier string for a given table row. 146 | 147 | 148 | 149 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tableindex.txt: -------------------------------------------------------------------------------- 1 | ATTRIBUTE-VALUE-RANGE.tsv 2 | PROPERTIES-THINGS.tsv 3 | DURATIONS.tsv 4 | OPPOSITES.tsv 5 | PERCEPTIONS.tsv 6 | MEASUREMENTS.tsv 7 | INTENSIVE-EXTENSIVE.tsv 8 | IF-THEN.tsv 9 | SUBDIVISION-GENERICSPATIAL.tsv 10 | DURING.tsv 11 | PROPERTIES-GENERIC.tsv 12 | LOCATIONS.tsv 13 | PROP-STATESOFMATTER.tsv 14 | PROP-STATESOFMATTER1.tsv 15 | PROP-FLEX-RIGIDITY.tsv 16 | PROP-RECYCLABLE.tsv 17 | ACTION.tsv 18 | INSTANCES.tsv 19 | SUBDIVISION-COUNTRY.tsv 20 | COUNTRY-HEMISPHERE.tsv 21 | AFFECT.tsv 22 | FREQUENCY.tsv 23 | PROP-RESOURCES-RENEWABLE.tsv 24 | KINDOF.tsv 25 | LIFESPAN.tsv 26 | CONSUMERS.tsv 27 | AVG-WEIGHT.tsv 28 | HABITAT.tsv 29 | CHANGE.tsv 30 | CHANGE-VEC.tsv 31 | PROP-ANIMAL-ATTRIB.tsv 32 | MADEOF.tsv 33 | PROCESSROLES.tsv 34 | PROCESSSTAGES.tsv 35 | STAGE-IN-PROCESS.tsv 36 | PROP-HARDNESS.tsv 37 | FORMEDBY.tsv 38 | MAGNETISM.tsv 39 | PROP-INHERITEDLEARNED.tsv 40 | TRANSFER.tsv 41 | PARTOF.tsv 42 | PROP-ENVIRONMENTATTRIB.tsv 43 | VEHICLE.tsv 44 | PROP-ORBITAL-ROT.tsv 45 | PROP-CONDUCTIVITY.tsv 46 | PROP-REL-DIST.tsv 47 | SOURCEOF.tsv 48 | PROP-QUANTITY-DATE.tsv 49 | AFFORDANCES.tsv 50 | XIVORE.tsv 51 | SYNONYMY.tsv 52 | UNIT.tsv 53 | WAVES.tsv 54 | CONVERSIONS.tsv 55 | USEDFOR.tsv 56 | EXAMPLES.tsv 57 | CONTAINS.tsv 58 | PROP-WARM-COLD-BLOODED.tsv 59 | REQUIRES.tsv 60 | CAUSE.tsv 61 | NAMES.tsv 62 | COUPLEDRELATIONSHIP.tsv 63 | PREDATOR-PREY.tsv 64 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/AFFECT.tsv: -------------------------------------------------------------------------------- 1 | ACTOR/WHO QUANTITY VERB OBJECT/PROPERTY QUALIFIER [FILL] has a POSITIVE/NEGATIVE [FILL] effect/impact on/for ADJ PATIENT [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | harming something has a negative impact on; effect on that something 57d4-79ba-a97d-0f9a 3 | waste has a negative impact on the environment 2d23-54ce-1de1-e3a8 4 | recycling has a positive impact on the environment da14-61d8-ad00-8a01 5 | recycling resources; nonrenewable resources has a positive impact on the environment; conservation of those resources 813f-2778-ed53-0c9f 6 | planting trees has a positive impact on an ecosystem 53a9-7d7d-dbcb-98aa 7 | planting native plants has a positive impact on an ecosystem 1f99-d3ee-86cc-008f 8 | eating food that contains pesticides can have a negative impact on humans 1900-f929-b3a7-b605 9 | cutting down trees has a negative impact on an ecosystem; organisms living in an ecosystem f178-8a67-81c1-e3fb 10 | humans changing ecosystems;environments usually has a negative impact on an ecosystem; organisms living in an ecosystem f4dc-5030-6255-a1f8 11 | erosion of soil has a negative impact on the environment; soil quality 1fc9-87b3-4b09-6451 12 | helping something has a positive impact on that something b5b8-ce64-6568-4a6c 13 | harming an animal species has a negative impact on the population size of that species 8bb1-de8d-5925-74c6 14 | exercise has a positive impact on a body's strength 768d-b035-c9fc-da67 15 | rest has a positive impact on a health 50de-3baf-f64e-f3fb 16 | too much water has a negative impact on the growth of a plant b421-66e0-479f-cc4e 17 | crop rotation has a positive impact on soil quality 025a-3b8a-b5f2-f320 18 | protecting a living thing has a positive impact on that living thing's survival; health 1992-cbd3-6534-a7f7 19 | the looseness of soil has a positive impact on a plant's roots' growth in that soil e7ae-7d71-673a-aff7 20 | staying warm has a positive impact on an animal's survival; health 2aff-8cb6-a4f9-5fd9 21 | exercise has a positive impact on a human's health 5875-4a46-39fe-053f 22 | sleeping all day has a negative impact on a human's health 33a9-52c2-ab75-070d 23 | acid rain has a negative impact on water quality 8c01-39ba-c26c-f060 24 | wind direction has an impact on temperature Low quality. 0b40-a0ef-e690-f63c 25 | an adaptation; an ability has a positive impact on an animal's; living thing's survival; health; ability to reproduce b48d-28f4-b020-de9f 26 | protecting nature has a positive impact on the environment a4c9-298f-e5c2-eb55 27 | pollution has a negative impact on the environment; air quality d116-6f25-b3ac-7d88 28 | fertilizers have a negative impact on the environment; natural resources e65a-df84-fcd2-733c 29 | landfills have a negative impact on the environment; communities fbcb-2151-6afa-c1c5 30 | loss of resources has a negative impact on the organisms in an area 9b1c-6275-14cd-43e5 31 | national parks have a positive impact on ecosystems 0c65-2951-3811-5f6a 32 | fishing has a negative impact on ecosystems 9ea7-0ab4-73cf-d2e1 33 | fertilizers have a positive impact on algae growth 6cb9-7da9-1e1b-119b 34 | glaciers melting has a negative impact on the glaicial environment e170-b8a2-8292-67af 35 | travelling quickly has a positive impact on a person's life 14a9-afe5-f64a-d254 36 | learning about the cause of a disease has a positive impact on finding a cure for the disease b78b-23bd-d0fc-8d81 37 | cold temperatures usually have a negative impact on organisms cf66-dfc6-48d2-57ce 38 | helping bodily processes has a positive impact on an animal; an animal's health 4a99-8800-c83e-73fb 39 | seed dispersal has a positive impact on a plant; a plant's reproduction 2337-f998-9a82-5444 40 | illness has a negative impact on an organism's health 0c02-ef0b-7f35-1468 41 | having food has a positive impact on an organism's health 4d6a-a765-2231-eee7 42 | looking at bright objects has a negative impact on the eyes 9209-73ec-9b0b-56a0 43 | avoiding predators has a positive impact on prey's; an organism's survival; health; ability to reproduce a6f0-93ef-5850-b78f 44 | resources becoming available has a positive impact on the things that need those resources 0f63-0b4e-b0a3-6638 45 | state of matter has no impact on mass Moved to COUPLEDRELATIONSHIP fe9e-a662-16d3-2f43 46 | oxygen has a positive impact on air quality cb44-c094-9e51-f22c 47 | staying cool has a positive impact on a human's comfort 9e69-51bc-d488-fd6e 48 | saving money has a positive impact on a person; a company aa8d-f63d-7aba-2b48 49 | darkness has a negative impact on photosynthesis 8be8-72e2-0326-1f4b 50 | using sturdy materials to build furniture has a positive impact on the use of that furniture 8697-ef37-f85f-edcd 51 | performing a task in less time; more quickly; faster has a positive impact on a person's life 4893-838a-20f6-131a 52 | communication has a positive impact on a person's life 03f4-694a-d986-eb3a 53 | decreasing something negative has a positive impact on a thing d390-3d50-786d-4e9f 54 | cracking something usually has a negative impact on that something 331a-fc1c-2a90-be69 55 | the decrease of something required by an organism has a negative impact on that organism's survival f346-e8eb-6338-4e34 56 | a required resource being low in availability has a negative impact on the something that requires that resource 09f9-ddfd-fa69-b278 57 | an animal being born; being hatched when food is available has a positive impact on that animal's survival; health 6aab-57ff-4d45-9ebf 58 | an animal being born; being hatched when temperatures are warm has a positive impact on that animal's survival; health afdd-eda7-b0e6-ad1a 59 | having a variety of foods available has a positive impact on people's lives 7f82-8a0b-a3e0-26c5 60 | money usually has a positive impact on a person's life fae8-a262-8845-ae7b 61 | advantage has a positive impact on something 2f27-9c3b-1811-e537 62 | a living thing surviving has a positive impact on that living thing's ability to compete for resources 5023-29ed-9f25-f7cf 63 | food spoiling has a negative impact on the health of the animal that eats that food 43bf-25d8-a9a1-8d90 64 | zinc has a positive impact on the healing of wounds 2a71-fe32-5eeb-9a92 65 | the ability to access; to acquire; to find resources has a positive impact on an organism's survival; health 78ba-5668-31d9-7285 66 | good bacteria have a positive impact on a living thing's survival; health f542-77fe-59a4-e55f 67 | a tube-like body has a positive impact on moving through soil 59cc-fafd-ca02-2f99 68 | light rays can have a negative impact on the eyes 9430-e769-9be8-f995 69 | dissolving a substance in another substance has no impact on taste Not an AFFECT 6445-bb14-2f38-ced1 70 | warning people of dangers has a positive impact on the safety of those people 3f22-c269-a38b-5f52 71 | insects can have a negative impact on crops 8abe-8679-9624-5b42 72 | distance from an ocean has an impact on the climate of an area Moved to COUPLEDRELATIONSHIP 21aa-7ddd-bb54-be31 73 | conserving resources has a positive impact on the environment 3891-6bf5-33a7-0c5e 74 | type of material through which a sound travels has an impact on the speed at which a sound travels Moved to CHANGE table 4f3c-6616-bcde-a19f 75 | the increase of something required by an organism has a positive impact on that organism's survival a6e1-01e9-def3-d510 76 | crops growing well has a positive impact on a farmer's livelihood e9be-b235-ac20-1a20 77 | organic matter has a positive impact on soil texture 770f-d0fc-866d-3bfc 78 | being stronger usually has a positive impact on an organism's; living thing's health ef33-d8a6-2168-2d74 79 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/AFFORDANCES.tsv: -------------------------------------------------------------------------------- 1 | PROCESS_NAME [FILL] is when ACTOR/THING PROPERTY/OBJECT [FILL] can/can be QUANTIFIER VERB PATIENT [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | electromagnets can be powered by electricity 4ca4-9068-7f5a-d63a 3 | swimming is when humans; animals can move in water e16d-34f6-506f-e5b0 4 | eyes can sense;detect light energy for seeing fdba-70d0-fcc6-e529 5 | literacy is when humans can read and write 63ed-2a75-b0ec-771b 6 | the brain can control animal body through the nervous system 90b2-edef-d99f-687c 7 | two people that are far apart can communicate through a telephone c04b-7952-e97c-e5a7 8 | living things can all reproduce 1ef5-5d4e-fdf8-9d2a 9 | shelter can protect animals;humans from weather 489e-9103-cfb3-9d2e 10 | mechanical energy exerted by an object can be used to push or pull another object 77b1-b251-ee0c-a4b4 11 | the shape of an object can be discovered through feeling that object; touching that object 064c-653b-1ec4-4e84 12 | a human can pedal a bicycle c4de-157a-1fb4-0ec8 13 | the color of an object can be discovered by looking at that object a10f-b463-32a7-a229 14 | flexibility means the shape of a material; of an object can be easily changed ac40-d9c4-86a2-f4bb 15 | recyclable means a material can be recycled f450-c52a-cebe-ac01 16 | the properties of something can be used to identify; used to describe that something 8661-5700-67ef-4ac8 17 | the composition of something can be used to identify that something f245-df47-6b3e-b4f6 18 | large fins can be used to move quickly through water c46f-1a47-b825-6df0 19 | shale can be metamorphosed into slate by increased pressure f700-0f5f-be06-c22a 20 | organisms can be preserved in sedimentary rock 198d-4495-e5b7-1477 21 | helping means something can be done; completed more easily; better b7ec-6a4c-7e51-eb10 22 | paper can not be melted 0368-ac19-6961-eb96 23 | one can get something from a source e6fb-12a1-939d-e850 24 | flowing liquid can push objects 108e-8a75-dafd-6b0e 25 | an animal can survive in an environment with little food by storing fat affa-2d72-5000-4e10 26 | a hummingbird can reach flowers by hovering in the air 984e-bccb-a608-55b8 27 | sound can travel through air f672-4bbb-6fff-373c 28 | two females can not usually reproduce with each other 4484-111e-3dfa-198e 29 | sunlight can shine through a window 1f7b-30af-4177-e9d5 30 | bacteria can help digest food in humans df29-0616-310f-2dfb 31 | bats can echolocate 6b7f-061c-c3e6-7b6a 32 | electricity can not flow through an open circuit 9454-afc8-6751-3910 33 | vaccines can help prevent illness c170-8ed0-d311-238e 34 | renewable resources can be used over again f290-4de0-34ab-0f52 35 | the cells of multicellular organisms can specialize 097c-4fb9-56b6-3b8d 36 | a single-cell organism cannot specialize eb36-f98b-9b4f-d15e 37 | a single-cell organism can survive without the help of other cells 3c3e-7d13-68ab-07e8 38 | an animal can not use underground water 6c80-eaba-4b68-6003 39 | something reusable can be used more than once 5cac-4930-3622-9502 40 | light can travel through a vacuum 0350-5cfd-debd-dee8 41 | hard objects can vibrate more than soft objects 3d6b-ad3e-adb6-5537 42 | a tree can be replaced by planting a new tree 431d-1679-5bc8-6a2c 43 | a renewable resource can be replaced 372a-9e36-7f56-af5c 44 | plant cells can perform photosynthesis 731c-4521-3f2e-d41e 45 | animal cells can not perform photosynthesis 4184-5780-8914-8264 46 | radiation can affect objects that are not touching 3274-5890-ead5-c376 47 | non-contact forces can affect objects that are not touching e900-125c-4981-68a5 48 | magnetism can affect objects that are not touching f273-cb72-b4dd-f0ab 49 | a renewable resource can be renewed 3148-365d-5883-f06c 50 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/ATTRIBUTE-VALUE-RANGE.tsv: -------------------------------------------------------------------------------- 1 | THING [FILL] means VALUE [FILL] in/of ATTRIBUTE [FILL] for FOR/PURPOSE [FILL] by BY/THROUGH/HOW EXAMPLE/SUCHAS SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | abundant means high in number 486b-5779-6446-5a7c 3 | ancient means a long time ago d2aa-4c9c-560c-3a18 4 | bright means a lot of light 56a9-dbc0-3e13-141a 5 | bright means bright; light in color b5e2-521d-a85b-cf14 6 | cleaner means less; lower in pollutants e1ae-b51c-1770-3db1 7 | clear weather means sunny; not cloudy; not rainy weather 9038-72cb-9b3b-4af6 8 | close means low in distance cf37-a1ef-e60b-f8e7 9 | cloudy means the presence of clouds in the sky 0d83-db1e-d92b-0bf0 10 | cold means low in temperature cf2a-6257-0c5c-7445 11 | colder; cooler means lower in temperature 246e-dd6e-6e09-988a 12 | damp means a large amount of water 870d-1249-13fb-d0a1 13 | dark means dark in color 520f-4fa4-acef-f45f 14 | deeper means greater in depth fddd-e3d7-b93b-187c 15 | deepest means greatest in depth 5082-9c3c-a9c7-f968 16 | dim means a small amount of light 0c2b-7128-7a4c-4f92 17 | dimmer means less bright e70f-e13e-37af-1fda 18 | distant means great in distance e3f2-57ec-2aec-341a 19 | drier means lower in amount of water; wetness; moisture 3cfa-bd2a-6867-18ba 20 | dry means low in amount of water; wetness; moisture 5554-6d9d-779d-d5f5 21 | extreme means very high in value b8d9-4ead-699d-2b5e 22 | far means great in distance 94b7-fbe6-74cf-eba2 23 | faster means an increase; higher in speed dcd4-5303-c509-88ec 24 | favorite means highest preference 83b3-fd83-a8f1-e3f8 25 | fewer means lower; less in number 17e7-deeb-44f0-1758 26 | fewest means lowest; least in number 0105-c0af-766a-ccab 27 | flexible means high flexibility 98b6-2bc9-0f82-84f9 28 | greater means higher; more in value 2f53-db43-c6e9-95bc 29 | heaviest means greatest mass; weight b772-685d-841d-f24b 30 | heavy means a large amount of weight cf35-7fb9-d732-4bba 31 | high means a lot of something 7fa0-943d-7998-baa0 32 | high means great in altitude 8887-e704-c02a-b51a 33 | hot means high in heat energy; temperature 9ff8-543c-2f35-5d3f 34 | indented means a little deep in depth b3e6-7562-a0b7-db2a 35 | intense means high in intensity b626-264a-fc02-81b7 36 | larger means greater; higher; more in size 8b56-35cc-d534-8cad 37 | light means low in weight 2e40-b4c8-727f-c33f 38 | lighter means lower; less in weight 9d6c-c552-fb86-cb2b 39 | little means low in amount 94ca-8f0b-e958-f1a5 40 | long means great in length b416-cff8-0999-48a9 41 | loud means high in sound energy;sound intensity 9f4e-2412-59cc-3383 42 | microscopic means very small in size 9de1-83af-1cb8-6667 43 | moist means high in moisture 4765-ccbd-4fbb-78b8 44 | most means over 50% a65e-9ac4-5d0e-ac50 45 | opaque means no light shines through Low quality. be88-e50d-c2fe-c917 46 | oxygen rich means a high amount of oxygen 1e1f-c155-78c5-ca89 47 | resemble means similar characteristics d334-56dc-2e90-fe13 48 | shade means low sunlight 1f5a-cea7-e36d-cd4e 49 | shorter means smaller; less in height b346-9120-f053-18eb 50 | smaller means less; lower in height Low quality. 26b2-9d8b-6643-e93a 51 | snowy means a large amount of snow a85f-1cbe-a3a6-14e1 52 | stop; stopped means zero; 0; no speed ee86-88ae-2535-1a42 53 | strong means high in strength 9a78-e47c-3ee1-6028 54 | tall means great in height e189-7b50-e22f-29e3 55 | taller means greater in height; size 89ba-3b1e-ab64-a131 56 | thin means small in width 8986-ae56-f6e2-8292 57 | warm means medium heat energy; temperature 63df-d3d9-56dc-161a 58 | warmer means greater; higher in temperature 3c5b-8471-16d4-f1b2 59 | wider means greater in width e4bc-1333-59ab-707a 60 | windy means high wind speeds 18c4-e5f9-2e96-516d 61 | endangered means low in population 5d3f-973a-b9e6-a13f 62 | greatest means largest; highest; most 842e-1407-d27c-3e94 63 | higher means greater; above in value; amount; number ecca-9a1d-3074-cd00 64 | longest means greatest in length 4c40-fb3b-92a4-0c8d 65 | largest means greatest in size a183-80da-46fa-bfa6 66 | low means low in elevation; height; altitude e1cc-1d09-9103-7301 67 | lowest means least in value; amount; number 0079-9b02-51a6-b9f2 68 | same means identical; equal 24b3-b5a1-ba81-3488 69 | shortest means least; smallest in length e288-5cf7-f60d-4e8d 70 | smaller means less; lower in size 4159-4c81-0f08-e0d7 71 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/AVG-WEIGHT.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a(n) ORGANISM [FILL] weighs, on average VALUE UNIT [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a dog weighs, on average 32 kg 8d82-d89e-3210-eb99 3 | a horse weighs, on average between 400 and 550 kg 5ede-59cb-d266-b4b0 4 | a chicken weighs, on average 2 kg 9012-e8ac-14df-5227 5 | a lizard weighs, on average 0.5 kg fb38-2011-8574-1ceb 6 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/CHANGE-VEC.tsv: -------------------------------------------------------------------------------- 1 | PROCESS_NAME/ ACTION [FILL] means ADJ AGENT/OBJECT SCOPE [FILL] are ACTION DIRECTION [FILL] a/the QUANTITY PATIENT [FILL] for FOR/PURPOSE [FILL] through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | heating means adding heat 9469-8559-7f35-1bbd 3 | melting is when solids are heated above their melting point 8cbb-8bf8-bfbd-681e 4 | cooling;colder means removing;reducing;decreasing heat;temperature 3a9b-81b5-1a3a-40a0 5 | magnifying makes seeing small things easier through using a magnifying glass; using a microscope 97fc-be7c-5115-2a2e 6 | boiling is when liquids are heated above their boiling point ae9d-5e74-afa3-d031 7 | condensing is when gasses are cooled below their boiling point 3e90-e3f3-440d-008e 8 | some animals' fur grows thicker for staying warm in the winter 84a3-fb47-5416-db66 9 | soil erosion means soil loss through wind;water; animals 5e75-4bbb-dae0-311f 10 | winter means environmental; outdoor temperature decreases d428-62e1-fa35-44c4 11 | growth means size;number;value;strength increases 8a51-fb44-d9d2-73ae 12 | recycling reduces; decreases the amount of water sent to landfills ce64-9ef7-3084-5195 13 | polluting means something poisonous is added to an environment 4d82-5c75-1ac1-abdd 14 | drought means available water decreases in an environment 3492-2519-a7cc-d552 15 | heat means temperature increases 7afc-2bcd-13a5-2d35 16 | falling means moving downward 2522-2f06-9dd6-6bf1 17 | drying means amount of water; amount of liquid; wetness decreases 85c8-f683-bc89-7bc5 18 | cooling means temperature decreases b71d-3add-69c0-1d03 19 | warm; becoming warm means heat is added 39ec-9974-829d-ba5e 20 | sinking means moving down ed1e-f72b-9918-7c56 21 | drought is when amount of precipitation decreases 2298-6f12-b46e-4f4e 22 | loosening means decreases Low quality. No uses. b110-ef2a-6b8e-6d73 23 | boiling means the volume of a liquid decreases cdef-3753-0d9d-1e92 24 | attract means move closer 6e2c-b252-430e-971b 25 | growing means a plant's height;mass;size increase 15b7-2dad-aa86-409b 26 | growing is when an animal's height;mass;size increase 3c39-efea-ce7b-afa8 27 | panting is when an animal's body is cooled by hanging out their tongue a6e0-b058-5e81-743d 28 | amount of water in a body of water increases by storms; rain; glaciers melting; snow melting; ice melting 19c9-47bf-de91-1f2e 29 | recycling reduces the resources needed to make something bbe2-8087-7d0d-2480 30 | growing larger is when size increases 0672-8ba1-8bef-c7c2 31 | exercise increases a body's strength e28b-b306-768c-9265 32 | protection means resistance to damage increases bbeb-6bd2-a93f-7e6c 33 | losing something decreases the amount of that something bbaf-fd47-e244-3163 34 | hiding means visibility; ability to be seen decreases for camouflage 60e9-1f2b-145c-00bd 35 | decomposition increases the amount of nutrients in the soil 39b8-47a9-eee1-d2d4 36 | climbing increases altitude 375c-f58a-32b0-42bf 37 | a source of something increases the amount of that something da68-3173-2681-d90e 38 | a thermal insulator slows; prevents the transfer of heat a469-8103-d86d-9765 39 | storing water increases the water available to organisms in a dry environment 7626-ebfe-aa54-61db 40 | carbon dioxide concentrations in the air have increased over the last decade dramatically ff69-4994-ef75-6ef3 41 | an electrical insulator slows; prevents the transfer of; flow of electricity 0ad2-d22e-525e-0038 42 | positively impacting an organism's survival increases the likelihood of survival of that organism b42b-3273-90bc-24a0 43 | pasteurization reduces the amount of bacteria in milk 0b35-65f7-11a2-d41e 44 | something that is used for communication increases communication 95f3-60ac-0a8c-04ca 45 | the looseness of soil increases the amount of oxygen in that soil 1ab8-7900-02c0-a2d6 46 | spring increases the amount of available food in an environment cc1b-e49e-5ba9-05af 47 | destroying something decreases the amount of that something 84bb-0231-2480-1c8b 48 | using less of a resource increases the availability of that resource 57c5-f27f-1d68-9a7a 49 | gravity pulls objects towards planets 8025-2d3b-7ecb-0aff 50 | having a positive impact on reproduction increases the chance of reproduction f7af-2923-694c-51cf 51 | using raw materials increases waste 1875-8ce4-1858-8652 52 | an exothermic reaction increases the amount of heat ed83-0798-7781-6842 53 | carpooling decreases the amount of cars used to travel to a place 7fce-27b1-e8ef-0b83 54 | bad weather decreases visibility while driving 703d-4bda-4bbc-790e 55 | windshield wiper increases visibility while driving in bad weather cafa-1156-b030-e5db 56 | shrinking decreases size 628f-08c3-a230-9bfb 57 | adding salt to a liquid decreases the melting point of that liquid be88-c9f0-da8b-be7a 58 | adding salt to a solid decreases the freezing point of that solid c03c-a689-cb2e-24a6 59 | preventing something decreases the amount of that something 1653-a7fe-e9be-42ca 60 | decomposition increases amount of organic matter in soil 2fd8-2d03-ccfe-ca27 61 | the temperature of steam decreases after a shower 79a0-2fbc-edea-0d50 62 | to slow; to slow down decreases speed dae9-2ad1-04de-57b4 63 | getting something increases the amount of that something 7a74-426d-ec77-f296 64 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/CHANGE.tsv: -------------------------------------------------------------------------------- 1 | PROCESS_NAME [FILL] means ADJ/QUANTIFIER ACTOR/WHO QUANTIFIER/SCOPE VERB WHAT [FILL] from FROM [FILL] into INTO [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | break down means change from a whole into pieces 400d-d80d-09a3-3206 3 | boiling;evaporation means change from a liquid into a gas by adding heat energy a0b2-a45f-01e1-4bf4 4 | weathering means breaking down rocks; surface materials from larger whole into smaller pieces by weather 791e-1c71-7a1d-d10a 5 | disguise means change appearance to hide ae70-e79a-1335-ece4 6 | photosynthesis means producers; green plants convert from carbon dioxide, water, and solar energy into carbohydrates;food;oxygen for themselves 0962-4a47-4e17-ce97 7 | decomposition is when a decomposer breaks down dead organisms f0e5-d444-871d-9ea3 8 | breathing is when a lung converts from oxygen in air into oxygen in blood f99f-c36a-d00d-742d 9 | breathing is when a gill converts from oxygen in water into oxygen in blood 571a-0a31-ad7b-e097 10 | melting means changing from a solid into a liquid by adding heat energy 6abc-4443-f672-9a97 11 | freezing means changing from a liquid into a solid by reducing heat energy f03c-decc-030f-b860 12 | condensing means changing from a gas into a liquid by reducing heat energy 2aba-39fa-3a07-5ee4 13 | cellular respiration is when a cell converts from oxygen and carbohydrates into carbon dioxide, water, and energy 7272-bf77-2331-1b55 14 | babies develop from babies into adults 4bd2-ea7f-6dec-3c54 15 | tearing means changing a whole into pieces 23d7-086d-e662-8fd4 16 | electrical devices convert electricity into other forms of energy 5e4d-6ae2-e556-9200 17 | replace means change from one thing into another c75e-3346-5e3e-1b26 18 | refraction is when light bends dc5d-599a-9815-c89b 19 | mechanical weathering is when rocks are broken down by mechanical means c387-e1db-3890-b003 20 | transpiration is when water vapor moves from plants;leaves into the atmosphere 03c0-59bd-bf14-aaa0 21 | shedding is when an animal loses hair;fur;skin 7345-c073-962f-2597 22 | a light bulb converts electrical energy into light energy when it is turned on 0259-62d6-90d1-5285 23 | glowing means producing light 3b85-dd90-794d-80b6 24 | a solar panel converts sunlight into electricity bc35-178c-432b-77f5 25 | an incandescent light bulb converts electricity into light; heat by sending electricity through a filament 536f-f053-aca7-9bed 26 | crumple means change shape from smooth into compacted;irregular by physical force 57f8-2232-d549-6dbc 27 | tearing an object changes that object's shape 735e-0af2-549d-a69a 28 | some light bulbs convert electricity into light and heat energy 7f24-876a-678f-6339 29 | killing means changing a living thing from alive to dead by harming ba9c-311b-f2d0-caa9 30 | extreme heat and pressure change; metamorphose rock into metamorphic rock a029-482a-dd71-9829 31 | breaking down an object changes that object's shape and mass 9697-ac7b-6ca7-7421 32 | a filament produces light by becoming so hot that it glows e8a3-8aa3-fa7f-cb91 33 | a windmill converts wind energy into electricity d68e-b9c5-62d5-f63e 34 | seed dispersal is when the seeds of a plant are moved from the plant to a new environment 2b90-a4f5-326a-d34f 35 | the digestive system breaks food into nutrients for the body c154-aa1a-96fe-291c 36 | metamorphosis is when an animal changes from an immature form to an adult form fc9b-e584-5d83-bb7a 37 | mining changes an ecosystem 61ef-2bed-1bb3-4f10 38 | hunting means humans kill animals in the wild 54ee-e44b-06a1-c4cf 39 | a phase change is when matter; a substance changes from one state into another state 72bd-5535-598e-82e8 40 | phase changes do not change mass e6a7-0f6f-8904-60da 41 | condensation is when change from a gas into a liquid by reducing heat energy 2c44-c2fa-bff1-5946 42 | some flowers become fruits 8fe8-675d-6005-472c 43 | an earthquake changes Earth's surface quickly d08c-6817-560e-4660 44 | farming changes the environment b6e6-07f0-9768-dc45 45 | tadpole changes into a frog ac3a-0599-cef5-f015 46 | potential energy changes to kinetic energy through motion c9b6-9842-0512-9757 47 | a flashlight converts chemical energy into light energy d2c1-85ff-d317-0612 48 | moving changes position fe39-10c4-9dd9-d745 49 | something in a cold place becomes cold 3feb-296d-6a76-286f 50 | a toaster converts electrical energy into heat energy for toasting a4f3-2cdc-e2e8-292d 51 | being burried under soil and mud changes peat into coal through extreme heat and pressure in a swamp over a long period of time b9b5-a8fe-7c6e-bde2 52 | being burried under soil and mud changes vegetation into peat through extreme heat and pressure in a swamp over a long period of time 43e2-442b-4572-2279 53 | being burried under soil and mud changes plant and animal matter into oil through extreme heat and pressure at the bottom of the sea over a long period of time 1661-ce4a-34f0-7409 54 | a battery converts chemical energy into electrical energy e83b-d62e-d528-3e9f 55 | moving changes stored energy into motion and heat 48d9-21f5-7bf4-c99e 56 | a car engine usually converts gasoline into motion and heat through combustion 144d-b049-cabe-6198 57 | a doorbell converts electrical energy into sound c334-b118-4a5a-13dc 58 | heat and pressure change the remains of prehistoric living things into natural gas e239-f208-23e0-a9cb 59 | ecological succession means entire communities in an ecosystem change over time 0ff9-ee4f-fb1b-1627 60 | bees convert nectar into honey a6ad-5582-fb3b-6c50 61 | heat can change the state of matter 7909-f63c-46d1-01a2 62 | the phases of the Moon change the appearance of the Moon 8987-49e2-b4bd-59bd 63 | the type of material through which sound passes changes the speed at which sound travels 35de-03a6-5a5e-50e6 64 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/CONSUMERS.tsv: -------------------------------------------------------------------------------- 1 | ORGANISM QUANTIFIER eats/consumes ORGANISM [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | hawks;eagles eat snakes;lizards d28f-0727-460f-5ab6 3 | birds sometimes eat berries;seeds a6aa-97ee-2e4a-a9ad 4 | humans eat crops 76c8-6933-622a-64f6 5 | insects eat crops b14c-4d0f-e45f-43ce 6 | lizards eat insects 625d-d91e-b300-b6dc 7 | bees eat pollen de5e-63cc-6e02-60b7 8 | predators eat prey fb00-41ad-f198-b5ac 9 | predators; carnivores; omnivores eat other animals 20a3-dcb5-8ce4-ae5c 10 | squirrels eat edible plants; fruit de30-46f9-f287-cf05 11 | herbivores only eat plants 57e4-c7f7-0031-fb0a 12 | cows only eat plants 8280-558f-d30b-c051 13 | carnivores only eat animals f2b6-e2f5-8939-94ae 14 | omnivores eat plants; animals 3b62-4057-84c9-7743 15 | tuna eat fish 4134-b88a-654b-1cf3 16 | humans sometimes eat seeds 733f-086d-4dee-dbc3 17 | consumers eat other organisms 10c2-8847-99e1-057b 18 | rabbits eat plants dce1-e1d6-17ae-e024 19 | scavengers eat dead organisms 207c-b6d1-fb72-d730 20 | alligators eat frogs; turtles; fish; mice; birds aa17-e87c-2259-5f04 21 | raccoons eat trash; garbage; waste dc84-e95a-58d3-7e87 22 | bears eat berries; insects; animals e451-b512-f1d6-5d36 23 | meadow voles eat plants; insects f42a-5078-a2d5-d36a 24 | birds sometimes eat insects a872-f6a2-a467-59ec 25 | eagles eat fish efb4-baee-b1ad-1184 26 | eagles eat rabbits 5ac6-9dc1-9a19-3eaa 27 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/CONTAINS.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a OBJECT/AGENT QUANTIFIER [FILL] contains QUANTITY/RANGE WHAT IT CONTAINS [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | acidic rainwater contains acid 1632-1fa8-8c28-5669 3 | fruit contains seeds ef49-c852-8727-d2dd 4 | an animal body contains arteries; veins f4b3-b8dc-89a2-0c84 5 | animal waste contains nitrogen 391c-4df9-175e-987e 6 | arctic environment covered in snow Moved to Prop-EnvironmentAttrib 4f52-2d1c-8911-a996 7 | the atmosphere contains gases; liquids; solids f1c6-1bc9-dda0-fc31 8 | a balloon contains gas b859-0a35-7eea-8222 9 | a beach ball contains gas 0b3c-fc05-1642-9a08 10 | a berry contains seeds 7f04-fd94-0d22-9ee4 11 | a bicycle contains levers; wheels and axles; pulleys; screws f684-f2bb-f419-a1f1 12 | bladders contain urine 8334-8d96-8065-aa1c 13 | a body of water contains water b927-5436-1d17-c396 14 | breath contains water vapor ece6-3b70-33f4-3b98 15 | a bubble contains gas a0e7-290b-5de1-5648 16 | a carbonated beverage contains dissolved carbon dioxide 3145-65d7-0fa3-5857 17 | a channel contains moving water 65d2-8c35-9f57-0830 18 | a chloroplast contains chlorophyll e856-9caa-346e-b925 19 | cold environments contain few organisms d0ac-f4c5-d526-2831 20 | a constellation contains stars db62-4c2e-6a9d-8b12 21 | a container of water contains water 055f-62da-6f0f-9be5 22 | a desert environment contains very little food 9bf8-7511-a722-e068 23 | dry environments contain little water 7376-0d97-1227-bd6a 24 | the Earth contains many ecosystems 49a0-acc7-6fce-867f 25 | an ecosystem contains a large community of; large numbers of living organisms in a particular place 7a75-f74f-4c98-0f01 26 | an ecosystem contains nonliving things 8635-6b8d-0003-dc16 27 | an electric car contains an electric motor 9d1d-a854-c8ac-a4db 28 | an electromagnet contains a wire; cylindrical ferrous metal f2e1-4ca1-4bfd-cbce 29 | ferrous metals contain iron 7114-deda-e0a0-d3e9 30 | fertilizer contains chemicals a288-7e08-49cc-7661 31 | a field contains soil 2cc1-d93b-cea8-3b51 32 | a flour contains pollen for sexual reproduction 5505-0403-08c0-3571 33 | a food contains nutrients for living things Good 34 | food contains carbohydrates d11d-a195-7042-efcc 35 | a forest contains plants; trees a54a-a04c-71eb-ba0a 36 | a glass contains water d9da-e54d-cd61-36aa 37 | grass does not contain wood 1d29-f8d7-5834-aa6c 38 | a kit usually contains materials for assembling something f8d3-af6e-2588-10ed 39 | the life cycle contains the stages between birth and death No uses. 2d20-2234-7bcb-52be 40 | a limb often contains bones a237-4e63-f4c8-5e35 41 | the lunar surface; moon's surface contains many craters c13a-75d9-afb9-ad21 42 | a magnet contains a north pole; south pole 6c20-4dbe-71da-0428 43 | the moon does not contain air; water 982f-f6c0-b9e8-e203 44 | the moon's surface contains highlands 893f-916b-8ee1-9b98 45 | the moon's surface contains flat areas 3583-4f7d-77df-e26c 46 | a multicellular organism contains more than one cell fd39-82bf-ca1d-2605 47 | the muscular system contains muscles 0685-babe-a257-9fbe 48 | a natural ecosystem contains native living things only 9ed1-18d0-0ac0-c299 49 | the nervous system contains nerves 4695-199f-eeab-4611 50 | the ocean contains large amounts of salt water a67b-a673-e85b-6310 51 | an ocean contains waves 3836-b248-bdff-be59 52 | oceans contains most of earth's water c0ad-4856-2d41-4fa9 53 | pencil lead contains mineral graphite 73ef-3026-389a-20a2 54 | a plant cell contains chloroplasts 4e64-cd5b-9e82-e218 55 | a plant stem contains a system of tubes for transporting water and nutrients to other parts of the plant d534-dac5-f81f-1e26 56 | a pumpkin contains seeds c0ed-56a6-3f1e-b66c 57 | refrigerators contain harmful chemicals 89d4-504e-26ea-25da 58 | rocks often contain large amounts of metal f853-8175-3c98-28c5 59 | rocks sometimes contain aluminum 5c99-06b6-7e1e-f150 60 | rocks sometimes contain iron 49e4-dd5f-a48b-76cc 61 | room contains walls 1c37-9df2-350b-3c5a 62 | runoff contains chemicals; fertilizer; pollutants; pesticides from cropland 6029-2646-fb11-8753 63 | soil contains nutrients for plants ddcc-3b71-b14e-97d1 64 | soil contains water; humus; weathered rocks 24c1-678f-d0a3-2af7 65 | the solar system contains the moon b776-8099-262d-4b06 66 | sunlight contains ultraviolet light f1ae-4d95-7b44-91f9 67 | the surface of the Earth contains mountains d9ac-bf1e-2efc-8abb 68 | the surface of the Moon contains mountains d0ac-a3a5-dadc-df10 69 | a swimming pool contains water 4a43-1f50-d613-de3e 70 | an tennis ball contains air a34e-4c17-742b-c689 71 | the top layer of soil contains the most nutrients 0738-f2c4-03a7-3a8b 72 | a trashcan contains trash; garbage; waste 7101-b26e-c0b0-1347 73 | a tree contains wood bcc7-8811-5dcd-6e0f 74 | wasp's stinger contains poison 1177-e0d7-4358-0204 75 | water contains dissolved oxygen f32e-0424-d7c1-e558 76 | zoo exhibits should contain all things required by the animals living in those exhibits adb3-8ad7-befa-74c9 77 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/CONVERSIONS.tsv: -------------------------------------------------------------------------------- 1 | QUANTITY UNIT [FILL] is equal to QUANTITY UNIT [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | one week is equal to seven days a9b2-1d5b-952e-8a8c 3 | one year is equal to 365 days 4adf-935f-2a7e-de97 4 | one day is equal to 24 hours 7bde-6b21-5c29-4e15 5 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/DURATIONS.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/the AGENT ACTION EVENT QUANTIFIER [FILL] occurs over a period of LOWERBOUND [FILL] to UPPERBOUND DURATIONUNIT [FILL] which is considered a MAGNITUDE ATTRIBUTE SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | the Moon completes a lunar cycle over a period of 29 days 6195-e804-0ead-efb6 3 | an earthquake usually occurs over a period of 10 to 30 seconds e18f-5f8a-04fd-76f7 4 | natural selection occurs over a period of 1 to many generations which is considered a very long time to a human d444-1a28-c2ef-6421 5 | weathering; erosion usually occurs over a period of many years 3823-1fac-a50b-665f 6 | fossil fuels; fossils forming occurs over a period of 300000000 years which is considered a very long time to a human a3a9-88b4-59db-d0b9 7 | nonrenewable resources forming occurs over a period of 300000000 years which is considered a very long time to a human 1456-98fe-3171-af46 8 | a canyon forming occurs over a period of millions of years 2729-44c9-6c43-99ee 9 | a drought occurs over a period of months; years 5a68-c204-4a35-9c42 10 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/DURING.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/the AGENT EVENT SCOPE/QUANTIFIER [FILL] is during TIME SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | history occurred a long time ago d839-570a-60f4-5bc9 3 | reproduction occurs during adulthood bb00-a468-9749-1825 4 | the first quarter phase of the moon occurs after the new moon 6f48-4e3d-21dc-e605 5 | different seasons occur during different times of the year 54cf-cc71-b887-3b08 6 | chemical splashing sometimes occurs during experiments 69e9-672f-1f1c-84a1 7 | the summer solstice is on June 21st in the northern hemisphere b2ac-b8b2-5d1c-40b8 8 | the winter solstice is on June 21st in the southern hemisphere ecff-60c1-7d9d-d0b8 9 | lightning occurs during lightning storms 6699-e590-cde9-3908 10 | droughts occur over months; years Move to Durations table. bfd1-60f7-2ea1-e761 11 | leaves changing color occurs when seasons change e1be-4636-b374-a6c2 12 | December is during the summer in the southern hemisphere bd19-8646-deb7-e368 13 | June is during the summer in the northern hemisphere b789-c5df-3b5c-272b 14 | a female insect lays eggs during the adult stage of an insect's life cycle abd0-8f9f-e0e5-4a64 15 | the tide cycle regularly occurs during the day twice Moved to Frequency 643e-2121-e037-dcfb 16 | a solar eclipse could only happen during the new moon 86d9-dd35-a5bf-7a09 17 | nocturnal predators hunt during the night f299-26e4-a84d-d705 18 | the cocoons being created occurs during the the pupa stage in a life cycle e6ee-4811-a5db-94ee 19 | snow falls during the winter in some environments 1c78-f04e-5974-e03c 20 | snow falls during the winter in the arctic environment 5deb-66f8-1413-678d 21 | a thing does not exist before there is that thing Low quality. All uses replaced. 9217-ec0b-6b84-a4c8 22 | thunder occurs during thunderstorms 765b-d080-8cd8-7a98 23 | winter in a hemisphere occurs when the Pole located in that hemisphere is tilted away from the Sun 32c6-adaa-af1c-f49f 24 | August is during the winter in the southern hemisphere 5d96-5bf8-3746-7842 25 | December is during the winter in the northern hemisphere 39e2-fb06-b946-62df 26 | January is during the winter in the northern hemisphere 13ac-fd63-feca-f384 27 | June is during the winter in the southern hemisphere fc7f-85ca-56d1-d7d5 28 | the invention of the refrigerator occurred in 1923 bb06-72d6-bb30-97d8 29 | the invention of the airplane occurred in 1903 7d89-3509-8e8b-f868 30 | the winter solstice is on December 21st in the northern hemisphere 50a6-138c-0abe-6496 31 | winter in the Northern Hemisphere is during the summer in the Southern Hemisphere 5510-64d4-c9fc-9719 32 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/EXAMPLES.tsv: -------------------------------------------------------------------------------- 1 | [FILL] An example of VERB AGENT/OBJECT SCOPE [FILL] is AGENT/OBJECT VERB AGENT/OBJECT [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | An example of a change in the Earth is an ocean becoming a wooded area 3135-2d8c-c018-d7a3 3 | An example of a chemical change is acid breaking down substances 9213-5a66-7733-0fc8 4 | An example of a fossil is a paw print in rock 8867-690e-1dfa-c7b4 5 | An example of a fossil is the bones of an extinct animal b46a-90cb-8c4d-8e3d 6 | An example of a fossil is a footprint in a rock 8c6a-e1d6-dbe5-e366 7 | An example of a mixture is salt shaken with pepper 2f3a-a260-7230-3c07 8 | An example of a mixture is sand; clay; soil mixed together 90f7-2aac-1033-925c 9 | An example of a reproductive behavior is salmon returning to their birthplace to lay their eggs d86f-f0eb-8cd4-b579 10 | An example of a solution is vinegar mixed with water 6d51-d6e6-4789-d0b9 11 | An example of a suspension is oil mixed with water 8622-9e03-2724-60f7 12 | An example of an adaptation is a cactus spine fac5-130b-6a7f-3503 13 | An example of an adaptation is camel humps 875c-ebc8-05a0-0a18 14 | An example of an adaptation is moving fast 9ee9-6353-1bca-2fa5 15 | An example of an inherited behavior is a bird building a nest f7ca-cfe9-d8b4-11a4 16 | An example of an instinct is the kangaroo's ability to crawl into its mother's pouch to drink milk 2be3-eb61-1441-7846 17 | An example of an instinctive behavior is a baby bird pecking at its shell to hatch 5c37-d156-8278-962c 18 | An example of avoiding waste is using an object; a material more than once 14dd-cb36-7a17-38fa 19 | An example of camouflage is when something changes color in order to have the same color as its environment 0a51-236d-27b4-abc4 20 | An example of camouflage is when something is; has the same color as its environment ece8-8e35-fc83-f487 21 | An example of camouflage is an organism looking like leaves a61c-a47c-67a8-f86a 22 | An example of camouflage is when an organism looks like its environment 3a90-a5a3-dc27-ca09 23 | An example of combining two substances is pouring one substance into the other substance 6526-d3de-375a-2661 24 | An example of conservation is not using fossil fuel 1c25-34e6-67f5-e7a6 25 | An example of conservation is avoiding waste 393b-f9b6-0519-c483 26 | An example of conservation is turning off the water while brushing teeth 661c-7af5-8c9a-80e9 27 | An example of a container is room 9e2d-3d7a-89e5-b860 28 | An example of creating an alternative fuel is turning plant material into fuel 3b34-899d-3adf-7bcb 29 | An example of an environment is a forest; a river; a grassland; an ocean e558-47b4-48f0-98a4 30 | An example of evaporation is a body of water drying up by absorbing heat energy e927-ced3-c5f7-76af 31 | An example of evidence for a scientific theory is observations 5075-0322-1096-f7e0 32 | An example of hibernation is a frog burying itself in mud 24a1-6da8-dc81-accd 33 | An example of hitting something is dropping an object onto that something ad03-f79e-d18f-eebc 34 | An example of hunting is an otter cracking open clams with a rock 4ba7-d894-3b98-2b11 35 | An example of managing; maintaining the number of something is replacing that something 8b1d-776b-ee60-6646 36 | An example of mechanical energy is an object in motion 4aca-cf16-fcc6-1f79 37 | An example of migration is moving to a warmer climate in the winter ffd2-49a5-3027-af07 38 | An example of migration is birds flying south in the winter 2ad2-04a7-e3e7-916a 39 | An example of moisture is water vapor in the atmosphere e7b5-57e9-5c3c-fe3e 40 | An example of movement is washing away c755-1627-f4a5-1c08 41 | An example of navigation is directing a boat b545-9af6-bc7b-9854 42 | An example of observing things is taking a picture cf54-a27a-2b05-1c22 43 | An example of a physical cycle is the water cycle cfea-1ba2-549b-7d10 44 | An example of playing a musical instrument is hitting the keys of a piano aadc-bc4f-81be-06ac 45 | An example of playing a musical instrument is strumming a guitar string 1d01-8937-52ac-d9af 46 | An example of preparing is storing something for use later 267f-c271-3ae7-09ae 47 | An example of protecting the environment is creating protected areas 770d-6c83-0ecd-3e9f 48 | An example of protecting the environment is reducing the amount of waste; the amount of pollutants d7f6-1eed-ab83-7961 49 | An example of recycling is using an object to make a new object 5b81-70c7-64a4-f7d2 50 | An example of replacing a natural resource is planting new trees where a forest once stood 689c-8e64-fe48-c90e 51 | An example of reproduction is laying eggs ff6d-7abf-97c5-a9c3 52 | An example of a seasonal change is an animal growing thick fur for keeping warm in the winter 7adb-e986-7c30-64d9 53 | An example of a seasonal change; adaptation is plants dying; becoming dormant in the winter b2f0-94bd-4545-1416 54 | An example of seed dispersal is is an animal hiding; gathering; burying seeds 7119-02f2-0acf-3280 55 | An example of seed dispersal is animals eating; excreting seeds 3e4c-9c36-623e-f00e 56 | An example of stormy weather is rain 0157-8650-437a-4faa 57 | An example of using tools is a chimpanzee digging for insects with a stick 9cdf-f5b2-8eba-bfd3 58 | An example of weathering is when a plant root grows into a crack in rock 9066-bf57-f1ce-0134 59 | An example of collecting data is measuring ff09-6cad-071f-5a08 60 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/FORMEDBY.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a QUANTIFIER OBJECT [FILL] is formed by AGENT VERB PATIENT [FILL] for FOR/PURPOSE [FILL] by BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | most canyons are formed by flowing rivers through erosion over long periods of time 95de-5e9c-79e0-c861 3 | sedimentary rocks are formed from sediment compacting; cementing together 8069-7f81-d181-7a04 4 | all minerals are formed by natural geological processes 9b16-01cf-5fdb-ae1e 5 | the Grand Canyon was formed by the Colorado River flowing over long periods of time d308-a04a-d030-5c6c 6 | igneous rocks; minerals are formed from magma; lava cooling d9aa-4785-cdb4-ac25 7 | usually craters on planets; craters on moons are formed by asteroids;meteoroids impacting that planet or moon's surface a7f1-5498-c4dd-7392 8 | the Great Lakes were formed by glaciers moving over the ground ffc7-259e-e733-5c0c 9 | clouds are formed by water vapor rising and condensing 3c3a-0eac-88e6-b000 10 | soil is formed by weathering e058-7f0b-067c-4da4 11 | sand dunes; arches are formed by the wind transporting and depositing sand fb26-f5aa-51d2-7866 12 | fog is formed by water vapor condensing in the air 5212-c2af-5c9e-8173 13 | plasma is formed by electrons separating from atoms in stars 1cf8-9176-21d7-92ba 14 | fossils are formed when layers of sediment cover the remains of organisms over time b0d4-928e-e799-54a6 15 | dew is formed when water vapor condenses; cools over night 9f14-a567-d745-cbb2 16 | a electromagnet is formed by attaching an iron nail wrapped in a copper wire to a circuit cb9d-9db9-4d61-d79f 17 | a cavern is formed by carbonic acid in groundwater seeping through rock and dissolving limestone 98b4-c34e-52df-8abf 18 | a suspension can be formed by mixing together substances that repel each other Low quality. Solubility is mostly determined by polarity. bcb8-5d09-22ba-d79f 19 | a solution can be formed by mixing together liquids LOW QUALITY. Perhaps too vague. cf58-7d67-7565-02fc 20 | a delta is formed by deposition of sediment at the mouth of a river by water fanning out fa6f-ce79-52bc-2ba1 21 | an island is formed by lava being released; cooling on the ocean floor over time 7a40-4610-fe1f-42fa 22 | a kettle is formed when chunks of ice left by glaciers melt fd00-6ac1-b7ce-d4d6 23 | a valley is formed by a river flowing b544-316a-4f6a-1791 24 | mountains are formed by earthquakes; volcanoes; plate tectonics 97d0-5256-918b-cee7 25 | sometimes piles of rock are formed by melting glaciers depositing rocks cb6d-119e-cb76-09a7 26 | fossil fuels; fossils are formed by dead organisms over time 18f3-bb02-623d-b420 27 | soil is formed by rocks eroding c59e-0070-96f7-48b8 28 | sediment is formed by weathering 5645-74d9-19c8-9dc4 29 | a rainbow is formed by refraction of light by splitting light into all different colors c7a2-2ef3-cee5-a093 30 | oil is formed by layers of sediment pushing down on decomposing algae c55d-d09c-91b9-a73c 31 | a plateau is formed by a buildup of cooled lava 2f74-5c89-2c6c-dcfb 32 | limestone is formed by water evaporating from a solution of water and minerals b42d-1910-33f9-952b 33 | a sandbar is formed by water moving sediment downstream 1dbc-76a8-e377-f8c3 34 | some deep lakes; bowl-shaped lakes are formed by glaciers 45a0-1086-16da-44ef 35 | the Alps were formed by rock folding 3dc6-ceb8-e305-24f4 36 | the Appalachians were formed by rock folding 3e73-bd8b-3ffb-d9d4 37 | the Himalayas were formed by rock folding adbd-a12d-f086-3af2 38 | beads of water are formed by water vapor condensing 3b7d-6a35-e182-1176 39 | stalactites are formed by deposition aa44-693c-697b-f10c 40 | natural gas is formed by heat and pressure acting on the remains of prehistoric animals 1d61-22c7-c31a-e8cc 41 | new land can be formed by volcanoes erupting by lava cooling 5cf8-8920-4274-dde5 42 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/FREQUENCY.tsv: -------------------------------------------------------------------------------- 1 | QUALIFIER [FILL] a/the AGENT/OCCURRENCE VERB OBJECT QUANTIFIER [FILL] occurs FREQUENCY [FILL] per TIME_PERIOD [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | each season occurs once per year e172-fe13-821d-196c 3 | each of the moon's phases usually occurs once per month 06da-bc83-aab7-015f 4 | a tree growing a tree-growth ring occurs once per year 2c2b-310a-0ee6-e4a2 5 | cycles of day and night occur once per day a972-0cbb-3c14-b098 6 | the sun rising; setting occurs once per day f8be-9407-d60e-6282 7 | the moon orbiting the Earth approximately occurs 13 times per year 1a29-2268-eeb7-edba 8 | a new season occurs once per three months b376-a3d3-5d2e-8fd9 9 | a different moon phase occurs once per week d1de-2ec6-5323-1c1d 10 | a new season occurs four times per year 3085-e55b-e7a8-fd70 11 | an equinox occurs twice per year d8c7-06a7-c7ec-8653 12 | the moon rising occurs once per day 363a-2bcb-006a-ecd5 13 | a cycle happens; occurs repeatedly 09b4-ea82-86eb-0584 14 | the tide cycle regularly occurs twice per day cc3c-b438-6a44-57f6 15 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/HABITAT.tsv: -------------------------------------------------------------------------------- 1 | [FILL] the/a QUALIFIER ORGANISM [FILL] lives in/at a/the HABITAT SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | coral lives in the ocean; warm water 01d7-f9ae-c6ee-8eee 3 | clams live at the bottom of the ocean 0c78-0876-00af-2ff0 4 | trout live in lakes b075-df0d-bb78-3bea 5 | eagles live in trees 02d1-f752-297f-d80c 6 | a bat lives in caves and trees 1673-5f05-00d9-9d1c 7 | a fish lives in water 6e0c-4bc9-7e10-351a 8 | a tadpole lives in water 1d82-f584-7ea3-52d7 9 | a cactus lives in the desert aa72-3082-aba6-fb00 10 | some animals live in forests 583b-9241-f02c-05bb 11 | some birds live in forests 3ac8-28fa-96ea-4658 12 | arctic animals live in an arctic environment f252-528b-78fa-6956 13 | some lizards live in desert habitats 2ffc-4513-8fad-bf73 14 | usually coral lives in warm water 969d-a910-8943-e775 15 | mice live in in holes in the ground in fields; in forests 4bab-ef45-71e4-0f19 16 | some rabbits live in forests 22a5-e62f-1151-60f2 17 | some hares live in fields 4ba5-ce2c-afde-ac24 18 | some humans live in houses a5ac-815e-8402-d5f8 19 | a sea turtle lives in the ocean 67d8-3f5e-c78b-7cc7 20 | organisms; living things live in their habitat; their home 8af3-1381-b634-8b97 21 | a deer lives in a forest 2974-683f-6607-88e7 22 | some raccoons live in hollow logs bfbd-1a45-3d5c-eb6c 23 | bluebirds live in open spaces; grassy spaces 1d87-2d59-27e9-b392 24 | humans live on land 319f-36ec-626d-1c21 25 | some animals live in zoo exhibits a2d0-fb25-9c0c-89c4 26 | grass snakes live in grass 2d21-2f1c-4af5-033f 27 | most predators live in; live near the same environment as their prey d8f5-21a9-4c14-b105 28 | some crickets live in forests b9fd-85c7-f651-4365 29 | polar bears live in cold environments 544b-b9d9-1ef5-42c4 30 | deep sea animals live deep in the ocean 1c57-e18b-f776-c5eb 31 | warm-weather organisms live in warm climates cd15-3f60-6ecd-86dd 32 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/INSTANCES.tsv: -------------------------------------------------------------------------------- 1 | [FILL] the/a ADJ/QUANTIFIER INSTANCE [FILL] is QUANTIFIER [FILL] a/the ADJ CLASS SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | an element is not an alloy 438c-30e7-05f9-eec9 3 | a decomposer is usually a bacterium or fungus 4189-af64-dc68-aab7 4 | the sun is not a star in the night sky a0f5-8469-7346-63fc 5 | preferences are generally learned characteristics Moved to Prop-Inherited-Learned 2476-b5ea-0908-5ce3 6 | a bird is sometimes a predator Moved to PREDATOR-PREY b5b3-6042-bd97-09e5 7 | plastic is usually an electrical insulator 89bb-1727-975b-849d 8 | a baby is the offspring of a parent Moved to Synonymy 274e-7aef-1e26-6b3c 9 | planting trees is sometimes a human activity ca00-8e56-17f5-9665 10 | many animals are herbivores 9842-70ea-d82e-01bf 11 | appearance is sometimes a physical property 2b97-8bcf-ad07-0e9e 12 | some minerals are sometimes nutrients ca61-050e-2c77-6cda 13 | salamanders are sometimes aquatic animals c83e-0fdf-7c74-d0f0 14 | a caterpillar is the immature form of a butterfly b29b-6e23-97f8-0be7 15 | a butterfly is the mature form of a; adult form of a caterpillar 457a-8660-d1f5-e6ae 16 | a tadpole is the immature form of a frog b356-f5e8-262c-5157 17 | a frog is the mature form of a; adult form of a tadpole 6fd9-d55b-fc58-c9fb 18 | a metal is usually a solid 6b13-b027-dc64-b855 19 | a rock is usually a solid 9dce-54ac-55cf-f1ed 20 | chemicals can be pollutants e809-4443-23c0-ee01 21 | tea is usually hot; warm 2bf5-43b2-828d-7991 22 | a renewable resource can be renewed Moved to Affordances 4873-7147-d031-1fc5 23 | a property can be a factor Moved to Synonymy 5787-d0e0-7a2c-abe2 24 | a passenger in a car is usually a human 2613-ef22-d8a2-96c6 25 | artificial turf is a fake grass 31c4-3218-63c1-4d9b 26 | a frog is an adult form of a frog 42ce-3b05-116d-407e 27 | a kitten is a young; baby cat 36ae-d6e7-a33f-027a 28 | a puppy is a young; baby dog 7ba5-ac67-433e-b356 29 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/INTENSIVE-EXTENSIVE.tsv: -------------------------------------------------------------------------------- 1 | PROPERTY [FILL] is an EXTENSIVE/INTENSIVE [SKIP] COMMENTS [SKIP] UID 2 | color is an intensive property 3885-322a-8509-b74c 3 | temperature is an intensive property a0a4-b960-6631-1c3b 4 | density is an intensive property 95a8-9d17-fc2e-069e 5 | hardness is an intensive property e788-238b-8464-b4c6 6 | mass; weight is an extensive property 1e9c-bb95-3934-82d2 7 | volume is an extensive property f3a4-a6b2-e1d0-7258 8 | shape is an extensive property e347-e59c-af7d-189c 9 | size is an extensive property fa14-fed7-728a-8147 10 | boiling point is an intensive property 0f8b-28e6-6305-a476 11 | freezing point is an intensive property c93f-5b27-4efb-2c0c 12 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/LIFESPAN.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a ORGANISM [FILL] can live for / lives for VALUE UNIT [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a butterfly can live for 1 month 037d-b751-5b3d-b62d 3 | a tree can live for 100 years 502e-4e54-77c0-d35a 4 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/LOCATIONS.tsv: -------------------------------------------------------------------------------- 1 | QUANTIFIER [FILL] a/the THING/PROCESS [FILL] is usually found in / usually happens in LOCATION [FILL] by (mechanism) HOW [FILL] for/to FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | usually a body of water is located outside f4ba-23a8-463c-21fe 3 | a sidewalk is located outside e6ce-9a90-4900-9861 4 | usually a slide is located at a playground 3eca-3ce1-9844-cc78 5 | algae is found in bodies of water 3648-f2f7-ae08-d6f7 6 | carbon dioxide can be found in the air 3cff-4d77-9e27-7dc5 7 | most chloroplasts are found in the leaves of a plant 962d-0077-a672-6f9a 8 | clouds are usually found in the sky c345-0f27-1027-c29b 9 | countries are located on the surface of the Earth e838-2f71-4e61-66de 10 | dependent variables are usually placed on the y-axis; vertical axis of a graph ff76-3d5d-9e3f-ca56 11 | farming happens on a farm 44ff-d8ea-db34-6805 12 | most ferns are located along rivers 0339-be41-4854-631d 13 | finish of a race is located at the end of a track 4531-f506-ab6e-28b4 14 | flood plains are located near rivers d7a4-ff12-2d63-e221 15 | nearly all fossils are found in sedimentary rock c734-55b0-6cf4-c9d9 16 | gardens are located outside 4967-a59a-d4c4-9810 17 | Hawaii is located far from the United States mainland d6fc-5f39-b200-7600 18 | ice is found in arctic environments fff8-5c88-0710-70ae 19 | independent variables are usually placed on the x-axis; horizontal axis of a graph ea3c-fe4b-4ca9-20ca 20 | landslides often occur on mountains 368d-e93c-2b60-3348 21 | lava is found above the ground e3b8-ecc6-db79-2049 22 | magma is found below the ground eea8-cae1-e3a4-1a51 23 | natural resources are found in nature df44-1d34-37d8-5123 24 | planets are found in space 130f-0269-864e-a962 25 | playground is located outside 742b-5bfd-9404-9120 26 | sandy soil is found in dry environments 03a5-9e41-f0e1-1cba 27 | satellites are found in space 5304-c9bf-5300-f45d 28 | scales are found on the skin of scaled animals 3227-54bb-37d3-16c8 29 | often soil is found in an environment 0d29-3185-fc48-6cdd 30 | soil is found on the surface of the Earth f303-c24f-1db0-7fba 31 | something in the soil is located underground acaa-fed9-9236-c8de 32 | start of a race is located at the beginning of a track 568f-26e5-8d0a-e765 33 | the absorption of oxygen through the blood occurs in the lungs 1de2-9254-a03f-38dc 34 | the breaking down of food into simple substances occurs in the digestive system 46e9-7c6d-a71b-e151 35 | the continental shelf is located near the shore f5d7-9f9c-58e6-9d14 36 | the floor is at the bottom of a room 4584-32b2-fcfb-5c0d 37 | the formation of diamonds occurs beneath the surface of the Earth by carbon being heated and pressured 016e-d9e2-b804-44d7 38 | the formation of peat occurs at the bottom of swamps 071b-6b75-e037-a163 39 | the ground is at the bottom of an area bdbf-34c0-8ec2-7e7a 40 | the mantle is located just below Earth's crust 6520-839d-9b7c-bf0a 41 | the Southern Hemisphere is located south of the Northern Hemisphere 6f6a-b026-39ea-057c 42 | the sun is located directly overhead at noon ac56-e576-15bb-982e 43 | the water cycle occurs on Earth 0a6a-f5dd-7c73-ed64 44 | towns are usually located kilometers from each other 940b-c972-2fd2-af0e 45 | transpiration usually happens in the leaves of a plant 6778-0a90-bf9d-69c4 46 | volcanoes are often found under oceans 5ac1-fbf9-6335-c12a 47 | water vapor is found in the atmosphere 7896-0ee6-9c3c-f3c1 48 | younger rock is usually located under older rock e705-b72f-bb3e-a9a6 49 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/MADEOF.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/the QUANTIFIER OBJECT QUALIFIER [FILL] is made of VALUE ISMADEOF [FILL] for FOR/PURPOSE [FILL] by BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | all living things are made of cells according to the cell theory 1e00-1b04-66ee-0a91 3 | alloys are made of two or more metals 0e62-579f-977d-4046 4 | the atmosphere is made of 78% nitrogen 18df-4496-f1cf-d9b1 5 | brass is made of copper and zinc 4daa-873d-0753-0b46 6 | a burner is made of metal 7750-9e0a-ea70-dbc3 7 | a canyon is made of rocks 9752-f5f1-f7af-ff0e 8 | carbohydrates are made of sugars 93e8-b9fd-8d3a-5601 9 | clouds are made of water vapor 9084-fc84-0b6a-a720 10 | a community is made of many types of organisms in an area aeb7-e5f7-0e84-12fd 11 | a complex machine is made of more than one simple machine 1127-1d6b-54d0-d6ec 12 | the continental shelf is made of sediment 6082-9118-c751-6e77 13 | Earth is made of rock 7b54-c9f1-86da-860b 14 | Earth's surface is made of rock 4e22-86f8-32a0-7375 15 | electrical signals are made of electrical energy 9fdf-4f3f-bffe-4d9e 16 | electricity is made of moving charges; moving charged particles 6952-5428-3a54-cea9 17 | ethanol sometimes is made of corn 3d75-5f69-8d42-ccec 18 | an eyeglass lens is often made of glass d298-28e7-40fc-3b25 19 | a food web is made of organisms that consume other organisms; that produce their own food 5b69-37eb-8085-8e85 20 | furniture often is made of wood 9486-6e1f-f8b7-e8b8 21 | a glacier is made of ice b901-aa66-c858-54e7 22 | a glacier is made of a large buildup of ice; snow 45f8-9d9a-e897-a211 23 | the heart is mostly made of muscle 2873-6fdd-acf5-f314 24 | iron nails are made of iron b9dd-961e-269e-aa5d 25 | light bulb filaments are made of tungsten usually 7c54-4231-0b22-1768 26 | light pollution is made of light d780-ac6a-0037-1b59 27 | a living thing is made of cells 6f96-e0e9-ed70-4dbc 28 | a magnet is often made of magnetic metals; ferromagnetic metals 1389-2bb5-b15b-83a7 29 | materials are made of matter 4cf8-b1e2-9544-c98c 30 | matter is made of molecules e2d6-bafd-aaaa-efd3 31 | matter; materials; substances are made of atoms; particles 1758-a1b7-4083-9e99 32 | metal fork is made of metal for eating dc33-a410-c511-acad 33 | a mountain is made of rocks; soil 08ba-3817-d41e-1db2 34 | nerves are made of nerve cells cdba-a39e-8a33-7324 35 | a nest is made of branches 72f9-9ce2-3aae-5fc6 36 | a newspaper is made of paper 674c-94e4-e533-3536 37 | objects are made of materials; substances; matter 80a3-454d-e8e0-3de2 38 | odor is made of gas in low concentrations 1baf-ecbe-1359-5aed 39 | an organism is made of organic matter 4a84-1ddc-0a0c-3839 40 | a paper clip is often made of magnetic metals; ferromagnetic metals 4e29-cc71-c464-bcb5 41 | peat is made of decaying vegetation compacted by soil in a swamp over a long period of time 63dd-a852-6c17-7b9a 42 | a plain is made of a flat land surface cc01-9fbb-f4cc-3fb0 43 | a plant is made of plant cells 1e1d-6ed6-25e3-5f30 44 | a plastic spoon is made of plastic 8b02-862f-518d-c59b 45 | a population is made of one type of organism in an area 6937-c405-6853-efb2 46 | pot;pan;frying pan is made of metal for cooking a955-8642-4044-5a48 47 | a quartz is made of six-sided transparent crystals 8d0a-7ce6-0ab0-d9f0 48 | the rainbow is made of all different colors f5f9-0163-0873-51ba 49 | a riverbank is made of soil ef09-d826-3c2b-205c 50 | rock is made of minerals 434b-e8da-e5c7-d52e 51 | a rubber eraser is made of rubber 45f8-aa77-a322-62d5 52 | sand is made of very small rocks; minerals 6bdb-a6bb-4fe3-15cc 53 | sand is made of small particles 2651-d09d-1434-a5a6 54 | sand dunes are made of sand 6424-1a31-0f40-5b1b 55 | sandpaper is made of sand glued to the surface of paper 15aa-4b8f-b148-a827 56 | sedimentary rocks are made of small particles 07cd-40e2-cfed-90ab 57 | skeletal system is made of bones 1868-9bad-b9cc-1302 58 | sleeping bags usually are made of insulators 5061-4f39-030f-89fa 59 | sleet is made of ice 2dfb-6788-d488-9db9 60 | society is made of humans ab30-97e0-586f-d18a 61 | a soda can is made of aluminum 1e72-b6e0-1d37-50bc 62 | soil is made of very small rocks; minerals 17a3-86be-a2ea-bdb8 63 | soil is made of solid particles cb4c-e3f2-22b6-3fa4 64 | a solution is made of one substance dissolved in another substance f688-9579-bfb6-61d1 65 | a spoon sometimes is made of metal 13cc-db5a-cd32-130d 66 | a star is made of gases 4916-83af-ba89-9fc8 67 | substances are made of matter 3395-b5a2-ae2d-39c2 68 | sunlight is made of all colors in the rainbow d021-8931-f6a6-1ede 69 | the surface of the Earth is made of 70% ocean eacd-3358-450a-87db 70 | a thermal conductor is made of materials that conduct thermal energy a49d-0411-7e72-17d8 71 | waves are made of moving water fb40-15de-e88b-9743 72 | a wax crayon is made of wax cfdd-9d59-af2b-ed66 73 | a wire is usually made of metal 5b47-bd0e-73fe-67d6 74 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/MAGNETISM.tsv: -------------------------------------------------------------------------------- 1 | MATERIAL [FILL] is QUALIFIER MAGNETIC/NONMAGNETIC/FERROMAGNETIC [SKIP] Comments [SKIP] DEP [SKIP] UID 2 | aluminum is always nonmagnetic 7cc7-9198-9358-fdf5 3 | brass is always nonmagnetic 083b-d47a-2d98-7325 4 | bronze is always nonmagnetic bca3-49ef-68a9-7d13 5 | chromium is always nonmagnetic 15c4-e9b2-7186-2e43 6 | cobalt is always ferromagnetic; magnetic f0be-8ee2-3dc9-c516 7 | copper is always nonmagnetic dc80-6330-427e-36ff 8 | gold is always nonmagnetic 42b6-a8e9-5665-d755 9 | hematite is always ferromagnetic; magnetic 168d-a693-2ec1-ee66 10 | soft iron; iron is always ferromagnetic; magnetic 8e64-7c6e-2572-2438 11 | lead is always nonmagnetic 7164-31fa-44d7-61b0 12 | nickel is always ferromagnetic; magnetic b647-16b3-9341-d4de 13 | pewter is always nonmagnetic 753f-5368-a211-ed1e 14 | silver is always nonmagnetic c110-0e79-f545-e341 15 | steel; carbon steel is always ferromagnetic; magnetic 794a-7ac4-5e27-9d39 16 | stainless steel is always magnetic; nonmagnetic 01b1-6b36-b6b8-5c97 17 | tin is always nonmagnetic 4db8-5861-a56f-c38f 18 | zinc is always nonmagnetic 1dda-2bae-9eb8-0622 19 | Babingtonite is always magnetic 8b95-fe18-dbc1-7c08 20 | Barite is always magnetic a447-77af-169b-ae1f 21 | Borax is always magnetic 35df-1618-897b-4405 22 | Braunite is always magnetic ead8-2c52-fa03-cf4a 23 | Burckhardtite is always magnetic 71a9-9f53-252f-a6be 24 | Cadmium is always magnetic aca8-8280-e839-7671 25 | Chromite is always magnetic 6e0f-fabc-9a30-ed70 26 | Chromferide is always magnetic 5455-fa26-7125-455e 27 | Columbite is always magnetic 9e9a-a8ae-8561-fa20 28 | Coyoteite is always magnetic 2603-df1f-cacc-b864 29 | Epidote is always magnetic 9fb0-9ec7-8d1d-afbf 30 | Epsomite is always magnetic 2f0f-6f4d-d1b5-95db 31 | Ferberite is always magnetic 94a3-c532-7b7d-7b2d 32 | Franklinite is always magnetic fcdf-4c69-0833-c1b9 33 | Goslarite is always magnetic ec72-673d-bd10-028a 34 | Jacobsite is always magnetic 7fde-80ba-86dd-7deb 35 | Ludlamite is always magnetic 4bb6-215a-1a0d-97b9 36 | Maghemite is always magnetic a71b-adc1-7504-2a7d 37 | Magnetite is always magnetic 85b8-671b-6af2-c397 38 | Magnetoplumbite is always magnetic 95f4-0f32-02aa-0af2 39 | Manganbabingtonite is always magnetic 41fa-fa72-3651-db02 40 | Nitratine is always magnetic 788b-d16c-c625-db9f 41 | Platinum is always magnetic 3344-d76f-5d8f-0c61 42 | Pyrrhotite is always magnetic aa8b-6751-e135-d06f 43 | Siderite is always magnetic aede-d34c-c7ef-0eea 44 | Tantalite is always magnetic 087d-7028-ab8c-12be 45 | Trevorite is always magnetic 22b4-d564-fdae-3786 46 | plastic is always nonmagnetic a68f-e428-18de-2f21 47 | wood is always nonmagnetic 07a3-e850-eebe-3043 48 | glass is always nonmagnetic 56c8-cc89-2a22-4eea 49 | fabric is always nonmagnetic 5b8f-dfea-901b-2e62 50 | paper is always nonmagnetic 814f-7707-4006-bc2d 51 | cardboard is always nonmagnetic 5968-79e2-9f40-8f2d 52 | wax is always nonmagnetic 86f2-92cc-134e-880b 53 | clay is always nonmagnetic c3af-7538-795e-ec56 54 | gravel is always nonmagnetic f997-a180-795e-e872 55 | iron is always magnetic a6d3-031b-6398-c30e 56 | oxygen is always nonmagnetic 2384-e381-8dba-3a85 57 | metal is sometimes magnetic 47eb-c4e4-e924-7160 58 | sand is nonmagnetic 9f32-c759-d73a-9bf2 59 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/MEASUREMENTS.tsv: -------------------------------------------------------------------------------- 1 | MEASURE [FILL] is the/ is a QUANTITY/ADJ ATTRIBUTE AGENT ACTION FROM TO SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | climate is the usual kind of weather in a location 1dba-dc42-8ca9-0ab2 3 | rainfall is the amount of rain an area receives f2a1-5807-2b1e-fef3 4 | speed is a measure of how fast an object is moving 87c6-f5c1-2d8f-e14a 5 | altitude is the distance from the ground to an object in the sky fb85-28a2-6923-fc43 6 | humidity is the amount of water vapor; moisture in the air; in the atmosphere 1c42-416a-fc92-2b03 7 | temperature is a measure of heat energy d753-423d-5ce7-53ce 8 | thickness is a measure of how thick an object is cd12-aac7-4181-607b 9 | height is a measure of length from the top of an object to the bottom of an object 833b-2c13-d01b-2ac2 10 | streak is a measure of the color of a mineral below the surface or as a powder 5f16-d62c-3e05-6719 11 | length is a measure of distance from one end of an object to the other end of that object 067d-1aca-bec2-8141 12 | speed is a measure of distance travelled over time; divided by time b753-a285-8304-024a 13 | distance is a measure of space from one location to another location Low quality 8bae-a97c-319c-53f2 14 | speed is a measure of the time it takes to complete a task Low quality a673-653b-9cde-f39c 15 | slope is a measure of the difference in elevation between one part of the land and another part of the land a72b-b781-e72f-5fc8 16 | elevation relative to sea level is a measure of how high a place is relative to sea level 2168-c389-224e-2ee9 17 | diameter is a measure of length through the center of a circle 8c47-06f1-9f0f-10c4 18 | density is a measure of mass over volume; divided by volume 8d85-3a9e-2f98-5a9b 19 | distance moved; distance travelled is a measure of how far an object moves 27bc-337b-3807-6f55 20 | tidal range is a measure of the vertical distance from high tide to low tide 4b4a-63a2-a913-8b18 21 | mass is a measure of the amount of matter in an object 6dd3-883b-2639-04d5 22 | population is a measure of the number of a species in an environment f274-b61a-7bc7-123e 23 | potential energy is a measure of the energy of an object due to position b7c8-a816-2ceb-d787 24 | work is a measure of the product of force and distance dcf5-861f-9ab6-f238 25 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/NAMES.tsv: -------------------------------------------------------------------------------- 1 | NAME [FILL] is a name for a WHAT [SKIP] COMMENT [SKIP] UID 2 | Tommy is a name for a human 6f80-7e87-5ec0-a78c 3 | Jonny is a name for a human f2a0-5d6b-ff93-de36 4 | Anna is a name for a human 0b5d-4e2a-0397-cd4c 5 | Paul is a name for a human 51d2-d71a-d3ca-2f10 6 | Rachel is a name for a human 0057-a547-0990-9dc8 7 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/OPPOSITES.tsv: -------------------------------------------------------------------------------- 1 | VERB THING/PROPERTY [FILL] is the opposite of VERB THING/PROPERTY [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | an increase is the opposite of a decrease bfdf-b468-ee22-1b60 3 | an insulator is the opposite of a conductor 9493-f99f-c366-f5bc 4 | below is the opposite of above cabb-556b-730d-bbc7 5 | changed is the opposite of unchanged 2dc2-c468-20d4-4a8d 6 | dark is the opposite of light f487-43a6-3837-b86b 7 | definite is the opposite of variable b3e1-3703-6490-1530 8 | different is the opposite of the same 86bd-c659-9db3-f443 9 | dimmer is the opposite of brighter 67b1-cfae-5a8e-a28c 10 | dying is the opposite of living; surviving 6cac-66f1-b8ce-e7ea 11 | far is the opposite of close 769f-6117-1272-9b62 12 | incomplete is the opposite of complete 7f18-4f2c-c82d-c191 13 | inherited characteristics are the opposite of learned characteristics; acquired characteristics 1ad3-28d4-f347-46a4 14 | keeping warm is the opposite of becoming cold 7747-5d53-fc0d-16f3 15 | larger; bigger is the opposite of smaller e5c0-79e6-37a7-4b77 16 | less is the opposite of more f0c2-63b1-42a5-416b 17 | reflecting light; sound is the opposite of absorbing light; sound 9f3b-6ec5-eb1c-178d 18 | low is the opposite of high 34f5-9386-edae-d952 19 | made by humans is the opposite of natural 5072-7d9d-63a0-5042 20 | near is the opposite of far; away 2fb5-7bf0-d5d7-3224 21 | negative impact is the opposite of positive impact ed09-025e-89b8-d48f 22 | nonliving; non-living; die is the opposite of living; alive; live 3650-2d8d-42b9-299b 23 | north is the opposite of south 239f-1e40-536f-7447 24 | poor health;bad health;unhealthy is the opposite of good health;healthy 6567-a1de-cf55-de30 25 | renewable is the opposite of nonrenewable 3033-d050-eb10-b696 26 | rough is the opposite of smooth 65ea-394c-44cb-2b42 27 | safe is the opposite of harm; danger fd2d-7763-c40b-59a9 28 | small is the opposite of large cdf2-1b98-7d70-6ea5 29 | staying cool is the opposite of becoming hot f402-34bf-e178-2a72 30 | taking is the opposite of leaving 1e0d-885b-8ca3-3c13 31 | toward is the opposite of away 435c-2049-11ca-61c5 32 | planting trees is the opposite of cutting down trees aa7b-a050-ec29-97a1 33 | warm-blooded is the opposite of cold-blooded 4581-6e67-e838-1ec2 34 | wet is the opposite of dry 11df-b5ab-f051-1665 35 | winter is the opposite of summer 9fc2-699f-7287-fc0d 36 | contract is the opposite of expand 09ab-1fe4-7db0-b767 37 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PERCEPTIONS.tsv: -------------------------------------------------------------------------------- 1 | [FILL] to a/ to the THING [FILL] a SCOPE X [FILL] of LOWER UNITS [FILL] to UPPER UNITS [FILL] is considered MAGNITUDE VALUE ATTRIBUTE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | to a human a air; environment temperature of -450 F to 32 F is considered very cold 1cda-9709-e82c-ee90 3 | to a human a air; environment temperature of 32 F to 50 F is considered cold 6532-8ea6-ce14-1b62 4 | to a human a air; environment temperature of 50 F to 70 F is considered cool c9fe-e5b5-e32d-cebc 5 | to a human a air; environment temperature of 70 F to 82 F is considered warm a08d-a122-dacd-1674 6 | to a human a air; environment temperature of 82 F to 95 F is considered hot 8eef-38db-1a56-c0fa 7 | to a human a air; environment temperature of 95 F to 50000000 F is considered very hot fb09-6743-01f0-4330 8 | to a human a air; environment temperature of -273 C to 0 C is considered very cold 1d2c-1a6b-4fa3-cea4 9 | to a human a air; environment temperature of 0 C to 10 C is considered cold 2781-0c31-743d-6a09 10 | to a human a air; environment temperature of 10 C to 21 C is considered cool c082-b3c8-965b-c5ab 11 | to a human a air; environment temperature of 21 C to 28 C is considered warm 0a57-0832-1b47-30d7 12 | to a human a air; environment temperature of 28 C to 35 C is considered hot a282-4420-bd3d-7094 13 | to a human a air; environment temperature of 35 C to 50000000 C is considered very hot 0626-3118-0b06-1fe0 14 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PREDATOR-PREY.tsv: -------------------------------------------------------------------------------- 1 | QUANTIFIER [FILL] a ANIMAL [FILL ] is a PREY/PREDATOR [SKIP] COMMENT [SKIP] UID 2 | some birds are predators d9e0-5f0a-e26c-d0e8 3 | carnivores; omnivores are predators c25b-67c9-2d33-9116 4 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROCESSROLES.tsv: -------------------------------------------------------------------------------- 1 | [FILL] In the PROCESS NAME [FILL] process [FILL] a ACTOR/COMMON EXAMPLE [FILL] has the role of ROLE [FILL] which VERBS PATIENT [FILL] for FOR/PURPOSE [FILL] by BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | The food chain process has the role of decomposer Moved to KINDOF? c8fd-47b2-51a8-da2f 3 | In the food chain process an animal has the role of consumer which eats producers;other animals for food a4f8-5748-0846-cb45 4 | In the food chain process a green plant has the role of producer e4b0-75b1-e5ea-4189 5 | In the food chain process bacteria have the role of decomposer aa86-c090-3f89-1a5d 6 | In the food chain process fungi have the role of decomposer 7435-65b5-4a59-89b4 7 | In the erosion process roots of plants are an inhibitor d54f-e502-fa51-788d 8 | In the cellular respiration; respiration process carbon dioxide is a waste product 3f31-824e-6866-4db7 9 | In the photosynthesis process carbon dioxide; water; sunlight has the role of raw material 93b8-fdb5-f003-dedb 10 | In the food chain process some types of plankton have the role of producer d9fb-1dc4-4305-980c 11 | In the photosynthesis process oxygen has the role of waste product 3a09-0c0a-bfcf-b959 12 | In the tree reproduction process a squirrel has the role of seed disperser e6a9-507a-d37b-db63 13 | In an ecosystem a producer has the role of producing sugar Move to SOURCEOF. 258e-f730-4c7a-fdc0 14 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROCESSSTAGES.tsv: -------------------------------------------------------------------------------- 1 | [FILL] the PROCESS NAME [FILL] is a SEQUENTIAL/CYCLICAL [FILL] process, with the stages of STAGES [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-ANIMAL-ATTRIB.tsv: -------------------------------------------------------------------------------- 1 | [FILL] A ANIMAL [FILL] is ATTRIBUTE VALUE [FILL] animal [FILL] for FOR/PURPOSE [FILL] by BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | A bird is a pollinating animal 14de-6699-6b2e-a5d1 3 | A bee is a pollinating animal 2d4d-44be-d6a6-655f 4 | An insect is a pollinating animal d57d-4cbb-11ee-2f47 5 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-CONDUCTIVITY.tsv: -------------------------------------------------------------------------------- 1 | OBJECT/AGENT [FILL] is a KIND OF CONDUCTIVITY CONDUCTOR/INSULATOR QUANTITY/RANGE SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | rubber is an electrical; electrical energy; thermal; thermal energy insulator 3bc7-7251-4566-95f7 3 | wood is an electrical; electrical energy; thermal energy insulator 8f3b-ed0c-5dae-f30e 4 | metal is an electrical; electrical energy conductor 23bf-e586-9387-c883 5 | metal is a thermal; thermal energy conductor 0439-8c06-da63-6721 6 | wax is an electrical; electrical energy insulator acae-d127-8de0-100d 7 | brick is an electrical; electrical energy insulator c4f6-ee5c-204a-6f07 8 | water is an electrical; electric energy; thermal; thermal energy conductor 86c1-8ea4-6a5c-6283 9 | nervous system is an electrical; electric conductor f64e-1b60-6e48-9b5a 10 | down feathers are a thermal; thermal energy insulator 718f-36ed-de51-9dfb 11 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-ENVIRONMENTATTRIB.tsv: -------------------------------------------------------------------------------- 1 | [fill] the ADJ ENVIRONMENT [FILL] environment is QUALIFIER [FILL] is/ has VALUE [FILL] in DIMENSION/ATTRIBUTE FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW [FILL] from WHY SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | the arctic environment is white in color from being covered in snow 7e81-184a-3132-e57b 3 | the arctic environment is cold in temperature from being at a northern lattitude below 0 degrees celsius during most of the year 346e-7cc2-f910-5df4 4 | a desert environment is low in availability of water 38b2-29c9-81cd-f86a 5 | a desert environment is dry 0e2f-97e3-fb4f-3886 6 | cold environments are usually white in color from being covered in snow 6884-ef70-63e5-81fa 7 | the arctic environment is covered in snow 2fee-d74c-f33e-6a98 8 | a desert environment has low rainfall dda3-c20d-4cc2-2323 9 | a desert environment usually has a lot of sunlight 40ba-dc8a-ed49-44d6 10 | a desert environment is usually hot in temperature de2e-ed32-b721-3787 11 | a dense forest environment is often dark in color f9e1-ca2c-699a-ab24 12 | a forest environment is often green in color 928d-a3e5-933a-978b 13 | a forest environment receives more rainfall than a desert d446-ee74-8b90-0757 14 | a grassland environment receives more rainfall than a desert 6d74-209a-d964-4666 15 | a tropical environment usually has warm temperatures 0a7a-e005-a69f-d3e8 16 | the tundra is very cold in temperature 569d-9ee4-d775-7874 17 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-FLEX-RIGIDITY.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a OBJECT [FILL] is QUANTIFIER MAGNITUDE FLEXIBLE;RIGID [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a balloon is highly flexible 762f-5f24-90ad-ff00 3 | metal is usually flexible d723-5450-7a62-d57c 4 | a drinking straw is flexible 4bc1-99e4-3bcc-aac0 5 | a beach ball is flexible d8cd-c383-3563-057f 6 | skin is flexible 472e-182d-7263-16c0 7 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-HARDNESS.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/the ADJ OBJECT [FILL] is QUALIFIER HARD/SOFT [FILL] for FOR/PURPOSE SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | rock is hard c86b-2598-26a1-c878 3 | down is soft 8af1-27da-0fa3-eab5 4 | solids are usually hard ea47-0dd8-dfeb-ca80 5 | a scale is hard f344-9f75-ceae-9506 6 | bone is hard 6c5d-e42d-a164-2888 7 | mica is soft 2e56-4666-451b-5894 8 | a cushion is soft 4ff7-4d81-11f0-5105 9 | an animal's shell is usually hard for protection 9dc0-0ba6-dbb6-4ff7 10 | a table is hard 0227-a355-b0ea-7d16 11 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-INHERITEDLEARNED.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/the ATTRIBUTE/QUANTITY AGENT ACTION SCOPE [FILL] is a(n) QUANTIFIER INHERITED/LEARNED [FILL] characteristic [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | eye color is an inherited characteristic 1763-9f64-7941-cb50 3 | the shape of body parts is an inherited characteristic c390-00e1-36dd-2ae2 4 | curly hair is an inherited characteristic 96e0-40fd-6189-dc8f 5 | the color of; coloration of fur is an inherited characteristic 29be-69ad-17f4-11f0 6 | height is an inherited characteristic 78a9-0629-0526-4b03 7 | freckles are an inherited characteristic cfdf-d0cc-a5c3-d5c1 8 | skills are learned characteristics 856a-1ef6-dd1f-154b 9 | the colors of the parts of an organism are inherited characteristics 102a-fa79-43cd-e9a4 10 | the condition of the parts of an organism are acquired characteristics bc8d-37ef-e7d2-05e3 11 | the length of body parts is an inherited characteristic b32d-db8e-41c0-13c8 12 | reproductive behavior is an inherited characteristic a616-023f-d122-f2f3 13 | doing chores is a learned characteristic daaf-468d-1f9b-0fac 14 | a scar is an acquired characteristic bb11-420c-4bb5-d176 15 | using tools is a learned characteristic d889-0f71-bb81-1eb9 16 | migration is an instinctive behavior 7386-ad73-8eef-4980 17 | the length of the hair of an animal is an acquired characteristic 7f25-f44f-e96b-9a88 18 | the type of seed of a plant is an inherited characteristic 7bed-ba1b-4cde-f393 19 | the thickness of the parts of an organism is an inherited characteristic 1d43-ce6e-b5c5-c568 20 | a trick is a learned behavior 5bbc-9036-eb08-38e4 21 | hibernation is an inherited behavior 7ded-f79f-1ff4-efe2 22 | the number of body parts of an organism is an inherited characteristic b4e7-dad7-cb84-1e31 23 | preferences are generally learned characteristics b53f-7ff9-3341-cd62 24 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-ORBITAL-ROT.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a REVOLUTION/ROTATION [FILL] of WHAT'S MOVING [FILL] around/on CENTER POINT [FILL] takes HOW LONG IT TAKES UNITS [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a Rotation of the Earth on Earth's axis; itself takes 1; one day d047-b416-20a3-5fca 3 | a complete revolution of the Earth around the sun takes 1; one year; solar year; Earth year e682-f47d-cc9c-a67c 4 | a revolution of the moon around the Earth takes 1; one month 9baa-2f01-60c7-64fa 5 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-QUANTITY-DATE.tsv: -------------------------------------------------------------------------------- 1 | [FILL] the THING [FILL] is QUANTITY [FILL] on DATE SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | the amount of daylight is least on the winter solstice 5307-2d90-79a8-14af 3 | the amount of daylight is greatest on the summer solstice 551a-ecdb-38e6-4b09 4 | the amount of daylight is greatest in the summer 3d48-ef4c-bf06-a0c5 5 | the amount of daylight is least in the winter b695-f668-1dec-659c 6 | the winter solstice is on December 21st in the Northern Hemisphere Moved to Proto-During 1a5a-ae9f-65a4-17ed 7 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-RECYCLABLE.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a OBJECT [FILL] is RECYCLABLE;NON-RECYCLABLE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | paper is recyclable 0629-5e75-b18c-0675 3 | aluminum is recyclable 0e9a-5a09-0c3a-2a9a 4 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-REL-DIST.tsv: -------------------------------------------------------------------------------- 1 | [FILL] the OBJECT/AGENT WHERE [FILL] is the CLASS [FILL] that is RELATIVE DISTANCE [FILL] to TO REFERENCE POINT [FILL] than COMPARISON SCOPE [SKIP] COMMENTS [SKIP] UID 2 | the Sun is the star that is closest to Earth 4e12-62f2-0830-d602 3 | Pluto is the planet that is ninth closest to the Sun 0390-aada-ce88-9040 4 | Earth is the planet that is third closest to the Sun a352-bde5-b854-f460 5 | Boston is city that is near to the coast of the Atlantic Ocean 6d05-237f-42f2-6589 6 | the stars in the night sky are very far away from the Earth c14b-4971-7d32-d1d3 7 | Earth is a planet that is closer to the Sun than Jupiter fe9e-0b3d-813c-75d7 8 | the moon is the celestial object that is closest to the Earth ae9e-abc3-9cb3-216c 9 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-RESOURCES-RENEWABLE.tsv: -------------------------------------------------------------------------------- 1 | RESOURCE [FILL] is/are QUALIFIER [FILL] a/the REWABLE/NONRENEWABLE [FILL] resource [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | soil is a renewable resource for growing plants 1af4-c273-5b80-34e6 3 | water is a renewable resource df02-656d-260a-04d5 4 | metal is a nonrenewable resource 9e1f-a1a8-643b-0b8c 5 | alternative fuel is usually a renewable resource 2146-8319-8af6-a8e3 6 | plastic is a nonrenewable resource 06f5-8cbc-7ae5-111f 7 | wind is an inexhaustible resource 8aa2-0c1b-b931-8897 8 | fossil fuels are a nonrenewable resource 0b4c-355e-1cca-d698 9 | aluminum is a nonrenewable resource 982b-08d3-f40e-289f 10 | coal is a nonrenewable resource 77f9-749f-9394-ae34 11 | natural gas is a nonrenewable resource 4cbb-5f96-4d29-b4f5 12 | oil is a nonrenewable resource 8c18-c36b-a89a-60ec 13 | solar energy is an inexhaustible resource 24ed-15e8-f3ce-62a2 14 | solar energy is a renewable resource f5c3-d141-1a8b-80c9 15 | trees are a renewable resource 27d4-eb24-0630-19ed 16 | wind is a renewable resource 0da1-2296-dfe8-6873 17 | wood is a renewable resource 55b1-a769-b2b4-d023 18 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-STATESOFMATTER.tsv: -------------------------------------------------------------------------------- 1 | [FILL] Matter in the PHASE [FILL] phase has VALUE ATTRIBUTE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | Matter in the solid phase has definite shape d068-9891-46a3-e999 3 | Matter in the liquid phase has variable shape 5458-220e-3046-62d2 4 | Matter in the gas phase has variable shape 77a9-72bb-f1d8-77ff 5 | Matter in the solid phase has definite volume 92b1-8801-0e59-845e 6 | Matter in the liquid phase has definite volume d048-a12a-4f58-5472 7 | Matter in the gas phase has variable volume 42dd-0aaa-7736-eea9 8 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-STATESOFMATTER1.tsv: -------------------------------------------------------------------------------- 1 | MATERIAL NAME [FILL] is in the STATEOFMATTER [FILL] state [FILL] , called FORM NAME [FILL] , [FILL] for temperatures between LOWER BOUND [FILL] and UPPER BOUND UNITS [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | water is in the gas state , called water vapor , for temperatures between 373; 212; 100 and 100000000000 K; F; C e474-2a11-6e7b-ae8b 3 | water is in the liquid state , called liquid water , for temperatures between 273; 32; 0 and 373; 212; 100 K; F; C 4a5d-ae1d-5ba6-8f8d 4 | water is in the solid state , called ice , for temperatures between 0; -459; -273 and 273; 32; 0 K; F; C 4a5a-9115-28a9-b97b 5 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROP-WARM-COLD-BLOODED.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a TYPE OF ANIMAL [FILL] is WARM/COLD-BLOODED [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a mammal is warm-blooded d470-e585-c801-a97d 3 | a reptile is cold-blooded 8790-617a-a7ad-96c6 4 | an amphibian is cold-blooded f7d7-7399-34c2-225c 5 | a bird is warm-blooded dde9-e2a5-57aa-acdc 6 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/PROPERTIES-GENERIC.tsv: -------------------------------------------------------------------------------- 1 | X [FILL] is a property of Y [FILL] includes ORDERED/UNORDERED [FILL] values of VALUES SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | volume; sound intensity is a property of sound; sound energy and includes ordered values of quiet; normal; loud 8158-a40a-af21-cc53 3 | temperature; heat energy is a property of objects; weather and includes ordered values of cold; cool; warm; hot 4084-f2bc-52cf-0f74 4 | size is a property of objects and includes ordered values of microscopic; tiny; small; medium; large 02eb-d26b-a00c-c559 5 | hardness is a property of a material; an object and includes ordered values of malleable; rigid 72e2-6cde-7faa-4d2b 6 | length is a property of the shape of an object 0969-6f9e-9555-9731 7 | weather is a property of a environment 497d-88e3-9e63-877c 8 | sky conditions are a property of weather 75e5-d0aa-9512-f33c 9 | temperature is a property of weather 950c-7489-5659-db44 10 | wind speed is a property of weather 1a23-b7e4-5ac6-60c3 11 | conductivity is a property of a material; substance d681-3158-6a99-253a 12 | flexibility is a property of a material 5109-65f3-6c0b-cecf 13 | thickness is a property of an object and includes ordered values of thin; thick 05fc-2dd1-7863-00f2 14 | amount is a property of something and includes ordered values of none; least; little; some; half; much; many; most; all 624a-c1ec-8c85-45ce 15 | texture is a property of surfaces; materials; objects and includes ordered values of smooth; rough 936a-31ea-b049-fee7 16 | mass; weight is a property of matter; objects; materials d06e-6c86-abe9-f3d5 17 | volume is a property of matter 866b-5e77-f131-2b80 18 | streak is a property of a mineral 0367-da98-abce-d6f4 19 | color is a property of an object; a material 5c52-4f26-3883-a4ef 20 | luster is a property of an object; a material aaca-ecc3-87f7-2658 21 | humidity is a property of weather and include ordered values of dry; humid 33cb-429a-ce86-2d79 22 | distance is a property of space and includes ordered values of close; far 91b9-6388-d5b8-58b6 23 | opacity is a property of an object and includes ordered values of opaque; translucent; transparent 6ed2-789b-e3f7-91fa 24 | smell is a property of an object; a material; a substance 3a89-10f2-0ff2-f54c 25 | charge is a property of an object; a material; a substance and includes ordered values of negatively-charged; neutral; positively-charged 681b-df1b-33c5-3ad5 26 | structure is a property of an object; a material; a substance 46f3-afab-99e4-ee0c 27 | variability of shape; variability of volume is a property of matter and includes values of variable; definite 5364-1d90-a262-32e7 28 | magnetism is a property of materials; objects and includes ordered values of nonmagnetic; magnetic 4a27-3046-0e5d-9891 29 | recyclability is a property of a material and includes ordered values of nonrecyclable; recyclable b393-8aa8-f654-e6a9 30 | acidity is a property of chemicals; substances and includes ordered values of basic; neutral; acidic 6af8-1d7a-5fcd-3e77 31 | width is a property of size; shape and includes ordered values of narrow; wide ba20-8706-42c6-1f9b 32 | flatness is a property of a surface; the shape of an object and includes ordered values of uneven; flat 046d-7605-f4cd-1f97 33 | depth is a property of the shape of an object 1e74-5982-396e-69c8 34 | strength is a property of an object; a material 635e-4c5d-98ab-31af 35 | latitude is a property of a location; place on Earth ad6f-9b09-9cd6-69ab 36 | sharpness is a property of shape 7832-1136-b1ac-6422 37 | melting point is a property of a substance; material 6ffc-7a7e-87d9-9732 38 | freezing point is a property of a substance; material a665-2771-83e8-adb8 39 | boiling point is a property of a substance; material 6c7e-2cf1-8a3f-b14a 40 | ability to undergo a phase change is a property of a substance; material 8fca-420e-f8ad-082b 41 | density is a property of an object; a substance and includes ordered values of dense; not dense b765-cf69-400e-c8f8 42 | condition is a property of an environment bb76-5bf9-7c9a-e096 43 | air pressure is a property of air; the atmosphere 0b32-125c-d57c-a9fb 44 | composition is a property of an object; matter 1d88-121f-5fd2-6ed8 45 | shape is a property of an object 93fd-6a6f-7782-77d1 46 | shape of the parts of something is a property of that something c4fd-cfe9-18c2-214f 47 | shape is a property of the appearance of an object 92e5-34ee-da79-3c25 48 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/REQUIRES.tsv: -------------------------------------------------------------------------------- 1 | ACTION [FILL] a OBJECT/AGENT/PROCESS SCOPE QUANTIFIER VERB (requires) ACTION QUANTITY/VALUE [FILL] a OBJECT SCOPE [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | an animal requires air for survival e918-e402-e4c8-3977 3 | an animal requires energy to move 838c-30bf-9b24-714b 4 | an animal needs to eat food for nutrients 7d29-0a2c-6959-b1dd 5 | an animal requires a habitat for survival fc71-7a5d-6e7b-5f5a 6 | an animal requires enough nutrients to maintain good health; survive 7db0-1827-aaaa-cc30 7 | an animal requires nutrients to grow and heal 12ed-f3da-04db-3ddc 8 | an animal requires oxygen for survival; to breathe f59c-9a1b-f57b-d689 9 | an animal requires shelter 44e1-a4d0-f534-fb1b 10 | an animal usually requires a warm body temperature for survival b08a-c1bc-23ee-1815 11 | an animal requires warmth for survival 2280-1ce3-3320-9547 12 | an animal needs to move to find shelter df9f-982c-aa68-428a 13 | an animal; living thing requires nutrients for survival 80de-489f-48b2-16f4 14 | animals usually require removing salt from water for drinking d3bf-8edc-c2a9-df49 15 | animals; living things require water for survival 732f-cb0b-50b4-ad0d 16 | an aquatic animal; aquatic plant requires great amounts of water to survive; thrive 335b-df55-9aa4-74ac 17 | pedalling a bicycle requires moving the pedals in a circular motion aa32-7fa4-4468-3d58 18 | broken bones require healing 55ad-db14-b2ff-b591 19 | cells require oxygen for fuel c37e-1c44-bf2c-3755 20 | looking in a container sometimes requires opening that container a280-cb5c-23dc-75f5 21 | planting crops requires growing crops be6c-e07f-062e-3207 22 | detailed observation of celestial objects requires a telescope 44f4-634f-79d8-75d7 23 | an egg requires warmth to survive; hatch; develop a395-cfde-0f24-1823 24 | electric devices require electrical energy to function 0584-393a-7b86-9c70 25 | an electrical device requires electricity to turn on 4ba9-2d5a-0284-2882 26 | powering an electrical device with a battery requires a path for electricity to flow through a closed circuit 0b18-91e7-5692-5753 27 | electrical insulation requires wrapping a conductor in an insulator 6152-0048-10b7-5dd7 28 | producing electricity sometimes requires burning oil 524e-2e12-7c8b-f5cb 29 | experimentation requires factors to be kept constant Low quality. No uses. 7f4b-8d9c-f5a8-1f08 30 | experimentation requires measuring e1e1-8127-43cc-b6bf 31 | experimetnation requires many measurements 195d-1a9a-bd8f-5d4d 32 | a flashlight requires a source of electricity to produce light e1cb-6dbd-0bf8-8d18 33 | cooking food requires adding heat energy 3d03-670e-3580-8f82 34 | forming coal; fossil fuels requires decaying vegetation 69e3-9034-d59c-1674 35 | using a gasoline engine requires burning gasoline 1893-0c1c-dddc-e8c4 36 | measuring the hardness of minerals requires scratching those materials 757d-cd70-0857-0d35 37 | healing requires rest; nutrients; energy fae2-7a13-e5eb-07b7 38 | removing hot objects from a heat source requires thermal insulators 4a89-0774-ec0d-d44f 39 | building housing developments usually requires replacing; destroying animal habitats 02d9-ec74-0c49-8fcd 40 | a human requires new information to invent things 0f69-e684-8421-00ae 41 | a human requires sleep; rest to be healthy 5b55-22e0-6067-9ef9 42 | hydropower requires damming a river 9b27-4e05-92ed-e884 43 | slipping on ice requires walking on that ice 30eb-7982-028c-4f0f 44 | casting an image of an object through a pinhole onto a screen does not require looking directly at the object 9b3e-7893-591c-c45a 45 | investigation sometimes requires experimentation e0c1-2f0f-8fa6-28d2 46 | flying a kite requires wind d042-a628-d170-532f 47 | performing lab expiriments accurately requires reading; understanding all directions beforehand c003-e5f0-d0c5-e922 48 | investigating the life cycle of a living thing requires that living thing to be alive 24a0-6fbe-c3ae-d6ee 49 | a light bulb requires electrical energy to produce light 737b-c59a-2215-29e1 50 | living things all require energy for survival 54ed-5fd9-0f44-64b7 51 | living things require respiration to use energy 995d-01f9-c9a9-9896 52 | magnetism does not require contact between objects to act Use entry in AFFORDANCES ffdf-9b51-2f63-0791 53 | cutting a material usually requires measuring length 8eef-9fa6-ffe3-c079 54 | studying moving habits requires knowing location d5a9-c02e-a6e4-392f 55 | navigation requires knowing direction e97b-a0ad-44fb-fbc3 56 | pushing an object requires force cd52-a711-b031-51a8 57 | using an object often requires creating that object 5c98-332a-07bc-25e6 58 | recording an observation sometimes requires measuring 50a5-5c13-ea54-0220 59 | an organism requires energy for growth; repair 5aba-6d6d-1c38-fe18 60 | creating paper requires cutting down trees 6b51-f1bc-8a3b-f29a 61 | warning people of something requires knowing about; predicting that something ddaf-860d-fe67-ae1e 62 | a person requires instructions to assemble a kit; something b18d-21e4-cd6b-fc65 63 | using a pesticide usually requires spraying that pesticide on crops 977b-ea07-b44f-bca9 64 | a plant requires a specific climate to grow and survive ca89-72df-289d-eb5a 65 | an plant requires food for survival 3796-e9f2-e94c-634d 66 | a plant requires a habitat for survival b7e4-dce3-2bc1-dc3e 67 | a plant requires photosynthesis to grow; survive fe74-c2b4-98c2-9496 68 | plant requires seed dispersal for reproduction c814-78ab-6951-9f93 69 | a plant requires soil for survival; to grow 5ebe-099f-fd30-b713 70 | a plant requires space to grow 7e26-1fd1-3e55-4816 71 | a plant requires sunlight to grow 4480-75c2-5b75-c32a 72 | a plant requires sunlight for photosynthesis 619e-a5d1-b505-4f69 73 | a plant requires water to grow 3ee7-7f5c-c890-460e 74 | plant reproduction; seed production requires pollination 7b88-0a72-7d90-ea1d 75 | a plant; living thing requires nutrients to grow 085c-28bf-bb51-79e6 76 | a plants; living things require water for survival; to grow f3ed-dedc-2aad-109c 77 | a polar bear requires a cold environment 682c-7e2c-8f66-0543 78 | pollination requires pollinators; pollinating animals 2c1d-72c3-3a94-c25b 79 | popping popcorn requires adding heat 4102-0f86-9ded-c9db 80 | eating prey requires catching prey 69cc-d300-368f-169b 81 | answering questions requires information 7717-15e3-f50d-464a 82 | radiation does not require objects to touch each other Moved to AFFORDANCES de3a-8c85-4074-46a8 83 | using a raw material sometimes requires absorbing that raw material bef0-f566-d2cd-a523 84 | creating a simple circuit requires a wire; battery 963a-dc3b-646b-8187 85 | a simple machine requires mechanical energy to function 9ad1-61b5-f824-eac7 86 | sleeping requires less energy than being awake 4c78-546e-273d-30c8 87 | toasting something requires adding heat energy 5023-ad88-20d0-adfa 88 | making something requires resources 4b08-9460-5cec-02ba 89 | counting something usually requires seeing that something 6ace-d8ec-0ac5-9dd2 90 | discovering something usually requires seeing that something 4274-6c15-d627-27b7 91 | finding something requires sensing that something beb5-0b99-d9ac-b8e5 92 | learning about something sometimes requires observing that something d8a6-5c7b-d762-e968 93 | studying something usually requires seeing that something 2530-6efd-e282-feb0 94 | building something often requires measuring the materials f58a-4d4f-e0ae-6833 95 | calculating speed requires knowing distance travelled 98dd-55cb-7cfa-5e19 96 | a sprinkler requires water to function fa4f-3f9e-68fa-1b79 97 | preparing for a storm requires predicting the occurrence of that storm bbef-5cd8-4316-7358 98 | testing the streak of a mineral requires the powdered form of that mineral c275-7629-09d4-66e3 99 | a tadpole requires water to breathe c962-dbaf-be19-1b47 100 | building a tool requires knowing about the parts of that tool 667d-b7b6-7a2f-41ac 101 | a tree requires space to grow 0d05-923d-7ac4-0ae8 102 | a tree requires sunlight to grow ba77-8e71-e07b-08fe 103 | a tripe in a vehicle requires using that vehicle ce92-ccfe-ccdf-061f 104 | determining the type of an organism requires having information about that organism a7a2-bae8-2f22-634d 105 | making a valid conclusion in an investigation requires a testable hypothesis 9975-ef8f-39de-60bf 106 | vehicles usually require gasoline to operate 0bb0-16b1-30de-d0e2 107 | predicting weather requires studying weater 66f7-f191-3c2b-d38e 108 | a wheeled vehicle requires smooth surfaces 57ff-11f6-5854-80c5 109 | wiring requires an electrical conductor b5f8-afed-3d08-707b 110 | creating wood-free paper does not require cutting down trees c154-63ca-6d35-92b4 111 | measuring requires reading a measurement 5c44-235c-9a3d-6182 112 | being active requires energy 3e47-33d1-5c3d-ae35 113 | running requires a lot of energy 2401-2216-1d73-27d3 114 | seeing requires light e5ab-6c07-c15d-90f2 115 | hunting requires seeing; sensing prey 0857-a14d-3376-70f7 116 | comparing requires observing that something cafd-1d6e-a47f-022b 117 | building usually requires cutting down trees 0fb6-467a-43af-1af8 118 | comparing requires measuring 5a5b-62f9-095f-8447 119 | determining often requires measuring; observing fc75-dfcd-e46e-e318 120 | investigating sometimes requires measuring 131b-dab0-cb1e-e896 121 | reading requires seeing 09ac-6563-7f9f-67ca 122 | testing often requires measuring 4478-6d20-87bd-2cd1 123 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/SOURCEOF.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a ADJ AGENT ACTION OBJECT/PATIENT QUALIFIER VERB (sourceof, provide, etc) WHAT IT PROVIDES [FILL] called NAME [FILL] to/for AGENT IT PROVIDES THING TO [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a battery is a source of electrical energy c6c3-2053-aaf7-86fe 3 | a battery is a source of electricity Duplicate. All uses replaced. a952-ae30-5723-87db 4 | a body of water is a source of water 9a28-67a2-0019-9ec2 5 | burning gasoline; oil is a source of pollution 86ae-9fcc-40d0-77ab 6 | a candle is a source of light when it is burned 887f-3af4-3e07-807d 7 | a car engine is a source of heat 4aa8-45fb-6589-f574 8 | a cell produces carbon dioxide for waste beb8-cabb-ae24-b0ab 9 | the cell membrane provides support; protection for a cell 9315-2889-5172-d68d 10 | a cell wall provides support; protection; shape; structure for a plant cell 3254-8f73-9122-fec8 11 | clouds produce precipitation db52-3ce3-5e7f-1953 12 | clouds produce rain d005-63fc-d3da-45e2 13 | coal mine is a source of coal under the ground ef7d-a3f3-6200-ea1d 14 | a complete electrical circuit is a source of electrical energy 647c-26b4-292b-4c96 15 | dairy is a source of Vitamin D 5e8b-5290-a9f9-d771 16 | dead organisms are the source of nutrients for decomposers 779a-4a82-66a1-2ce6 17 | electromagnets generate magnetic fields f662-7035-f75b-8046 18 | fertilizers are a source of pollution fb74-d393-266e-0f88 19 | fire gives off light; heat; smoke 891f-4f5c-91a2-bd31 20 | a flashlight emits light 0e96-d216-e3de-ce65 21 | a flower is a source of nectar b03f-5050-0795-6e43 22 | a flower produces pollen and seeds 1788-1cd3-6a0a-82f2 23 | flowers are a source of fruit 3301-3fc5-5e6e-a711 24 | food can be a source of an odor 67c1-b3d2-faa6-6768 25 | food is a source of energy for animals; plants 5753-2812-04c2-af70 26 | fuel is a source of energy 623f-9df0-d179-3917 27 | green plants provide food for themselves; animals; consumers by performing photosynthesis 694b-d9ec-8c65-5a6a 28 | grey clouds are a source of precipitation 20a9-322c-b21a-3d54 29 | a hand dryer produces heat 2e43-a74f-bca2-5d7f 30 | a hot plate is a source of heat 945f-acde-29f3-d573 31 | a hot substance is a source of heat bdf8-fbda-ff94-54f5 32 | an landfill is a source of pollution 3094-7527-5f14-50d9 33 | lightning is the source of thunder 8f2c-46a2-91be-8eae 34 | many vehicles emit pollution into the air 8e30-5411-1171-26fa 35 | motion is a source of kinetic energy in an object 9f23-854a-7dc0-c22e 36 | musical instruments make sound when they are played f6ad-39ca-e8e1-b1d7 37 | natural gas is a source of heat by burning c491-9f0f-8947-cd1b 38 | nature is the source of natural resources 782c-5d2a-36fe-5676 39 | nutrients are a source of energy for living things 31c6-d095-6939-21a9 40 | an ocean is a source of heat and moisture for a hurricane 2030-ad1d-a83f-6581 41 | oil is a source of energy 124d-89c9-c195-2ea9 42 | oil is a source of gasoline 8507-acd7-51e8-31a1 43 | an organism is a source of organic material 964c-a4cf-22a6-5f49 44 | an organism is a source of organic matter ddb4-26f4-5edb-1f07 45 | an organism breaking down sugar is a source of carbon dioxide; water 5c21-873c-7d14-83ef 46 | an oven is a source of heat 926d-355a-9b2c-c5d1 47 | photosynthesis is a source of; makes food; energy for the plant by converting carbon dioxide, water, and sunlight into carbohydrates a9fc-ec58-9496-d635 48 | plants are a source of biofuel 4915-3ab4-00ec-853a 49 | plants are a source of fibers d36c-a9f0-2f37-c0e1 50 | plants are the source of fruit cfb3-f3ae-f0d8-b6ca 51 | plants are a source of oxygen through photosynthesis a908-944e-04aa-71bc 52 | plants are the source of spices bef6-e915-46ee-d0dd 53 | pollution is a source of pollutants a7fc-71a9-609d-ae33 54 | processes sometimes produce waste products ba22-866b-15eb-3d9a 55 | a producer is a source of energy for consumers b19d-b086-7090-2115 56 | a radiator is a source of heat 41f9-05ef-9272-1100 57 | rain is a source of water e73f-198c-a896-b428 58 | reproduction produces offspring a6ff-574e-11c6-a86c 59 | rocks are a source of shelter for small animals in an environment a08d-16c5-c9ee-2af5 60 | a shower is a source of hot water for washing 2c77-4f27-a432-599c 61 | sitting on something provides warmth to that something e063-a513-3c32-87b1 62 | a hot; warm something is a source of heat 55b7-97a0-0554-156d 63 | a source of something supplies that something 1b18-2bc7-5809-6490 64 | a squid produces thrust by pushing water out of its body 1631-78fe-2811-ffb9 65 | a star produces light and heat 8369-8669-0725-2c00 66 | a star is a source of light; light energy through nuclear reactions d567-d49e-293e-95bf 67 | a stem is a source of support for a plant 317e-c441-1f21-0244 68 | a stove generates heat for cooking usually d59b-bac8-e191-05be 69 | the sun is the source of energy for life on Earth 2d69-ee53-599f-9438 70 | the sun is a source of light; light energy called sunlight a538-175f-9223-d117 71 | the sun is a source of radiation; heat called sunlight d247-b029-3aab-0950 72 | the sun is the source of solar energy called sunlight 1ed3-919d-4a4c-1be7 73 | the sun is the source of energy for physical cycles on Earth bbf1-262a-c774-3f47 74 | sunlight produces heat 2889-3edc-095a-6d6b 75 | tea sometimes is a source of heat No uses. c09a-e652-5f1c-1517 76 | a tree is a source of shelter; food for birds; animals in an ecosystem b02a-dae3-93ce-c2b7 77 | trees are a source of paper 228c-e968-0417-3f8d 78 | a trunk is a source of support for a tree 9633-63de-89db-ce0e 79 | vibrating matter can produce sound cf64-935e-ea78-35a4 80 | weather is a source of wind and water for the weathering process 2ec3-057c-c9d8-a7c4 81 | wind is a source of energy 185e-29ab-4975-8d8b 82 | a producer is a source of sugar in an ecosystem 35d8-b64d-a726-96c8 83 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/STAGE-IN-PROCESS.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a STAGE [FILL] is a stage in the PROCESS [FILL] process QUANTIFIER [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | adulthood is a stage in the life cycle process 1323-e32a-5c92-8dbb 3 | coal is a stage in the rock cycle process 8372-00a5-181a-ed20 4 | condensation is a stage in the water cycle process 533a-06f9-f6cc-18f4 5 | decomposition is a stage in the carbon cycle process 8343-85e2-dc31-6005 6 | an egg is a stage in the life cycle process of some animals e76c-d8bc-9c51-ca6b 7 | evaporation is a stage in the water cycle process d013-ec1c-88f4-fae9 8 | fertilization is a stage in the sexual reproduction process 7062-9b88-0291-7a17 9 | gamete development is a stage in the sexual reproduction process 95a9-c39d-4224-47ce 10 | growth is a stage in the life cycle process 9102-2919-4524-85be 11 | high tide is a stage in the tide cycle process 8317-e088-279b-ba21 12 | low tide is a stage in the tide cycle process 568b-892b-0284-5037 13 | metamorphosis is a stage in the life cycle process of some animals cda4-808d-0e93-2541 14 | oxygen is a stage in the carbon dioxide-oxygen cycle process b221-8fe0-8d8a-0e36 15 | precipitation is a stage in the water cycle process 12e1-c575-a443-87f3 16 | the pupa stage is a stage in the metamorphosis process of some animals cc84-f709-3933-9af1 17 | reproduction is a stage in the life cycle process 7289-5346-1246-0060 18 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/SUBDIVISION-GENERICSPATIAL.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/the SUBDIVISION [FILL] is a ADJ TYPE OF SUBDIVISION [FILL] found at the PART WHOLE [FILL] by (mechanism) HOW [FILL] for/to FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | bark is a protective covering around the trunk of; branches of a tree 4bbd-68e4-692b-c8db 3 | the cell membrane is the membrane around the cell of all living things 3992-7d34-e964-2e4f 4 | a coast is where land meets the edge of a body of water 8d65-5a72-dae4-fb86 5 | the crust is a layer of the Earth 27e0-dacf-5177-e23c 6 | fur is a covering around the body of an animal 0e13-f49d-f3ee-6cd6 7 | a glove is a covering around the hand for protection bfcf-e1cc-cbe0-f10f 8 | the mantle is a layer of the Earth d7f8-a2da-a673-23e2 9 | scales are a covering around the body of a scaled animal ae2c-3485-b503-7d22 10 | a shore is the land found at the edge of a body of water bf74-5557-dd78-d5c8 11 | skin is the first; outermost layer around the body of some animals 87f9-3bab-fa6f-f24c 12 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/TRANSFER.tsv: -------------------------------------------------------------------------------- 1 | PROCESS_NAME [FILL] is when ACTOR/WHO VERB WHAT [FILL] from SOURCE [FILL] to DESTINATION [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE LINKING [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | a landslide is when water; gravity rapidly moves rocks or soil downhill especially after a rain storm 14a5-1229-3653-681c 3 | decomposition is when a decomposer recycles; returns nutrients from dead organisms to the soil by eating those dead organisms 12d9-60df-23de-f00f 4 | deposition means to move an object from one location to a different location e1fb-b791-3945-02db 5 | eating;digestion is when an organism takes in nutrients from food into itself by eating 244b-03a0-929e-0095 6 | electrical conduction is when metals; electrical conductors conduct electricity through a wire;electrical conductor;metal 22ce-038b-ff4f-c5ba 7 | hailing is when hail fall from clouds to the Earth;ground eba3-d0ec-be26-0d48 8 | inheriting is when a inherited characteristic is copied; is passed from parent to offspring by genetics;DNA ee78-0795-be47-6ad8 9 | migration is when animals move themselves from a cooler climate to a warmer climate for the winter 8cce-a771-334c-a119 10 | mining is when humans take rocks and minerals from the ground 0112-d812-4b8a-da17 11 | motion is when moves an object; something to a direction d067-f0ea-b5ff-d34e 12 | pollination is when pollinating animals; wind; water carry pollen from one flower to another flower 5900-59b1-bb87-4115 13 | precipitation is when rain;snow;hail fall from clouds to the Earth;ground 4347-84dc-10ce-8007 14 | radiation is when heat is transferred through waves; particles 1d10-2a0a-bf2e-7622 15 | raining is when rain falls from clouds to the Earth;ground as a liquid b4bc-3e75-5b39-8122 16 | reflection is when light is reflected from one object; one place to another object; another place 264f-5a85-6765-8c90 17 | refraction is when light passes from one medium to another medium 888c-d0df-12df-c3b6 18 | reproduction is when an organism passes genetic information from itself to its offspring f484-95d0-af56-d834 19 | seed dispersal is when the seeds of a plant are moved; are carried; are spread; are dropped; from the parent plant to another area dbc7-1c37-35fd-e1f8 20 | snowing is when snow fall from clouds to the Earth;ground 6a0e-b352-1831-e2b8 21 | soil erosion is when wind; moving water; gravity move soil from fields; environments 4c93-e1e3-546a-8cfa 22 | thermal conduction is when materials conduct heat through those materials 04a3-0791-9bd3-602d 23 | transferring is moving from one place to another place 799d-7170-d15d-812f 24 | a thermal energy conductor transfers heat from warmer objects; hotter objects to cooler objects 3dcc-05e2-48cc-db62 25 | an image transmits visual information 88cf-d036-3079-3423 26 | animals exhale carbon dioxide from their lungs into the air 7889-c90a-31ff-9e04 27 | animals inhale air into their lungs 66c7-4db4-da79-6ae9 28 | animals move food from mouth to the stomach through the esophagus 5eb8-13fa-556f-bf9e 29 | batteries convert chemical energy to electrical energy ad2f-42da-43e2-dbf3 30 | biofuel releases carbon dioxide into the atmosphere 6b63-3618-ee96-78b4 31 | Earth radiates heat into outer space c909-3a31-93ec-003f 32 | fire transfers heat through waves 8a8a-5122-efe7-7c20 33 | humans move waste to a landfill for disposal;storage 27ab-3140-60ab-8b03 34 | phloem transports materials through the plant e9c2-0dff-cd9a-7fb0 35 | plants absorb nutrients; water; oxygen from soil into themselves through their roots d7c1-cdfd-2de5-6b7d 36 | sugars are transported from the leaves to the roots of a plant ca98-bf5f-0d40-00ce 37 | the sun transfers solar energy; light energy; heat energy from itself to the planets;Earth through sunlight a3c3-47f1-32ba-5c7f 38 | telephones convert sound energy into electrical energy b48f-450b-c280-659d 39 | the circulatory system transports blood throughout the body b9cc-cb02-801d-bce7 40 | the esophagus carries; transports food from the mouth to the stomach d28c-c1d1-8ba6-630e 41 | the excretory system removes waste from the body 262d-6ddb-ec8a-5ea7 42 | the prevailing westerlies move air masses from east to west across the United States 6c89-6ed2-9da5-f75d 43 | the respiratory system transfers oxygen to the circulatory system cd92-04a0-8f80-387c 44 | wind carries; transports sand; dirt from one place to another place 777e-579e-46b3-50aa 45 | xylem carries water from the roots of a plant to the leaves of a plant 65e8-ad8b-7ec0-23ce 46 | xylem transports materials through the plant 26d4-7eb1-9874-3e50 47 | moving an object from a cool place to a warm place causes the object's temperature to increase b870-3f32-ad2b-c308 48 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/UNIT.tsv: -------------------------------------------------------------------------------- 1 | UNIT [FILL] ( ABBREVIATION [FILL] ) [FILL] is a unit used for measuring PROPERTY [FILL] generally used for values between LOWERBOUND [FILL] and UPPERBOUND [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | degrees fahrenheit ( F ) is a unit used for measuring temperature generally used for values between -450 and 50000000 461f-00e5-56fe-dd2c 3 | degrees celsius ( C ) is a unit used for measuring temperature generally used for values between -273 and 50000000 93f5-b0bb-73b5-8b40 4 | degrees kelvin ( K ) is a unit used for measuring temperature generally used for values between 0 and 50000000 140c-77ad-c6a7-5b26 5 | liters ( L ) is a unit used for measuring volume generally used for values between 1 and 50000000 4aff-d072-35cc-3ebe 6 | milliliters ( mL ) is a unit used for measuring volume generally used for values between 1 and 1000 833d-29e2-dde2-a9fa 7 | gallons ( gal ) is a unit used for measuring volume generally used for values between 1 and 50000000 814f-2587-109c-bd9c 8 | quarts ( qt ) is a unit used for measuring volume generally used for values between 1 and 4 697e-618e-8018-e806 9 | cups ( c ) is a unit used for measuring volume generally used for values between 0.125 and 8 5662-eed6-05d1-2149 10 | pints ( pt ) is a unit used for measuring volume generally used for values between 1 and 2 dc03-9737-bee3-4b58 11 | fluid ounce ( fl oz ) is a unit used for measuring volume generally used for values between 0.125 and 8 c32f-839b-f5fc-6a1e 12 | meters ( m ) are a unit used for measuring length; distance generally used for values between 1 and 1000 f297-a722-c60d-7be0 13 | millimeters ( mm ) are a unit used for measuring length; distance generally used for values between 1 and 100 f33c-7d47-3cf5-ef70 14 | centimeters ( cm ) are a unit used for measuring length; distance generally used for values between 1 and 250 8489-9ffe-b585-3aaf 15 | nanometers ( nm ) are a unit used for measuring length; distance generally used for values between 1 and 1000 c840-d35c-641c-e5ea 16 | kilometers ( km ) are a unit used for measuring length; distance generally used for values between 1 and 50000000 76d6-aa20-ec92-1c4a 17 | decimeters ( dm ) are a unit used for measuring length; distance generally used for values between 1 and 10 2bea-d875-bb6c-a12a 18 | miles ( mi ) are a unit used for measuring length; distance generally used for values between 1 and 50000000 b118-56f3-85c4-5e8b 19 | feet ( ft ) are a unit used for measuring length; distance generally used for values between 1 and 50000 b69d-9d08-0ad6-3023 20 | yards ( yd ) are a unit used for measuring length; distance generally used for values between 1 and 1000 b69d-9d08-0ad6-3023 21 | picometer ( pm ) are a unit used for measuring length; distance generally used for values between 1 and 1000 f75f-1151-f222-2281 22 | femtometers ( fm ) are a unit used for measuring length; distance generally used for values between 1 and 1000 cd08-fa15-26b8-135f 23 | light years ( ly ) are a unit used for measuring length; distance generally used for values between 1 and 27000000000 b0ba-81fa-58f4-a81b 24 | grams ( g ) are a unit used for measuring mass; weight generally used for values between 1 and 2000 3ad2-62a6-57f5-df68 25 | kilograms ( kg ) are a unit used for measuring mass; weight generally used for values between 1 and 50000000 7a26-9d80-a88f-94fa 26 | pounds ( lb ) are a unit used for measuring mass; weight generally used for values between 1 and 50000000 68fe-16bc-d67a-41b9 27 | tonnes ( t ) are a unit used for measuring mass; weight generally used for values between 1 and 50000000 1456-f51f-a4cd-2dfb 28 | ounces ( oz ) are a unit used for measuring weight generally used for values between 1 and 16 0fb6-3ecf-eb41-0b84 29 | years ( y ) are a unit used for measuring time generally used for values between 1 and 14000000000 4753-1b7f-3bca-f7bf 30 | months ( m ) are a unit used for measuring time generally used for values between 1 and 24 5fa3-ff9a-dc19-47a0 31 | days ( d ) are a unit used for measuring time generally used for values between 1 and 365 a459-e38e-38fd-c536 32 | seconds ( s; sec ) are a unit used for measuring time generally used for values between 1 and 300 6959-8a0c-c3fb-f49b 33 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/VEHICLE.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a ACTOR/WHO [FILL] is the vehicle for VERB [FILL] of WHAT [FILL] from SOURCE [FILL] to DESTINATION [FILL] for FOR/PURPOSE [FILL] by/through BY/THROUGH/HOW SCOPE QUANTITY/RANGE [SKIP] COMMENTS [SKIP] DEP [SKIP] UID 2 | An electrical conductor is a vehicle for the flow of electricity 5661-379f-7e61-6d32 3 | electricity is the vehicle for powering electromagnets low quality 42eb-b4fa-925c-d88d 4 | pollination process is the vehicle for reproduction of plants low quality 595a-f757-3b0b-9e11 5 | a tube is a vehicle for transporting liquids 4732-b071-1667-75e1 6 | the nervous system is the vehicle for controlling the body f91b-66ad-cb48-46c6 7 | a plant stem is the vehicle for transporting water and food from roots to the rest of the plant e448-3228-b949-a107 8 | DNA is a vehicle for passing inherited characteristics from parent to offspring 42cf-e041-f00a-7e84 9 | genes are a vehicle for passing inherited characteristics from parent to offspring a93e-05d1-02c8-7f9f 10 | roots are a vehicle for absorbing water and nutrients from soil into the plant c69c-a3e1-df55-5fc1 11 | the esophagus is a vehicle for moving food from the mouth into the stomach 8b96-cdd1-a453-1a8f 12 | blood is a vehicle for carrying oxygen from the lungs to the cells; rest of the body c507-1be6-062b-1712 13 | birds; some animals are a vehicle for spreading the seeds of a plant 419c-cd03-a464-39af 14 | the blood is a vehicle for moving chemical waste and excess water from the body to the kidneys 0d81-d223-b67b-10d1 15 | carbohydrates are a vehicle for storing;transporting energy db87-215c-3f42-5a04 16 | air is a vehicle for sound 8f50-0cc2-61eb-9e7f 17 | water; plant live is a vehicle for weathering Low quality. 2059-264d-1129-4447 18 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/WAVES.tsv: -------------------------------------------------------------------------------- 1 | PROCESS [FILL] is when a wave ACTION OBJECT [FILL] and travels in DIRECTION [FILL] direction [FILL] relative to the angle of incidence [SKIP] COMMENT [SKIP] DEP [SKIP] UID 2 | reflection is when a wave bounces off a surface and travels in the opposite direction relative to the angle of incidence c2d6-e332-6199-27ac 3 | refraction is when a wave goes through; transmits through; passes through a surface; a material; an object and travels in a different direction relative to the angle of incidence bfe1-0c07-3b4a-cfc2 4 | absorbance is when a wave absorbs at; stops at a surface 1c4c-073b-e376-e874 5 | transmitance is when a wave goes through; transmits through a surface and travels in the same direction relative to the angle of incidence b995-043c-620d-e558 6 | -------------------------------------------------------------------------------- /data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tables/XIVORE.tsv: -------------------------------------------------------------------------------- 1 | [FILL] a/an ANIMAL [FILL] is a kind of QUANTIFIER XIVORE [SKIP] COMMENT [SKIP] DEP [SKIP] UID 2 | a turtle is a kind of omnivore 8567-fc1a-2b84-3ac6 3 | a cow is a kind of herbivore dfcb-6cbb-85ac-9195 4 | a squirrel is a kind of herbivore 917a-13e0-ccdc-3673 5 | a rabbit is a kind of herbivore d825-1694-54c8-7842 6 | a deer is a kind of prey Move 30d5-5f2a-1462-4a76 7 | a bobcat is a kind of predator Move 774c-70fb-21b9-d983 8 | a panther is a kind of predator Move 94f4-e876-d801-c20c 9 | an owl is a kind of predator Move e4f6-cdf7-74e3-8c27 10 | an hawk is a kind of predator Move 0dcc-b257-e058-6cab 11 | an eagle is a kind of predator Move f5b8-c279-74af-f197 12 | a rabbit is a kind of prey Move 5ff9-ab7a-fbdd-10f8 13 | a fish is a kind of predator Move c561-260c-558d-89b4 14 | an insect is a kind of prey Move 2308-b66f-7997-bcc1 15 | a mouse is a kind of herbivore b063-0f0c-d332-f233 16 | a hare is a kind of prey Move 0cea-081d-192a-85fe 17 | a deer is a kind of herbivore 3958-4821-2eca-d3a9 18 | a cat is a kind of carnivore c13c-3759-cff0-cd36 19 | -------------------------------------------------------------------------------- /props/worldtreecorpus.lrec2018.properties: -------------------------------------------------------------------------------- 1 | # Worldtree Corpus Summary Statistics/Analysis Properties file 2 | # LREC 2018 3 | 4 | # 5 | # Input: Questions, Explanation Annotation, and Tablestore 6 | # 7 | questions = data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/questionsAndExplanations.tsv 8 | tablestoreIndex = data/lrec2018/WorldtreeExplanationCorpusV1_Sept2017_noMercury_partial/tsv/tableindex.txt 9 | 10 | 11 | # 12 | # Experiment/Analysis Parameters 13 | # 14 | 15 | # 16 | # CharacterizeConnectivity 17 | # 18 | 19 | # TODO: Comment 20 | #cc.overlapMode = MODE_CENTRAL_ONLY 21 | cc.overlapMode = MODE_CENTRAL_ATLEAST1 22 | #cc.overlapMode = MODE_ANY 23 | 24 | # number of monte-carlo simulations 25 | # note: empirically, numSimulations ~ 100 appears a good number for stability. 26 | cc.numSimulations = 100 27 | 28 | # number of histogram bins for connectivity 29 | cc.maxHistBins = 6 30 | 31 | # resolution that the analysis will be rendered at (e.g. every 50 questions) 32 | cc.qStepSize = 50 33 | 34 | 35 | 36 | # 37 | # GenerateQuestionClusterGraph 38 | # Exports in DOT/GraphViz format 39 | # 40 | 41 | # Output filename prefix 42 | gqcg.filenameOut = graphout 43 | 44 | # Minimum number of overlaping explanation sentences to draw an edge 45 | gqcg.minConnectivity = 1 46 | 47 | # Allow connections on all roles (true = central, grounding, background, lexical glue), or just central (false) 48 | gqcg.allRoles = false 49 | 50 | 51 | # 52 | # MostCommonTableRows 53 | # 54 | # No additional parameters 55 | 56 | 57 | # 58 | # SummaryStatistics 59 | # 60 | # No additional parameters 61 | 62 | 63 | # 64 | # SummaryKnowledgeGrowth 65 | # 66 | 67 | # number of monte-carlo simulations 68 | # note: given the variability, the paper uses about 64,000 simulations per datapoint to achieve strong estimates. 69 | skg.numSimulations = 100 70 | 71 | # resolution that the analysis will be rendered at (e.g. every 50 questions) 72 | skg.qStepSize = 50 73 | 74 | -------------------------------------------------------------------------------- /src/main/scala/data/question/ExamQuestion.scala: -------------------------------------------------------------------------------- 1 | package data.question 2 | 3 | import edu.arizona.sista.struct.Counter 4 | 5 | /** 6 | * Storage class for a multiple choice science exam question 7 | * User: peter 8 | * Date: 1/13/14 9 | */ 10 | class ExamQuestion(val qID:String, 11 | val originalID:String, 12 | val totalPoints:Int, 13 | val correctAnswer:Int, 14 | val isMultipleChoice:Boolean, 15 | val hasDiagram:Boolean, 16 | val examName:String, 17 | val schoolGrade:String, 18 | val year:String, 19 | val questionType:String, 20 | val topics:String, 21 | val explanation:String, 22 | val text:String, 23 | val choices:Array[String], 24 | val flags:Counter[String] = new Counter[String], 25 | val explanationAnnotators:String = "", 26 | val questionSimplified:String = "", 27 | val questionSimplifiedConc:String = "", 28 | val questionFocusPrimary:Array[String] = Array.empty[String], 29 | val questionFocusSecondary:Array[String] = Array.empty[String], 30 | val answerFocus:Array[Array[String]] = Array.empty[Array[String]] ) { 31 | 32 | 33 | // Legacy (for old exam question parser) 34 | def toMCQuestion:MCQuestionRaw = { 35 | new MCQuestionRaw(text, questionType, explanation, schoolGrade, topics, qID, correctAnswer, choices) 36 | } 37 | 38 | /* 39 | * Supporting functions 40 | */ 41 | 42 | override def toString:String = { 43 | val os = new StringBuilder 44 | 45 | os.append ("qID:" + qID) 46 | os.append (" \tOriginalID:" + originalID) 47 | os.append (" \texam:" + examName) 48 | os.append (" \tyear:" + year) 49 | os.append (" \tgrade:" + schoolGrade) 50 | os.append (" \tisMC:" + isMultipleChoice) 51 | os.append (" \thasDiagram:" + hasDiagram) 52 | os.append (" \tqType:" + questionType) 53 | os.append (" \tTopic(s):" + topics) 54 | os.append ("\r\n") 55 | os.append ("Question: " + text + "\r\n") 56 | if (isMultipleChoice) { 57 | for (i <- 0 until choices.size) { 58 | os.append ("mcAnswer[" + i + "]: " + choices(i) + "\t") 59 | } 60 | for (i <- 0 until choices.size) { 61 | os.append ("mcAnswer[" + i + "] Focus: " + answerFocus(i).mkString(", ") + "\t") 62 | } 63 | os.append ("\r\n") 64 | } 65 | os.append ("Correct Answer: " + correctAnswer + "\r\n") 66 | os.append (" \r\n") 67 | os.append (" \tExplanation:" + explanation + "\r\n") 68 | os.append (" \tExplanation Annotators: " + explanationAnnotators + "\r\n") 69 | os.append (" \tFlags: " + flags + "\r\n") 70 | os.append ("Question Focus Words (Primary): " + questionFocusPrimary.mkString(", ") + "\r\n") 71 | os.append ("Question Focus Words (Secondary): " + questionFocusSecondary.mkString(", ") + "\r\n") 72 | os.append ("Question (simplified): " + questionSimplified + "\r\n") 73 | os.append ("Question (simplified, conceptual): " + questionSimplifiedConc) 74 | 75 | 76 | os.toString 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/scala/data/question/MCExplQuestion.scala: -------------------------------------------------------------------------------- 1 | package data.question 2 | 3 | import scala.collection.mutable.ArrayBuffer 4 | 5 | /** 6 | * Storage class for an MCQuestion and a tablestore explanation 7 | * Created by peter on 7/9/17. 8 | */ 9 | class MCExplQuestion(val question:MCQuestion) { 10 | val expl = new ArrayBuffer[ExplanationRow] 11 | 12 | /* 13 | * Constructor 14 | */ 15 | parseExplanationString( question.explanation ) 16 | 17 | 18 | /* 19 | * Explanation String Parsing 20 | */ 21 | def parseExplanationString(in:String): Unit = { 22 | if (in.length < 1) return 23 | 24 | var uidTuples = in.trim().toUpperCase.split(" ") 25 | for (uidTuple <- uidTuples) { 26 | val fields = uidTuple.split("\\|") 27 | val uid = fields(0).toLowerCase 28 | val role = fields(1) 29 | 30 | expl.append( new ExplanationRow(uid, role) ) 31 | } 32 | } 33 | 34 | 35 | /* 36 | * String methods 37 | */ 38 | override def toString():String = { 39 | val os = new StringBuilder 40 | os.append( question.toString() + "\n" ) 41 | 42 | os.append("Explanation (Table Rows):\n") 43 | for (i <- 0 until expl.size) { 44 | os.append("\t" + expl(i).uid + " \t" + expl(i).role + "\n") 45 | } 46 | 47 | os.toString() 48 | } 49 | 50 | } 51 | 52 | 53 | // Storage class 54 | class ExplanationRow(val uid:String, val role:String) { 55 | 56 | // Determine equality (based on UID, and not role) 57 | override def equals(that:Any):Boolean = { 58 | that match { 59 | case that:ExplanationRow => if (this.uid == that.uid) true else false 60 | case _ => false 61 | } 62 | } 63 | 64 | 65 | } -------------------------------------------------------------------------------- /src/main/scala/data/question/MCQuestionRaw.scala: -------------------------------------------------------------------------------- 1 | package data.question 2 | 3 | import edu.arizona.sista.processors.Document 4 | import edu.arizona.sista.struct.Counter 5 | 6 | 7 | /** 8 | * Storage classes for a generic multiple choice question 9 | * User: peter 10 | * Date: 1/13/14 11 | */ 12 | 13 | // Storage class for one multiple choice question (not including annotation) 14 | class MCQuestionRaw(val text:String, 15 | val qType:String, 16 | val justification:String, 17 | val grade:String, 18 | val topics:String, 19 | val questionID:String, 20 | val correctAnswer:Int, 21 | val choices:Array[String]) { 22 | 23 | 24 | override def toString:String = { 25 | val os = new StringBuilder 26 | 27 | os.append ("Question: " + text + "\r\n") 28 | for (i <- 0 until choices.size) { 29 | os.append ("mcAnswer[" + i + "]: " + choices(i) + "\t") 30 | } 31 | os.append ("\r\n") 32 | os.append ("Correct Answer: " + correctAnswer + "\r\n") 33 | os.append ("Quesiton Type: " + qType + "\r\n") 34 | os.append ("Justification: " + justification + "\r\n") 35 | os.append ("Grade Level: " + grade + "\r\n") 36 | os.append ("Topics: " + topics + "\r\n") 37 | os.append ("Question ID: " + questionID + "\r\n") 38 | 39 | os.toString 40 | } 41 | 42 | } 43 | 44 | // Storage class for one multiple choice question including annotation and answers 45 | class MCQuestion(val text:String, 46 | val annotation:Document, 47 | val qType:String, 48 | val explanation:String, 49 | val explanationAnnotation:Document, 50 | val grade:String, 51 | val topic:Array[String], 52 | val questionID:String, 53 | val correctAnswer:Int, 54 | val choices:Array[MCAnswer], 55 | val flags:Counter[String] = new Counter[String], 56 | val explanationAnnotators:String = "", 57 | val hasFocusWords:Boolean = false, 58 | var focusQuestionPrimary:Array[String] = Array.empty[String], 59 | var focusQuestionSecondary:Array[String] = Array.empty[String], 60 | val textSimplified:Option[String] = None, 61 | val textSimplifiedConc:Option[String] = None) { 62 | 63 | 64 | 65 | /* 66 | * Test for equality (looking only at question text content, and correct answer index, not other metadata) 67 | */ 68 | override def equals(that:Any):Boolean = { 69 | that match { 70 | case that:MCQuestion => { 71 | compareTextOnly( that.asInstanceOf[MCQuestion] ) 72 | } 73 | case _ => false 74 | } 75 | } 76 | 77 | // Compares two questions for equality looking only at their content text and correct answer, not other metadata 78 | def compareTextOnly(that:MCQuestion):Boolean = { 79 | if (this.correctAnswer != that.correctAnswer) return false 80 | if (this.text != that.text) return false 81 | 82 | if (this.choices.size != that.choices.size) return false 83 | for (i <- 0 until this.choices.size) { 84 | if (this.choices(i).text != that.choices(i).text) return false 85 | } 86 | 87 | // Return 88 | true 89 | } 90 | 91 | 92 | /* 93 | * Supporting Functions 94 | */ 95 | 96 | override def toString:String = { 97 | val os = new StringBuilder 98 | 99 | os.append ("Question: " + text + "\r\n") 100 | for (i <- 0 until choices.size) { 101 | os.append ("mcAnswer[" + i + "]: " + choices(i).text + "\t") 102 | } 103 | os.append ("\r\n") 104 | os.append ("Correct Answer: " + correctAnswer + "\r\n") 105 | os.append ("Question type: " + qType + " ") 106 | os.append ("Grade: " + grade + " ") 107 | os.append ("Topics: " + topic.mkString(",") + " ") 108 | os.append ("Question ID: " + questionID) 109 | os.append ("\r\n") 110 | os.append ("Gold Explanation: " + explanation + "\r\n") 111 | os.append ("Explanation Annotators: " + explanationAnnotators + "\r\n") 112 | os.append ("Flags: " + flags.toShortString + "\r\n") 113 | 114 | os.append ("\n") 115 | if (hasFocusWords == true) { 116 | os.append ("Focus Words (Question, Primary): " + focusQuestionPrimary.mkString(", ")) 117 | os.append ("\r\n") 118 | os.append ("Focus Words (Question, Secondary): " + focusQuestionSecondary.mkString(", ")) 119 | os.append ("\r\n") 120 | for (i <- 0 until choices.size) { 121 | os.append("Focus (A" + i + "): " + choices(i).focusAnswer.mkString(",") + " \t") 122 | } 123 | os.append ("\r\n") 124 | } else { 125 | os.append ("hasFocusWords: false") 126 | } 127 | 128 | if ((!textSimplified.isEmpty) || (!textSimplifiedConc.isEmpty)) { 129 | os.append ("Question Text (Simplified): " + textSimplified.getOrElse("Empty")) 130 | os.append ("\r\n") 131 | os.append ("Question Text (Simplified, Conceptual): " + textSimplifiedConc.getOrElse("Empty")) 132 | os.append ("\r\n") 133 | } else { 134 | os.append ("Question Text (Simplified): Not present") 135 | os.append ("\r\n") 136 | } 137 | 138 | 139 | os.toString 140 | } 141 | 142 | def toStringMinimal:String = { 143 | val os = new StringBuilder 144 | 145 | os.append ("Question: " + text + "\t") 146 | for (i <- 0 until choices.size) { 147 | os.append ("[" + i + "]: " + choices(i).text + "\t") 148 | } 149 | 150 | os.toString 151 | } 152 | 153 | 154 | } 155 | 156 | // Storage class for one multiple choice answer including annotation 157 | class MCAnswer(val text:String, 158 | val annotation:Document, 159 | val focusAnswer:Array[String] = Array.empty[String]) { 160 | 161 | override def toString:String = text 162 | 163 | } -------------------------------------------------------------------------------- /src/main/scala/examples/LoadQuestionsTablestore.scala: -------------------------------------------------------------------------------- 1 | package examples 2 | 3 | import data.question.ExamQuestionParserDynamic 4 | import edu.arizona.sista.utils.StringUtils 5 | import explanationexperiments.CharacterizeConnectivity.convertToExplQuestions 6 | import explanationexperiments.MostCommonTableRows.{filterQuestionsByFlags, printUsage} 7 | import explanationexperiments.SummaryStatistics.PROGRAM_TITLE 8 | import explanationgraph.TableStore 9 | 10 | /** 11 | * Example: Illustrates basic use of loading questions using the question parser, and loading the tablestore. 12 | * Created by peter on 2/6/18. 13 | */ 14 | 15 | object LoadQuestionsTablestore { 16 | val VERSION = "1.0" 17 | val PROGRAM_TITLE = "WorldTree: LoadQuestionsTablestore Example Code version " + VERSION 18 | 19 | 20 | /* 21 | * Prints the command line usage information to the console 22 | */ 23 | def printUsage() { 24 | println (PROGRAM_TITLE) 25 | println ("") 26 | println ("Usage: ... -props myprops.properties") 27 | println ("") 28 | } 29 | 30 | /* 31 | * Main entry point 32 | */ 33 | def main(args: Array[String]) { 34 | 35 | // Step 1: Check that arguments were specified 36 | // e.g. " -props myprops.properties" 37 | if ((args.length == 0)) { 38 | printUsage() 39 | System.exit(1) 40 | } 41 | val props = StringUtils.argsToProperties(args) 42 | 43 | 44 | // Step 2: Load Tablestore 45 | // Tablestore index filename 46 | var tablestoreIndex:String = "" 47 | if (props.getProperty("tablestoreIndex", "") != "") { 48 | tablestoreIndex = props.getProperty("tablestoreIndex", "") 49 | } else { 50 | throw new RuntimeException("ERROR: Unable to find 'tablestoreIndex' property in properties file.") 51 | } 52 | 53 | // Load tablestore 54 | val tablestore = new TableStore(tablestoreIndex) 55 | println ( tablestore.tables( tablestore.UIDtoTableLUT("a5c9-d7a4-8421-bb2e") ).name ) 56 | println ( tablestore.getRowByUID("a5c9-d7a4-8421-bb2e") ) 57 | 58 | 59 | // Step 3: Load questions 60 | // Find question filename 61 | var filenameQuestions:String = "" 62 | if (props.getProperty("questions", "") != "") { 63 | filenameQuestions = props.getProperty("questions", "") 64 | } else { 65 | throw new RuntimeException("ERROR: Unable to find 'questions' property in properties file.") 66 | } 67 | 68 | // Load questions 69 | var questions = ExamQuestionParserDynamic.loadQuestionsFromCSVList( filenameQuestions, fullAnnotation = false, noAnnotation = true, tsvMode = true) 70 | var explQuestions = convertToExplQuestions(questions) // Convert from MCQuestion to MCExplQuestion 71 | 72 | // Step 3A: Filter questions to only those that have been tagged as successfully annotated 73 | val filteredQuestions = filterQuestionsByFlags(explQuestions, Array("SUCCESS", "READY") ) 74 | println ("Loaded " + filteredQuestions.size + " questions after filtering. ") 75 | 76 | 77 | /* 78 | * Example 1: Using the MCQuestion and MCExplQuestion storage classes 79 | */ 80 | 81 | for (i <- 0 until 10) { 82 | println ("\n\n\nFiltered Question " + i + ":") 83 | val explQuestion = filteredQuestions(i) // question is of type MCExplQuestion 84 | 85 | // Print a human-readable formatted summary of the data in the MCExplQuestion storage class 86 | println(explQuestion.toString()) 87 | 88 | 89 | // Step 1: Break explQuestion apart to MCQuestion and explanation 90 | val question = explQuestion.question 91 | val expl = explQuestion.expl 92 | 93 | 94 | // Step 2: Print out some different members of the MCQuestion storage class 95 | 96 | // Print a human-readable formatted summary of the data in the MCQuestion storage class 97 | println (question.toString) 98 | 99 | // Print out several of the members (see MCQuestion for more details) 100 | println ("Member access examples: ") 101 | println ("Question Text: " + question.text) 102 | println ("Answer Choices: ") 103 | // For each answer choice 104 | for (answerIdx <- 0 until question.choices.size) { 105 | val choice = question.choices(answerIdx) 106 | println (answerIdx + ": " + choice.text) 107 | } 108 | println ("Correct Answer: " + question.correctAnswer) 109 | 110 | 111 | /* 112 | * Example 2: Looking up rows in the Tablestore 113 | */ 114 | 115 | 116 | // Step 3: The explanations are stored as a list of universally unique IDs (UUIDs) that reference one or more table rows. 117 | // In order to recover the text of the explanation, we need to look up these UUIDs in the tablestore. 118 | // Here is an example of this taking place. 119 | 120 | // For each explanation sentence in the explanation 121 | println ("Accessing tablestore row examples (retrieving explanation text): ") 122 | for (explSentIdx <- 0 until expl.size) { 123 | val explSent = expl(explSentIdx) 124 | 125 | val explSentUUID = explSent.uid // explanation sentence UUID 126 | val explSentRole = explSent.role // role of this explanation sentence (e.g. CENTRAL, GROUNDING, BACKGROUND, LEXICAL GLUE) 127 | 128 | // Look up table row in the tablestore by UUID. This returns a TableRow storage class. 129 | // TableRow contains the individual cells, but also has some convenient members if we just want to retrieve the table name or row text as strings. 130 | val tablerow = tablestore.getRowByUID(explSentUUID) 131 | 132 | // Example: retrieve table name from table row 133 | val tableName = tablerow.tableName 134 | 135 | // Example: retrieve table row text from table row 136 | val tablerowText = tablerow.toStringDelim(" ") 137 | 138 | // Print out to console 139 | println (explSentIdx + "\t" + explSentUUID + "\t" + explSentRole + "\t" + tableName + "\t" + tablerowText) 140 | } 141 | 142 | } 143 | 144 | } 145 | 146 | 147 | } 148 | -------------------------------------------------------------------------------- /src/main/scala/explanationexperiments/GenerateQuestionClusterGraph.scala: -------------------------------------------------------------------------------- 1 | package explanationexperiments 2 | 3 | import java.io.PrintWriter 4 | 5 | import data.question.{ExamQuestionParserDynamic, MCExplQuestion, MCQuestion} 6 | import edu.arizona.sista.utils.StringUtils 7 | import explanationexperiments.CharacterizeConnectivity._ 8 | 9 | import scala.collection.mutable.ArrayBuffer 10 | import scala.util.control.Breaks.{break, breakable} 11 | 12 | /** 13 | * Exports the question connectivity graph into a DOT/Graphviz format, for external rendering. 14 | * Gephi (http://www.gephi.org) is particularly useful for visualizing these large graphs, and a slightly modified 15 | * version of Gephi was used to create the Worldtree corpus visualzation included in the paper (Figure 4) and release. 16 | * Created by peter on 7/11/17. 17 | */ 18 | 19 | object GenerateQuestionClusterGraph { 20 | val VERSION = "1.0" 21 | val PROGRAM_TITLE = "WorldTree: GenerateQuestionClusterGraph version " + VERSION 22 | 23 | /* 24 | * Determine connectivity (monte-carlo simulation) 25 | */ 26 | def generateExplConnectivityGraph(filenameOutPrefix:String, in:Array[MCExplQuestion], minConnectivity:Int=1, allRoles:Boolean = true) { 27 | val osNodes = new StringBuilder() 28 | val osLinks = new StringBuilder() 29 | 30 | println (" * generateExplConnectivityGraph: started...") 31 | 32 | // Step 1: Determine links 33 | val nodeUsed = Array.fill[Boolean](in.size)(false) 34 | val existingLinks = Array.ofDim[Boolean](in.size,in.size) 35 | 36 | // Initialize array of links 37 | for (i <- 0 until in.size) { 38 | for (j <- 0 until in.size) { 39 | existingLinks(i)(j) = false 40 | } 41 | } 42 | 43 | 44 | for (i <- 0 until in.size) { 45 | val (linkStr, nodesUsed) = determineExplOverlapQuestion(i, in, existingLinks, minConnectivity, allRoles) 46 | 47 | // Add link text 48 | osLinks.append(linkStr) 49 | 50 | // Note which nodes have been used 51 | for (nodeIdx <- nodesUsed) { 52 | nodeUsed(nodeIdx) = true 53 | } 54 | } 55 | 56 | // Step 2: Generate nodes 57 | for (i <- 0 until nodeUsed.size) { 58 | if (nodeUsed(i)) { 59 | // Export node for this question 60 | val question = in(i).question 61 | val questionText = wordWrapStrDOT( question.text, maxLengthLine = 25 ).replaceAll("\"", "'") 62 | osNodes.append("\tnode" + i + " [label=\"" + questionText + "\"]\n") 63 | } 64 | } 65 | 66 | // Display summary statistics 67 | println (" * generateExplConnectivityGraph: number of links: " + osLinks.count(_ == '\n')) 68 | println (" * generateExplConnectivityGraph: number of nodes: " + osNodes.count(_ == '\n')) 69 | 70 | // Step 3: Export 71 | val filenameOut = filenameOutPrefix + "_q" + in.size + "_minC" + minConnectivity + "_allRoles" + allRoles + ".dot" 72 | println (" * generateExplConnectivityGraph: exporting DOT graph (filename = " + filenameOut + ")") 73 | val pw = new PrintWriter(filenameOut) 74 | 75 | pw.println("graph G {") 76 | pw.println("\toverlap=false;") 77 | pw.println("\tsep=\"+25,25\";") 78 | pw.print( osLinks ) 79 | pw.print( osNodes ) 80 | pw.println("}") 81 | 82 | pw.close() 83 | 84 | println (" * generateExplConnectivityGraph: complete...") 85 | 86 | } 87 | 88 | 89 | /* 90 | * Determine explanation overlap 91 | */ 92 | 93 | def determineExplOverlapQuestion(qIdx:Int, in:Array[MCExplQuestion], existingLinks:Array[Array[Boolean]], minConnectivity:Int = 1, allRoles:Boolean = true):(String, Array[Int]) = { 94 | val os = new StringBuilder 95 | val nodesUsed = new ArrayBuffer[Int] 96 | 97 | // Step 1: Retrieve query explanation 98 | val explQuery = in(qIdx).expl 99 | 100 | for (i <- 0 until in.size) { 101 | var numOverlap:Int = 0 102 | var numOverlapConceptual:Int = 0 103 | 104 | if (i != qIdx) { 105 | // Determine how many rows each explanation share in common 106 | val explCompare = in(i).expl 107 | for (j <- 0 until explQuery.size) { 108 | breakable { 109 | for (k <- 0 until explCompare.size) { 110 | if (explQuery(j) == explCompare(k)) { 111 | numOverlap += 1 112 | if ((explQuery(j).role == "CENTRAL") || (explCompare(k).role == "CENTRAL")) { 113 | numOverlapConceptual += 1 114 | } 115 | break() 116 | } 117 | } 118 | } 119 | } 120 | 121 | if ((numOverlap >= minConnectivity) && (existingLinks(qIdx)(i) == false)) { 122 | if ((allRoles == true) || (numOverlapConceptual > 0)) { 123 | os.append("\tnode" + qIdx + " -- node" + i + " [label=\"" + numOverlap + "\",weight=" + numOverlap + "]\n") 124 | if (nodesUsed.size == 0) nodesUsed.append(qIdx) 125 | // Note node usage 126 | nodesUsed.append(i) 127 | // Note link 128 | existingLinks(qIdx)(i) = true 129 | existingLinks(i)(qIdx) = true 130 | } 131 | } 132 | } 133 | } 134 | 135 | // Return 136 | (os.toString, nodesUsed.toArray) 137 | } 138 | 139 | 140 | 141 | 142 | /* 143 | * Supporting functions 144 | */ 145 | 146 | def convertToExplQuestions(in:Array[MCQuestion]):Array[MCExplQuestion] = { 147 | val out = new ArrayBuffer[MCExplQuestion] 148 | for (i <- 0 until in.size) { 149 | out.append( new MCExplQuestion(in(i)) ) 150 | } 151 | // Return 152 | out.toArray 153 | } 154 | 155 | // Take a set of questions, and return only the questions that have a non-zero value on one or more flags. 156 | def filterQuestionsByFlags(in:Array[MCExplQuestion], flags:Array[String]):Array[MCExplQuestion] = { 157 | val out = new ArrayBuffer[MCExplQuestion] 158 | 159 | for (i <- 0 until in.size) { 160 | breakable { 161 | for (flag <- flags) { 162 | if (in(i).question.flags.getCount(flag) > 0) { 163 | out.append(in(i)) 164 | } 165 | } 166 | } 167 | } 168 | 169 | // Return 170 | out.toArray 171 | } 172 | 173 | // Randomly retrieve a subsample of questions 174 | def subsampleQuestions(in:Array[MCExplQuestion], numQuestions:Int):Array[MCExplQuestion] = { 175 | val in1 = new ArrayBuffer[MCExplQuestion] 176 | in1.insertAll(0, in) 177 | val shuffled = scala.util.Random.shuffle( in1 ) 178 | // Return 179 | shuffled.slice(0, numQuestions).toArray 180 | } 181 | 182 | 183 | // Breaks a string into a number of lines, each of approximately maxLength (allowing for long words to exceed this limit) 184 | def wordWrapStrDOT(in:String, maxLengthLine:Int = 25, maxTotalLength:Int = 150):String = { 185 | val os = new StringBuilder 186 | val words = in.split(" ") 187 | var lenCount:Int = 0 188 | 189 | breakable { 190 | for (i <- 0 until words.size) { 191 | if (os.length >= maxTotalLength) { 192 | os.append("...") 193 | break() 194 | } 195 | 196 | if (lenCount + words(i).length <= maxLengthLine) { 197 | os.append(words(i) + " ") 198 | lenCount += words(i).length 199 | } else if (lenCount == 0) { 200 | // One really long word -- add to it's own line 201 | os.append(words(i) + "
") 202 | lenCount == 0 203 | } else { 204 | //os.append(" \\n") // The extra space at the front is so the text renders okay in Gephi 205 | os.append("
" + words(i) + " ") // The extra space at the front is so the text renders okay in Gephi 206 | lenCount = words(i).length 207 | } 208 | } 209 | } 210 | 211 | // Return 212 | os.toString() 213 | } 214 | 215 | 216 | 217 | /* 218 | * Prints the command line usage information to the console 219 | */ 220 | def printUsage() { 221 | println (PROGRAM_TITLE) 222 | println ("") 223 | println ("Usage: ... -props myprops.properties") 224 | println ("") 225 | } 226 | 227 | 228 | /* 229 | * Main entry point 230 | */ 231 | def main(args:Array[String]) { 232 | // Step 1: Check that arguments were specified 233 | // e.g. " -props myprops.properties" 234 | if ((args.length == 0)) { 235 | printUsage() 236 | System.exit(1) 237 | } 238 | val props = StringUtils.argsToProperties(args) 239 | 240 | 241 | // Step 2: Load questions 242 | // Find question filename 243 | var filenameQuestions:String = "" 244 | if (props.getProperty("questions", "") != "") { 245 | filenameQuestions = props.getProperty("questions", "") 246 | } else { 247 | throw new RuntimeException("ERROR: Unable to find 'questions' property in properties file.") 248 | } 249 | 250 | // Load questions from file 251 | var questions = ExamQuestionParserDynamic.loadQuestionsFromCSVList( filenameQuestions, fullAnnotation = false, noAnnotation = true, tsvMode = true) 252 | var explQuestions = convertToExplQuestions(questions) 253 | 254 | 255 | println ("Displaying first 10 questions (debug): ") 256 | for (i <- 0 until 10) { 257 | println (explQuestions(i).toString) 258 | println ("") 259 | } 260 | 261 | // Step 2A: Filter questions to only those that have been tagged as successfully annotated 262 | val filteredQuestions = filterQuestionsByFlags(explQuestions, Array("SUCCESS", "READY") ) 263 | println ("Number of questions after filtering: " + filteredQuestions.size) 264 | println ("") 265 | 266 | // Step 3: Generate and export graph 267 | 268 | // Step 3A: Read in generation properties 269 | val filenameOut = props.getProperty("gqcg.filenameOut", "") 270 | if (filenameOut == "") { 271 | throw new RuntimeException("ERROR: Unable to find 'gqcg.filenameOut' property in properties file.") 272 | } 273 | 274 | // Minimum number of overlaping explanation sentences to draw an edge 275 | val minConnectivity = StringUtils.getInt(props, "gqcg.minConnectivity", 1) 276 | 277 | // Allow connections on all roles (true = central, grounding, background, lexical glue), or just central (false) 278 | val allRoles = StringUtils.getBool(props, "gqcg.allRoles", default = false) 279 | 280 | // Step 3B: Generate and export graph 281 | generateExplConnectivityGraph(filenameOut, filteredQuestions, minConnectivity = minConnectivity, allRoles = allRoles) 282 | 283 | } 284 | 285 | 286 | 287 | } -------------------------------------------------------------------------------- /src/main/scala/explanationexperiments/MostCommonTableRows.scala: -------------------------------------------------------------------------------- 1 | package explanationexperiments 2 | 3 | import data.question.{ExamQuestionParserDynamic, MCExplQuestion} 4 | import edu.arizona.sista.struct.Counter 5 | import edu.arizona.sista.utils.StringUtils 6 | import explanationexperiments.CharacterizeConnectivity.{convertToExplQuestions, filterQuestionsByFlags} 7 | import explanationexperiments.SummaryKnowledgeGrowth.{PROGRAM_TITLE, calculateTableUseSummary} 8 | import explanationgraph.TableStore 9 | 10 | import scala.collection.mutable.ArrayBuffer 11 | import scala.util.control.Breaks.breakable 12 | 13 | /** 14 | * The table usage summary generated first provides the data for Table 3 (the proportion of explanations that contain knowledge from a given table) in LREC 2018. 15 | * The table row frequency data is not discussed at length in the paper, but shows the most freuquent (and least frequent) rows, and essentially illustrates Zipf's law for table rows. 16 | * Created by peter on 7/23/17. 17 | */ 18 | 19 | object MostCommonTableRows { 20 | val VERSION = "1.0" 21 | val PROGRAM_TITLE = "WorldTree: MostCommonTableRows version " + VERSION 22 | 23 | /* 24 | * Frequency counting 25 | */ 26 | def findMostFrequentRows(in:Array[MCExplQuestion]):Array[(String, Double)] = { 27 | val countUID = new Counter[String] 28 | 29 | println (" * findMostFrequentRows: started...") 30 | 31 | // For each question 32 | for (i <- 0 until in.size) { 33 | val explQuestion = in(i) 34 | val explRows = explQuestion.expl 35 | 36 | // For each row/sentence in an given question's explanation graph 37 | for (j <- 0 until explRows.size) { 38 | val explRow = explRows(j) 39 | val uid = explRow.uid 40 | val role = explRow.role 41 | 42 | countUID.incrementCount(uid) 43 | } 44 | } 45 | 46 | val sorted = countUID.sorted 47 | println (" * findMostFrequentRows: complete... (counted " + sorted.size + " unique rows)") 48 | // Return 49 | sorted.toArray 50 | } 51 | 52 | 53 | def displayMostFrequentRows(freq:Array[(String, Double)], tablestore:TableStore, numDisplay:Int = 25): Unit = { 54 | println(" * displayMostFrequentRows: ") 55 | var numDisplay1: Int = numDisplay 56 | if (numDisplay1 == 0) numDisplay1 = freq.size 57 | 58 | var average: Double = 0 59 | 60 | // Header 61 | println ("Rank\tFrequency\tUUID\tRowText") 62 | 63 | // Data 64 | for (i <- 0 until numDisplay1) { 65 | val uid = freq(i)._1 66 | val count = freq(i)._2 67 | //val text = tablestore.getRowByUID(uid).toStringDelim(" ") 68 | val text = tablestore.getRowByUID(uid).toStringText 69 | println(i + "\t" + count + "\t" + uid + "\t" + text) 70 | 71 | average += count 72 | } 73 | average = average / numDisplay1 74 | 75 | if (numDisplay1 == freq.size) { 76 | println("") 77 | println("On average, a given table row is used in " + average + " different explanations.") 78 | } 79 | } 80 | 81 | 82 | /* 83 | * Helper function 84 | */ 85 | // Take a set of questions, and return only the questions that have a non-zero value on one or more flags. 86 | def filterQuestionsByFlags(in:Array[MCExplQuestion], flags:Array[String]):Array[MCExplQuestion] = { 87 | val out = new ArrayBuffer[MCExplQuestion] 88 | 89 | for (i <- 0 until in.size) { 90 | breakable { 91 | for (flag <- flags) { 92 | if (in(i).question.flags.getCount(flag) > 0) { 93 | out.append(in(i)) 94 | } 95 | } 96 | } 97 | } 98 | 99 | // Return 100 | out.toArray 101 | } 102 | 103 | 104 | 105 | /* 106 | * Prints the command line usage information to the console 107 | */ 108 | def printUsage() { 109 | println (PROGRAM_TITLE) 110 | println ("") 111 | println ("Usage: ... -props myprops.properties") 112 | println ("") 113 | } 114 | 115 | 116 | /* 117 | * Main entry point 118 | */ 119 | def main(args:Array[String]) { 120 | // Step 1: Check that arguments were specified 121 | // e.g. " -props myprops.properties" 122 | if ((args.length == 0)) { 123 | printUsage() 124 | System.exit(1) 125 | } 126 | val props = StringUtils.argsToProperties(args) 127 | 128 | 129 | // Step 2: Load Tablestore 130 | // Tablestore index filename 131 | var tablestoreIndex:String = "" 132 | if (props.getProperty("tablestoreIndex", "") != "") { 133 | tablestoreIndex = props.getProperty("tablestoreIndex", "") 134 | } else { 135 | throw new RuntimeException("ERROR: Unable to find 'tablestoreIndex' property in properties file.") 136 | } 137 | 138 | // Load tablestore 139 | val tablestore = new TableStore(tablestoreIndex) 140 | println ( tablestore.tables( tablestore.UIDtoTableLUT("a5c9-d7a4-8421-bb2e") ).name ) 141 | println ( tablestore.getRowByUID("a5c9-d7a4-8421-bb2e") ) 142 | 143 | 144 | // Step 3: Load questions 145 | // Find question filename 146 | var filenameQuestions:String = "" 147 | if (props.getProperty("questions", "") != "") { 148 | filenameQuestions = props.getProperty("questions", "") 149 | } else { 150 | throw new RuntimeException("ERROR: Unable to find 'questions' property in properties file.") 151 | } 152 | 153 | // Load questions 154 | var questions = ExamQuestionParserDynamic.loadQuestionsFromCSVList( filenameQuestions, fullAnnotation = false, noAnnotation = true, tsvMode = true) 155 | var explQuestions = convertToExplQuestions(questions) 156 | 157 | 158 | println ("Displaying first 10 questions (debug): ") 159 | for (i <- 0 until 10) { 160 | println (explQuestions(i).toString) 161 | println ("") 162 | } 163 | 164 | // Step 3A: Filter questions to only those that have been tagged as successfully annotated 165 | val filteredQuestions = filterQuestionsByFlags(explQuestions, Array("SUCCESS", "READY") ) 166 | println ("Loaded " + filteredQuestions.size + " questions after filtering. ") 167 | 168 | 169 | // Step 4: Compute The proportion of explanations that contain knowledge from a given table (Table 3 in LREC 2018 paper) 170 | calculateTableUseSummary(filteredQuestions, tablestore) 171 | 172 | println ("\n\n") 173 | 174 | // Step 5: Compute frequency statistics for table rows 175 | val freqRows = findMostFrequentRows(filteredQuestions) 176 | displayMostFrequentRows(freqRows, tablestore, numDisplay = 0) 177 | } 178 | 179 | } 180 | -------------------------------------------------------------------------------- /src/main/scala/explanationexperiments/SummaryStatistics.scala: -------------------------------------------------------------------------------- 1 | package explanationexperiments 2 | 3 | import data.question.{ExamQuestionParserDynamic, MCExplQuestion} 4 | import edu.arizona.sista.utils.StringUtils 5 | import explanationexperiments.CharacterizeConnectivity.{PROGRAM_TITLE, _} 6 | 7 | /** 8 | * Basic summary statistics (number of questions, average explanation length, average rows with a given role per explanation). 9 | * Created by peter on 8/2/17. 10 | */ 11 | 12 | 13 | object SummaryStatistics { 14 | val VERSION = "1.0" 15 | val PROGRAM_TITLE = "WorldTree: SummaryStatistics version " + VERSION 16 | 17 | 18 | def calculateSummaryStatistics(in:Array[MCExplQuestion]): Unit = { 19 | var numWithExpl:Double = 0.0 20 | var numNoExpl:Double = 0.0 21 | 22 | var explLength:Double = 0.0 23 | 24 | var numSentCentral:Double = 0.0 25 | var numSentGrounding:Double = 0.0 26 | var numSentBackground:Double = 0.0 27 | var numSentLexicalGlue:Double = 0.0 28 | 29 | 30 | // For each question 31 | for (i <- 0 until in.size) { 32 | val explQuestion = in(i) 33 | val question = explQuestion.question 34 | val expl = in(i).expl 35 | 36 | // Check if it has an explanation populated 37 | if (expl.size > 0) { 38 | // Explanations and Explanation Length 39 | numWithExpl += 1 40 | explLength += expl.size 41 | 42 | // Explanation roles 43 | for (j <- 0 until expl.size) { 44 | val explSent = expl(j) 45 | if (explSent.role == "CENTRAL") numSentCentral += 1 46 | if (explSent.role == "GROUNDING") numSentGrounding += 1 47 | if (explSent.role == "BACKGROUND") numSentBackground += 1 48 | if (explSent.role == "LEXGLUE") numSentLexicalGlue += 1 49 | } 50 | 51 | } else { 52 | // No explanation populated 53 | numNoExpl += 1 54 | } 55 | } 56 | 57 | 58 | // Calculate lengths as average length/number per explanation 59 | explLength = explLength / numWithExpl 60 | numSentCentral = numSentCentral / numWithExpl 61 | numSentGrounding = numSentGrounding / numWithExpl 62 | numSentBackground = numSentBackground / numWithExpl 63 | numSentLexicalGlue = numSentLexicalGlue / numWithExpl 64 | 65 | 66 | // Display 67 | println ("Summary Statistics: ") 68 | println ("") 69 | println ("Number of questions with explanations: " + numWithExpl) 70 | println ("\twithout explanations: " + numNoExpl) 71 | println ("") 72 | println ("Average explanation length: " + explLength) 73 | println ("") 74 | println ("Average CENTRAL sentences per explanation: " + numSentCentral) 75 | println ("Average GROUNDING sentences per explanation: " + numSentGrounding) 76 | println ("Average BACKGROUND sentences per explanation: " + numSentBackground) 77 | println ("Average LEXGLUE sentences per explanation: " + numSentLexicalGlue) 78 | 79 | } 80 | 81 | 82 | 83 | /* 84 | * Prints the command line usage information to the console 85 | */ 86 | def printUsage() { 87 | println (PROGRAM_TITLE) 88 | println ("") 89 | println ("Usage: ... -props myprops.properties") 90 | println ("") 91 | } 92 | 93 | 94 | /* 95 | * Main entry point 96 | */ 97 | def main(args:Array[String]) { 98 | // Step 1: Check that arguments were specified 99 | // e.g. " -props myprops.properties" 100 | if ((args.length == 0)) { 101 | printUsage() 102 | System.exit(1) 103 | } 104 | val props = StringUtils.argsToProperties(args) 105 | 106 | 107 | // Step 2: Load questions 108 | // Find question filename 109 | var filenameQuestions:String = "" 110 | if (props.getProperty("questions", "") != "") { 111 | filenameQuestions = props.getProperty("questions", "") 112 | } else { 113 | throw new RuntimeException("ERROR: Unable to find 'questions' property in properties file.") 114 | } 115 | 116 | // Load questions from file 117 | var questions = ExamQuestionParserDynamic.loadQuestionsFromCSVList( filenameQuestions, fullAnnotation = false, noAnnotation = true, tsvMode = true) 118 | var explQuestions = convertToExplQuestions(questions) 119 | 120 | 121 | println ("Displaying first 10 questions (debug): ") 122 | for (i <- 0 until 10) { 123 | println (explQuestions(i).toString) 124 | println ("") 125 | } 126 | 127 | // Step 2A: Filter questions to only those that have been tagged as successfully annotated 128 | val filteredQuestions = filterQuestionsByFlags(explQuestions, Array("SUCCESS", "READY") ) 129 | 130 | // Step 3: Calculate summary statistics 131 | calculateSummaryStatistics(filteredQuestions) 132 | } 133 | 134 | 135 | } 136 | -------------------------------------------------------------------------------- /src/main/scala/explanationgraph/LookupLemmatizer.scala: -------------------------------------------------------------------------------- 1 | package explanationgraph 2 | 3 | import org.slf4j.LoggerFactory 4 | 5 | import scala.collection.mutable 6 | 7 | /** 8 | * Created by peter on 9/13/17. 9 | */ 10 | class LookupLemmatizer { 11 | 12 | } 13 | 14 | object LookupLemmatizer { 15 | val logger = LoggerFactory.getLogger(classOf[LookupLemmatizer]) 16 | val FILENAME_DEFAULT_LOOKUPLEMMATIZER = "web_tool/lemmatization-en.txt" 17 | 18 | val lemmatizerHashmap = mutable.Map[String, String]() 19 | loadLookupLemmatizer(FILENAME_DEFAULT_LOOKUPLEMMATIZER) 20 | 21 | def getLemma(word:String):String = { 22 | val wordNormalized = word.toLowerCase 23 | if (!lemmatizerHashmap.contains(wordNormalized)) return wordNormalized 24 | // Return 25 | lemmatizerHashmap(wordNormalized) 26 | } 27 | 28 | def loadLookupLemmatizer(filename:String) = { 29 | logger.info (" * Loading look-up lemmatizer (" + filename + ")...") 30 | 31 | for(line <- io.Source.fromFile(filename, "UTF-8").getLines()) { 32 | //println (line) 33 | val normalized = line.replaceAll("[\\s]+", "\t").trim() 34 | val split = line.toLowerCase.split("\t") 35 | val lemma = split(0).trim.toLowerCase 36 | val word = split(1).trim.toLowerCase 37 | 38 | lemmatizerHashmap += (word -> lemma) 39 | } 40 | logger.info (" * Look-up lemmatizer loaded. (" + lemmatizerHashmap.size + " word -> lemma pairs)" ) 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /src/main/scala/explanationgraph/Table.scala: -------------------------------------------------------------------------------- 1 | package explanationgraph 2 | import Table._ 3 | 4 | import scala.collection.mutable 5 | import scala.collection.mutable.ArrayBuffer 6 | 7 | /** 8 | * Created by user on 7/9/17. 9 | */ 10 | class Table(filename:String) { 11 | var name:String = "" 12 | var header = Array.empty[String] 13 | var columnRoles = Array.empty[Int] 14 | var rows = new ArrayBuffer[TableRow] 15 | val UIDtoRowLUT = mutable.Map[String, Int]().withDefaultValue(-1) 16 | 17 | // Is this table valid and ready to use? 18 | var valid = false 19 | val warnings = new ArrayBuffer[String] 20 | 21 | 22 | /* 23 | Constructor 24 | */ 25 | loadFromFile(filename) 26 | 27 | 28 | /* 29 | Finding rows 30 | */ 31 | def getRowByUID(uid:String):TableRow = { 32 | val rowIdx = UIDtoRowLUT(uid) 33 | rows(rowIdx) 34 | } 35 | 36 | 37 | /* 38 | * Parse header/rows 39 | */ 40 | 41 | // Read in the table column header (the first line of the tsv file) 42 | def parseHeader(in:String):Unit = { 43 | val fields = in.split("\t") 44 | header = fields 45 | interpretColumnRoles() 46 | 47 | // Check for valid UID column 48 | if (findUIDColumnIdx() >= 0) { 49 | // Found UID column 50 | valid = true 51 | } else { 52 | warnings.append("WARNING: No \"[SKIP] UID\" column found. This does not appear to be a valid table.") 53 | } 54 | } 55 | 56 | 57 | // Read in a table row 58 | def addRow(in:String):Unit = { 59 | val fields = in.split("\t") 60 | val UIDColIdx = findUIDColumnIdx() 61 | 62 | // If row has a UID column, and that UID column is populated, then add the row 63 | if (UIDColIdx >= 0) { 64 | // Trim all cells 65 | for (i <- 0 until fields.size) { 66 | // Merge multiple spaces 67 | fields(i) = fields(i).replaceAll(" +", " ") 68 | 69 | // Trim 70 | fields(i) = fields(i).trim() 71 | } 72 | 73 | // Add row to table 74 | val rowUID = fields(UIDColIdx) 75 | if (rowUID.length > 0) { 76 | rows.append( new TableRow(name, header, columnRoles, fields) ) // Add row 77 | UIDtoRowLUT(rowUID) = rows.size - 1 // Add UID for row for fast lookup 78 | } 79 | } 80 | } 81 | 82 | 83 | // Interpret the roles of each column in the header based off the prefix of the header (fill, skip, uid, etc) 84 | def interpretColumnRoles():Unit = { 85 | columnRoles = Array.fill[Int](header.size)(ROLE_UNKNOWN) 86 | 87 | for (i <- 0 until header.size) { 88 | val colLabel = header(i).trim().toUpperCase 89 | if (colLabel.startsWith("[FILL]")) { 90 | columnRoles(i) = ROLE_FILL 91 | } else if (colLabel.startsWith("[SKIP] UID")) { 92 | columnRoles(i) = ROLE_UID 93 | } else if ((colLabel.startsWith("[SKIP]")) || (colLabel.startsWith("#"))) { 94 | columnRoles(i) = ROLE_SKIP 95 | } else { 96 | columnRoles(i) = ROLE_DATA 97 | } 98 | } 99 | 100 | } 101 | 102 | 103 | /* 104 | * UID helper functions 105 | */ 106 | 107 | // Return an array of all the UIDs present in this table 108 | def getAllTableUIDs():Array[String] = { 109 | UIDtoRowLUT.keySet.toArray 110 | } 111 | 112 | // Find which column contains the UIDs for each row. Returns -1 if no UID column was found (signifying an invalid table) 113 | def findUIDColumnIdx():Int = { 114 | for (i <- 0 until columnRoles.size) { 115 | if (columnRoles(i) == ROLE_UID) { 116 | return i 117 | } 118 | } 119 | // Return 120 | -1 121 | } 122 | 123 | 124 | /* 125 | * Accessors 126 | */ 127 | def numRows():Int = { 128 | rows.size 129 | } 130 | 131 | /* 132 | Load from file 133 | */ 134 | def loadFromFile(filename:String) = { 135 | name = filenameToName(filename) 136 | 137 | //println (" * loadFromFile: Loading table... (filename = " + filename + ") ") 138 | 139 | // Load table header/rows 140 | var lineCount:Int = 0 141 | for (line <- io.Source.fromFile(filename, "UTF-8").getLines()) { 142 | if (lineCount == 0) { 143 | // Header 144 | parseHeader(line) 145 | } else { 146 | // Rows/data 147 | addRow(line) 148 | } 149 | 150 | lineCount += 1 151 | } 152 | } 153 | 154 | 155 | // Helper: Get name of table by stripping path/extension information from filename 156 | def filenameToName(in:String):String = { 157 | // Find beginning trim point 158 | var lastSlash = in.lastIndexOf("/") 159 | if (lastSlash < 0) lastSlash = -1 160 | // Find end trim point 161 | var period = in.indexOf(".", lastSlash) 162 | if (period < 0) period = in.length() 163 | 164 | // Return 165 | in.substring(lastSlash + 1, period) 166 | } 167 | 168 | 169 | /* 170 | * Display 171 | */ 172 | override def toString:String = { 173 | val os = new mutable.StringBuilder() 174 | 175 | os.append("Table: " + name.formatted("%35s") + " \tRows: " + rows.size) 176 | if (valid == false) { 177 | os.append(" \tValid: " + valid) 178 | } 179 | if (warnings.size > 0) { 180 | os.append(" \tWarnings: " + warnings.mkString(" ")) 181 | } 182 | 183 | os.toString() 184 | } 185 | 186 | def toStringLong:String = { 187 | val os = new mutable.StringBuilder() 188 | 189 | os.append("Table: " + name + " Rows: " + rows.size + " Valid: " + valid + " Warnings: " + warnings.mkString(" ") + "\n") 190 | for (i <- 0 until header.size) { 191 | os.append( header(i) + " (" + columnRoles(i) + ") \t" ) 192 | } 193 | os.append("\n") 194 | 195 | for (i <- 0 until rows.size) { 196 | os.append( "\t" + i + ": " + rows(i).toString + "\n") 197 | } 198 | 199 | os.toString() 200 | } 201 | 202 | } 203 | 204 | 205 | object Table { 206 | /* 207 | Column Roles 208 | */ 209 | val ROLE_UNKNOWN = 0 210 | val ROLE_DATA = 1 211 | val ROLE_FILL = 2 212 | val ROLE_SKIP = 3 213 | val ROLE_UID = 4 214 | val ROLE_API = 5 215 | 216 | 217 | // Example usage 218 | def main(args: Array[String]): Unit = { 219 | val table = new Table("annotation/expl-tablestore-export-2017-07-09-160303/tables/USEDFOR.tsv") 220 | println( table.toStringLong ) 221 | } 222 | 223 | } 224 | 225 | 226 | 227 | // Storage class 228 | class TableRow(val tableName:String, val header:Array[String], val columnRoles:Array[Int], val cells:Array[String]) { 229 | val cellWords = new Array[Array[String]](cells.length) 230 | 231 | // Step 1: Error checking 232 | if ((header.size != cells.size) || (header.size != columnRoles.size)) { 233 | throw new RuntimeException("ERROR: TableRow constructor: Size of header, roles, and/or cells array do not match. ") 234 | } 235 | 236 | // Step 2: Sanitization 237 | sanitizeCells() 238 | 239 | // Step 3: Pre-compute cell words 240 | for (i <- 0 until cells.length) { 241 | cellWords(i) = cells(i).split(" ") 242 | } 243 | 244 | // Step 3: Identify UID column 245 | lazy val uidColumnIdx:Int = getUIDColumn() 246 | lazy val uid:String = getUID() 247 | 248 | // Step 4: Precompute other values that are frequently accessed 249 | lazy val dataColumns:Array[Int] = getDataColumns() 250 | lazy val dataAndFillColumns:Array[Int] = getDataAndFillColumns() 251 | 252 | 253 | /* 254 | * Access helpers (getting words from a column) 255 | */ 256 | def getCellWords(colIdx:Int):Array[String] = { 257 | // Split on spaces 258 | //cells(colIdx).split(" ") // Compute on-the-fly 259 | // Precomputed (for speed) 260 | cellWords(colIdx) 261 | } 262 | 263 | private def getUID():String = { 264 | if (uidColumnIdx >= 0) { 265 | return cells(uidColumnIdx) 266 | } else { 267 | return "no UID specified" 268 | } 269 | } 270 | 271 | 272 | /* 273 | * Access helpers (filtering columns) 274 | */ 275 | private def getDataColumns():Array[Int] = { 276 | getColumnsByRole( Array(ROLE_DATA) ) 277 | } 278 | 279 | private def getDataAndFillColumns():Array[Int] = { 280 | getColumnsByRole( Array(ROLE_DATA, ROLE_FILL) ) 281 | } 282 | 283 | private def getUIDColumn():Int = { 284 | for (i <- columnRoles.length-1 to 0 by -1) { 285 | if (columnRoles(i) == ROLE_UID) { 286 | return i 287 | } 288 | } 289 | -1 290 | } 291 | 292 | // Return an array of indicies for all columns that are one of the roles provided in 'roles'. 293 | // Useful for filtering away API/metadata columns, to get only the data columns, or only data/fill columns, etc. 294 | def getColumnsByRole(roles:Array[Int]):Array[Int] = { 295 | val out = new ArrayBuffer[Int] 296 | for (i <- 0 until columnRoles.size) { 297 | if (roles.contains(columnRoles(i))) { 298 | out.append(i) 299 | } 300 | } 301 | out.toArray 302 | } 303 | 304 | 305 | 306 | /* 307 | * Sanitization 308 | */ 309 | def sanitizeCells(): Unit = { 310 | for (i <- 0 until cells.size) { 311 | cells(i) = cells(i).replaceAll(";", " ; ") 312 | cells(i) = cells(i).replaceAll("'s", " 's") 313 | cells(i) = cells(i).replaceAll("\\s+", " ") 314 | } 315 | } 316 | 317 | 318 | /* 319 | * toString methods 320 | */ 321 | override def toString():String = { 322 | val os = new mutable.StringBuilder() 323 | 324 | for (i <- 0 until cells.size) { 325 | os.append(cells(i) + "\t") 326 | } 327 | 328 | os.toString() 329 | } 330 | 331 | // toString method with custom delimiter, and merges multiple spaces into a single space. Useful for converting a row into a plain text sentence. 332 | def toStringDelim(delim:String):String = { 333 | val os = new mutable.StringBuilder() 334 | 335 | for (i <- 0 until cells.size) { 336 | os.append(cells(i) + delim) 337 | } 338 | 339 | os.toString().replaceAll(" +", " ").trim() 340 | } 341 | 342 | def toStringSentWithUID():String = { 343 | val os = new mutable.StringBuilder() 344 | 345 | val columnIdxs = getDataAndFillColumns() 346 | for (colIdx <- columnIdxs) { 347 | var text = cells(colIdx) 348 | if (text.contains(";")) { 349 | text = "(" + text + ")" 350 | } 351 | os.append( text + " " ) 352 | } 353 | 354 | os.append("(UID: " + getUID() + ")") 355 | 356 | os.toString().replaceAll(" +", " ").trim() 357 | } 358 | 359 | // toString method that just displays the sentence text 360 | def toStringText():String = { 361 | val os = new mutable.StringBuilder() 362 | 363 | val colIdxs = getDataAndFillColumns() 364 | for (colIdx <- colIdxs) { 365 | os.append( cells(colIdx) + " " ) 366 | } 367 | 368 | // Return 369 | os.toString().replaceAll(" +", " ").trim() 370 | } 371 | 372 | } -------------------------------------------------------------------------------- /src/main/scala/explanationgraph/TableStore.scala: -------------------------------------------------------------------------------- 1 | package explanationgraph 2 | 3 | import scala.collection.mutable 4 | import scala.collection.mutable.ArrayBuffer 5 | 6 | /** 7 | * Created by user on 7/9/17. 8 | */ 9 | 10 | class TableStore(filename:String) { 11 | val tables = new ArrayBuffer[Table] 12 | val UIDtoTableLUT = mutable.Map[String, Int]().withDefaultValue(-1) 13 | 14 | /* 15 | * Constructor 16 | */ 17 | loadTableStore(filename) 18 | 19 | 20 | /* 21 | * Finding rows 22 | */ 23 | def getRowTableByUID(uid:String):Int = { 24 | UIDtoTableLUT(uid) 25 | } 26 | 27 | def getRowByUID(uid:String):TableRow = { 28 | val tableIdx = getRowTableByUID(uid) 29 | if (tableIdx == -1) { 30 | // ERROR 31 | println ("ERROR: Could not find UID: " + uid + " (returning empty table row)") 32 | return new TableRow("", Array.empty[String], Array.empty[Int], Array.empty[String]) 33 | } 34 | val table = tables(tableIdx) 35 | table.getRowByUID(uid) 36 | } 37 | 38 | 39 | /* 40 | * Finding tables 41 | */ 42 | def findTableIdxByName(name:String):Int = { 43 | for (i <- 0 until tables.size) { 44 | if (tables(i).name.toLowerCase == name.toLowerCase) { 45 | return i 46 | } 47 | } 48 | 49 | // Default: table could not be found 50 | -1 51 | } 52 | 53 | 54 | /* 55 | * Loading the tablestore 56 | */ 57 | 58 | // Load a set of tables from a text file specifying the filenames of each table, one per line. 59 | def loadTableStore(filename:String): Unit = { 60 | println (" * loadTableStore: Started... (filename index = " + filename + ")") 61 | val tableRelativePath = filename.substring(0, filename.lastIndexOf("/") + 1) + "tables/" 62 | 63 | var numRows:Int = 0 64 | for (line <- io.Source.fromFile(filename, "UTF-8").getLines()) { 65 | val filenameTable = tableRelativePath + line 66 | if (addTable(filenameTable)) { 67 | numRows += tables.last.numRows 68 | } 69 | } 70 | 71 | println (" * loadTableStore: Complete. (" + tables.size + " tables loaded, containing a total of " + numRows + " rows)") 72 | } 73 | 74 | // Add a single table to the tablestore. If the table is invalid, it will not be added. 75 | def addTable(filename:String):Boolean = { 76 | val table = new Table(filename) 77 | 78 | if (table.valid) { 79 | tables.append(table) 80 | 81 | // Display table information 82 | println("\t" + tables.last.toString) 83 | 84 | // Add UIDs 85 | val tableIdx = tables.size - 1 86 | val UIDsInTable = table.getAllTableUIDs() 87 | for (i <- 0 until UIDsInTable.size) { 88 | val uid = UIDsInTable(i) 89 | UIDtoTableLUT(uid) = tableIdx 90 | } 91 | 92 | return true 93 | } 94 | 95 | // Return 96 | false 97 | } 98 | 99 | 100 | 101 | } 102 | 103 | 104 | object TableStore { 105 | 106 | // Example usage 107 | def main(args: Array[String]): Unit = { 108 | val tablestore = new TableStore("annotation/expl-tablestore-export-2017-07-09-160303/tableindex.txt") 109 | 110 | println ( tablestore.tables( tablestore.UIDtoTableLUT("a5c9-d7a4-8421-bb2e") ).name ) 111 | 112 | println ( tablestore.getRowByUID("a5c9-d7a4-8421-bb2e") ) 113 | 114 | } 115 | 116 | 117 | } 118 | -------------------------------------------------------------------------------- /src/main/scala/explanationgraph/TableUtils.scala: -------------------------------------------------------------------------------- 1 | package explanationgraph 2 | 3 | import data.question.MCExplQuestion 4 | import edu.arizona.sista.struct.Counter 5 | 6 | import scala.collection.mutable.ArrayBuffer 7 | 8 | /** 9 | * Created by peter on 9/7/17. 10 | */ 11 | class TableUtils { 12 | 13 | } 14 | 15 | 16 | 17 | object TableUtils { 18 | lazy val lookupLemmatizer = LookupLemmatizer 19 | 20 | /* 21 | * Conversion from MCExplQuestion 22 | */ 23 | // From an MCExplQuestion, generate an array of TableRows representing the explanation for that question 24 | def getExplanationRows(in:MCExplQuestion, tablestore:TableStore):Array[TableRow] = { 25 | val out = new ArrayBuffer[TableRow] 26 | val expl = in.expl 27 | 28 | for (i <- 0 until expl.size) { 29 | val uid = expl(i).uid 30 | val row = tablestore.getRowByUID(uid) 31 | out.append(row) 32 | } 33 | 34 | // Return 35 | out.toArray 36 | } 37 | 38 | 39 | /* 40 | * Overlap 41 | */ 42 | 43 | // Determine whether (and, if so, how) two table rows lexically overlap. 44 | def determineRowOverlap(row1:TableRow, row2:TableRow):(Counter[String], Counter[String], Counter[String]) = { 45 | // Step 1: Broad lexical overlap 46 | val overlappingLemmas = determineRowOverlapLexical(row1, row2) 47 | println ("Overlapping lemmas: " + overlappingLemmas) 48 | 49 | // Step 2: Cell lexical overlap 50 | val connCounterCell = new Counter[String] 51 | val connCounterLex = new Counter[String] 52 | val connCounterTable = new Counter[String] 53 | 54 | val lexicallyConnectedCells = determineRowConnectionLexical(row1, row2) 55 | for (i <- 0 until lexicallyConnectedCells.size) { 56 | val connection = lexicallyConnectedCells(i) 57 | val lexicalOverlap = connection._1 58 | val row1CellIdx = connection._2 59 | val row2CellIdx = connection._3 60 | 61 | val row1CellHeaderStr = row1.header(row1CellIdx) 62 | val row2CellHeaderStr = row2.header(row2CellIdx) 63 | 64 | println ("Cell-to-Cell connection: Row 1 : Cell " + row1CellIdx + "(" + row1CellHeaderStr + ", " + row1.tableName + ") <--> Row 2 : Cell " + row2CellIdx + "(" + row2CellHeaderStr + ", " + row2.tableName + ") :: Overlap: " + lexicalOverlap ) 65 | 66 | // Connection characterization 67 | val connStrCell = "(" + row1.tableName + ", " + row1CellHeaderStr + ") <--> (" + row2.tableName + ", " + row2CellHeaderStr + ")" 68 | val connStrLex = "(" + row1.tableName + ", " + row1CellHeaderStr + ") <--> (" + row2.tableName + ", " + row2CellHeaderStr + ") :: Overlap: " + lexicalOverlap 69 | val connStrTable = "(" + row1.tableName + ") <--> (" + row2.tableName + ")" 70 | /* 71 | //## OLD: (One count per word that overlaps) 72 | connCounterCell.incrementCount(connStrCell) 73 | connCounterLex.incrementCount(connStrLex) 74 | connCounterTable.incrementCount(connStrTable) 75 | */ 76 | //## NEW: (One count per cell, regardless of how many words overlap) 77 | connCounterCell.setCount(connStrCell, 1.0) 78 | connCounterLex.setCount(connStrLex, 1.0) 79 | connCounterTable.setCount(connStrTable, 1.0) 80 | } 81 | 82 | // Return 83 | (connCounterCell, connCounterLex, connCounterTable) 84 | } 85 | 86 | 87 | // Determine the set of words that two rows have in common 88 | def determineRowOverlapLexical(row1:TableRow, row2:TableRow):Set[String] = { 89 | val minLength:Int = 2 90 | 91 | // Step 1: Get indicies of 'data' columns from each row 92 | val activeColsRow1 = row1.dataColumns 93 | val activeColsRow2 = row2.dataColumns 94 | 95 | 96 | // Step 2: Retrieve lemmas for each row 97 | var lemmasRow1:Set[String] = Set() 98 | var lemmasRow2:Set[String] = Set() 99 | 100 | // Collect bag-of-word lemmas for row1 101 | for (colIdx1 <- activeColsRow1) { 102 | for (word <- row1.getCellWords(colIdx1)) { 103 | val lemma = coarseLemmatize(word) 104 | if ((lemma.length() >= minLength) && !isStopword(lemma)) { 105 | lemmasRow1 += lemma 106 | } 107 | } 108 | } 109 | 110 | // Collect bag-of-word lemmas for row1 111 | for (colIdx2 <- activeColsRow2) { 112 | for (word <- row2.getCellWords(colIdx2)) { 113 | val lemma = coarseLemmatize(word) 114 | if ((lemma.length() >= minLength) && !isStopword(lemma)) { 115 | lemmasRow2 += lemma 116 | } 117 | } 118 | } 119 | 120 | 121 | // Step 3: Compare overlap 122 | val commonLemmas = lemmasRow1.intersect(lemmasRow2) 123 | 124 | // Return 125 | commonLemmas 126 | } 127 | 128 | 129 | // Determine the set of words that two rows have in common 130 | def determineRowConnectionLexical(row1:TableRow, row2:TableRow):Array[(Set[String], Int, Int)] = { 131 | val minLength:Int = 2 132 | val connections = new ArrayBuffer[(Set[String], Int, Int)] // (overlapping words, columnIndexRow1, columnIndexRow2) 133 | 134 | // Step 1: Get indicies of 'data' columns from each row 135 | val activeColsRow1 = row1.dataColumns 136 | val activeColsRow2 = row2.dataColumns 137 | 138 | 139 | // Step 2: Compare lemma overlap between both rows, cell-by-cell. 140 | var lemmasRow2:Set[String] = Set() 141 | 142 | // Step 2A: For each active cell in Row1 143 | for (colIdx1 <- activeColsRow1) { 144 | 145 | // Step 2B: Collect the lemmas in a given cell in Row1 146 | var lemmasCell1:Set[String] = Set() 147 | for (word <- row1.getCellWords(colIdx1)) { 148 | val lemma = coarseLemmatize(word) 149 | if ((lemma.length() >= minLength) && !isStopword(lemma)) { 150 | lemmasCell1 += lemma 151 | } 152 | } 153 | 154 | // Step 2C: For each active cell in Row2 155 | for (colIdx2 <- activeColsRow2) { 156 | // Step 2D: Collect the lemmas in a given cell in Row2 157 | var lemmasCell2:Set[String] = Set() 158 | for (word <- row2.getCellWords(colIdx2)) { 159 | val lemma = coarseLemmatize(word) 160 | if ((lemma.length() >= minLength) && !isStopword(lemma)) { 161 | lemmasCell2 += lemma 162 | } 163 | } 164 | 165 | // Step 2E: Compare those lemmas for overlap 166 | val cellOverlap = lemmasCell1.intersect(lemmasCell2) 167 | if (cellOverlap.nonEmpty) { 168 | connections.append( (cellOverlap, colIdx1, colIdx2) ) 169 | } 170 | } 171 | } 172 | 173 | // Step 3: Return 174 | connections.toArray 175 | 176 | } 177 | 178 | 179 | /* 180 | * Combinations 181 | */ 182 | // Make all (unique) combinations of N indices up to length N. 183 | // Normally this would produce only a 2 dimensional array, but here the third (outermost) dimension stores all the 184 | // patterns of length 1, length, 2, length 3, etc. 185 | // Runtime is ~20msec up to length 10, ~100msec up to length 17, and ~500msec for length 20. 186 | def mkCombinations(n:Int):Array[Array[Array[Int]]] = { 187 | // Step 1: Create indicies 188 | val indices = (0 to n-1) toArray 189 | 190 | // Output array (Length, Combinations, Pattern) 191 | val out = new ArrayBuffer[Array[Array[Int]]] 192 | 193 | // Make combinations for a given length 194 | for (i <- 1 to n) { 195 | val combosAtLength = indices.combinations(i).toArray 196 | out.append(combosAtLength) 197 | } 198 | 199 | // Return 200 | out.toArray 201 | } 202 | 203 | 204 | /* 205 | * Helper functions 206 | */ 207 | def isStopword(in:String):Boolean = { 208 | var stopWords = Array("a", "an", "and", "are", "as", "at", "be", "for", "have", "he", "she", "in", "is", "it", "its", "of", "that", "the", "then", "was", "were", "will", "with", "kind", "mean", "who", "what", "where", "why", "when", "how", "to") 209 | if (stopWords.contains(in)) return true 210 | 211 | // Return (default) 212 | false 213 | } 214 | 215 | // Coarse look-up lemmatizer 216 | def coarseLemmatize(in:String):String = { 217 | // TODO: Implement 218 | //return in 219 | lookupLemmatizer.getLemma(in) 220 | } 221 | 222 | } 223 | 224 | 225 | -------------------------------------------------------------------------------- /src/main/scala/releasetools/MakePlainTextExplanations.scala: -------------------------------------------------------------------------------- 1 | package releasetools 2 | 3 | import java.io.PrintWriter 4 | 5 | import data.question.{ExamQuestionParserDynamic, MCExplQuestion} 6 | import explanationexperiments.CharacterizeConnectivity.{convertToExplQuestions, filterQuestionsByFlags} 7 | import explanationgraph.TableStore 8 | 9 | /** 10 | * This quick tool will make a human-readable list of questions and tablestore explanations, suitable for easy 11 | * distribution and review. 12 | * Created by peter on 9/20/17. 13 | */ 14 | 15 | object MakePlainTextExplanations { 16 | 17 | def explanationToString(explQuestion:MCExplQuestion, tablestore:TableStore, qid:Int, filterQuestionsAbove:Int = -1):String = { 18 | val os = new StringBuilder 19 | 20 | val question = explQuestion.question 21 | val expl = explQuestion.expl 22 | 23 | if (filterQuestionsAbove == -1) { 24 | os.append(question.toStringMinimal + "\n") 25 | } else { 26 | if (qid >= filterQuestionsAbove) { 27 | os.append("Question: Text of licensed questions can be requested at: http://data.allenai.org/ai2-science-questions-mercury\n") 28 | } else { 29 | os.append(question.toStringMinimal + "\n") 30 | } 31 | } 32 | os.append( "Correct Answer: " + question.correctAnswer + "\n" ) 33 | os.append( "Explanation: \n" ) 34 | for (explRow <- expl) { 35 | val uid = explRow.uid 36 | val role = explRow.role 37 | val tablerow = tablestore.getRowByUID(uid) 38 | 39 | os.append(tablerow.toStringSentWithUID() + " (ROLE: " + role + ")\n") 40 | } 41 | 42 | os.toString() 43 | } 44 | 45 | 46 | def main(args: Array[String]): Unit = { 47 | var pathAnnotation = "annotation/expl-tablestore-export-2017-08-25-230344/" 48 | 49 | // Step 3: Load tablestore 50 | val tablestore = new TableStore(pathAnnotation + "tableindex.txt") 51 | println ( tablestore.tables( tablestore.UIDtoTableLUT("a5c9-d7a4-8421-bb2e") ).name ) 52 | println ( tablestore.getRowByUID("a5c9-d7a4-8421-bb2e") ) 53 | 54 | 55 | // Step 4: Load questions 56 | val filenameQuestions = pathAnnotation + "questions.tsv" 57 | var questions = ExamQuestionParserDynamic.loadQuestionsFromCSVList( filenameQuestions, fullAnnotation = false, noAnnotation = true, tsvMode = true) 58 | var explQuestions = convertToExplQuestions(questions) 59 | println ("Loaded " + explQuestions.size + " questions. ") 60 | 61 | // Step 5: Generate plain text output 62 | val filenameOut = "explanations_plaintext.withmercury.txt" 63 | val pw = new PrintWriter(filenameOut) 64 | 65 | for (i <- 0 until explQuestions.size) { 66 | if (explQuestions(i).question.flags.contains("SUCCESS")) { 67 | pw.println ("Question: " + i) 68 | //pw.println ( explanationToString(explQuestions(i), tablestore, i, 767) ) 69 | pw.println ( explanationToString(explQuestions(i), tablestore, i) ) 70 | pw.println ("") 71 | } 72 | } 73 | 74 | pw.close() 75 | 76 | } 77 | 78 | } -------------------------------------------------------------------------------- /src/main/scala/releasetools/RemoveTablestoreComments.scala: -------------------------------------------------------------------------------- 1 | package releasetools 2 | 3 | import java.io.PrintWriter 4 | import scala.collection.mutable.ArrayBuffer 5 | 6 | /** 7 | * This quick tool will strip all comments from a tablestore export, in preparation for public release 8 | * Created by peter on 9/20/17. 9 | */ 10 | 11 | object RemoveTablestoreComments { 12 | 13 | // Find the comment column in a given tablestore header 14 | def getCommentColumnIdx(in:Array[String]):Int = { 15 | println (in.mkString(", ")) 16 | for (i <- 0 until in.size) { 17 | if (in(i).trim().toUpperCase().startsWith("[SKIP] COMMENT")) { 18 | return i 19 | } 20 | } 21 | // Default return 22 | -1 23 | } 24 | 25 | // Remove the comments from a given table 26 | def removeComments(path:String, filename:String) = { 27 | println (" * removeComments (filename = " + filename + ")") 28 | 29 | val lines = io.Source.fromFile(path + filename, "UTF-8").getLines() 30 | val out = new ArrayBuffer[Array[String]] 31 | 32 | // Step 1: Read in table data 33 | var lineNum:Int = 0 34 | var colIdx:Int = -1 35 | for(line <- lines) { 36 | val fields = line.split("\t") 37 | 38 | // If header line, then find the comment column index 39 | if (lineNum == 0) { 40 | colIdx = getCommentColumnIdx(fields) 41 | out.append( fields ) 42 | println ("\t* comment column index: " + colIdx) 43 | } else { 44 | if (colIdx >= 0) { 45 | fields(colIdx) = "" 46 | out.append( fields ) 47 | } 48 | } 49 | 50 | lineNum += 1 51 | } 52 | 53 | // Step 2: Export table data 54 | if (colIdx >= 0) { 55 | val pw = new PrintWriter(path + filename) 56 | for (line <- out) { 57 | pw.println( line.mkString("\t") ) 58 | } 59 | pw.close() 60 | 61 | println ("\t* wrote " + out.size + " lines. ") 62 | } 63 | 64 | } 65 | 66 | 67 | // Load the tablestore index file 68 | def getTablestoreFilenames(path:String, filename:String):Array[String] = { 69 | val out = new ArrayBuffer[String] 70 | 71 | for (line <- io.Source.fromFile(path + filename, "UTF-8").getLines()) { 72 | out.append( line ) 73 | } 74 | 75 | out.toArray 76 | } 77 | 78 | 79 | 80 | def main(args: Array[String]): Unit = { 81 | val path = "/home/user/Documents/tsv/" 82 | val pathTables = "/home/user/Documents/tsv/tables/" 83 | val filenameIndex = "tableindex.txt" 84 | 85 | 86 | val filenamesTables = getTablestoreFilenames(path, filenameIndex) 87 | for (filenameTable <- filenamesTables) { 88 | removeComments(pathTables, filenameTable) 89 | } 90 | 91 | 92 | println ("") 93 | println (filenamesTables.size + " tables listed in index.") 94 | } 95 | 96 | } 97 | --------------------------------------------------------------------------------