├── 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 | 
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 |
--------------------------------------------------------------------------------