monapipe 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. monapipe/__init__.py +19 -0
  2. monapipe/annotation.py +79 -0
  3. monapipe/config.py +25 -0
  4. monapipe/lang/__init__.py +0 -0
  5. monapipe/lang/de/__init__.py +0 -0
  6. monapipe/lang/de/auxiliary_verbs.py +10 -0
  7. monapipe/lang/de/inflection_table.py +450 -0
  8. monapipe/lang/de/modal_verbs.py +5 -0
  9. monapipe/lang/de/quotation_marks.py +5 -0
  10. monapipe/lang/de/semi_modal_verbs.py +7 -0
  11. monapipe/lang/de/speech_verbs.py +30 -0
  12. monapipe/linguistics.py +304 -0
  13. monapipe/lookups.py +30 -0
  14. monapipe/model.py +85 -0
  15. monapipe/neuralcoref.py +60 -0
  16. monapipe/pickling.py +211 -0
  17. monapipe/pipeline/__init__.py +0 -0
  18. monapipe/pipeline/annotation_reader/__init__.py +0 -0
  19. monapipe/pipeline/annotation_reader/annotation_reader.py +22 -0
  20. monapipe/pipeline/annotation_reader/catma_annotation_reader.py +368 -0
  21. monapipe/pipeline/attribution_tagger/__init__.py +0 -0
  22. monapipe/pipeline/attribution_tagger/attribution_tagger.py +17 -0
  23. monapipe/pipeline/attribution_tagger/neural_attribution_tagger.py +213 -0
  24. monapipe/pipeline/clausizer/__init__.py +0 -0
  25. monapipe/pipeline/clausizer/clausizer.py +45 -0
  26. monapipe/pipeline/clausizer/dependency_clausizer.py +237 -0
  27. monapipe/pipeline/coref/__init__.py +0 -0
  28. monapipe/pipeline/coref/coref.py +35 -0
  29. monapipe/pipeline/coref/rb_coref.py +610 -0
  30. monapipe/pipeline/emotion_tagger/__init__.py +0 -0
  31. monapipe/pipeline/event_tagger/__init__.py +0 -0
  32. monapipe/pipeline/event_tagger/event_tagger.py +17 -0
  33. monapipe/pipeline/event_tagger/neural_event_tagger.py +87 -0
  34. monapipe/pipeline/formatter/__init__.py +0 -0
  35. monapipe/pipeline/formatter/conllu_formatter.py +206 -0
  36. monapipe/pipeline/formatter/formatter.py +32 -0
  37. monapipe/pipeline/gen_tagger/__init__.py +0 -0
  38. monapipe/pipeline/gen_tagger/gen_tagger.py +19 -0
  39. monapipe/pipeline/gen_tagger/neural_gen_tagger.py +114 -0
  40. monapipe/pipeline/methods.py +150 -0
  41. monapipe/pipeline/ner/__init__.py +0 -0
  42. monapipe/pipeline/normalizer/__init__.py +0 -0
  43. monapipe/pipeline/normalizer/identity_normalizer.py +69 -0
  44. monapipe/pipeline/normalizer/normalizer.py +36 -0
  45. monapipe/pipeline/reflection_tagger/__init__.py +0 -0
  46. monapipe/pipeline/reflection_tagger/methods.py +49 -0
  47. monapipe/pipeline/reflection_tagger/neural_reflection_tagger.py +110 -0
  48. monapipe/pipeline/reflection_tagger/reflection_tagger.py +19 -0
  49. monapipe/pipeline/semantic_tagger/__init__.py +0 -0
  50. monapipe/pipeline/semantic_tagger/germanet_semantic_tagger.py +340 -0
  51. monapipe/pipeline/semantic_tagger/semantic_tagger.py +21 -0
  52. monapipe/pipeline/slicer/__init__.py +0 -0
  53. monapipe/pipeline/slicer/from_start_slicer.py +82 -0
  54. monapipe/pipeline/slicer/methods.py +39 -0
  55. monapipe/pipeline/slicer/slicer.py +21 -0
  56. monapipe/pipeline/speaker_extractor/__init__.py +0 -0
  57. monapipe/pipeline/speaker_extractor/rb_speaker_extractor.py +163 -0
  58. monapipe/pipeline/speaker_extractor/speaker_extractor.py +21 -0
  59. monapipe/pipeline/speech_tagger/__init__.py +0 -0
  60. monapipe/pipeline/speech_tagger/flair_speech_tagger.py +118 -0
  61. monapipe/pipeline/speech_tagger/methods.py +45 -0
  62. monapipe/pipeline/speech_tagger/quotation_marks_speech_tagger.py +65 -0
  63. monapipe/pipeline/speech_tagger/speech_tagger.py +26 -0
  64. monapipe/pipeline/temponym_tagger/__init__.py +0 -0
  65. monapipe/pipeline/temponym_tagger/heideltime_temponym_tagger.py +133 -0
  66. monapipe/pipeline/temponym_tagger/temponym_tagger.py +20 -0
  67. monapipe/pipeline/verb_analyzer/__init__.py +0 -0
  68. monapipe/pipeline/verb_analyzer/rb_verb_analyzer.py +640 -0
  69. monapipe/pipeline/verb_analyzer/verb_analyzer.py +43 -0
  70. monapipe/resource_handler.py +205 -0
  71. monapipe/resources/__init__.py +0 -0
  72. monapipe/resources/attribution/__init__.py +0 -0
  73. monapipe/resources/attribution/load.py +24 -0
  74. monapipe/resources/event_classification/__init__.py +0 -0
  75. monapipe/resources/event_classification/event_classify/__init__.py +0 -0
  76. monapipe/resources/event_classification/event_classify/config.py +70 -0
  77. monapipe/resources/event_classification/event_classify/datasets.py +607 -0
  78. monapipe/resources/event_classification/event_classify/eval.py +240 -0
  79. monapipe/resources/event_classification/event_classify/evaluation_result.py +41 -0
  80. monapipe/resources/event_classification/event_classify/label_smoothing.py +37 -0
  81. monapipe/resources/event_classification/event_classify/model.py +205 -0
  82. monapipe/resources/event_classification/event_classify/parser/__init__.py +13 -0
  83. monapipe/resources/event_classification/event_classify/parser/spacy_herma.py +80 -0
  84. monapipe/resources/event_classification/event_classify/parser/spacy_parzu.py +38 -0
  85. monapipe/resources/event_classification/event_classify/preprocessing.py +53 -0
  86. monapipe/resources/event_classification/event_classify/segmentations.py +144 -0
  87. monapipe/resources/event_classification/event_classify/util.py +129 -0
  88. monapipe/resources/event_classification/event_test.py +60 -0
  89. monapipe/resources/event_classification/load.py +57 -0
  90. monapipe/resources/generalizing_passages_identification_bert/__init__.py +0 -0
  91. monapipe/resources/generalizing_passages_identification_bert/load.py +71 -0
  92. monapipe/resources/generalizing_passages_identification_bert/src/examples/example_reflexive_training.py +66 -0
  93. monapipe/resources/generalizing_passages_identification_bert/src/examples/example_training.py +45 -0
  94. monapipe/resources/generalizing_passages_identification_bert/src/examples/example_xai.py +56 -0
  95. monapipe/resources/generalizing_passages_identification_bert/src/ml/__init__.py +2 -0
  96. monapipe/resources/generalizing_passages_identification_bert/src/ml/custom_dataset.py +76 -0
  97. monapipe/resources/generalizing_passages_identification_bert/src/ml/early_stopping.py +58 -0
  98. monapipe/resources/generalizing_passages_identification_bert/src/ml/experiment.py +288 -0
  99. monapipe/resources/generalizing_passages_identification_bert/src/ml/label_util.py +109 -0
  100. monapipe/resources/generalizing_passages_identification_bert/src/ml/lamb.py +88 -0
  101. monapipe/resources/generalizing_passages_identification_bert/src/ml/model_util.py +135 -0
  102. monapipe/resources/generalizing_passages_identification_bert/src/ml/multi_label_classification_model.py +44 -0
  103. monapipe/resources/generalizing_passages_identification_bert/src/ml/saved_model_tester.py +48 -0
  104. monapipe/resources/generalizing_passages_identification_bert/src/ml/trainer.py +237 -0
  105. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/cage_preprocessing.py +64 -0
  106. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/conllu_parser.py +191 -0
  107. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/models/clause.py +196 -0
  108. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/models/document.py +10 -0
  109. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/models/passage.py +14 -0
  110. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/monaco_preprocessing.py +78 -0
  111. monapipe/resources/generalizing_passages_identification_bert/src/preprocessing/sitent_preprocessing.py +193 -0
  112. monapipe/resources/generalizing_passages_identification_bert/src/xai/anchors_wrapper.py +42 -0
  113. monapipe/resources/generalizing_passages_identification_bert/src/xai/lime_clause.py +20 -0
  114. monapipe/resources/generalizing_passages_identification_bert/src/xai/prediction_pipeline.py +62 -0
  115. monapipe/resources/generalizing_passages_identification_bert/src/xai/xai_graphic_generator.py +161 -0
  116. monapipe/resources/germanet/__init__.py +0 -0
  117. monapipe/resources/germanet/load.py +26 -0
  118. monapipe/resources/heideltime/__init__.py +0 -0
  119. monapipe/resources/heideltime/load.py +67 -0
  120. monapipe/resources/open_multilingual_wordnet/__init__.py +0 -0
  121. monapipe/resources/open_multilingual_wordnet/load.py +70 -0
  122. monapipe/resources/parsing/__init__.py +0 -0
  123. monapipe/resources/parsing/load.py +30 -0
  124. monapipe/resources/reflective_passages_identification_bert/__init__.py +0 -0
  125. monapipe/resources/reflective_passages_identification_bert/load.py +71 -0
  126. monapipe/resources/reflective_passages_identification_bert/src/examples/example_reflexive_training.py +66 -0
  127. monapipe/resources/reflective_passages_identification_bert/src/examples/example_training.py +45 -0
  128. monapipe/resources/reflective_passages_identification_bert/src/examples/example_xai.py +56 -0
  129. monapipe/resources/reflective_passages_identification_bert/src/ml/__init__.py +2 -0
  130. monapipe/resources/reflective_passages_identification_bert/src/ml/custom_dataset.py +76 -0
  131. monapipe/resources/reflective_passages_identification_bert/src/ml/early_stopping.py +58 -0
  132. monapipe/resources/reflective_passages_identification_bert/src/ml/experiment.py +288 -0
  133. monapipe/resources/reflective_passages_identification_bert/src/ml/label_util.py +109 -0
  134. monapipe/resources/reflective_passages_identification_bert/src/ml/lamb.py +88 -0
  135. monapipe/resources/reflective_passages_identification_bert/src/ml/model_util.py +135 -0
  136. monapipe/resources/reflective_passages_identification_bert/src/ml/multi_label_classification_model.py +44 -0
  137. monapipe/resources/reflective_passages_identification_bert/src/ml/saved_model_tester.py +48 -0
  138. monapipe/resources/reflective_passages_identification_bert/src/ml/trainer.py +237 -0
  139. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/cage_preprocessing.py +64 -0
  140. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/conllu_parser.py +191 -0
  141. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/models/clause.py +196 -0
  142. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/models/document.py +10 -0
  143. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/models/passage.py +14 -0
  144. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/monaco_preprocessing.py +78 -0
  145. monapipe/resources/reflective_passages_identification_bert/src/preprocessing/sitent_preprocessing.py +193 -0
  146. monapipe/resources/reflective_passages_identification_bert/src/xai/anchors_wrapper.py +42 -0
  147. monapipe/resources/reflective_passages_identification_bert/src/xai/lime_clause.py +20 -0
  148. monapipe/resources/reflective_passages_identification_bert/src/xai/prediction_pipeline.py +62 -0
  149. monapipe/resources/reflective_passages_identification_bert/src/xai/xai_graphic_generator.py +161 -0
  150. monapipe/resources/spacy_model/__init__.py +0 -0
  151. monapipe/resources/spacy_model/load.py +27 -0
  152. monapipe/resources/speech_taggers/__init__.py +0 -0
  153. monapipe/resources/speech_taggers/load.py +36 -0
  154. monapipe/scripts/delete_resource_files.py +22 -0
  155. monapipe/scripts/load_resource_files.py +22 -0
  156. monapipe/silence.py +68 -0
  157. monapipe-0.1.0.dist-info/CC-BY 4.0.txt +395 -0
  158. monapipe-0.1.0.dist-info/CC-BY-NC-SA 4.0.txt +437 -0
  159. monapipe-0.1.0.dist-info/CC-BY-SA 3.0.txt +359 -0
  160. monapipe-0.1.0.dist-info/CC-BY-SA 4.0.txt +427 -0
  161. monapipe-0.1.0.dist-info/CC0-1.0.txt +121 -0
  162. monapipe-0.1.0.dist-info/FDL-1.1.txt +355 -0
  163. monapipe-0.1.0.dist-info/GPL-3.0.txt +674 -0
  164. monapipe-0.1.0.dist-info/LGPL-3.0-or-later.txt +304 -0
  165. monapipe-0.1.0.dist-info/METADATA +400 -0
  166. monapipe-0.1.0.dist-info/MIT.txt +7 -0
  167. monapipe-0.1.0.dist-info/RECORD +171 -0
  168. monapipe-0.1.0.dist-info/WHEEL +5 -0
  169. monapipe-0.1.0.dist-info/bsd-2-clause.txt +34 -0
  170. monapipe-0.1.0.dist-info/open_multilingual_wordnet_license_statement.txt +14 -0
  171. monapipe-0.1.0.dist-info/top_level.txt +1 -0
monapipe/__init__.py ADDED
@@ -0,0 +1,19 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ import sentry_sdk
6
+
7
+ from monapipe.silence import (
8
+ silence_logging,
9
+ silence_tensorflow,
10
+ silence_tqdm,
11
+ silence_transformers,
12
+ silence_warnings,
13
+ )
14
+
15
+ silence_logging()
16
+ silence_tensorflow()
17
+ silence_tqdm()
18
+ silence_transformers()
19
+ silence_warnings()
monapipe/annotation.py ADDED
@@ -0,0 +1,79 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ from typing import Any, Iterable, List, Optional, Set
6
+
7
+
8
+ class Annotation:
9
+ """A class that stores information from an annotation."""
10
+
11
+ def __init__(
12
+ self, tag, tagset, property_values_dict, tokens, id_value, strings, string_positions
13
+ ):
14
+ self.tag = tag
15
+ self.tagset = tagset
16
+ self.property_values = property_values_dict
17
+ self.tokens = tokens
18
+ self.id = id_value
19
+ self.strings = strings
20
+ self.string_positions = string_positions
21
+
22
+ def __repr__(self):
23
+ return str(vars(self))
24
+
25
+ def __str__(self):
26
+ return str(vars(self))
27
+
28
+
29
+ class AnnotationList(list):
30
+ """A class that stores a list of Annotation-objectes."""
31
+
32
+ def __init__(self, annotation_list: Optional[List[Annotation]] = None):
33
+ if annotation_list is None:
34
+ annotation_list = []
35
+ super().__init__(annotation_list)
36
+
37
+ def get_annotations(
38
+ self, tags: Optional[Iterable[str]] = None, tagset: Optional[str] = None
39
+ ) -> Any:
40
+ """Find Annotation-objects with specified tags and tagset.
41
+
42
+ Args:
43
+ tags: Tags to search for.
44
+ tagset: Parameter to filter for specific tagset.
45
+
46
+ Returns:
47
+ `AnnotationList`: all annotation-objects with specified tags and tagset.
48
+ If `tags` is empty, all tags of the given tagset are searched.
49
+ If `tagset` is None, no filtering for a specific tagset is applied.
50
+
51
+ """
52
+ annotations_to_return = AnnotationList()
53
+ for annotation in self:
54
+ if (tags is None or annotation.tag in tags) and (
55
+ tagset is None or annotation.tagset.startswith(tagset)
56
+ ):
57
+ annotations_to_return.append(annotation)
58
+ return annotations_to_return
59
+
60
+ def get_tags(
61
+ self, tags: Optional[Iterable[str]] = None, tagset: Optional[str] = None
62
+ ) -> Set[str]:
63
+ """Find all or specified tags in a AnnotationList.
64
+
65
+ Args:
66
+ tags: Parameter to filter for specific tags.
67
+ tagset: Parameter to filter for specific tagset.
68
+
69
+ Returns:
70
+ All or specified tags that occour in the AnnotationList.
71
+
72
+ """
73
+ tags_to_return = set()
74
+ for annotation in self:
75
+ if (tags is None or annotation.tag in tags) and (
76
+ tagset is None or annotation.tagset.startswith(tagset)
77
+ ):
78
+ tags_to_return.add(annotation.tag)
79
+ return tags_to_return
monapipe/config.py ADDED
@@ -0,0 +1,25 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ import os
6
+
7
+ from torch import cuda
8
+
9
+ DATAVERSE = {
10
+ "api_token": "",
11
+ "doi_attribution": "doi:10.25625/2D9CAV&version=1.0",
12
+ "doi_event_classification": "doi:10.25625/0GUOMC&version=1.1",
13
+ "doi_generalizing_passages_identification_bert": "doi:10.25625/2PHXNC&version=1.1",
14
+ "doi_heideltime": "doi:10.25625/SIPQEF&version=1.0",
15
+ "doi_open_multilingual_wordnet": "doi:10.25625/LE57DV&version=1.0",
16
+ "doi_parsing": "doi:10.25625/S2LPJP&version=1.1",
17
+ "doi_reflective_passages_identification_bert": "doi:10.25625/0HXWYG&version=1.1",
18
+ }
19
+
20
+ LOCAL_PATHS = {"germanet": os.path.join(os.path.dirname(__file__), "..", "..", "..", "germanet")}
21
+
22
+ SETTINGS = {
23
+ "spacy_max_length": 12000000,
24
+ "torch_device": ("cuda" if cuda.is_available() else "cpu"),
25
+ }
File without changes
File without changes
@@ -0,0 +1,10 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ AUXILIARY_VERBS = {
6
+ "AUX1": "haben|sein", # perfect aspect
7
+ "AUX2": "sein|werden", # passive voice
8
+ "AUX3": "werden", # future tense
9
+ "AUX4": "sein", # copula
10
+ }
@@ -0,0 +1,450 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ from monapipe.lang.de.auxiliary_verbs import AUXILIARY_VERBS
6
+
7
+ AUX1 = AUXILIARY_VERBS["AUX1"] # perfect aspect
8
+ AUX2 = AUXILIARY_VERBS["AUX2"] # passive voice
9
+ AUX3 = AUXILIARY_VERBS["AUX3"] # future tense
10
+ AUX4 = AUXILIARY_VERBS["AUX4"] # copula
11
+
12
+ INFLECTION_TABLE = [
13
+ (
14
+ [{"VerbForm": "Inf"}, {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"}],
15
+ {
16
+ "VerbForm": "Fin",
17
+ "Tense": "Fut",
18
+ "Aspect": "Imp",
19
+ "Mood": "Ind",
20
+ "Voice": "Act",
21
+ },
22
+ ), # [er] wird sehen
23
+ (
24
+ [
25
+ {"VerbForm": "Part", "Aspect": "Perf"},
26
+ {"lemma": AUX2, "VerbForm": "Inf"},
27
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"},
28
+ ],
29
+ {
30
+ "VerbForm": "Fin",
31
+ "Tense": "Fut",
32
+ "Aspect": "Imp",
33
+ "Mood": "Ind",
34
+ "Voice": "Pass",
35
+ },
36
+ ), # [er] wird gesehen werden/sein
37
+ (
38
+ [{"VerbForm": "Inf"}, {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"}],
39
+ {
40
+ "VerbForm": "Fin",
41
+ "Tense": "Fut",
42
+ "Aspect": "Imp",
43
+ "Mood": "Sub",
44
+ "Voice": "Act",
45
+ },
46
+ ), # [er] werde sehen
47
+ (
48
+ [{"VerbForm": "Inf"}, {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"}],
49
+ {
50
+ "VerbForm": "Fin",
51
+ "Tense": "Fut",
52
+ "Aspect": "Imp",
53
+ "Mood": "Sub",
54
+ "Voice": "Act",
55
+ },
56
+ ), # [er] würde sehen
57
+ (
58
+ [
59
+ {"VerbForm": "Part", "Aspect": "Perf"},
60
+ {"lemma": AUX2, "VerbForm": "Inf"},
61
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"},
62
+ ],
63
+ {
64
+ "VerbForm": "Fin",
65
+ "Tense": "Fut",
66
+ "Aspect": "Imp",
67
+ "Mood": "Sub",
68
+ "Voice": "Pass",
69
+ },
70
+ ), # [er] werde gesehen werden/sein
71
+ (
72
+ [
73
+ {"VerbForm": "Part", "Aspect": "Perf"},
74
+ {"lemma": AUX2, "VerbForm": "Inf"},
75
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"},
76
+ ],
77
+ {
78
+ "VerbForm": "Fin",
79
+ "Tense": "Fut",
80
+ "Aspect": "Imp",
81
+ "Mood": "Sub",
82
+ "Voice": "Pass",
83
+ },
84
+ ), # [er] würde gesehen werden/sein
85
+ (
86
+ [
87
+ {"VerbForm": "Part", "Aspect": "Perf"},
88
+ {"lemma": AUX1, "VerbForm": "Inf"},
89
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"},
90
+ ],
91
+ {
92
+ "VerbForm": "Fin",
93
+ "Tense": "Fut",
94
+ "Aspect": "Perf",
95
+ "Mood": "Ind",
96
+ "Voice": "Act",
97
+ },
98
+ ), # [er] wird gesehen haben
99
+ (
100
+ [
101
+ {"VerbForm": "Part", "Aspect": "Perf"},
102
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
103
+ {"lemma": AUX4, "VerbForm": "Inf"},
104
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"},
105
+ ],
106
+ {
107
+ "VerbForm": "Fin",
108
+ "Tense": "Fut",
109
+ "Aspect": "Perf",
110
+ "Mood": "Ind",
111
+ "Voice": "Pass",
112
+ },
113
+ ), # [er] wird gesehen worden/gewesen sein
114
+ (
115
+ [
116
+ {"VerbForm": "Part", "Aspect": "Perf"},
117
+ {"lemma": AUX1, "VerbForm": "Inf"},
118
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"},
119
+ ],
120
+ {
121
+ "VerbForm": "Fin",
122
+ "Tense": "Fut",
123
+ "Aspect": "Perf",
124
+ "Mood": "Sub",
125
+ "Voice": "Act",
126
+ },
127
+ ), # [er] werde gesehen haben
128
+ (
129
+ [
130
+ {"VerbForm": "Part", "Aspect": "Perf"},
131
+ {"lemma": AUX1, "VerbForm": "Inf"},
132
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"},
133
+ ],
134
+ {
135
+ "VerbForm": "Fin",
136
+ "Tense": "Fut",
137
+ "Aspect": "Perf",
138
+ "Mood": "Sub",
139
+ "Voice": "Act",
140
+ },
141
+ ), # [er] würde gesehen haben
142
+ (
143
+ [
144
+ {"VerbForm": "Part", "Aspect": "Perf"},
145
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
146
+ {"lemma": AUX4, "VerbForm": "Inf"},
147
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"},
148
+ ],
149
+ {
150
+ "VerbForm": "Fin",
151
+ "Tense": "Fut",
152
+ "Aspect": "Perf",
153
+ "Mood": "Sub",
154
+ "Voice": "Pass",
155
+ },
156
+ ), # [er] werde gesehen worden/gewesen sein
157
+ (
158
+ [
159
+ {"VerbForm": "Part", "Aspect": "Perf"},
160
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
161
+ {"lemma": AUX4, "VerbForm": "Inf"},
162
+ {"lemma": AUX3, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"},
163
+ ],
164
+ {
165
+ "VerbForm": "Fin",
166
+ "Tense": "Fut",
167
+ "Aspect": "Perf",
168
+ "Mood": "Sub",
169
+ "Voice": "Pass",
170
+ },
171
+ ), # [er] würde gesehen worden/gewesen sein
172
+ (
173
+ [{"VerbForm": "Fin", "Tense": "Past", "Mood": "Ind"}],
174
+ {
175
+ "VerbForm": "Fin",
176
+ "Tense": "Past",
177
+ "Aspect": "Imp",
178
+ "Mood": "Ind",
179
+ "Voice": "Act",
180
+ },
181
+ ), # [er] sah
182
+ (
183
+ [
184
+ {"VerbForm": "Part", "Aspect": "Perf"},
185
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
186
+ {"lemma": AUX4, "VerbForm": "Fin", "Tense": "Past", "Mood": "Ind"},
187
+ ],
188
+ {
189
+ "VerbForm": "Fin",
190
+ "Tense": "Past",
191
+ "Aspect": "Imp",
192
+ "Mood": "Ind",
193
+ "Voice": "Pass",
194
+ },
195
+ ), # [er] war gesehen worden/gewesen
196
+ (
197
+ [
198
+ {"VerbForm": "Part", "Aspect": "Perf"},
199
+ {"lemma": AUX2, "VerbForm": "Fin", "Tense": "Past", "Mood": "Ind"},
200
+ ],
201
+ {
202
+ "VerbForm": "Fin",
203
+ "Tense": "Past",
204
+ "Aspect": "Imp",
205
+ "Mood": "Ind",
206
+ "Voice": "Pass",
207
+ },
208
+ ), # [er] wurde/war gesehen
209
+ (
210
+ [{"VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"}],
211
+ {
212
+ "VerbForm": "Fin",
213
+ "Tense": "Past",
214
+ "Aspect": "Imp",
215
+ "Mood": "Sub",
216
+ "Voice": "Act",
217
+ },
218
+ ), # [er] sähe
219
+ (
220
+ [
221
+ {"VerbForm": "Part", "Aspect": "Perf"},
222
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
223
+ {"lemma": AUX4, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"},
224
+ ],
225
+ {
226
+ "VerbForm": "Fin",
227
+ "Tense": "Past",
228
+ "Aspect": "Imp",
229
+ "Mood": "Sub",
230
+ "Voice": "Pass",
231
+ },
232
+ ), # [er] wäre gesehen worden/gewesen
233
+ (
234
+ [
235
+ {"VerbForm": "Part", "Aspect": "Perf"},
236
+ {"lemma": AUX2, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"},
237
+ ],
238
+ {
239
+ "VerbForm": "Fin",
240
+ "Tense": "Past",
241
+ "Aspect": "Imp",
242
+ "Mood": "Sub",
243
+ "Voice": "Pass",
244
+ },
245
+ ), # [er] würde/wäre gesehen
246
+ (
247
+ [
248
+ {"VerbForm": "Part", "Aspect": "Perf"},
249
+ {"lemma": AUX1, "VerbForm": "Fin", "Tense": "Past", "Mood": "Ind"},
250
+ ],
251
+ {
252
+ "VerbForm": "Fin",
253
+ "Tense": "Past",
254
+ "Aspect": "Perf",
255
+ "Mood": "Ind",
256
+ "Voice": "Act",
257
+ },
258
+ ), # [er] hatte gesehen
259
+ (
260
+ [
261
+ {"VerbForm": "Part", "Aspect": "Perf"},
262
+ {"lemma": AUX1, "VerbForm": "Fin", "Tense": "Past", "Mood": "Sub"},
263
+ ],
264
+ {
265
+ "VerbForm": "Fin",
266
+ "Tense": "Past",
267
+ "Aspect": "Perf",
268
+ "Mood": "Sub",
269
+ "Voice": "Act",
270
+ },
271
+ ), # [er] hätte gesehen
272
+ (
273
+ [{"VerbForm": "Fin", "Tense": "Pres", "Mood": "Imp"}],
274
+ {
275
+ "VerbForm": "Fin",
276
+ "Tense": "Pres",
277
+ "Aspect": "Imp",
278
+ "Mood": "Imp",
279
+ "Voice": "Act",
280
+ },
281
+ ), # sieh!
282
+ (
283
+ [
284
+ {"VerbForm": "Part", "Aspect": "Perf"},
285
+ {"lemma": AUX2, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Imp"},
286
+ ],
287
+ {
288
+ "VerbForm": "Fin",
289
+ "Tense": "Pres",
290
+ "Aspect": "Imp",
291
+ "Mood": "Imp",
292
+ "Voice": "Pass",
293
+ },
294
+ ), # werde/sei gesehen!
295
+ (
296
+ [{"VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"}],
297
+ {
298
+ "VerbForm": "Fin",
299
+ "Tense": "Pres",
300
+ "Aspect": "Imp",
301
+ "Mood": "Ind",
302
+ "Voice": "Act",
303
+ },
304
+ ), # [er] sieht
305
+ (
306
+ [
307
+ {"VerbForm": "Part", "Aspect": "Perf"},
308
+ {"lemma": AUX1, "VerbForm": "Part", "Aspect": "Perf"},
309
+ {"lemma": AUX4, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"},
310
+ ],
311
+ {
312
+ "VerbForm": "Fin",
313
+ "Tense": "Pres",
314
+ "Aspect": "Imp",
315
+ "Mood": "Ind",
316
+ "Voice": "Pass",
317
+ },
318
+ ), # [er] ist gesehen worden/gewesen
319
+ (
320
+ [
321
+ {"VerbForm": "Part", "Aspect": "Perf"},
322
+ {"lemma": AUX2, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"},
323
+ ],
324
+ {
325
+ "VerbForm": "Fin",
326
+ "Tense": "Pres",
327
+ "Aspect": "Imp",
328
+ "Mood": "Ind",
329
+ "Voice": "Pass",
330
+ },
331
+ ), # [er] wird/ist gesehen
332
+ (
333
+ [{"VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"}],
334
+ {
335
+ "VerbForm": "Fin",
336
+ "Tense": "Pres",
337
+ "Aspect": "Imp",
338
+ "Mood": "Sub",
339
+ "Voice": "Act",
340
+ },
341
+ ), # [er] sehe
342
+ (
343
+ [
344
+ {"VerbForm": "Part", "Aspect": "Perf"},
345
+ {"lemma": AUX1, "VerbForm": "Part", "Aspect": "Perf"},
346
+ {"lemma": AUX4, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"},
347
+ ],
348
+ {
349
+ "VerbForm": "Fin",
350
+ "Tense": "Pres",
351
+ "Aspect": "Imp",
352
+ "Mood": "Sub",
353
+ "Voice": "Pass",
354
+ },
355
+ ), # [er] sei gesehen worden/gewesen
356
+ (
357
+ [
358
+ {"VerbForm": "Part", "Aspect": "Perf"},
359
+ {"lemma": AUX2, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"},
360
+ ],
361
+ {
362
+ "VerbForm": "Fin",
363
+ "Tense": "Pres",
364
+ "Aspect": "Imp",
365
+ "Mood": "Sub",
366
+ "Voice": "Pass",
367
+ },
368
+ ), # [er] werde/sei gesehen
369
+ (
370
+ [
371
+ {"VerbForm": "Part", "Aspect": "Perf"},
372
+ {"lemma": AUX1, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Imp"},
373
+ ],
374
+ {
375
+ "VerbForm": "Fin",
376
+ "Tense": "Pres",
377
+ "Aspect": "Perf",
378
+ "Mood": "Imp",
379
+ "Voice": "Act",
380
+ },
381
+ ), # habe gesehen!
382
+ (
383
+ [
384
+ {"VerbForm": "Part", "Aspect": "Perf"},
385
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
386
+ {"lemma": AUX4, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Imp"},
387
+ ],
388
+ {
389
+ "VerbForm": "Fin",
390
+ "Tense": "Pres",
391
+ "Aspect": "Perf",
392
+ "Mood": "Imp",
393
+ "Voice": "Pass",
394
+ },
395
+ ), # sei gesehen worden/gewesen!
396
+ (
397
+ [
398
+ {"VerbForm": "Part", "Aspect": "Perf"},
399
+ {"lemma": AUX1, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Ind"},
400
+ ],
401
+ {
402
+ "VerbForm": "Fin",
403
+ "Tense": "Pres",
404
+ "Aspect": "Perf",
405
+ "Mood": "Ind",
406
+ "Voice": "Act",
407
+ },
408
+ ), # [er] hat gesehen
409
+ (
410
+ [
411
+ {"VerbForm": "Part", "Aspect": "Perf"},
412
+ {"lemma": AUX1, "VerbForm": "Fin", "Tense": "Pres", "Mood": "Sub"},
413
+ ],
414
+ {
415
+ "VerbForm": "Fin",
416
+ "Tense": "Pres",
417
+ "Aspect": "Perf",
418
+ "Mood": "Sub",
419
+ "Voice": "Act",
420
+ },
421
+ ), # [er] habe gesehen
422
+ (
423
+ [{"VerbForm": "Inf"}],
424
+ {"VerbForm": "Inf", "Aspect": "Imp", "Voice": "Act"},
425
+ ), # (zu) sehen
426
+ (
427
+ [{"VerbForm": "Part", "Aspect": "Perf"}, {"lemma": AUX2, "VerbForm": "Inf"}],
428
+ {"VerbForm": "Inf", "Aspect": "Imp", "Voice": "Pass"},
429
+ ), # gesehen (zu) werden/sein
430
+ (
431
+ [
432
+ {"VerbForm": "Part", "Aspect": "Perf"},
433
+ {"lemma": AUX2, "VerbForm": "Part", "Aspect": "Perf"},
434
+ {"lemma": AUX4, "VerbForm": "Inf"},
435
+ ],
436
+ {"VerbForm": "Inf", "Aspect": "Imp", "Voice": "Pass"},
437
+ ), # gesehen worden/gewesen (zu) sein
438
+ (
439
+ [{"VerbForm": "Part", "Aspect": "Perf"}, {"lemma": AUX1, "VerbForm": "Inf"}],
440
+ {"VerbForm": "Inf", "Aspect": "Perf", "Voice": "Act"},
441
+ ), # gesehen (zu) haben
442
+ (
443
+ [{"VerbForm": "Part", "Aspect": "Imp"}],
444
+ {"VerbForm": "Part", "Tense": "Pres", "Aspect": "Imp"},
445
+ ), # sehend
446
+ (
447
+ [{"VerbForm": "Part", "Aspect": "Perf"}],
448
+ {"VerbForm": "Part", "Tense": "Past", "Aspect": "Perf"},
449
+ ), # gesehen
450
+ ]
@@ -0,0 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ MODAL_VERBS = set(["dürfen", "können", "mögen", "müssen", "sollen", "wollen"])
@@ -0,0 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ QUOTATION_MARKS = [["„", "»", '"'], ["“", "«", '"']]
@@ -0,0 +1,7 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ SEMI_MODAL_VERBS = set(
6
+ ["drohen", "lassen", "pflegen", "scheinen", "vermögen", "versprechen", "wissen"]
7
+ )
@@ -0,0 +1,30 @@
1
+ # SPDX-FileCopyrightText: 2022 Georg-August-Universität Göttingen
2
+ #
3
+ # SPDX-License-Identifier: CC0-1.0
4
+
5
+ SPEECH_VERBS = set(
6
+ [
7
+ "antworten",
8
+ "äußern",
9
+ "blaffen",
10
+ "brüllen",
11
+ "denken",
12
+ "erwidern",
13
+ "erzählen",
14
+ "flüstern",
15
+ "fragen",
16
+ "glauben",
17
+ "meinen",
18
+ "mutmaßen",
19
+ "reden",
20
+ "rufen",
21
+ "sagen",
22
+ "schreien",
23
+ "seufzen",
24
+ "singen",
25
+ "sprechen",
26
+ "vermuten",
27
+ "weinen",
28
+ "wispern",
29
+ ]
30
+ )