diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..6e8d94e9e47a20e61ca17048b0421a22ee55dfac --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM python:3.9 +WORKDIR /app +ADD . /app +RUN mkdir /nltk_data +RUN mkdir /.allennlp +RUN mkdir /.cache +RUN mkdir /.local +RUN chmod -R 777 /nltk_data +RUN chmod -R 777 /.allennlp +RUN chmod -R 777 /.cache +RUN chmod -R 777 /.local +RUN pip install -v -r requirements.combined.txt +CMD ["sh", "docker_commands.sh"] diff --git a/app.py b/app.py deleted file mode 100644 index 0a002251bbcd03a57ad379ed932e4898cb2e21b4..0000000000000000000000000000000000000000 --- a/app.py +++ /dev/null @@ -1,4 +0,0 @@ -import os -from gradio_client import Client - -client = Client("responsibility-framing/sociofillmore", hf_token=os.getenv("HF_TOKEN")) \ No newline at end of file diff --git a/docker_commands.sh b/docker_commands.sh new file mode 100644 index 0000000000000000000000000000000000000000..c34405c27b7f1e59d4f6c2a7563aa920cb21dd8e --- /dev/null +++ b/docker_commands.sh @@ -0,0 +1,8 @@ +# cd spanfinder/ +# python -m sociolome.lome_webserver & +# cd .. +git clone https://gossminn:$HF_TOKEN@huggingface.co/datasets/responsibility-framing/sociofillmore-datasets +cp -r sociofillmore-datasets/data . +cp -r sociofillmore-datasets/output . + +python -m sociofillmore.webapp.app 0.0.0.0 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/resources/RAI_sources_mr.xlsx b/resources/RAI_sources_mr.xlsx new file mode 100755 index 0000000000000000000000000000000000000000..dd31fb89518e8d6857f2f077e68f698b7235bf6f Binary files /dev/null and b/resources/RAI_sources_mr.xlsx differ diff --git a/resources/active_frames_full.csv b/resources/active_frames_full.csv new file mode 100644 index 0000000000000000000000000000000000000000..3e763f0e4b7e7825f7b2d03c4404009a83ef9036 --- /dev/null +++ b/resources/active_frames_full.csv @@ -0,0 +1,1229 @@ +frame,active,notes +Abandonment,TRUE, +Abounding_with,FALSE, +Absorb_heat,FALSE, +Abundance,FALSE, +Abusing,TRUE, +Access_scenario,FALSE, +Accompaniment,FALSE, +Accomplishment,TRUE, +Accoutrements,FALSE, +Accuracy,FALSE, +Achieving_first,TRUE, +Active_substance,TRUE, +Activity,TRUE, +Activity_abandoned_state,TRUE, +Activity_done_state,TRUE, +Activity_finish,TRUE, +Activity_ongoing,TRUE, +Activity_pause,TRUE, +Activity_paused_state,TRUE, +Activity_prepare,TRUE, +Activity_ready_state,FALSE, +Activity_resume,TRUE, +Activity_start,TRUE, +Activity_stop,TRUE, +Actually_occurring_entity,FALSE, +Addiction,FALSE, +Adding_up,TRUE, +Adducing,TRUE, +Adjacency,FALSE, +Adjusting,TRUE, +Adopt_selection,TRUE, +Aesthetics,FALSE, +Affirm_or_deny,TRUE, +Age,FALSE, +Aggregate,FALSE, +Aging,FALSE, +Agree_or_refuse_to_act,TRUE, +Agriculture,TRUE, +Aiming,TRUE, +Alignment_image_schema,FALSE, +Alliance,FALSE, +Alternatives,FALSE, +Alternativity,FALSE, +Amalgamation,FALSE, +Amassing,TRUE,"according to def, Recipient arg ‘sometimes agentive’, but from EN examples seems unergative" +Ambient_temperature,FALSE, +Ammunition,FALSE, +Amounting_to,FALSE, +Animals,FALSE, +Annoyance,FALSE, +Appeal,TRUE, +Appellations,FALSE, +Apply_heat,TRUE, +Appointing,TRUE, +Architectural_part,FALSE, +Arithmetic,FALSE, +Arithmetic_commutative,FALSE, +Arithmetic_non-commutative,FALSE, +Armor,FALSE, +Arraignment,FALSE, +Arranging,TRUE, +Arrest,TRUE, +Arriving,FALSE, +Arson,TRUE, +Artifact,FALSE, +Artifact_subpart,FALSE, +Artificiality,FALSE, +Artistic_style,FALSE, +Assemble,TRUE, +Assessing,TRUE, +Assigned_location,FALSE, +Assistance,TRUE, +Asymmetric_reciprocality,TRUE, +Atonement,TRUE, +Attaching,TRUE, +Attack,TRUE, +Attempt,TRUE, +Attempt_action_scenario,FALSE, +Attempt_distant_interaction_scenario,FALSE, +Attempt_means,TRUE, +Attempt_obtain_food_scenario,FALSE, +Attempt_obtain_mineral_scenario,FALSE, +Attempt_suasion,TRUE, +Attempting_and_resolving_scenario,FALSE, +Attending,TRUE, +Attention,TRUE, +Attention_getting,FALSE, +Attitude_description,FALSE, +Attributed_information,FALSE, +Attributes,FALSE, +Authority,TRUE, +Avoiding,TRUE, +Awareness,TRUE, +Awareness_change_scenario,FALSE, +Awareness_situation,FALSE, +Awareness_status,FALSE, +Bail_decision,TRUE, +Basis_for_attribute,FALSE, +Be_in_agreement_on_action,TRUE, +Be_in_agreement_on_assessment,TRUE, +Be_on_alert,FALSE, +Be_subset_of,FALSE, +Be_translation_equivalent,FALSE, +Bearing_arms,TRUE, +Beat_opponent,TRUE, +Becoming,FALSE, +Becoming_a_member,TRUE, +Becoming_attached,FALSE, +Becoming_aware,TRUE, +Becoming_detached,FALSE, +Becoming_dry,FALSE, +Becoming_separated,FALSE, +Becoming_silent,TRUE, +Becoming_visible,FALSE, +Behind_the_scenes,TRUE, +Being_active,TRUE, +Being_at_risk,FALSE, +Being_attached,FALSE, +Being_awake,TRUE, +Being_born,FALSE, +Being_contained_within,FALSE, +Being_detached,FALSE, +Being_dry,FALSE, +Being_employed,TRUE, +Being_in_captivity,FALSE, +Being_in_category,FALSE, +Being_in_control,TRUE, +Being_in_effect,FALSE, +Being_in_operation,TRUE, +Being_incarcerated,TRUE,e.g. ‘serve time’ +Being_included,FALSE, +Being_located,TRUE,e.g. ‘sit on’ +Being_named,FALSE, +Being_necessary,FALSE, +Being_obligated,FALSE, +Being_obligatory,FALSE,"? only verb ‘behoove’, not sure about properties" +Being_operational,TRUE,"e.g. ‘works, is working’" +Being_pregnant,FALSE, +Being_questionable,FALSE, +Being_relevant,FALSE,"? ‘pertain ‘seems ergative syntactically, but not sure" +Being_rotted,FALSE, +Being_up_to_it,FALSE, +Being_wet,FALSE, +Besieging,TRUE, +Beyond_compare,FALSE, +Billing,TRUE, +Biological_area,FALSE, +Biological_classification,FALSE, +Biological_entity,FALSE, +Biological_mechanisms,TRUE, +Biological_urge,FALSE, +Birth_scenario,FALSE, +Board_vehicle,TRUE, +Body_decoration,FALSE, +Body_description_holistic,FALSE, +Body_description_part,FALSE, +Body_mark,FALSE, +Body_movement,TRUE, +Body_parts,FALSE, +Bond_maturation,TRUE, +Borrowing,TRUE, +Boundary,FALSE, +Bounded_entity,FALSE, +Bounded_region,FALSE, +Bragging,TRUE, +Breaking_apart,FALSE, +Breaking_off,FALSE, +Breaking_out_captive,TRUE, +Breathing,TRUE, +Bringing,TRUE, +Building,TRUE, +Building_subparts,FALSE, +Buildings,FALSE, +Bungling,TRUE, +Burying,TRUE, +Business_closure,TRUE,'founder’ seems ambiguous (?foundered efforts? foundered business?) but ‘close doors’ is clearly unergative +Businesses,FALSE, +Cache,FALSE, +Calendric_unit,FALSE, +Candidness,FALSE, +Capability,TRUE, +Capacity,FALSE,verbs difficult to judge (e.g. ‘a stadium seats’ ??) +Capital_stock,FALSE, +Cardinal_numbers,FALSE, +Carry_goods,TRUE, +Catastrophe,TRUE, +Catching_fire,FALSE, +Categorization,TRUE, +Causation,TRUE, +Causation_scenario,TRUE, +Cause_benefit_or_detriment,TRUE, +Cause_bodily_experience,TRUE, +Cause_change,TRUE, +Cause_change_of_consistency,TRUE, +Cause_change_of_phase,TRUE, +Cause_change_of_position_on_a_scale,TRUE, +Cause_change_of_strength,TRUE, +Cause_emotion,TRUE, +Cause_expansion,TRUE, +Cause_fluidic_motion,TRUE, +Cause_harm,TRUE, +Cause_impact,TRUE, +Cause_motion,TRUE, +Cause_proliferation_in_number,TRUE, +Cause_temperature_change,TRUE, +Cause_to_amalgamate,TRUE, +Cause_to_be_dry,TRUE, +Cause_to_be_included,TRUE, +Cause_to_be_sharp,TRUE, +Cause_to_be_wet,TRUE, +Cause_to_burn,TRUE, +Cause_to_continue,TRUE, +Cause_to_end,TRUE, +Cause_to_experience,TRUE, +Cause_to_fragment,TRUE, +Cause_to_land,TRUE, +Cause_to_make_noise,TRUE, +Cause_to_make_progress,TRUE, +Cause_to_move_in_place,TRUE, +Cause_to_perceive,TRUE, +Cause_to_resume,TRUE, +Cause_to_rot,TRUE, +Cause_to_start,TRUE, +Cause_to_wake,TRUE, +Ceasing_to_be,FALSE, +Certainty,TRUE, +Change_accessibility,TRUE, +Change_direction,TRUE,"1st FE is called Theme, but verbs (‘turn’) pass test" +Change_event_duration,TRUE, +Change_event_time,TRUE, +Change_of_consistency,FALSE, +Change_of_leadership,TRUE,Selector is not 1st FE but seems to be the subj of all of the verbs in the frame +Change_of_phase,FALSE,'the lake froze’ → ‘the frozen lake’ => unaccusative +Change_of_phase_scenario,FALSE, +Change_of_quantity_of_possession,TRUE, +Change_of_temperature,FALSE, +Change_operational_state,TRUE, +Change_position_on_a_scale,FALSE, +Change_post-state,FALSE, +Change_posture,TRUE, +Change_resistance,TRUE, +Change_tool,TRUE, +Chaos,FALSE, +Chatting,TRUE, +Chemical-sense_description,TRUE, +Chemical_potency,FALSE, +Choosing,TRUE, +Circumscribed_existence,FALSE, +Citing,TRUE, +Claim_ownership,TRUE, +Clemency,FALSE,no verbs but describes active event +Closure,TRUE, +Clothing,FALSE, +Clothing_parts,FALSE, +Co-association,FALSE, +Cogitation,TRUE, +Cognitive_connection,TRUE, +Coincidence,FALSE, +Collaboration,TRUE, +Collocation_image_schema,FALSE, +Colonization,TRUE, +Color,FALSE, +Color_qualities,FALSE, +Come_down_with,TRUE, +Come_into_effect,FALSE,"not sure, ‘terms and conditions apply’ → ‘the applied terms and conditions’?" +Come_together,TRUE, +Coming_to_be,FALSE, +Coming_to_believe,TRUE, +Coming_up_with,TRUE, +Commemorative,FALSE, +Commerce_buy,TRUE, +Commerce_collect,TRUE, +Commerce_goods-transfer,TRUE, +Commerce_money-transfer,TRUE, +Commerce_pay,TRUE, +Commerce_scenario,TRUE, +Commerce_sell,TRUE, +Commercial_transaction,TRUE, +Commitment,TRUE, +Committing_crime,TRUE, +Commonality,FALSE, +Communicate_categorization,TRUE, +Communication,TRUE, +Communication_manner,TRUE, +Communication_means,TRUE, +Communication_noise,TRUE, +Communication_response,TRUE, +Commutation,TRUE, +Commutative_process,TRUE,"hard to judge, no examples" +Commutative_statement,FALSE, +Compatibility,FALSE,"Difficult, but it’s 'rhyming words’ not ‘rhymed words’; ‘matched’/’matching’ both possible but ‘matched’ implies an agent (probably a different frame)" +Competition,TRUE, +Complaining,TRUE, +Completeness,FALSE, +Compliance,TRUE,e.g. ‘obey’ +Concessive,FALSE, +Condition_symptom_relation,TRUE, +Conditional_occurrence,FALSE, +Conditional_scenario,FALSE, +Conduct,TRUE, +Confronting_problem,TRUE, +Connecting_architecture,FALSE, +Connectors,FALSE, +Conquering,TRUE, +Contact_image_schema,FALSE, +Contacting,TRUE, +Container_focused_placing,TRUE, +Container_focused_removing,TRUE, +Containers,FALSE, +Containing,TRUE, +Containment_scenario,FALSE, +Contingency,TRUE, +Continued_state_of_affairs,FALSE, +Contrary_circumstances,FALSE, +Contrition,TRUE, +Control,TRUE, +Controller_object,FALSE, +Convey_importance,TRUE, +Convoy,FALSE, +Cooking_creation,TRUE, +Corporal_punishment,TRUE, +Correctness,FALSE, +Corroding,FALSE, +Corroding_caused,TRUE, +Cotheme,TRUE,"1st FE is called Theme, but verbs (e.g. ‘follow’) seem agentive" +Counterattack,TRUE, +Court_examination,TRUE, +Craft,FALSE, +Create_physical_artwork,TRUE, +Create_representation,TRUE, +Creating,TRUE, +Crime_scenario,FALSE, +Criminal_investigation,TRUE, +Criminal_process,FALSE, +Cure,TRUE, +Custom,FALSE, +Cutting,TRUE, +Cycle_of_existence_scenario,FALSE, +Cycle_of_life_and_death,FALSE, +Damaging,TRUE, +Daring,TRUE, +Dead_or_alive,FALSE, +Death,FALSE, +Deception_end,TRUE, +Deception_scenario,FALSE, +Deception_success,TRUE, +Deciding,TRUE, +Defending,TRUE, +Degree,FALSE, +Degree_of_processing,FALSE, +Delimitation_of_diversity,FALSE, +Delimited_state_scenario,FALSE, +Delivery,TRUE, +Deny_or_grant_permission,TRUE, +Departing,TRUE,Directional movement verbs +Deserving,TRUE,"verbs don’t seem to be able to be used intransitively, but seem ‘active-like’ (e.g. ‘justify’)" +Desirability,TRUE,? e.g. ‘the movie rocks/sucks’ (metaphorical but derives from active verb?) +Desirable_event,TRUE, +Desiring,TRUE, +Destiny,FALSE, +Destroying,TRUE, +Detaching,TRUE, +Detaining,TRUE, +Detonate_explosive,TRUE, +Differentiation,TRUE, +Difficulty,FALSE, +Dimension,FALSE,"only one verb (‘measure’), cannot be intransitive" +Direction,FALSE, +Directional_locative_relation,FALSE, +Disaster_scenario,FALSE, +Discussion,TRUE, +Disembarking,TRUE,Directional movement verbs +Disgraceful_situation,FALSE, +Dispersal,TRUE, +Distance_scenario,FALSE, +Distant_operated_IED,FALSE, +Distinctiveness,TRUE,'characterize’ +Distributed_abundanced,FALSE, +Distributed_position,TRUE,?? not sure any of the verbs can ever be intransitive +Diversity,FALSE, +Documents,FALSE, +Dodging,TRUE, +Domain,FALSE, +Dominate_competitor,TRUE, +Dominate_situation,TRUE, +Domination,TRUE, +Dough_rising,FALSE, +Downing,TRUE, +Dressing,TRUE, +Drop_in_on,TRUE, +Dunking,TRUE, +Duplication,TRUE, +Duration_description,FALSE, +Duration_relation,FALSE,'it lasted’ → *’the lasted thing’ (but ??’the persisted thing’) +Duration_scenario,FALSE, +Dying,FALSE, +Dynamic_situation_scenario,FALSE, +Dynamism,FALSE, +Earnings_and_losses,TRUE, +Eclipse,TRUE, +Economy,FALSE, +Education_teaching,TRUE, +Electricity,FALSE, +Elusive_goal,FALSE, +Emanating,FALSE, +Emergency,FALSE, +Emergency_fire,FALSE, +Emitting,TRUE, +Emotion_directed,TRUE, +Emotion_heat,TRUE, +Emotions,FALSE, +Emotions_by_possibility,FALSE, +Emotions_by_stimulus,FALSE, +Emotions_of_mental_activity,TRUE, +Emotions_success_or_failure,FALSE,Contains no verbs but theoretically possible that it would? +Emphasizing,TRUE, +Employee_scenario,FALSE, +Employer_scenario,FALSE, +Employing,TRUE, +Employment_continue,FALSE, +Employment_end,FALSE, +Employment_scenario,FALSE, +Employment_start,FALSE, +Emptying,TRUE, +Encoding,TRUE, +Encounter,TRUE, +Endangering,TRUE, +Endeavor_failure,FALSE, +Enforcing,TRUE, +Enter_awareness,TRUE, +Entering_of_plea,TRUE,? +Entity,FALSE, +Entourage,FALSE, +Erasing,TRUE, +Escaping,TRUE, +Estimated_value,FALSE, +Estimating,TRUE, +Evading,TRUE, +Evaluative_comparison,TRUE, +Event,FALSE, +Event_endstate,FALSE, +Event_initial_state,FALSE, +Event_instance,FALSE, +Eventive_affecting,FALSE, +Eventive_cognizer_affecting,TRUE, +Evidence,TRUE, +Evoking,TRUE, +Examination,TRUE, +Exchange,TRUE, +Exchange_currency,TRUE, +Exclude_member,TRUE, +Excreting,TRUE, +Execute_plan,TRUE, +Execution,TRUE, +Exemplar,FALSE, +Exemplariness,FALSE, +Exercising,TRUE, +Existence,FALSE, +Expansion,FALSE, +Expectation,TRUE, +Expected_location_of_person,FALSE, +Expend_resource,TRUE, +Expensiveness,TRUE, +Experience_bodily_harm,FALSE,syntactically ambiguous? ‘I broke my leg’ / ‘mi sono rotto la gamba’ / ‘je me suis cassé la jambe’ → not sure how to classify this construction in romance languages? +Experiencer_focused_emotion,TRUE, +Experimentation,TRUE, +Expertise,TRUE, +Explaining_the_facts,TRUE, +Explosion,FALSE, +Exporting,TRUE, +Expressing_publicly,TRUE, +Extradition,TRUE, +Extreme_point,FALSE, +Extreme_value,FALSE, +Facial_expression,FALSE, +Fairness_evaluation,FALSE, +Fall_asleep,FALSE, +Fall_for,TRUE,"'buy’, ‘swallow’ seem clear transitive, ‘fall for’ could maybe be unaccusative??" +Fame,TRUE, +Familiarity,TRUE, +Fastener,FALSE, +Fear,TRUE, +Feeling,TRUE, +Feigning,TRUE, +Fields,FALSE, +Fighting_activity,FALSE, +Filling,TRUE, +Fining,TRUE, +Finish_competition,TRUE, +Finish_game,TRUE, +Fire_break,FALSE, +Fire_burning,TRUE, +Fire_emergency_scenario,FALSE, +Fire_end_scenario,FALSE, +Fire_going_out,FALSE, +Fire_stopping_scenario,FALSE, +Firefighting,TRUE, +Firing,TRUE, +Firing_point,FALSE, +First_experience,FALSE, +First_rank,FALSE, +Fleeing,TRUE, +Fluidic_motion,TRUE, +Food,FALSE, +Food_gathering,TRUE, +Foreign_or_domestic_country,FALSE, +Forging,TRUE, +Forgiveness,TRUE, +Forgoing,TRUE, +Forming_relationships,TRUE, +Fragmentation_scenario,FALSE, +Freeing_from_confinement,TRUE, +Frequency,FALSE, +Friction,TRUE,"difficult, but “Theme exterts pressure and experiences resistance” could be interpreted as somehow (quasi-)agentive" +Friendly_or_hostile,FALSE, +Front_for,TRUE,(front.v ?) +Frugality,TRUE, +Fugitive,FALSE, +Fullness,FALSE, +Function,TRUE,"difficult: inanimate theme, but “exists to perform Activity” so perhaps (metaphorically) can be seen as active?" +Funding,TRUE, +Gathering_up,TRUE, +Gesture,TRUE, +Get_a_job,TRUE, +Getting,TRUE,"somewhat difficult: most verbs (obtain, acquire, procure) imply active action, but the definition of the frame and verbs like “get” can be seen as passive. + +Interesting: in Dutch there is “verkrijgen” (obtain) vs. “krijgen” (get) were this distinction is encoded morphologically" +Getting_scenario,FALSE, +Getting_triggered,FALSE, +Getting_underway,TRUE, +Getting_up,TRUE, +Getting_vehicle_underway,TRUE, +Give_impression,TRUE,not sure but these all seem (semantically) causative somehow? e.g. “smell good” ~= “cause pleasant taste perception”? +Giving,TRUE, +Giving_birth,TRUE, +Giving_in,TRUE, +Giving_scenario,FALSE, +Gizmo,FALSE, +Go_into_shape,FALSE,"per description “Theme goed into a shape without being made to do so by an agent”, but does that make it agentive?" +Goal,FALSE, +Going_back_on_a_commitment,TRUE, +Government_institution,FALSE, +Gradable_artistic_quality,FALSE, +Gradable_attributes,FALSE, +Gradable_proximity,FALSE, +Graph_shape,FALSE, +Grasp,TRUE, +Grinding,TRUE, +Grooming,TRUE, +Ground_up,FALSE, +Growing_food,TRUE, +Guest_and_host,FALSE, +Guilt_or_innocence,FALSE, +Gusto,FALSE, +Hair_configuration,FALSE, +Halt,TRUE,"motion verbs (‘has stopped’ etc) + +'stop’ seems to imply agent? ‘the cyclist stopped’, ‘the train stopped’ (metaphorical?), but ??the falling rock stopped (?)" +Have_as_requirement,TRUE,"metaphorical use of demand, require, take?" +Have_as_translation_equivalent,FALSE, +Have_associated,FALSE,metaphorical use of have? +Have_visitor_over,FALSE, +Having_commercial_agreement,FALSE, +Having_or_lacking_access,FALSE,"verb ‘access’ is agentive but seems to be misclassified in this frame (it means to enter, not to have access)" +Health_response,FALSE, +Hearsay,TRUE, +Heat_potential,FALSE, +Hedging,FALSE, +Heralding,TRUE, +Hiding_objects,TRUE, +Hindering,TRUE, +Hiring,TRUE, +Historic_event,FALSE, +History,FALSE, +History_scenario,FALSE, +Hit_or_miss,TRUE, +Hit_target,TRUE, +Holding_off_on,TRUE, +Hospitality,FALSE, +Hostile_encounter,TRUE, +Hunting,TRUE, +Hunting_scenario,FALSE, +Hunting_success_or_failure,TRUE, +Identicality,FALSE, +Identity,FALSE, +Identity_scenario,FALSE, +Idiosyncrasy,FALSE, +Image_schema,FALSE, +Imitating,TRUE, +Immobilization,TRUE, +Impact,TRUE, +Import_export_scenario,TRUE, +Importance,TRUE, +Importing,TRUE, +Imposing_obligation,TRUE, +Impression,FALSE, +Imprisonment,TRUE, +Improvement_or_decline,FALSE, +Improvised_explosive_device,FALSE, +Inclination,FALSE, +Inclusion,TRUE, +Inclusion_scenario,FALSE, +Increment,FALSE, +Indicating,TRUE, +Indigenous_origin,FALSE, +Individual_history,FALSE, +Ineffability,FALSE, +Infecting,TRUE, +Influencing_potential,FALSE, +Information,FALSE, +Information_display,FALSE, +Infrastructure,FALSE, +Ingest_substance,TRUE, +Ingestion,TRUE, +Ingredients,FALSE, +Inherent_purpose,FALSE, +Inhibit_motion_scenario,FALSE, +Inhibit_movement,TRUE, +Inspecting,TRUE, +Installing,TRUE, +Instance,FALSE, +Institutionalization,TRUE, +Institutions,FALSE, +Intentional_deception,TRUE, +Intentional_traversing,TRUE, +Intentionally_act,TRUE, +Intentionally_affect,TRUE, +Intentionally_create,TRUE, +Intercepting,TRUE, +Interior_profile_relation,FALSE, +Interrupt_process,TRUE, +Intoxicants,FALSE, +Intoxication,FALSE, +Invading,TRUE, +Invasion_scenario,FALSE, +Irregular_combatants,FALSE, +Isolated_places,FALSE, +Judgment,TRUE, +Judgment_communication,TRUE, +Judgment_direct_address,TRUE, +Judgment_of_intensity,FALSE, +Judicial_body,FALSE, +Jury_deliberation,TRUE, +Just_found_out,FALSE, +Justifying,TRUE, +Key,FALSE, +Kidnapping,TRUE, +Killing,TRUE, +Kinship,FALSE, +Knot_creation,TRUE, +Knot_creation_scenario,FALSE, +Labeling,TRUE, +Labor_product,FALSE, +Launch_process,TRUE, +Law,FALSE, +Law_enforcement_agency,FALSE, +Leadership,TRUE, +Leaving_traces,FALSE, +Left_to_do,FALSE, +Legal_rulings,TRUE, +Legality,FALSE, +Lending,TRUE, +Level_of_force_exertion,FALSE, +Level_of_force_resistance,FALSE, +Level_of_light,FALSE, +Light_movement,TRUE,metaphorical +Likelihood,FALSE, +Limitation,FALSE, +Limiting,TRUE, +Linguistic_meaning,TRUE,? metaphorical active? +Lively_place,TRUE,? ‘the park buzzes’ can be seen as metaphorically active? +Living_conditions,FALSE, +Locale,FALSE, +Locale_by_characteristic_entity,FALSE, +Locale_by_collocation,FALSE, +Locale_by_event,FALSE, +Locale_by_ownership,FALSE, +Locale_by_use,FALSE, +Locale_closure,FALSE, +Locating,TRUE, +Location_in_time,FALSE, +Location_of_light,FALSE,seems anticausative of Light_movement? +Location_on_path,FALSE, +Locative_relation,TRUE, +Locative_scenario,FALSE, +Lodging_scenario,FALSE, +Lose_possession,FALSE, +Lose_possession_scenario,FALSE, +Losing,TRUE,'losing sth’ could be both passive or active; in Dutch “heb verloren/ben verloren” both possible (sensitive to the contrast?) +Losing_it,TRUE, +Losing_someone,TRUE, +Losing_track_of,FALSE, +Losing_track_of_perceiver,TRUE, +Losing_track_of_theme,TRUE, +Luck,FALSE, +Make_acquaintance,TRUE, +Make_agreement_on_action,TRUE, +Make_cognitive_connection,TRUE, +Make_compromise,TRUE, +Make_noise,TRUE, +Making_arrangements,TRUE, +Making_faces,TRUE, +Manipulate_into_doing,TRUE, +Manipulate_into_shape,TRUE, +Manipulation,TRUE, +Manner,FALSE, +Manner_of_life,TRUE, +Manufacturing,TRUE, +Margin_of_resolution,FALSE, +Mass_motion,FALSE,? +Mathematical_relationship,FALSE, +Means,FALSE, +Measurable_attributes,FALSE, +Measure_area,FALSE, +Measure_by_action,FALSE, +Measure_duration,FALSE, +Measure_mass,FALSE, +Measure_of_distance_and_length,FALSE, +Measure_scenario,FALSE, +Measure_volume,FALSE, +Measures,FALSE, +Medical_conditions,FALSE, +Medical_instruments,FALSE, +Medical_interaction_scenario,FALSE, +Medical_intervention,TRUE, +Medical_professionals,FALSE, +Medical_specialties,FALSE, +Medium,FALSE, +Meet_specifications,TRUE, +Meet_with,TRUE, +Meet_with_response,TRUE,? ‘meet with critizism’ ~= elicit critizism? +Member_of_military,FALSE, +Membership,FALSE,? belong +Memorization,TRUE, +Memory,TRUE, +Mental_activity,FALSE, +Mental_property,FALSE, +Mental_stimulus_exp_focus,FALSE, +Mental_stimulus_stimulus_focus,FALSE, +Mention,TRUE, +Military,FALSE, +Military_operation,TRUE, +Mining,TRUE, +Misdeed,TRUE, +Money,FALSE, +Morality_evaluation,FALSE, +Motion,FALSE,"? this frame is meant to have the non-active versions of the motion verbs (as opposed to Self_motion, Operate_vehicle etc), but in practice it seems many examples are actually active" +Motion_directional,FALSE,? +Motion_noise,FALSE,? +Motion_scenario,FALSE, +Moving_in_place,FALSE,? +Name_conferral,TRUE, +Namesake,FALSE, +Natural_features,FALSE, +Needing,TRUE, +Negation,FALSE, +Negative_conditional,FALSE, +Network,FALSE, +Noise_makers,FALSE, +Non-commutative_process,TRUE,active when Calculator (non-core) is present; there are no examples so not clear how often this is the case +Non-commutative_statement,FALSE, +Non-gradable_proximity,FALSE, +Noncombatant,FALSE, +Notability,FALSE, +Notification_of_charges,TRUE, +Nuclear_process,FALSE, +Objective_influence,TRUE, +Obligation_scenario,FALSE, +Obscurity,FALSE, +Obviousness,FALSE, +Occupy_rank,FALSE,'he ranks second’ ~= ‘he is ranked second’ +Offenses,FALSE, +Offering,TRUE, +Offshoot,FALSE, +Omen,TRUE,Predictive_phenomenon (quasi-actively) provides cues for something +Ontogeny,FALSE, +Openness,FALSE, +Operate_vehicle,TRUE, +Operate_vehicle_scenario,FALSE, +Operating_a_system,TRUE, +Operational_testing,TRUE, +Opinion,TRUE, +Opportunity,FALSE, +Optical_image,FALSE, +Ordinal_numbers,FALSE, +Organization,FALSE, +Origin,FALSE, +Others_situation_as_stimulus,TRUE, +Out_of_existence,FALSE, +Pardon,TRUE, +Part_edge,FALSE, +Part_inner_outer,FALSE, +Part_ordered_segments,FALSE, +Part_orientational,FALSE, +Part_piece,FALSE, +Part_whole,FALSE, +Partiality,TRUE, +Participation,TRUE, +Partitive,FALSE, +Passing,TRUE, +Passing_off,TRUE, +Path_shape,FALSE,? are syntactically unergative +Path_traveled,FALSE, +Patrolling,TRUE, +Pattern,FALSE, +People,FALSE, +People_along_political_spectrum,FALSE, +People_by_age,FALSE, +People_by_jurisdiction,FALSE, +People_by_military_specialty,FALSE, +People_by_morality,FALSE, +People_by_origin,FALSE, +People_by_religion,FALSE, +People_by_residence,FALSE, +People_by_vocation,FALSE, +Perception,FALSE, +Perception_active,TRUE, +Perception_body,TRUE,? 'my head hurts’ → ‘my head causes pain sensation’ (?) +Perception_experience,TRUE,"? these are ‘passive experience’ verbs, but syntactically active/unergative; you can argue this kind of perception still implies active processing on the part of the experiencer" +Performers,FALSE, +Performers_and_roles,TRUE,"'feature.v’ is an odd one because agent/patient are reversed (NB only one annotated example, Fes seem not correct)" +Performing_arts,FALSE, +Personal_relationship,TRUE,"Mostly nouns/adj, but verbs 'sleep with’, ‘befriend’ are active" +Personal_success,TRUE, +Physical_artworks,FALSE, +Physical_entity,FALSE, +Piracy,TRUE, +Placing,TRUE, +Placing_scenario,FALSE, +Planned_trajectory,FALSE, +Planting,TRUE, +Plants,FALSE, +Point_of_dispute,FALSE, +Political_actions,TRUE, +Political_locales,FALSE, +Popularity,FALSE, +Posing_as,TRUE, +Position_on_a_scale,FALSE, +Possession,TRUE,? owning as action? +Possibility,FALSE, +Post_getting,FALSE, +Post_giving,FALSE, +Post_lose_possession,FALSE, +Post_receiving,FALSE, +Post_transfer,FALSE, +Posture,TRUE, +Practice,TRUE, +Praiseworthiness,FALSE, +Prank,FALSE, +Pre_getting,FALSE, +Pre_giving,FALSE, +Pre_lose_possession,FALSE, +Pre_receiving,FALSE, +Pre_transfer,FALSE, +Precariousness,TRUE,only verb teeter.v +Precipitation,FALSE, +Predicament,FALSE, +Predicting,TRUE, +Preference,TRUE, +Preferred_alternative_scenario,FALSE, +Preliminaries,FALSE, +Presence,FALSE, +Presentation_of_mitigation,FALSE, +Preserving,TRUE, +Prevarication,TRUE, +Prevent_or_allow_possession,TRUE, +Preventing_or_letting,TRUE, +Price_per_unit,FALSE, +Prison,FALSE, +Probability,FALSE, +Process,FALSE, +Process_completed_state,FALSE, +Process_continue,FALSE, +Process_end,FALSE, +Process_initial_state,FALSE, +Process_pause,FALSE, +Process_resume,FALSE, +Process_start,FALSE, +Process_stop,FALSE, +Process_stopped_state,FALSE, +Process_uncompleted_state,FALSE, +Processing_materials,TRUE, +Procreative_sex,TRUE, +Product_delivery,FALSE, +Product_development,TRUE, +Product_development_scenario,FALSE, +Product_line,FALSE, +Progression,FALSE, +Prohibiting_or_licensing,TRUE, +Project,FALSE, +Proliferating_in_number,FALSE, +Prominence,FALSE, +Proper_reference,FALSE, +Proportion,FALSE, +Proportional_quantity,FALSE, +Protecting,TRUE, +Protest,TRUE, +Provide_lodging,TRUE, +Proximity_image_schema,FALSE, +Public_services,FALSE, +Publishing,TRUE, +Punctual_perception,FALSE, +Purpose,FALSE, +Putting_out_fire,TRUE, +Quantified_mass,FALSE, +Quantity,FALSE, +Quarreling,TRUE, +Questioning,TRUE, +Quitting,TRUE, +Quitting_a_place,TRUE, +Race_descriptor,FALSE, +Range,FALSE, +Rank,FALSE, +Ranked_expectation,FALSE, +Rape,TRUE, +Rashness,FALSE, +Rate_description,FALSE, +Rate_quantification,FALSE, +Ratification,TRUE, +Reading_activity,TRUE, +Reading_aloud,TRUE, +Reading_perception,TRUE, +Reason,FALSE, +Reasoning,TRUE, +Reassuring,TRUE, +Rebellion,TRUE, +Receive_visitor_scenario,FALSE, +Receiving,TRUE, +Receiving_scenario,FALSE, +Reciprocality,FALSE, +Recording,TRUE, +Records,FALSE, +Recovery,FALSE, +Redirecting,TRUE, +Reference_text,FALSE, +Referring_by_name,TRUE, +Reforming_a_system,TRUE, +Regard,TRUE, +Region_with_portal,FALSE, +Reject_leadership,TRUE,does not exist in NLTK +Rejuvenation,TRUE, +Relating_concepts,TRUE,? +Relation,FALSE, +Relation_between_individuals,FALSE, +Relational_location,FALSE, +Relational_natural_features,FALSE, +Relational_political_locales,FALSE, +Relational_quantity,FALSE, +Relative_time,FALSE,? +Releasing,TRUE, +Releasing_from_custody,FALSE, +Reliance,TRUE,? +Reliance_on_expectation,TRUE, +Religious_belief,TRUE, +Remainder,FALSE, +Remembering_experience,TRUE, +Remembering_information,TRUE, +Remembering_to_do,TRUE, +Removing,TRUE, +Removing_scenario,FALSE, +Render_nonfunctional,TRUE, +Renting,TRUE, +Renting_out,TRUE, +Renunciation,TRUE, +Reparation,TRUE, +Repayment,TRUE, +Repel,TRUE, +Replacing,TRUE, +Reporting,TRUE, +Representative,FALSE, +Representing,TRUE,? +Request,TRUE, +Request_entity,TRUE, +Required_event,TRUE,? +Requirement_scenario,FALSE, +Rescuing,TRUE, +Research,TRUE, +Reserving,TRUE, +Reshaping,TRUE, +Residence,TRUE, +Resolve_problem,TRUE, +Respond_to_proposal,TRUE, +Response,TRUE, +Response_scenario,FALSE, +Responsibility,FALSE, +Rest,FALSE, +Result_of_attempt_scenario,FALSE, +Resurrection,TRUE,? similar to self_motion? +Retaining,TRUE, +Reveal_secret,TRUE, +Revenge,TRUE, +Revolution,FALSE, +Rewards_and_punishments,TRUE, +Ride_vehicle,TRUE,? +Rising_to_a_challenge,TRUE, +Risk_scenario,FALSE, +Risky_situation,FALSE, +Rite,TRUE, +Roadways,FALSE, +Robbery,TRUE, +Rope_manipulation,TRUE, +Rotting,FALSE, +Run_risk,TRUE, +Sacrificing_for,TRUE, +Satisfying,TRUE, +Scarcity,FALSE, +Scheduling,TRUE, +Scope,FALSE, +Scouring,TRUE, +Scrutinizing_for,FALSE, +Scrutiny,TRUE, +Searching_scenario,FALSE, +Secrecy_status,FALSE, +See_through,TRUE, +Seeking,TRUE, +Seeking_to_achieve,TRUE, +Self_control,TRUE, +Self_motion,TRUE,? +Sending,TRUE, +Sensation,FALSE, +Sent_items,FALSE, +Sentencing,TRUE, +Separating,TRUE, +Sequence,FALSE, +Serving_in_capacity,TRUE, +Set_of_interrelated_entities,FALSE, +Set_relation,FALSE, +Setting_back_burn,FALSE, +Setting_fire,TRUE, +Setting_out,TRUE, +Severity_of_offense,FALSE, +Sex,TRUE, +Sexual_reproduction_scenario,FALSE, +Shaped_part,FALSE, +Shapes,FALSE, +Sharing,TRUE, +Sharpness,FALSE, +Shoot_projectiles,TRUE, +Shooting_scenario,FALSE, +Shopping,TRUE, +Short_selling,TRUE, +Sidereal_appearance,FALSE,? +Sign,TRUE, +Sign_agreement,TRUE, +Silencing,TRUE, +Similarity,TRUE,? mimic etc +Simple_name,FALSE, +Simple_naming,TRUE, +Simultaneity,FALSE, +Size,FALSE, +Sleep,TRUE, +Sleep_wake_cycle,FALSE, +Smuggling,TRUE, +Soaking,TRUE, +Soaking_up,TRUE,? metaphorical +Sociability,FALSE, +Social_behavior_evaluation,FALSE, +Social_connection,FALSE, +Social_desirability,FALSE, +Social_event,FALSE, +Social_event_collective,FALSE, +Social_event_individuals,TRUE, +Social_interaction_evaluation,FALSE, +Socially_significant_history_scenario,FALSE, +Sole_instance,FALSE, +Sound_level,FALSE, +Sound_movement,FALSE,? +Sounds,FALSE, +Source_of_getting,FALSE, +Source_path_goal,FALSE, +Spatial_co-location,FALSE, +Spatial_contact,FALSE, +Speak_on_topic,TRUE, +Specific_individual,FALSE, +Speed_description,FALSE, +Spelling_and_pronouncing,TRUE, +Sports_jargon,FALSE, +Stage_of_progress,FALSE, +Standing_by,TRUE, +State,FALSE, +State_continue,FALSE, +State_of_entity,FALSE, +Statement,TRUE, +Stimulate_emotion,TRUE,? metaphorical +Stimulus_focus,FALSE, +Stinginess,TRUE, +Store,FALSE, +Storing,TRUE, +Strictness,FALSE, +Studying,TRUE, +Suasion,TRUE, +Subjective_influence,TRUE, +Subjective_temperature,FALSE,? +Submitting_documents,TRUE, +Subordinates_and_superiors,TRUE, +Subsisting,TRUE, +Substance,FALSE, +Substance_by_phase,FALSE, +Subversion,TRUE, +Success_or_failure,TRUE, +Successful_action,TRUE, +Successfully_communicate_message,TRUE, +Sufficiency,FALSE, +Suicide_attack,TRUE,? there are no verbs but there is an agentive example (‘they kamikazed the base’) +Suitability,FALSE, +Summarizing,TRUE, +Supply,TRUE, +Supporting,TRUE, +Surpassing,TRUE,metaphorical +Surrendering,TRUE, +Surrendering_possession,TRUE, +Surrounding,TRUE, +Surviving,TRUE, +Suspicion,TRUE, +Symmetrical_collective_reciprocality,FALSE, +System,FALSE, +System_complexity,FALSE, +Take_place_of,TRUE, +Taking,TRUE, +Taking_captive,TRUE, +Taking_sides,TRUE, +Taking_time,TRUE, +Talking_into,TRUE, +Tasting,TRUE, +Team,FALSE, +Telling,TRUE, +Temperature,FALSE, +Temporal_collocation,FALSE, +Temporal_pattern,FALSE, +Temporal_subregion,FALSE, +Temporary_group,FALSE, +Temporary_leave,TRUE, +Temporary_stay,TRUE, +Temporary_transfer_scenario,FALSE, +Terms_of_agreement,FALSE, +Terrorism,FALSE, +Text,FALSE, +Text_creation,TRUE, +Theft,TRUE, +Thermodynamic_phase,FALSE, +Thriving,TRUE, +Thwarting,TRUE, +Time_period_of_action,FALSE, +Time_vector,FALSE, +Timespan,FALSE, +Timetable,FALSE, +Tolerating,TRUE, +Tool_purpose,FALSE, +Topic,TRUE, +Touring,TRUE, +Toxic_substance,FALSE, +Transfer,TRUE, +Transfer_scenario,FALSE, +Transition_to_a_quality,FALSE, +Transition_to_a_situation,FALSE, +Transition_to_a_state,FALSE, +Transitive_action,FALSE, +Translating,TRUE, +Transportation_status,FALSE, +Trap,FALSE, +Travel,TRUE, +Traversing,TRUE, +Treating_and_mistreating,TRUE, +Trendiness,FALSE, +Trial,FALSE, +Triggering,TRUE, +Trust,TRUE, +Try_defendant,TRUE, +Trying_out,TRUE, +Turning_out,FALSE, +Type,FALSE, +Typicality,FALSE, +Unattributed_information,TRUE,'rumor.v’ only exists in passive form +Undergo_change,FALSE, +Undergo_transformation,FALSE, +Undergoing,FALSE, +Undergoing_scenario,FALSE, +Undressing,TRUE, +Unemployment_rate,FALSE, +Use_firearm,TRUE, +Use_vehicle,FALSE, +Used_up,FALSE, +Usefulness,TRUE, +Using,TRUE, +Using_resource,TRUE, +Vehicle,FALSE, +Vehicle_departure_initial_stage,TRUE,? metaphorical +Vehicle_landing,TRUE,? metaphorical +Vehicle_subpart,FALSE, +Verdict,TRUE, +Verification,TRUE, +Version_sequence,FALSE, +Victim_operated_IED,FALSE, +Violence,FALSE, +Visit_host,FALSE,empty +Visit_host_arrival,FALSE,empty +Visit_host_departure,FALSE,empty +Visit_host_stay,FALSE,empty +Visiting,TRUE, +Visiting_scenario,FALSE, +Visiting_scenario_arrival,FALSE, +Visiting_scenario_departing,FALSE, +Visiting_scenario_stay,FALSE, +Visitor_and_host,FALSE, +Visitor_arrival,FALSE, +Visitor_departure,FALSE, +Visitor_scenario,FALSE, +Vocalizations,FALSE, +Volubility,FALSE, +Wagering,TRUE, +Waiting,TRUE, +Waking_up,TRUE, +Want_suspect,FALSE, +Warning,TRUE, +Waver_between_options,TRUE, +Wealthiness,FALSE, +Weapon,FALSE, +Wearing,TRUE, +Weather,FALSE, +Wholes_and_parts,FALSE, +Willingness,FALSE, +Win_prize,TRUE, +Withdraw_from_participation,TRUE, +Within_distance,FALSE, +Word_relations,FALSE, +Work,TRUE, +Working_a_post,TRUE, +Worry,TRUE, diff --git a/resources/crashes_frame_list.txt b/resources/crashes_frame_list.txt new file mode 100755 index 0000000000000000000000000000000000000000..334fe9cf5337e36282e3ece55f44b040b3811af4 --- /dev/null +++ b/resources/crashes_frame_list.txt @@ -0,0 +1,14 @@ +# based on Gosse's presentation in 1st meeting with Marco +Killing +Death +Impact +Catch_fire +Cause_harm + +# extra to make more comparable with femicide data +Causation +Cause_motion +Dead_or_alive +Emotion_directed +Event +Experience_bodily_harm diff --git a/resources/crashes_frame_to_roles.csv b/resources/crashes_frame_to_roles.csv new file mode 100755 index 0000000000000000000000000000000000000000..36ba3415ad0dcbb2e43bef8484c76c5921b98ba6 --- /dev/null +++ b/resources/crashes_frame_to_roles.csv @@ -0,0 +1,11 @@ +frame,role:perpetrator_like,role:victim_like,role:cause_like,notes +Catch_fire,-,-,-, +Causation,Causer,Affected,Cause, +Cause_harm,Agent,Victim,Cause, +Cause_motion,-,-,-,does not seem to usually refer to the main murder event +Dead_or_alive,-,Protagonist,Explanation, +Death,-,Protagonist,Cause, +Emotion_directed,-,-,-,does not seem to usually refer to the main murder event +Event,-,-,-,does not involve any participants +Experience_bodily_harm,Experiencer|Body_part,-,-, +Killing,Killer,Victim,Cause, \ No newline at end of file diff --git a/resources/crashes_sources.csv b/resources/crashes_sources.csv new file mode 100755 index 0000000000000000000000000000000000000000..75228f4caef03a5f107dfd0404c54d44633cfc1e --- /dev/null +++ b/resources/crashes_sources.csv @@ -0,0 +1,440 @@ +ProviderName,ProviderFreq,ProviderNameCorr,RegionalScope,ContentType,MediumType,Country,Province,Locality,MediaCollection,MediaOwner,Duplicate,Notes +noordhollandsdagblad.nl,620,Noordhollands Dagblad,Regional,GeneralNews,Newspaper,Netherlands,Noord-Holland,-,Mediahuis Nederland,Mediahuis,, +gelderlander.nl,553,De Gelderlander,Regional,GeneralNews,Newspaper,Netherlands,Gelderland,-,ADR Nieuwsmedia,DPG Media,, +nhnieuws.nl,479,NH Nieuws,Regional,GeneralNews,TV-Radio,Netherlands,Gelderland,-,-,[public],, +rtvoost.nl,409,RTV Oost,Regional,GeneralNews,TV-Radio,Netherlands,Overijssel,-,-,[public],, +www.ad.nl,399,Algemeen Dagblad,National,GeneralNews,Newspaper,Netherlands,-,-,ADR Nieuwsmedia,DPG Media,, +rtvutrecht.nl,374,RTV Utrecht,National,GeneralNews,TV-Radio,Netherlands,Utrecht,-,-,[public],, +destentor.nl,326,De Stentor,Regional,GeneralNews,Newspaper,Netherlands,Flevoland|Gelderland|Overijssel,-,ADR Nieuwsmedia,DPG Media,, +omroepbrabant.nl,227,Omroep Brabant,Regional,GeneralNews,TV-Radio,Netherlands,Noord-Brabant,-,-,[public],, +haarlemsdagblad.nl,219,Haarlems Dagblad,Local,GeneralNews,Newspaper,Netherlands,Noord-Holland,Haarlem,Mediahuis Nederland,Mediahuis,, +www.ed.nl,206,Eindhovens Dagblad,Local,GeneralNews,Newspaper,Netherlands,Noord-Brabant,Eindhoven,ADR Nieuwsmedia,DPG Media,, +www.bd.nl,198,Brabants Dagblad,Regional,GeneralNews,Newspaper,Netherlands,Noord-Brabant,-,ADR Nieuwsmedia,DPG Media,, +weblogzwolle.nl,191,Weblog Zwolle,Local,GeneralNews,OnlineOnly,Netherlands,Overijssel,Zwolle,-,[independent],, +www.at5.nl,173,AT5,Local,GeneralNews,TV-Radio,Netherlands,Noord-Holland,Amsterdam,-,[public],, +rtvfocuszwolle.nl,168,RTV Focus Zwolle,Local,GeneralNews,TV-Radio,Netherlands,Overijssel,Zwolle,-,[independent],, +hvzeeland.nl,163,HVZeeland.nl,Regional,EmergenciesNews,OnlineOnly,Netherlands,Zeeland,-,-,[independent],, +omroepgelderland.nl,142,Omroep Brabant,Regional,GeneralNews,TV-Radio,Netherlands,Noord-Brabant,-,-,[public],, +1Limburg | Nieuws en sport uit Limburg,135,1Limburg,Regional,GeneralNews,OnlineOnly,Netherlands,Limburg_NL,-,-,[public],,"belongs to ""1L"" tv/radio channel, but separate brand" +www.hln.be,132,Het Laatste Nieuws,National,GeneralNews,Newspaper,Belgium,-,-,-,DPG Media,, +telegraaf.nl,124,De Telegraaf,National,GeneralNews,Newspaper,Netherlands,-,-,Mediahuis Nederland,Mediahuis,, +amstelveenz.nl,109,AmstelveenZ,Local,GeneralNews,Magazine,Netherlands,Noord-Holland,Amstelveen,-,[independent],, +tubantia.nl,105,Tubantia,Regional,GeneralNews,Magazine,Netherlands,Overijssel,-,ADR Nieuwsmedia,DPG Media,, +leidschdagblad.nl,100,Leidsch Dagblad,Local,GeneralNews,Magazine,Netherlands,Zuid-Holland,Leiden,-,DPG Media,, +bndestem.nl,92,BN DeStem,Regional,GeneralNews,Newspaper,Netherlands,Noord-Brabant|Zeeland,-,ADR Nieuwsmedia,DPG Media,, +nos.nl,92,NOS,National,GeneralNews,TV-Radio,Netherlands,-,-,NPO,[public],, +hartvannederland.nl,90,Hart van Nederland,National,GeneralNews,TV-Radio,Netherlands,-,-,SBS6,Talpa Network,, +Dagblad van het Noorden,85,Dagblad van het Noorden,Regional,GeneralNews,Newspaper,Netherlands,Drenthe|Groningen,-,NDC Mediagroep,Mediahuis,, +rtvdrenthe.nl,84,RTV Drenthe,Regional,GeneralNews,TV-Radio,Netherlands,Drenthe,-,-,[public],, +rtvnoord.nl,74,RTV Noord,Regional,GeneralNews,TV-Radio,Netherlands,Groningen,-,-,[public],, +112groningen.nl,72,112Groningen.nl,Local,EmergenciesNews,OnlineOnly,Netherlands,Groningen,Groningen,-,[independent],, +www.nu.nl,70,NU.nl ,National,GeneralNews,OnlineOnly,Netherlands,-,-,-,DPG Media,, +omroepwest.nl,67,Omroep West,Regional,GeneralNews,TV-Radio,Netherlands,Zuid-Holland,-,-,[public],, +RTV Rijnmond,62,RTV Rijnmond,Regional,GeneralNews,TV-Radio,Netherlands,Zuid-Holland,-,-,[public],, +www.pzc.nl,62,Provinciale Zeeuwse Courant,Regional,GeneralNews,Newspaper,Netherlands,Zeeland,-,-,[public],, +rijnmond.nl,61,RTV Rijnmond,Regional,GeneralNews,TV-Radio,Netherlands,Zuid-Holland,-,-,[public],"""RTV Rijnmond""", +112Twente.nl,59,112Twente,Regional,GeneralNews,OnlineOnly,Netherlands,Overijssel,-,-,[independent],, +Het Nieuwsblad,52,Het Nieuwsblad,National,GeneralNews,Newspaper,Belgium,-,-,-,[independent],, +hbvl.be,50,Het Belang van Limburg,Regional,GeneralNews,Newspaper,Belgium,Limburg_BE,-,Mediahuis België,Mediahuis,, +www.vrt.be,48,VRT,National,GeneralNews,TV-Radio,Belgium,-,-,-,[public],, +De Limburger,47,De Limburger,Regional,GeneralNews,Newspaper,Netherlands,Limburg_NL,-,Mediahuis Limburg,Mediahuis,, +112fryslan.nl,45,112 Fryslân,Regional,EmergenciesNews,OnlineOnly,Netherlands,Friesland,-,-,[independent],, +112HM.nl,44,112HM.nl,Regional,EmergenciesNews,OnlineOnly,Netherlands,Zuid-Holland,-,-,[independent],, +omroepzeeland.nl,43,Omroep Zeeland,Regional,GeneralNews,TV-Radio,Netherlands,Zeeland,-,-,[public],, +GelreNieuws.nl,41,GelreNieuws,Regional,GeneralNews,OnlineOnly,Netherlands,Gelderland,-,-,Persbureau Heitink,, +twitter.com,39,Twitter,International,SocialMedia,OnlineOnly,-,-,-,-,-,, +Het Parool,39,Het Parool,National,GeneralNews,Newspaper,Netherlands,-,-,-,DPG Media,,strong local/regional focus but published nationally +nieuwsblad.be,38,Het Nieuwsblad,National,GeneralNews,Newspaper,Belgium,-,-,-,[independent],"""Het Nieuwsblad""", +dvhn.nl,33,Dagblad van het Noorden,Regional,GeneralNews,Newspaper,Netherlands,Drenthe|Groningen,-,NDC Mediagroep,Mediahuis,, +politie.nl,33,Politie,National,OrganizationSpecific,OnlineOnly,Netherlands,-,-,-,-,,official website of the Dutch National Police +112twente.nl,32,112Twente,Regional,GeneralNews,OnlineOnly,Netherlands,Overijssel,-,-,[independent],"""112Twente.nl""", +hardnieuws.nl,32,Hardnieuws,National,EmergenciesNews,OnlineOnly,Netherlands,-,-,-,[independent],, +112 Overijssel,32,112 Overijssel,Regional,EmergenciesNews,OnlineOnly,Netherlands,Overijssel,-,-,[independent],, +www.lc.nl,30,Leeuwarder Courant,Regional,GeneralNews,Newspaper,Netherlands,Friesland,-,-,[independent],, +rtlnieuws.nl,29,RTL Nieuws,National,GeneralNews,TV-Radio,Netherlands,-,-,RTL Nederland,RTL Group,, +rtva.nl,28,RTVA,Local,GeneralNews,TV-Radio,Netherlands,Noord-Holland,Amstelveen,-,[independent],, +Leeuwarder Courant,28,Leeuwarder Courant,Regional,GeneralNews,Newspaper,Netherlands,Friesland,-,-,[independent],"""www.lc.nl""", +Gazet van Antwerpen,26,Gazet van Antwerpen,Regional,GeneralNews,Newspaper,Belgium,Antwerpen,-,Mediahuis België,Mediahuis,, +District8.net,26,District8,Regional,GeneralNews,OnlineOnly,Netherlands,Zuid-Holland,-,-,[independent],, +Focus en WTV,24,Focus-WTV,Regional,GeneralNews,TV-Radio,Belgium,West-Vlaanderen,-,-,Roularta Media Group,, +studio040.nl,24,Studio 040,Local,GeneralNews,TV-Radio,Netherlands,Noord-Brabant,Eindhoven,-,[independent],, +112-Overijssel,24,112 Overijssel,Regional,EmergenciesNews,OnlineOnly,Netherlands,Overijssel,-,-,[independent],, +omroepflevoland.nl,23,Omroep Flevoland,Regional,GeneralNews,TV-Radio,Netherlands,Flevoland,-,-,[public],, +De Utrechtse Internet Courant,20,De Utrechtse Internet Courant,Local,GeneralNews,OnlineOnly,Netherlands,Utrecht,Utrecht,-,[independent],, +www.wos.nl,19,WOS,Local,GeneralNews,TV-Radio,Netherlands,Zuid-Holland,Maassluis,-,[independent],, +wos.nl,19,WOS,Local,GeneralNews,TV-Radio,Netherlands,Zuid-Holland,Maassluis,-,[independent],"""www.wos.nl""", +OOG Radio en Televisie,18,OOG,Local,GeneralNews,TV-Radio,Netherlands,Groningen,Groningen,-,[independent],, +112barneveld.nl,17,112 Barneveld,Local,EmergenciesNews,TV-Radio,Netherlands,Gelderland,Barneveld,-,112Press,, +112hm.nl,17,112HM.nl,Regional,EmergenciesNews,OnlineOnly,Netherlands,Zuid-Holland,-,-,[independent],, +flashphoto.nl,17,FlashPhoto,Local,EmergenciesNews,OnlineOnly,Netherlands,Zuid-Holland,Rotterdam,-,[independent],,"specialized in photography, also (emergency) news" +TVOOST - Regionaal nieuws uit Oost-Vlaanderen,16,TV Oost,Regional,GeneralNews,TV-Radio,Belgium,Oost-Vlaanderen,-,-,Concentra,, +zwollenu.nl,15,ZwolleNu,Local,GeneralNews,OnlineOnly,Netherlands,Overijssel,Zwolle,-,[independent],, +112ede.nl,15,112 Ede,Local,EmergenciesNews,OnlineOnly,Netherlands,Gelderland,Ede,-,112Press,, +112brabant.nl,13,112 Brabant,Regional,EmergenciesNews,OnlineOnly,Netherlands,Noord-Brabant,-,-,[independent],, +TVL - Dagelijks nieuws uit Limburg,13,TVL,Regional,GeneralNews,TV-Radio,Belgium,Limburg_BE,-,-,Concentra,, +oogtv.nl,13,OOG,Local,GeneralNews,TV-Radio,Netherlands,Groningen,Groningen,-,[independent],"""OOG""", +zhzactueel.nl,12,ZHZ Actueel,Regional,EmergenciesNews,TV-Radio,Netherlands,Zuid-Holland,-,-,[independent],, +www.nrc.nl,12,NRC,National,GeneralNews,Newspaper,Netherlands,-,-,NRC Media,Mediahuis,, +stedendriehoek.net,12,Nieuwsblad Stedendriehoek,Regional,GeneralNews,Newspaper,Netherlands,Gelderland|Overijssel,-,-,[independent],, +ijmuidercourant.nl,11,IJmuider Courant,Local,GeneralNews,Newspaper,Netherlands,Noord-Holland,IJmuiden,Mediahuis Nederland,Mediahuis,, +Meternieuws.nl,10,Meter Nieuws,Regional,EmergenciesNews,OnlineOnly,Netherlands,Drenthe|Groningen|Overijssel,-,-,[independent],, +deswollenaer.nl,10,De Swollenaer,Local,GeneralNews,Newspaper,Netherlands,Overijssel,Zwolle,-,Brug Media,, +alkmaarcentraal.nl,10,Alkmaar Centraal,Local,GeneralNews,OnlineOnly,Netherlands,Noord-Holland,Alkmaar,-,[independent],, +112Vandaag,10,112Vandaag,National,EmergenciesNews,OnlineOnly,Netherlands,-,-,-,[independent],, +mediatv.nl,10,MediaTV,National,EmergenciesNews,OnlineOnly,Netherlands,-,-,-,[independent],, +"gelderlander.nl, het laatste nieuws uit binnen- en buitenland, sport en show",10,De Gelderlander,Regional,GeneralNews,Newspaper,Netherlands,Gelderland,-,ADR Nieuwsmedia,DPG Media,"""gelderlander.nl""", +Weertdegekste.nl,9,,,,,,,,,,, +WâldNet,9,,,,,,,,,,, +transport-online.nl,9,,,,,,,,,,, +noordernieuws.nl,9,,,,,,,,,,, +regiopurmerend.nl,8,,,,,,,,,,, +https://www.vlaardingen24.nl,8,,,,,,,,,,, +Groninger Gezinsbode,8,,,,,,,,,,, +"Ring TV | Jouw zender, Jouw nieuws",8,,,,,,,,,,, +blikopnieuws.nl,8,,,,,,,,,,, +edestad.nl,8,,,,,,,,,,, +steenwijkercourant.nl,8,,,,,,,,,,, +nieuwsopbeeld.nl,8,,,,,,,,,,, +ROB-tv - Regionale Omroep Brabant,8,,,,,,,,,,, +barneveldsekrant.nl,8,,,,,,,,,,, +https://www.schiedam24.nl,8,,,,,,,,,,, +Sleutelstad.nl,7,,,,,,,,,,, +Unity NU is de nieuwssite voor de regio Leiden [www.unity.nu],7,,,,,,,,,,, +112WestFriesland.nl,7,,,,,,,,,,, +112vallei.nl,7,,,,,,,,,,, +Omroep Gelderland,7,,,,,,,,,,, +Het Belang van Limburg,7,,,,,,,,,,, +sleutelstad.nl,7,,,,,,,,,,, +Bredavandaag|HétnieuwsuitBreda,6,,,,,,,,,,, +alarmeringen.nl,6,,,,,,,,,,, +stedendriehoek.nl,6,,,,,,,,,,, +halstadcentraal.nl,6,,,,,,,,,,, +Westlanders.nu,6,,,,,,,,,,, +ATV - Antwerpse televisie,6,,,,,,,,,,, +Stefan Verkerk Fotografie en Webdesign,6,,,,,,,,,,, +De Gooi- en Eemlander,6,,,,,,,,,,, +alphens.nl,6,,,,,,,,,,, +112nieuwsonline.nl,6,,,,,,,,,,, +zwollezuidnieuws.nl,6,,,,,,,,,,, +1Limburg,5,,,,,,,,,,, +denoordoostpolder.nl,5,,,,,,,,,,, +112provincieutrecht.nl,5,,,,,,,,,,, +rtvzaanstreek.nl,5,,,,,,,,,,, +nederweert24.nl,5,,,,,,,,,,, +Nieuws dat je raakt. 24/24u – Nnieuws.be,5,,,,,,,,,,, +nieuws.nl,5,,,,,,,,,,, +RTV Oost,5,,,,,,,,,,, +regio15.nl,5,,,,,,,,,,, +De Standaard,5,,,,,,,,,,, +flevopost.nl,5,,,,,,,,,,, +regionieuwshoogeveen.nl,5,,,,,,,,,,, +petershotnews.nl | Nieuws & fotografie,5,,,,,,,,,,, +Nieuws op Beeld - Altijd het laatste (112) nieuws vanuit de regio Rotterdam-Rijnmond!,5,,,,,,,,,,, +ZwolleZuidNieuws: alles wat Zwolle Zuid beweegt!,4,,,,,,,,,,, +Telegraaf,4,,,,,,,,,,, +RTV Utrecht,4,,,,,,,,,,, +regioleidscherijn.nl,4,,,,,,,,,,, +Hart van Nederland,4,,,,,,,,,,, +dagblad070.nl,4,,,,,,,,,,, +nuus.be,4,,,,,,,,,,, +onswestfriesland.nl,4,,,,,,,,,,, +waldnet.nl,4,,,,,,,,,,, +NU,4,,,,,,,,,,, +www.gva.be,4,,,,,,,,,,, +bunniksnieuws.nl,4,,,,,,,,,,, +dalfsennet.nl,4,,,,,,,,,,, +112heuvelrug.nl,4,,,,,,,,,,, +hartvanlansingerland.nl,4,,,,,,,,,,, +"AD.nl, het laatste nieuws uit binnen- en buitenland, sport en show",4,,,,,,,,,,, +bruzz.be,4,,,,,,,,,,, +Vlissingen-Internetbode,3,,,,,,,,,,, +Blik op nieuws,3,,,,,,,,,,, +limburg24.nl,3,,,,,,,,,,, +www.gld.nl,3,,,,,,,,,,, +112zwolle.nl,3,,,,,,,,,,, +omroepvenray.nl,3,,,,,,,,,,, +lokaalgelderland.nl,3,,,,,,,,,,, +destadgorinchem.nl,3,,,,,,,,,,, +112veenendaal.nl,3,,,,,,,,,,, +denhaagfm.nl,3,,,,,,,,,,, +facebook.com,3,,,,,,,,,,, +112midden-zeeland.nl,3,,,,,,,,,,, +de Volkskrant,3,,,,,,,,,,, +meppelercourant.nl,3,,,,,,,,,,, +Neustadt-Geflüster,3,,,,,,,,,,, +goudsdagblad.nl,3,,,,,,,,,,, +schie.nu,3,,,,,,,,,,, +oozo.nl,3,,,,,,,,,,, +www.rd.nl,3,,,,,,,,,,, +voorburgsdagblad.nl,3,,,,,,,,,,, +NieuwsOverijssel.nl,3,,,,,,,,,,, +ZwolleZuidNieuws: alles wat Zwolle-Zuid beweegt!,3,,,,,,,,,,, +112inbeeld.nl,3,,,,,,,,,,, +bredavandaag.nl,3,,,,,,,,,,, +De Jutter | De Hofgeest,2,,,,,,,,,,, +Woerden.TV,2,,,,,,,,,,, +knipselkrant-curacao.com,2,,,,,,,,,,, +heerenveensecourant.nl,2,,,,,,,,,,, +ThePostOnline,2,,,,,,,,,,, +regio8.nl,2,,,,,,,,,,, +BarendrechtNU.nl,2,,,,,,,,,,, +"pzc.nl, het laatste nieuws uit binnen- en buitenland, sport en show",2,,,,,,,,,,, +weespernieuws.nl,2,,,,,,,,,,, +Amstelveenz,2,,,,,,,,,,, +stadtiel.nl,2,,,,,,,,,,, +gouweijsselnieuws.nl,2,,,,,,,,,,, +Nieuws op Beeld,2,,,,,,,,,,, +heerhugowaardcentraal.nl,2,,,,,,,,,,, +nieuwsbladdezaankanter.nl,2,,,,,,,,,,, +www.avs.be,2,,,,,,,,,,, +haarlemsweekblad.nl,2,,,,,,,,,,, +yomyom.net,2,,,,,,,,,,, +mooirooi.nl,2,,,,,,,,,,, +oisterwijknieuws.nl,2,,,,,,,,,,, +rtv-apeldoorn.nl,2,,,,,,,,,,, +112amersfoort.nl,2,,,,,,,,,,, +dedemsvaartsecourant.nl,2,,,,,,,,,,, +ed.nl,2,,,,,,,,,,, +soestercourant.nl,2,,,,,,,,,,, +heemsteedsecourant.nl,2,,,,,,,,,,, +112hoogezand.nl,2,,,,,,,,,,, +hetstreekblad.nl,2,,,,,,,,,,, +NRC,2,,,,,,,,,,, +112nieuws.net,2,,,,,,,,,,, +De Limburger Mobile,2,,,,,,,,,,, +0297.nl,2,,,,,,,,,,, +drachtstercourant.nl,2,,,,,,,,,,, +Sittard-Geleen,2,,,,,,,,,,, +hoogenlaag.nl,2,,,,,,,,,,, +drentsnieuws.nl,2,,,,,,,,,,, +brugnieuws.nl,2,,,,,,,,,,, +medemblikactueel.nl,2,,,,,,,,,,, +rechtspraak.nl,2,,,,,,,,,,, +gooieneembode.nl,2,,,,,,,,,,, +arenalokaal.nl,2,,,,,,,,,,, +DitisdeZaanstreek.nl,2,,,,,,,,,,, +hcnieuws.nl,2,,,,,,,,,,, +https://www.heerhugowaardsdagblad.nl/,2,,,,,,,,,,, +schagenfm.nl,2,,,,,,,,,,, +hv-almere.nl,2,,,,,,,,,,, +112achterhoek-nieuws.nl,2,,,,,,,,,,, +peelenmaasvenray.nl,2,,,,,,,,,,, +frieslandactueel.nl,2,,,,,,,,,,, +www.rtv.be,2,,,,,,,,,,, +hoogeveenschecourant.nl,2,,,,,,,,,,, +Nieuws Apeldoorn Direct,2,,,,,,,,,,, +nieuwsuitberkelland.nl,2,,,,,,,,,,, +112meerlanden.nl,2,,,,,,,,,,, +internetbode.nl,2,,,,,,,,,,, +nieuw-volendam.nl,2,,,,,,,,,,, +katwijkactueel.nl,2,,,,,,,,,,, +112schiedam.nl,2,,,,,,,,,,, +compactmedia.nl,2,,,,,,,,,,, +culemborgsecourant.nl,2,,,,,,,,,,, +Alphens.nl,2,,,,,,,,,,, +112ijmond.nl,2,,,,,,,,,,, +detoren.net,2,,,,,,,,,,, +gorkumsnieuws.nl,2,,,,,,,,,,, +Redactie24.be,2,,,,,,,,,,, +wnl.tv,2,,,,,,,,,,, +alarmeringdroid.nl,1,,,,,,,,,,, +HCNieuws,1,,,,,,,,,,, +frontpage.fok.nl,1,,,,,,,,,,, +112vdg.nl,1,,,,,,,,,,, +Ede Stad,1,,,,,,,,,,, +my net rosh haayin,1,,,,,,,,,,, +Noordhollands Dagblad,1,,,,,,,,,,, +Zundert-Internetbode,1,,,,,,,,,,, +defeanster.nl,1,,,,,,,,,,, +heerhugowaardalife.nl,1,,,,,,,,,,, +inteylingen.nl,1,,,,,,,,,,, +The News Herald,1,,,,,,,,,,, +Rijswijk.TV,1,,,,,,,,,,, +Leidsch Dagblad,1,,,,,,,,,,, +mynetkrayot,1,,,,,,,,,,, +OldambtNu.nl,1,,,,,,,,,,, +instagram.com,1,,,,,,,,,,, +Bonaire.Nu,1,,,,,,,,,,, +nieuwsbladdekoerier.nl,1,,,,,,,,,,, +BergenopZoom-Internetbode,1,,,,,,,,,,, +1twente.nl,1,,,,,,,,,,, +www.rtl.de,1,,,,,,,,,,, +tvvalkenburg.tv,1,,,,,,,,,,, +alarmfase1.nl,1,,,,,,,,,,, +gids.tv,1,,,,,,,,,,, +RTV Uitgeest,1,,,,,,,,,,, +De Telegraaf,1,,,,,,,,,,, +112-dokkum.nl,1,,,,,,,,,,, +wijksnieuws.nl,1,,,,,,,,,,, +hetkontakt.nl,1,,,,,,,,,,, +landelijkeorganisatieverkeersslachtoffers.nl,1,,,,,,,,,,, +rtv.be,1,,,,,,,,,,, +indebuurt Ede,1,,,,,,,,,,, +112 groningen.nl,1,,,,,,,,,,, +Ik hou van Arnhem,1,,,,,,,,,,, +112hardenberg.nu,1,,,,,,,,,,, +stadwageningen.nl,1,,,,,,,,,,, +ridderkerksdagblad.nl,1,,,,,,,,,,, +geenstijl.nl,1,,,,,,,,,,, +dewoudenberger.nl,1,,,,,,,,,,, +https://www.alkmaarsdagblad.nl/,1,,,,,,,,,,, +nieuwsbladnof.nl,1,,,,,,,,,,, +Nieuwe Meerbode,1,,,,,,,,,,, +looopings.nl,1,,,,,,,,,,, +amstelveensnieuwsblad.nl,1,,,,,,,,,,, +texelsecourant.nl,1,,,,,,,,,,, +anwb.nl,1,,,,,,,,,,, +indebuurt Delft,1,,,,,,,,,,, +https://www.zutphen24.nl,1,,,,,,,,,,, +Teylingen,1,,,,,,,,,,, +112Midden-Zeeland,1,,,,,,,,,,, +noorderkrant.nl,1,,,,,,,,,,, +onswestbrabant.nl,1,,,,,,,,,,, +lindanieuws.nl,1,,,,,,,,,,, +112persfotografie.nl,1,,,,,,,,,,, +antilliaansdagblad.com,1,,,,,,,,,,, +Site-Knack-NL,1,,,,,,,,,,, +alblasserdamsnieuws.nl,1,,,,,,,,,,, +112harderwijk.nl,1,,,,,,,,,,, +l1.nl,1,,,,,,,,,,, +Nederweert24,1,,,,,,,,,,, +Radio.NL,1,,,,,,,,,,, +LokaalGelderland,1,,,,,,,,,,, +hoekschnieuws.nl,1,,,,,,,,,,, +nieuwsbladgeldermalsen.nl,1,,,,,,,,,,, +Veenendaalse Krant,1,,,,,,,,,,, +112-nederland.nl,1,,,,,,,,,,, +demorgen.be,1,,,,,,,,,,, +www.gic.nl,1,,,,,,,,,,, +Unity NU is de nieuwssite voor de regio Leiden,1,,,,,,,,,,, +Middelburg-Internetbode,1,,,,,,,,,,, +groot-waterland.nl,1,,,,,,,,,,, +regiobodeonline.nl,1,,,,,,,,,,, +Nudrenthe.nl | Boven op het Nieuws |,1,,,,,,,,,,, +Gocar.be,1,,,,,,,,,,, +KW.be - Nieuws uit West-Vlaanderen,1,,,,,,,,,,, +harenerweekblad.nl,1,,,,,,,,,,, +nbcnews.com,1,,,,,,,,,,, +Omroep Brabant,1,,,,,,,,,,, +112apeldoorn.nl,1,,,,,,,,,,, +linda.nl,1,,,,,,,,,,, +assercourant.nl,1,,,,,,,,,,, +prorail.nl,1,,,,,,,,,,, +bbc.co.uk,1,,,,,,,,,,, +schipholregio.nl,1,,,,,,,,,,, +lequipe.fr,1,,,,,,,,,,, +Politie.nl,1,,,,,,,,,,, +welingelichtekringen.nl,1,,,,,,,,,,, +destadamersfoort.nl,1,,,,,,,,,,, +curacaonieuws.nu,1,,,,,,,,,,, +Incidenten Apeldoorn e.o.,1,,,,,,,,,,, +arubanieuws.nu,1,,,,,,,,,,, +Vrij Nederland,1,,,,,,,,,,, +Omroep Brabant,1,,,,,,,,,,, +hetdeventernieuws.nl,1,,,,,,,,,,, +Krimpenerwaard,1,,,,,,,,,,, +avrotros.nl,1,,,,,,,,,,, +elpais.com.co,1,,,,,,,,,,, +112marum.nl,1,,,,,,,,,,, +https://www.denheldersdagblad.nl/,1,,,,,,,,,,, +ZHZActueel,1,,,,,,,,,,, +bashinform.ru,1,,,,,,,,,,, +FOK!,1,,,,,,,,,,, +bx1.be,1,,,,,,,,,,, +denhelderactueel.nl,1,,,,,,,,,,, +www.bbc.com,1,,,,,,,,,,, +eemskrant.nl,1,,,,,,,,,,, +Regio Leidsche Rijn,1,,,,,,,,,,, +Omroep Zeeland,1,,,,,,,,,,, +topics.nl,1,,,,,,,,,,, +HetKrantje-Online.nl,1,,,,,,,,,,, +https://www.langedijkerdagblad.nl/,1,,,,,,,,,,, +SpoorPro.nl,1,,,,,,,,,,, +radio2.be,1,,,,,,,,,,, +Metronieuws.nl,1,,,,,,,,,,, +caribischnetwerk.ntr.nl,1,,,,,,,,,,, +het-westerkwartier.nl,1,,,,,,,,,,, +rijschoolpro.nl,1,,,,,,,,,,, +rn7.nl,1,,,,,,,,,,, +Eemskrant,1,,,,,,,,,,, +HS-Krant,1,,,,,,,,,,, +grootheerenveen.nl,1,,,,,,,,,,, +RTV Zaanstreek,1,,,,,,,,,,, +joustercourant.nl,1,,,,,,,,,,, +112vlissingen-souburg.nl,1,,,,,,,,,,, +112 Groningen,1,,,,,,,,,,, +ZuidOosthoeker,1,,,,,,,,,,, +AD.nl,1,,,,,,,,,,, +Eemskrant | Nieuws uit de regio,1,,,,,,,,,,, +Steenwijkerland,1,,,,,,,,,,, +112tv.nl,1,,,,,,,,,,, +Groningen,1,,,,,,,,,,, +Reno Gazette Journal,1,,,,,,,,,,, +haspengouwsnieuws.be,1,,,,,,,,,,, +stellingwerf.nl,1,,,,,,,,,,, +globo.com,1,,,,,,,,,,, +112lansingerland.nu,1,,,,,,,,,,, +bicycling.com,1,,,,,,,,,,, +woldercourant.nl,1,,,,,,,,,,, +omroepalmere.nl,1,,,,,,,,,,, +Den Helder actueel,1,,,,,,,,,,, +rtvhattem.nl,1,,,,,,,,,,, +WNL,1,,,,,,,,,,, +Omroep Venray,1,,,,,,,,,,, +Dagblad070,1,,,,,,,,,,, +friesenieuwsflitsen.nl,1,,,,,,,,,,, +Kampen Online,1,,,,,,,,,,, +dailymail.co.uk,1,,,,,,,,,,, +https://112hm.nl/2021/07/21/ernstig-ongeval-op-de-hoogeveenseweg-hazerswoude-dorp-veroorzaakt-door-overstekende-hond/,1,,,,,,,,,,, +112insteenwijkerland.nl,1,,,,,,,,,,, +varnws.nl,1,,,,,,,,,,, +actu.fr,1,,,,,,,,,,, +hetkompashardinxveld-giessendam.nl,1,,,,,,,,,,, +uitkijkpost.nl,1,,,,,,,,,,, +RN7,1,,,,,,,,,,, +NOS,1,,,,,,,,,,, +uitzendinggemist.net,1,,,,,,,,,,, +Nachrichten aus Leipzig - Leipziger Zeitung,1,,,,,,,,,,, +twentefm.nl,1,,,,,,,,,,, +Sergevanduijnhoven's Blog,1,,,,,,,,,,, +Barneveldse Krant,1,,,,,,,,,,, +leuvenactueel.be,1,,,,,,,,,,, +https://www.schagerdagblad.nl/,1,,,,,,,,,,, +coevordenhuisaanhuis.nl,1,,,,,,,,,,, +blinker.co.il,1,,,,,,,,,,, +Genderendigitaal,1,,,,,,,,,,, +De Gelderlander,1,,,,,,,,,,, +dagblad010.nl,1,,,,,,,,,,, +traumaheli-mmt.nl,1,,,,,,,,,,, +limburger.nl,1,,,,,,,,,,, +Roosendaal-Internetbode,1,,,,,,,,,,, +bommelerwaardgids.nl,1,,,,,,,,,,, +Alkmaar Centraal,1,,,,,,,,,,, +IJsselmondeNieuws en omstreken op facebook.com,1,,,,,,,,,,, +theguardian.com,1,,,,,,,,,,, +112 Vlissingen & Souburg,1,,,,,,,,,,, +rtvpurmerend.nl,1,,,,,,,,,,, +Site-KW-NL,1,,,,,,,,,,, +10yan.com,1,,,,,,,,,,, +petershotnews.nl,1,,,,,,,,,,, +Dumbarton and Vale of Leven Reporter,1,,,,,,,,,,, +cyclingweekly.com,1,,,,,,,,,,, +hanzestad.nl,1,,,,,,,,,,, +emmen.nu,1,,,,,,,,,,, +foxreno.com,1,,,,,,,,,,, +De Krant van Midden-Drenthe,1,,,,,,,,,,, +BBC,1,,,,,,,,,,, +112drachten.nl,1,,,,,,,,,,, +brummensnieuws.nl,1,,,,,,,,,,, +Streetsblog New York City,1,,,,,,,,,,, +De Heemsteder,1,,,,,,,,,,, +indebuurt Utrecht,1,,,,,,,,,,, +westfriesweekblad.nl,1,,,,,,,,,,, +1istochnik.ru,1,,,,,,,,,,, +kipa.co.il,1,,,,,,,,,,, +veluweland.nl,1,,,,,,,,,,, +DNN - Dresdner Neueste Nachrichten,1,,,,,,,,,,, +112wijchensnieuws.nl,1,,,,,,,,,,, +delpher.nl,1,,,,,,,,,,, +indebuurt Doetinchem,1,,,,,,,,,,, +news4jax.com,1,,,,,,,,,,, \ No newline at end of file diff --git a/resources/deep_frame_cache.json b/resources/deep_frame_cache.json new file mode 100755 index 0000000000000000000000000000000000000000..df47f8998944fec02e54602ecf89d9afd3d54d13 --- /dev/null +++ b/resources/deep_frame_cache.json @@ -0,0 +1 @@ +{"Abandonment": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Place": "Place", "Time": "Time", "Manner": "Manner", "Means": "Means"}], "Abounding_with": ["State", {"Location": "Entity"}], "Absorb_heat": ["Event", {"Place": "Place", "Manner": "Manner", "Time": "Time", "Explanation": "Explanation"}], "Abundance": ["Abundance", {"Collection": "Collection", "Quantity": "Quantity", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Measure": "Measure", "Place": "Place"}], "Abusing": ["Event", {"Type": "Event", "Place": "Place", "Time": "Time", "Manner": "Manner"}], "Access_scenario": ["Access_scenario", {"Theme": "Theme", "Useful_location": "Useful_location", "Barrier": "Barrier"}], "Accompaniment": ["Accompaniment", {"Participant": "Participant", "Co-participant": "Co-participant", "Participants": "Participants"}], "Accomplishment": ["Accomplishment", {"Means": "Means", "Agent": "Agent", "Instrument": "Instrument", "Place": "Place", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation", "Degree": "Degree", "Goal": "Goal", "Outcome": "Outcome", "Circumstances": "Circumstances", "Duration": "Duration", "Domain": "Domain", "Particular_iteration": "Particular_iteration"}], "Accoutrements": ["Accoutrements", {"Wearer": "Wearer", "Style": "Style", "Material": "Material", "Accoutrement": "Accoutrement", "Descriptor": "Descriptor", "Use": "Use", "Part": "Part", "Body_location": "Body_location", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name"}], "Accuracy": ["Accuracy", {"Agent": "Agent", "Target": "Target", "Outcome": "Outcome", "Means": "Means", "Degree": "Degree", "Time": "Time", "Place": "Place", "Instrument": "Instrument", "Target_value": "Target_value", "Deviation": "Deviation", "Domain": "Domain", "Circumstances": "Circumstances", "Frequency": "Frequency"}], "Achieving_first": ["Transitive_action", {"Cognizer": "Agent", "New_idea": "Patient", "Time": "Time", "Place": "Place", "Means": "Means", "Field": "Depictive", "Manner": "Manner"}], "Active_substance": ["Active_substance", {"Effect": "Effect", "Substance": "Substance", "Descriptor": "Descriptor", "Type": "Type", "Name": "Name"}], "Activity": ["Activity", {"Activity": "Activity", "Duration": "Duration", "Place": "Place", "Time": "Time", "Agent": "Agent", "Manner": "Manner"}], "Activity_abandoned_state": ["State", {"Activity": "Entity"}], "Activity_done_state": ["State", {"Activity": "Entity"}], "Activity_finish": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Activity_ongoing": ["Activity_ongoing", {"Duration": "Duration", "Activity": "Activity", "Place": "Place", "Purpose": "Purpose", "Time": "Time", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Co-timed_event": "Co-timed_event", "Agent": "Agent", "Explanation": "Explanation", "Event_description": "Event_description", "Circumstances": "Circumstances"}], "Activity_pause": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time", "Duration": "Duration"}], "Activity_paused_state": ["State", {"Activity": "Entity"}], "Activity_prepare": ["Activity_prepare", {"Agent": "Agent", "Activity": "Activity", "Place": "Place", "Time": "Time", "Manner": "Manner", "Means": "Means", "Purpose": "Purpose", "Duration": "Duration", "Depictive": "Depictive", "Degree": "Degree", "Beneficiary": "Beneficiary", "Iterations": "Iterations", "Event_description": "Event_description"}], "Activity_ready_state": ["State", {"Activity": "Entity"}], "Activity_resume": ["Event", {"Duration": "Duration", "Activity": "Event", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner"}], "Activity_start": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Activity": "Event"}], "Activity_stop": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Duration": "Duration", "Frequency": "Frequency"}], "Actually_occurring_entity": ["Actually_occurring_entity", {"Instance": "Instance", "Type": "Type"}], "Addiction": ["Addiction", {"Addict": "Addict", "Addictant": "Addictant", "Degree": "Degree", "Compeller": "Compeller"}], "Adding_up": ["Adding_up", {"Cognizer": "Cognizer", "Numbers": "Numbers", "Result": "Result", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Means": "Means", "Manner": "Manner"}], "Adducing": ["Adducing", {"Speaker": "Speaker", "Addressee": "Addressee", "Manner": "Manner", "Means": "Means", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Specified_entity": "Specified_entity", "Role": "Role", "Purpose": "Purpose", "Explanation": "Explanation", "Containing_event": "Containing_event", "Event_description": "Event_description", "Frequency": "Frequency", "Circumstances": "Circumstances"}], "Adjacency": ["State", {"Figure": "Entity"}], "Adjusting": ["Transitive_action", {"Agent": "Agent", "Part": "Patient", "Means": "Means", "Place": "Place", "Time": "Time", "Manner": "Manner"}], "Adopt_selection": ["Adopt_selection", {"Agent": "Agent", "Attribute": "Attribute", "Value": "Value", "Time": "Time", "Manner": "Manner", "Event_description": "Event_description", "Depictive": "Depictive", "Purpose": "Purpose", "Role": "Role", "Place": "Place", "Frequency": "Frequency", "Containing_event": "Containing_event", "Circumstances": "Circumstances", "Re-encoding": "Re-encoding", "Particular_iteration": "Particular_iteration", "Means": "Means", "Instrument": "Instrument", "Duration": "Duration", "Explanation": "Explanation", "Communicative_force": "Communicative_force"}], "Aesthetics": ["Aesthetics", {"Entity": "Entity", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Viewpoint": "Viewpoint", "Place": "Place"}], "Affirm_or_deny": ["Affirm_or_deny", {"Speaker": "Speaker", "Message": "Message", "Addressee": "Addressee", "Place": "Place", "Time": "Time", "Manner": "Manner", "Iterations": "Iterations", "Means": "Means", "Depictive": "Depictive", "Degree": "Degree", "Containing_event": "Containing_event", "Event_description": "Event_description", "Frequency": "Frequency", "Internal_cause": "Internal_cause", "Medium": "Medium", "Topic": "Topic"}], "Age": ["Age", {"Entity": "Entity", "Attribute": "Attribute", "Age": "Age", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Expressor": "Expressor", "Descriptor": "Descriptor", "Duration": "Duration"}], "Aggregate": ["Aggregate", {"Individuals": "Individuals", "Aggregate": "Aggregate", "Aggregate_property": "Aggregate_property", "Name": "Name", "Container_possessor": "Container_possessor", "Domain": "Domain"}], "Aging": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Agree_or_refuse_to_act": ["Agree_or_refuse_to_act", {"Speaker": "Speaker", "Interlocutor": "Interlocutor", "Medium": "Medium", "Proposed_action": "Proposed_action", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Internal_cause": "Internal_cause", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Particular_iteration": "Particular_iteration", "Role": "Role", "Co-timed_event": "Co-timed_event", "Frequency": "Frequency", "Explanation": "Explanation", "Event_description": "Event_description"}], "Agriculture": ["Event", {"Place": "Place", "Time": "Time"}], "Aiming": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Alignment_image_schema": ["Alignment_image_schema", {"Alignment_match": "Alignment_match", "Ground": "Ground", "Alignment_mismatch": "Alignment_mismatch"}], "Alliance": ["Alliance", {"Alliance": "Alliance", "Members": "Members", "Purpose": "Purpose", "Period_of_existence": "Period_of_existence", "Member_1": "Member_1", "Member_2": "Member_2", "Descriptor": "Descriptor"}], "Alternatives": ["Alternatives", {"Situation": "Situation", "Agent": "Agent", "Number_of_possibilities": "Number_of_possibilities", "Salient_entity": "Salient_entity", "Purpose": "Purpose"}], "Alternativity": ["Alternativity", {"Profiled_alternative": "Profiled_alternative", "Contrasting_alternative": "Contrasting_alternative"}], "Amalgamation": ["Amalgamation", {"Parts": "Parts", "Whole": "Whole", "Part_1": "Part_1", "Part_2": "Part_2", "Degree": "Degree", "Manner": "Manner", "Result": "Result", "Time": "Time", "Place": "Place", "Depictive": "Depictive", "Descriptor": "Descriptor"}], "Amassing": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner"}], "Ambient_temperature": ["Ambient_temperature", {"Place": "Place", "Attribute": "Attribute", "Temperature": "Temperature", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Weather": "Weather"}], "Ammunition": ["Ammunition", {"Ammunition": "Ammunition", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Weapon": "Weapon"}], "Amounting_to": ["Amounting_to", {"Value": "Value", "Attribute": "Attribute", "Time_span": "Time_span", "Frequency": "Frequency", "Numbers": "Numbers"}], "Animals": ["Animals", {"Animal": "Animal", "Descriptor": "Descriptor", "Origin": "Origin", "Characteristic": "Characteristic"}], "Annoyance": ["State", {"Experiencer": "Entity", "State": "State"}], "Appeal": ["Appeal", {"Convict": "Convict", "Representative": "Representative", "Decision": "Decision", "Grounds": "Grounds", "Court": "Court", "Time": "Time", "Re-encoding": "Re-encoding", "Explanation": "Explanation"}], "Appellations": ["Appellations", {"Name": "Name", "Title": "Title", "Context": "Context", "Type": "Type"}], "Apply_heat": ["Transitive_action", {"Cook": "Agent", "Place": "Place", "Food": "Patient", "Time": "Time", "Means": "Means", "Duration": "Event", "Manner": "Manner"}], "Appointing": ["Transitive_action", {"Selector": "Agent", "Official": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place"}], "Architectural_part": ["Architectural_part", {"Part": "Part", "Whole": "Whole", "Descriptor": "Descriptor", "Orientation": "Orientation", "Material": "Material", "Creator": "Creator"}], "Arithmetic": ["Arithmetic", {"Term1": "Term1", "Term2": "Term2", "Terms": "Terms"}], "Arithmetic_commutative": ["Arithmetic_commutative", {"Terms": "Terms", "Term1": "Term1", "Term2": "Term2"}], "Arithmetic_non-commutative": ["Arithmetic_non-commutative", {"Term_1": "Term_1", "Term_2": "Term_2"}], "Armor": ["Armor", {"Armor": "Armor", "Danger": "Danger", "Asset": "Asset", "Descriptor": "Descriptor", "Degree": "Degree", "Material": "Material", "Subregion": "Subregion", "Type": "Type"}], "Arraignment": ["Arraignment", {"Defendant": "Defendant", "Place": "Place", "Time": "Time", "Judge": "Judge", "Charges": "Charges", "Duration": "Duration", "Manner": "Manner"}], "Arranging": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Time": "Time", "Manner": "Manner", "Location": "Place", "Means": "Means"}], "Arrest": ["Transitive_action", {"Place": "Place", "Time": "Time", "Authorities": "Agent", "Suspect": "Patient", "Manner": "Manner", "Means": "Means"}], "Arriving": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Arson": ["Arson", {"Degree": "Degree", "Depictive": "Depictive", "Offense": "Offense", "Manner": "Manner", "Means": "Means", "Purpose": "Purpose", "Duration": "Duration", "Place": "Place", "Time": "Time", "Perpetrator": "Perpetrator", "Victim": "Victim", "Frequency": "Frequency", "Explanation": "Explanation"}], "Artifact": ["Artifact", {"Artifact": "Artifact", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Descriptor": "Descriptor"}], "Artifact_subpart": ["Artifact_subpart", {"Component": "Component", "Artifact": "Artifact", "Function": "Function", "Material": "Material", "Creator": "Creator", "Time_of_creation": "Time_of_creation"}], "Artificiality": ["Artificiality", {"Entity": "Entity", "Reference_category": "Reference_category", "Degree": "Degree"}], "Artistic_style": ["Artistic_style", {"Artist": "Artist", "Artwork": "Artwork", "Form": "Form", "Time": "Time", "Descriptor": "Descriptor"}], "Assemble": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Assessing": ["Assessing", {"Assessor": "Assessor", "Phenomenon": "Phenomenon", "Value": "Value", "Feature": "Feature", "Evidence": "Evidence", "Manner": "Manner", "Method": "Method", "Means": "Means", "Time": "Time", "Standard": "Standard", "Purpose": "Purpose", "Place": "Place", "Medium": "Medium", "Co-participant": "Co-participant", "Frequency": "Frequency", "Beneficiary": "Beneficiary", "Depictive": "Depictive", "Degree": "Degree", "Circumstances": "Circumstances", "Result": "Result", "Duration": "Duration", "Explanation": "Explanation"}], "Assigned_location": ["Assigned_location", {"Station": "Station", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Formational_cause": "Formational_cause", "Container_possessor": "Container_possessor", "Descriptor": "Descriptor", "Related_event": "Related_event", "Task": "Task", "Responsible_party": "Responsible_party"}], "Assistance": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Asymmetric_reciprocality": ["Asymmetric_reciprocality", {"Protagonist_1": "Protagonist_1", "Protagonist_2": "Protagonist_2"}], "Atonement": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Attaching": ["Transitive_action", {"Agent": "Agent", "Item": "Patient", "Means": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Attack": ["Transitive_action", {"Victim": "Patient", "Assailant": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Attempt": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner", "Frequency": "Frequency"}], "Attempt_action_scenario": ["Attempt_action_scenario", {"Agent": "Agent", "Goal": "Goal", "Outcome": "Outcome", "Means": "Means", "Time": "Time", "Depictive": "Depictive", "Place": "Place", "Manner": "Manner", "Duration": "Duration", "Purpose": "Purpose", "Particular_iteration": "Particular_iteration", "Circumstances": "Circumstances", "Condition": "Condition", "Frequency": "Frequency"}], "Attempt_distant_interaction_scenario": ["Event", {"Time": "Time", "Place": "Place"}], "Attempt_means": ["Transitive_action", {"Agent": "Agent", "Means": "Patient", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Attempt_obtain_food_scenario": ["Event", {"Place": "Place", "Time": "Time"}], "Attempt_obtain_mineral_scenario": ["Event", {"Time": "Time", "Place": "Place"}], "Attempt_suasion": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Attempting_and_resolving_scenario": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Attending": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time", "Frequency": "Frequency"}], "Attention": ["State", {"Perceiver": "Entity"}], "Attention_getting": ["Attention_getting", {"Address_term": "Address_term", "Interjection": "Interjection"}], "Attitude_description": ["Attitude_description", {"Cognizer": "Cognizer", "Attitude": "Attitude", "State_of_affairs": "State_of_affairs", "Degree": "Degree", "Time": "Time"}], "Attributed_information": ["Attributed_information", {"Proposition": "Proposition", "Speaker": "Speaker", "Text": "Text"}], "Attributes": ["Attributes", {"Entity": "Entity", "Attribute": "Attribute", "Value": "Value"}], "Authority": ["Authority", {"Agent": "Agent", "Theme": "Theme", "Domain": "Domain", "Source": "Source", "Descriptor": "Descriptor"}], "Avoiding": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Awareness": ["Awareness", {"Cognizer": "Cognizer", "Content": "Content", "Evidence": "Evidence", "Topic": "Topic", "Degree": "Degree", "Manner": "Manner", "Expressor": "Expressor", "Role": "Role", "Paradigm": "Paradigm", "Time": "Time", "Explanation": "Explanation"}], "Awareness_situation": ["Awareness_situation", {"Cognizer": "Cognizer", "Content": "Content", "Expressor": "Expressor", "Topic": "Topic", "Degree": "Degree", "Evidence": "Evidence", "Manner": "Manner", "Role": "Role", "Time": "Time"}], "Awareness_status": ["Awareness_status", {"Cognizer": "Cognizer", "Content": "Content", "Degree": "Degree", "Evidence": "Evidence", "Role": "Role", "Time": "Time"}], "Bail_decision": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Basis_for_attribute": ["Basis_for_attribute", {"Trajector": "Trajector", "Landmark": "Landmark", "Profiled_region": "Profiled_region"}], "Be_in_agreement_on_action": ["Be_in_agreement_on_action", {"Party_1": "Party_1", "Party_2": "Party_2", "Obligation": "Obligation", "Topic": "Topic", "Medium": "Medium", "Parties": "Parties", "Place": "Place", "Time": "Time", "Manner": "Manner", "Circumstances": "Circumstances", "Degree": "Degree", "Duration": "Duration", "Descriptor": "Descriptor"}], "Be_in_agreement_on_assessment": ["Be_in_agreement_on_assessment", {"Cognizers": "Cognizers", "Cognizer_1": "Cognizer_1", "Cognizer_2": "Cognizer_2", "Question": "Question", "Degree": "Degree", "Time": "Time", "Place": "Place", "Manner": "Manner", "Explanation": "Explanation", "Depictive": "Depictive", "Opinion": "Opinion", "Topic": "Topic", "Circumstances": "Circumstances"}], "Be_on_alert": ["State", {"Activity": "Entity"}], "Be_subset_of": ["Be_subset_of", {"Total": "Total", "Part": "Part", "Frequency": "Frequency", "Contrast_set": "Contrast_set", "Subregion": "Subregion", "Explanation": "Explanation", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Be_translation_equivalent": ["Be_translation_equivalent", {"Source_symbol": "Source_symbol", "Source_representation": "Source_representation", "Time": "Time", "Circumstances": "Circumstances", "Target_symbol": "Target_symbol", "Target_representation": "Target_representation", "Content": "Content", "Equivalence": "Equivalence", "Medium": "Medium"}], "Bearing_arms": ["State", {"Protagonist": "Entity"}], "Beat_opponent": ["Beat_opponent", {"Winner": "Winner", "Score": "Score", "Margin": "Margin", "Rank": "Rank", "Prize": "Prize", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Venue": "Venue", "Particular_iteration": "Particular_iteration", "Explanation": "Explanation", "Period_of_iterations": "Period_of_iterations", "Loser": "Loser", "Circumstances": "Circumstances", "Re-encoding": "Re-encoding", "Result": "Result", "Iterations": "Iterations", "Communicative_force": "Communicative_force", "Event_description": "Event_description", "Degree": "Degree", "Depictive": "Depictive", "Competition": "Competition", "Frequency": "Frequency"}], "Becoming": ["Event", {"Place": "Place", "Time": "Time", "Duration_of_final_state": "Duration", "Manner": "Manner", "Explanation": "Explanation"}], "Becoming_a_member": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Frequency": "Frequency"}], "Becoming_attached": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Becoming_aware": ["Becoming_aware", {"Cognizer": "Cognizer", "Phenomenon": "Phenomenon", "Ground": "Ground", "State": "State", "Evidence": "Evidence", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Topic": "Topic", "Time": "Time", "Purpose": "Purpose", "Instrument": "Instrument", "Frequency": "Frequency", "Circumstances": "Circumstances", "Explanation": "Explanation", "Particular_iteration": "Particular_iteration", "Period_of_iterations": "Period_of_iterations"}], "Becoming_detached": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Becoming_dry": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Becoming_separated": ["Becoming_separated", {"Whole": "Whole", "Parts": "Parts", "Part_1": "Part_1", "Part_2": "Part_2", "Criterion": "Criterion", "Depictive": "Depictive", "Manner": "Manner", "Degree": "Degree", "Means": "Means", "Result": "Result", "Time": "Time", "Place": "Place"}], "Becoming_silent": ["Becoming_silent", {"Speaker": "Speaker", "Topic": "Topic", "Place": "Place", "Time": "Time", "Expressor": "Expressor", "Manner": "Manner", "Explanation": "Explanation"}], "Becoming_visible": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Behind_the_scenes": ["Behind_the_scenes", {"Artist": "Artist", "Production": "Production", "Type": "Type", "Distributor": "Distributor", "Studio": "Studio", "Medium": "Medium", "Time": "Time", "Place": "Place", "Nationality": "Nationality", "Purpose": "Purpose", "Performer": "Performer", "Score": "Score", "Scene": "Scene", "Manner": "Manner"}], "Being_active": ["Being_active", {"Duration": "Duration", "Activity": "Activity", "Place": "Place", "Purpose": "Purpose", "Time": "Time", "Manner": "Manner", "Agent": "Agent", "Salient_entity": "Salient_entity", "Role": "Role", "Degree": "Degree", "Event_description": "Event_description", "Frequency": "Frequency", "Depictive": "Depictive", "Circumstances": "Circumstances", "Explanation": "Explanation", "Iterations": "Iterations"}], "Being_at_risk": ["Being_at_risk", {"Asset": "Asset", "Degree": "Degree", "Harmful_event": "Harmful_event", "Dangerous_entity": "Dangerous_entity", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Situation": "Situation", "Domain": "Domain", "Depictive": "Depictive", "Frequency": "Frequency", "Duration": "Duration"}], "Being_attached": ["State", {"Item": "Entity"}], "Being_awake": ["Being_awake", {"Protagonist": "Protagonist", "Duration": "Duration", "Time": "Time", "Place": "Place", "Degree": "Degree", "Manner": "Manner"}], "Being_born": ["Event", {"Time": "Time", "Place": "Place"}], "Being_contained_within": ["State", {"Trajector": "Entity"}], "Being_detached": ["Being_detached", {"Item": "Item", "Items": "Items", "Source": "Source", "Manner": "Manner"}], "Being_dry": ["Being_dry", {"Item": "Item", "Degree": "Degree", "Subregion": "Subregion"}], "Being_employed": ["Being_employed", {"Compensation": "Compensation", "Employee": "Employee", "Employer": "Employer", "Manner": "Manner", "Place_of_employment": "Place_of_employment", "Position": "Position", "Purpose": "Purpose", "Task": "Task", "Time": "Time", "Field": "Field", "Duration": "Duration", "Rank": "Rank", "Type": "Type", "Contract_basis": "Contract_basis", "Place": "Place", "Frequency": "Frequency", "Event_description": "Event_description", "Circumstances": "Circumstances", "Particular_iteration": "Particular_iteration"}], "Being_in_captivity": ["Being_in_captivity", {"Theme": "Theme", "Holding_location": "Holding_location", "Agent": "Agent", "Reciprocation": "Reciprocation", "Place": "Place", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation", "Duration": "Duration", "Cause": "Cause"}], "Being_in_category": ["Being_in_category", {"Cognizer": "Cognizer", "Item": "Item", "Category": "Category", "Criteria": "Criteria", "Manner": "Manner", "Means": "Means", "Time": "Time", "Circumstances": "Circumstances"}], "Being_in_control": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Being_in_effect": ["Being_in_effect", {"Binding_principle": "Binding_principle", "Duration": "Duration", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances", "Explanation": "Explanation", "Obligated_party": "Obligated_party", "Degree": "Degree"}], "Being_in_operation": ["State", {"Device": "Entity"}], "Being_incarcerated": ["Being_incarcerated", {"Prisoner": "Prisoner", "Prison": "Prison", "Authorities": "Authorities", "Crime": "Crime", "Place": "Place", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation", "Duration": "Duration"}], "Being_included": ["Being_included", {"Whole": "Whole", "Part": "Part"}], "Being_located": ["State", {"Theme": "Entity"}], "Being_named": ["Being_named", {"Name": "Name", "Entity": "Entity", "Language": "Language", "Type": "Type", "Descriptor": "Descriptor", "Context": "Context", "Etymological_root": "Etymological_root"}], "Being_necessary": ["Being_necessary", {"Dependent": "Dependent", "Requirement": "Requirement", "Degree": "Degree", "Time": "Time", "Condition": "Condition", "Domain": "Domain", "Place": "Place", "Dependent_individual": "Dependent_individual", "Required_entity": "Required_entity", "Descriptor": "Descriptor", "Explanation": "Explanation"}], "Being_obligated": ["Being_obligated", {"Responsible_party": "Responsible_party", "Duty": "Duty", "Condition": "Condition", "Consequence": "Consequence", "Time": "Time", "Place": "Place", "Frequency": "Frequency"}], "Being_obligatory": ["Being_obligatory", {"Condition": "Condition", "Consequence": "Consequence", "Duty": "Duty", "Responsible_party": "Responsible_party", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Explanation": "Explanation"}], "Being_operational": ["Being_operational", {"Object": "Object", "Degree": "Degree"}], "Being_pregnant": ["Being_pregnant", {"Mother": "Mother", "Father": "Father", "Parents": "Parents", "Offspring": "Offspring", "Duration": "Duration"}], "Being_questionable": ["Being_questionable", {"Behavior": "Behavior", "Degree": "Degree", "Social_actor": "Social_actor", "Judge": "Judge", "Entity": "Entity"}], "Being_relevant": ["Being_relevant", {"Phenomenon": "Phenomenon", "Endeavor": "Endeavor", "Cognizer": "Cognizer", "Degree": "Degree", "Specification": "Specification"}], "Being_rotted": ["Being_rotted", {"Patient": "Patient", "Degree": "Degree"}], "Being_up_to_it": ["Being_up_to_it", {"Entity": "Entity", "Activity": "Activity", "Degree": "Degree", "Circumstances": "Circumstances", "Explanation": "Explanation", "Relevant_feature": "Relevant_feature"}], "Being_wet": ["Being_wet", {"Item": "Item", "Liquid": "Liquid", "Degree": "Degree", "Explanation": "Explanation", "Subregion": "Subregion"}], "Besieging": ["Transitive_action", {"Assailant": "Agent", "Victim": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Beyond_compare": ["Beyond_compare", {"Standard": "Standard", "Variable": "Variable", "Competitors": "Competitors", "Domain": "Domain"}], "Billing": ["Billing", {"Debtor": "Debtor", "Goods": "Goods", "Means": "Means", "Money": "Money", "Rate": "Rate", "Owed_party": "Owed_party", "Unit": "Unit", "Place": "Place", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner", "Billing_authority": "Billing_authority", "Payment_status": "Payment_status", "Bad_action": "Bad_action"}], "Biological_area": ["Biological_area", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Formational_cause": "Formational_cause", "Locale": "Locale", "Name": "Name", "Relative_location": "Relative_location", "Descriptor": "Descriptor"}], "Biological_classification": ["Biological_classification", {"Rank": "Rank", "Member": "Member", "Subtype": "Subtype", "Property": "Property"}], "Biological_entity": ["Biological_entity", {"Organism": "Organism", "Descriptor": "Descriptor", "Origin": "Origin"}], "Biological_mechanisms": ["Biological_mechanisms", {"Trigger": "Trigger", "Systemic_effect": "Systemic_effect", "Place": "Place"}], "Biological_urge": ["Biological_urge", {"Degree": "Degree", "Experiencer": "Experiencer", "Time": "Time", "Place": "Place", "Expressor": "Expressor", "Duration": "Duration", "Explanation": "Explanation", "State": "State", "Parameter": "Parameter"}], "Birth_scenario": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Board_vehicle": ["Board_vehicle", {"Traveller": "Traveller", "Vehicle": "Vehicle", "Source": "Source", "Manner": "Manner", "Path": "Path", "Duration_of_final_state": "Duration_of_final_state", "Depictive": "Depictive", "Time": "Time", "Cotheme": "Cotheme", "Purpose": "Purpose", "Place": "Place", "Circumstances": "Circumstances"}], "Body_decoration": ["Body_decoration", {"Body_location": "Body_location", "Decorated_individual": "Decorated_individual", "Decoration": "Decoration", "Decoration_descriptor": "Decoration_descriptor", "Picture": "Picture", "Use": "Use", "Type": "Type"}], "Body_description_holistic": ["Body_description_holistic", {"Degree": "Degree", "Individual": "Individual", "Figure": "Figure"}], "Body_description_part": ["Body_description_part", {"Individual": "Individual", "Figure": "Figure", "Degree": "Degree"}], "Body_mark": ["Body_mark", {"Attachment": "Attachment", "Body_mark": "Body_mark", "Descriptor": "Descriptor", "Possessor": "Possessor", "Cause": "Cause", "Type": "Type", "Constituents": "Constituents"}], "Body_movement": ["Body_movement", {"Agent": "Agent", "Body_part": "Body_part", "Internal_cause": "Internal_cause", "External_cause": "External_cause", "Addressee": "Addressee", "Source": "Source", "Path": "Path", "Goal": "Goal", "Area": "Area", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Result": "Result", "Message": "Message", "Time": "Time", "Subregion": "Subregion", "Purpose": "Purpose", "Cognate_event": "Cognate_event", "Duration": "Duration", "Place": "Place", "Re-encoding": "Re-encoding", "Coordinated_event": "Coordinated_event"}], "Body_parts": ["Body_parts", {"Possessor": "Possessor", "Descriptor": "Descriptor", "Body_part": "Body_part", "Subregion": "Subregion", "Orientational_location": "Orientational_location", "Attachment": "Attachment"}], "Bond_maturation": ["Bond_maturation", {"Financial_instrument": "Financial_instrument", "Time": "Time", "Issuer": "Issuer", "Holder": "Holder", "Value": "Value", "Principle": "Principle", "Interest": "Interest"}], "Borrowing": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Boundary": ["Boundary", {"Boundary": "Boundary", "Entity": "Entity", "Entities": "Entities", "Relative_location": "Relative_location"}], "Bounded_entity": ["Bounded_entity", {"Bounded_area": "Bounded_area", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Name": "Name", "Owner": "Owner", "Formational_cause": "Formational_cause", "Type": "Type"}], "Bounded_region": ["Bounded_region", {"Interior": "Interior", "Ground": "Ground", "Surface": "Surface", "Boundary": "Boundary", "Exterior": "Exterior"}], "Bragging": ["Bragging", {"Speaker": "Speaker", "Addressee": "Addressee", "Topic": "Topic", "Manner": "Manner", "Means": "Means", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Explanation": "Explanation", "Message": "Message", "Role": "Role", "Expressor": "Expressor", "Occasion": "Occasion", "Particular_iteration": "Particular_iteration", "Internal_cause": "Internal_cause", "Degree": "Degree"}], "Breaking_apart": ["Breaking_apart", {"Whole": "Whole", "Pieces": "Pieces", "Criterion": "Criterion", "Manner": "Manner", "Time": "Time", "Place": "Place", "Means": "Means"}], "Breaking_off": ["Breaking_off", {"Subpart": "Subpart", "Whole": "Whole", "Criterion": "Criterion", "Time": "Time", "Place": "Place", "Manner": "Manner", "Means": "Means"}], "Breaking_out_captive": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Breathing": ["Breathing", {"Agent": "Agent", "Air": "Air", "Goal": "Goal", "Manner": "Manner", "Means": "Means", "Source": "Source", "Path": "Path", "Degree": "Degree", "Depictive": "Depictive", "Place": "Place", "Duration": "Duration", "Distance": "Distance", "Instrument": "Instrument", "Time": "Time", "Internal_cause": "Internal_cause", "External_cause": "External_cause", "Circumstances": "Circumstances", "Purpose": "Purpose"}], "Bringing": ["Bringing", {"Agent": "Agent", "Goal": "Goal", "Source": "Source", "Path": "Path", "Theme": "Theme", "Constant_location": "Constant_location", "Area": "Area", "Depictive": "Depictive", "Distance": "Distance", "Manner": "Manner", "Speed": "Speed", "Purpose": "Purpose", "Carrier": "Carrier", "Means": "Means", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Beneficiary": "Beneficiary", "Particular_iteration": "Particular_iteration", "Frequency": "Frequency", "Degree": "Degree", "Co-participant": "Co-participant", "Duration": "Duration", "Period_of_iterations": "Period_of_iterations"}], "Building": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Created_entity": "Patient", "Depictive": "Depictive", "Manner": "Manner"}], "Building_subparts": ["Building_subparts", {"Building_part": "Building_part", "Whole": "Whole", "Use": "Use", "Type": "Type", "Place": "Place", "Descriptor": "Descriptor"}], "Buildings": ["Buildings", {"Creator": "Creator", "Building": "Building", "Function": "Function", "Name": "Name", "Material": "Material", "Time_of_creation": "Time_of_creation", "Type": "Type", "Descriptor": "Descriptor", "Place": "Place", "Relative_location": "Relative_location", "Possessor": "Possessor"}], "Bungling": ["Bungling", {"Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Agent": "Agent", "Patient": "Patient", "Place": "Place", "Instrument": "Instrument", "Time": "Time", "Action": "Action", "Area": "Area"}], "Burying": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Result": "Result", "Place": "Place", "Time": "Time", "Cause": "Cause"}], "Business_closure": ["Business_closure", {"Entity": "Entity", "Explanation": "Explanation", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances", "Manner": "Manner", "Containing_event": "Containing_event", "Depictive": "Depictive"}], "Businesses": ["Businesses", {"Product": "Product", "Proprietor": "Proprietor", "Descriptor": "Descriptor", "Place": "Place", "Business": "Business", "Business_name": "Business_name", "Service_provider": "Service_provider"}], "Cache": ["Cache", {"Cache": "Cache", "Resource": "Resource", "Use": "Use", "Possessor": "Possessor", "Descriptor": "Descriptor"}], "Calendric_unit": ["Calendric_unit", {"Relative_time": "Relative_time", "Name": "Name", "Whole": "Whole", "Count": "Count", "Unit": "Unit", "Salient_event": "Salient_event", "Landmark_period": "Landmark_period", "Trajector_event": "Trajector_event"}], "Candidness": ["Candidness", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Medium": "Medium", "Degree": "Degree", "Manner": "Manner"}], "Capability": ["Capability", {"Entity": "Entity", "Event": "Event", "Degree": "Degree", "Circumstances": "Circumstances", "Explanation": "Explanation", "Relevant_feature": "Relevant_feature", "Status": "Status", "Role": "Role", "Time": "Time", "Frequency": "Frequency"}], "Capacity": ["Capacity", {"Entity": "Entity", "Degree": "Degree", "Circumstances": "Circumstances", "Explanation": "Explanation", "Status": "Status", "Theme": "Theme", "Depictive": "Depictive", "Subregion": "Subregion", "Purpose": "Purpose", "Time": "Time"}], "Capital_stock": ["Capital_stock", {"Stock": "Stock", "Type": "Type", "Shareholder": "Shareholder", "Issuer": "Issuer", "Amount": "Amount"}], "Cardinal_numbers": ["Cardinal_numbers", {"Number": "Number", "Entity": "Entity", "Precision": "Precision", "Multiplier": "Multiplier", "Composite_number": "Composite_number", "Unit": "Unit"}], "Carry_goods": ["Carry_goods", {"Distributor": "Distributor", "Goods": "Goods", "Time": "Time", "Place": "Place", "Manner": "Manner", "Duration": "Duration", "Frequency": "Frequency"}], "Catastrophe": ["Catastrophe", {"Undesirable_event": "Undesirable_event", "Place": "Place", "Time": "Time", "Patient": "Patient", "Degree": "Degree", "Manner": "Manner", "Circumstances": "Circumstances", "Cause": "Cause"}], "Catching_fire": ["Catching_fire", {"Place": "Place", "Time": "Time", "Fire": "Fire", "Fuel": "Fuel", "Manner": "Manner", "Explanation": "Explanation"}], "Categorization": ["Categorization", {"Cognizer": "Cognizer", "Item": "Item", "Category": "Category", "Criteria": "Criteria", "Manner": "Manner", "Means": "Means", "Time": "Time", "Circumstances": "Circumstances", "Concessive": "Concessive", "Explanation": "Explanation"}], "Causation": ["Causation", {"Cause": "Cause", "Affected": "Affected", "Effect": "Effect", "Place": "Place", "Time": "Time", "Actor": "Actor", "Circumstances": "Circumstances", "Manner": "Manner", "Explanation": "Explanation", "Means": "Means", "Frequency": "Frequency", "Concessive": "Concessive"}], "Causation_scenario": ["Causation_scenario", {"Cause": "Cause", "Effect": "Effect", "Averted_situation": "Averted_situation", "Time": "Time", "Place": "Place"}], "Cause_bodily_experience": ["Transitive_action", {"Agent": "Agent", "Experiencer": "Patient", "Result": "Result", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Cause": "Cause"}], "Cause_change": ["Transitive_action", {"Agent": "Agent", "Time": "Time", "Manner": "Manner", "Entity": "Patient", "Cause": "Cause", "Means": "Means", "Place": "Place"}], "Cause_change_of_consistency": ["Transitive_action", {"Manner": "Manner", "Place": "Place", "Result": "Result", "Time": "Time", "Patient": "Patient", "Agent": "Agent", "Means": "Means", "Cause": "Cause"}], "Cause_change_of_phase": ["Transitive_action", {"Agent": "Agent", "Manner": "Manner", "Means": "Means", "Patient": "Patient", "Place": "Place", "Time": "Time", "Result": "Result", "Cause": "Cause", "Depictive": "Depictive"}], "Cause_change_of_position_on_a_scale": ["Transitive_action", {"Agent": "Agent", "Item": "Patient", "Means": "Means", "Time": "Time", "Cause": "Cause", "Manner": "Manner", "Place": "Place"}], "Cause_change_of_strength": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Depictive": "Depictive", "Result": "Result", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Cause_emotion": ["Transitive_action", {"Agent": "Agent", "Experiencer": "Patient", "Means": "Means", "Manner": "Manner", "Time": "Time", "Event": "Event", "Place": "Place"}], "Cause_expansion": ["Transitive_action", {"Agent": "Agent", "Item": "Patient", "Means": "Means", "Manner": "Manner", "Cause": "Cause", "Time": "Time", "Place": "Place"}], "Cause_fluidic_motion": ["Transitive_action", {"Agent": "Agent", "Cause": "Cause", "Fluid": "Patient", "Manner": "Manner", "Time": "Time", "Place": "Place", "Means": "Means"}], "Cause_harm": ["Transitive_action", {"Agent": "Agent", "Victim": "Patient", "Result": "Result", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Cause": "Cause"}], "Cause_impact": ["Transitive_action", {"Impactor": "Patient", "Manner": "Manner", "Place": "Place", "Result": "Result", "Time": "Time", "Agent": "Agent", "Means": "Means", "Cause": "Cause"}], "Cause_motion": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Depictive": "Depictive", "Means": "Means", "Manner": "Manner", "Cause": "Cause", "Place": "Place", "Time": "Time"}], "Cause_proliferation_in_number": ["Transitive_action", {"Agent": "Agent", "Set": "Patient", "Means": "Means", "Time": "Time", "Cause": "Cause", "Manner": "Manner", "Place": "Place"}], "Cause_temperature_change": ["Transitive_action", {"Agent": "Agent", "Item": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Result": "Result", "Cause": "Cause", "Depictive": "Depictive"}], "Cause_to_amalgamate": ["Transitive_action", {"Agent": "Agent", "Part_1": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Cause_to_be_dry": ["Transitive_action", {"Agent": "Agent", "Dryee": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Cause": "Cause"}], "Cause_to_be_included": ["Transitive_action", {"Agent": "Agent", "New_member": "Patient", "Cause": "Cause", "Means": "Means", "Time": "Time", "Manner": "Manner", "Place": "Place"}], "Cause_to_be_sharp": ["Transitive_action", {"Means": "Means", "Agent": "Agent", "Place": "Place", "Time": "Time", "Patient": "Patient", "Manner": "Manner", "Cause": "Cause", "Result": "Result"}], "Cause_to_be_wet": ["Transitive_action", {"Agent": "Agent", "Liquid": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Cause": "Cause"}], "Cause_to_burn": ["Cause_to_burn", {"Agent": "Agent", "Flammables": "Flammables", "Cause": "Cause", "Time": "Time", "Place": "Place", "Manner": "Manner", "Means": "Means", "Explanation": "Explanation", "Containing_event": "Containing_event", "Depictive": "Depictive", "Actor": "Actor"}], "Cause_to_continue": ["Transitive_action", {"Agent": "Agent", "Process": "Patient", "Means": "Means", "Cause": "Cause", "Time": "Time", "Manner": "Manner", "Place": "Place"}], "Cause_to_end": ["Transitive_action", {"Process": "Patient", "Means": "Means", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Manner": "Manner", "Agent": "Agent", "Cause": "Cause"}], "Cause_to_experience": ["Transitive_action", {"Means": "Means", "Agent": "Agent", "Experiencer": "Patient", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Cause_to_fragment": ["Transitive_action", {"Agent": "Agent", "Manner": "Manner", "Means": "Means", "Whole_patient": "Patient", "Place": "Place", "Time": "Time", "Result": "Result", "Cause": "Cause"}], "Cause_to_land": ["Cause_to_land", {"Vehicle": "Vehicle", "Source": "Source", "Path": "Path", "Goal": "Goal", "Manner": "Manner", "Means": "Means", "Cotheme": "Cotheme", "Time": "Time", "New_situation": "New_situation", "Depictive": "Depictive", "Period_of_iterations": "Period_of_iterations", "Circumstances": "Circumstances", "Purpose": "Purpose", "Degree": "Degree", "Event_description": "Event_description", "Re-encoding": "Re-encoding", "Frequency": "Frequency", "Place": "Place", "Operator": "Operator"}], "Cause_to_make_noise": ["Transitive_action", {"Agent": "Agent", "Sound_maker": "Patient", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Cause": "Cause", "Time": "Time", "Place": "Place"}], "Cause_to_make_progress": ["Transitive_action", {"Project": "Patient", "Time": "Time", "Manner": "Manner", "Agent": "Agent", "Place": "Place", "Means": "Means"}], "Cause_to_move_in_place": ["Transitive_action", {"Theme": "Patient", "Place": "Place", "Time": "Time", "Manner": "Manner", "Means": "Means", "Agent": "Agent", "Cause": "Cause", "Result": "Result"}], "Cause_to_perceive": ["Transitive_action", {"Agent": "Agent", "Perceiver": "Patient", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Cause_to_resume": ["Transitive_action", {"Agent": "Agent", "Process": "Patient", "Time": "Time", "Cause": "Cause", "Place": "Place", "Means": "Means", "Manner": "Manner"}], "Cause_to_rot": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Depictive": "Depictive", "Result": "Result", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Cause_to_start": ["Causation", {"Cause": "Actor", "Effect": "Affected", "Place": "Place", "Means": "Means", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation", "Circumstances": "Circumstances", "Concessive": "Concessive"}], "Cause_to_wake": ["Transitive_action", {"Place": "Place", "Sleeper": "Patient", "Time": "Time", "Agent": "Agent", "Means": "Means", "Cause": "Cause", "Manner": "Manner"}], "Ceasing_to_be": ["Event", {"Place": "Place", "Time": "Time", "Explanation": "Explanation", "Duration_of_final_state": "Duration", "Manner": "Manner"}], "Certainty": ["Certainty", {"Cognizer": "Cognizer", "Topic": "Topic", "Content": "Content", "Degree": "Degree", "Manner": "Manner", "Expressor": "Expressor", "Concessive": "Concessive", "Explanation": "Explanation"}], "Change_accessibility": ["Transitive_action", {"Agent": "Agent", "Useful_location": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place"}], "Change_direction": ["Change_direction", {"Theme": "Theme", "Source": "Source", "Path": "Path", "Goal": "Goal", "Manner": "Manner", "Means": "Means", "Speed": "Speed", "Cotheme": "Cotheme", "Depictive": "Depictive", "Place": "Place", "Path_shape": "Path_shape", "Direction": "Direction", "Time": "Time", "Purpose": "Purpose", "Means_of_motion": "Means_of_motion", "Explanation": "Explanation", "Containing_event": "Containing_event", "Frequency": "Frequency", "Re-encoding": "Re-encoding", "New_situation": "New_situation", "Circumstances": "Circumstances", "Angle": "Angle", "Result": "Result"}], "Change_event_duration": ["Transitive_action", {"Agent": "Agent", "Time": "Time", "Manner": "Manner", "Cause": "Cause", "Means": "Means"}], "Change_event_time": ["Transitive_action", {"Agent": "Agent", "Cause": "Cause", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Change_of_consistency": ["Event", {"Place": "Place", "Time": "Time", "Explanation": "Explanation", "Manner": "Manner"}], "Change_of_leadership": ["Transitive_action", {"Selector": "Agent", "New_leader": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place"}], "Change_of_phase": ["Change_of_phase", {"Patient": "Patient", "Result": "Result", "Initial_state": "Initial_state", "Degree": "Degree", "Speed": "Speed", "Manner": "Manner", "Place": "Place", "Time": "Time", "Circumstances": "Circumstances", "Subregion": "Subregion"}], "Change_of_phase_scenario": ["Change_of_phase_scenario", {"Patient": "Patient", "Result": "Result", "Initial_state": "Initial_state", "Degree": "Degree", "Speed": "Speed", "Manner": "Manner", "Place": "Place", "Time": "Time", "Circumstances": "Circumstances", "Subregion": "Subregion"}], "Change_of_quantity_of_possession": ["Change_of_quantity_of_possession", {"Owner": "Owner", "Possession": "Possession", "Time": "Time", "Place": "Place", "Degree": "Degree", "Explanation": "Explanation"}], "Change_of_temperature": ["Event", {"Duration": "Duration", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Change_operational_state": ["Transitive_action", {"Device": "Patient", "Time": "Time", "Place": "Place", "Agent": "Agent", "Manner": "Manner", "Means": "Means"}], "Change_position_on_a_scale": ["Event", {"Manner": "Manner", "Time": "Time", "Duration": "Duration", "Place": "Place"}], "Change_post-state": ["Change_post-state", {"Entity": "Entity"}], "Change_posture": ["Event", {"Manner": "Manner", "Location": "Place", "Time": "Time"}], "Change_resistance": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Depictive": "Depictive", "Result": "Result", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Change_tool": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Chaos": ["State", {"Entity": "Entity", "State": "State"}], "Chatting": ["Chatting", {"Interlocutors": "Interlocutors", "Interlocutor_1": "Interlocutor_1", "Interlocutor_2": "Interlocutor_2", "Duration": "Duration", "Topic": "Topic", "Language": "Language", "Means_of_communication": "Means_of_communication", "Purpose": "Purpose", "Time": "Time", "Place": "Place", "Means": "Means", "Manner": "Manner", "Depictive": "Depictive"}], "Chemical-sense_description": ["Chemical-sense_description", {"Perceptual_source": "Perceptual_source", "Degree": "Degree", "Sensory_attribute": "Sensory_attribute"}], "Chemical_potency": ["Chemical_potency", {"Chemical_entity": "Chemical_entity", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Place": "Place"}], "Choosing": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Circumscribed_existence": ["State", {"Entity": "Entity"}], "Citing": ["Citing", {"Defendant": "Defendant", "Court": "Court", "Authority": "Authority", "Charges": "Charges", "Fine": "Fine", "Place": "Place", "Time": "Time"}], "Claim_ownership": ["Claim_ownership", {"Claimant": "Claimant", "Property": "Property", "Beneficiary": "Beneficiary", "Role": "Role"}], "Clemency": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Closure": ["Transitive_action", {"Containing_object": "Patient", "Agent": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Clothing": ["Clothing", {"Garment": "Garment", "Wearer": "Wearer", "Style": "Style", "Material": "Material", "Descriptor": "Descriptor", "Subregion": "Subregion", "Use": "Use", "Body_location": "Body_location", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name"}], "Clothing_parts": ["Clothing_parts", {"Clothing": "Clothing", "Subpart": "Subpart", "Material": "Material", "Subregion": "Subregion", "Wearer": "Wearer", "Body_location": "Body_location", "Descriptor": "Descriptor"}], "Co-association": ["Co-association", {"Participant1": "Participant1", "Participants": "Participants", "Participant2": "Participant2", "Place": "Place", "Time": "Time", "Institution": "Institution"}], "Cogitation": ["Cogitation", {"Cognizer": "Cognizer", "Topic": "Topic", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Medium": "Medium", "Purpose": "Purpose", "Time": "Time"}], "Cognitive_connection": ["Cognitive_connection", {"Concept_1": "Concept_1", "Concept_2": "Concept_2", "Point_of_view": "Point_of_view", "Circumstances": "Circumstances", "Concepts": "Concepts", "Degree": "Degree", "Specification": "Specification"}], "Cognitive_impact": ["Cognitive_impact", {"Phenomenon": "Phenomenon", "Experiencer": "Experiencer", "Judgment": "Judgment", "Circumstances": "Circumstances", "Manner": "Manner", "Frequency": "Frequency"}], "Coincidence": ["Event", {"State_of_affairs": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Collaboration": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Collocation_image_schema": ["Collocation_image_schema", {"Profiled_region": "Profiled_region", "Ground": "Ground"}], "Colonization": ["Colonization", {"Colonists": "Colonists", "Homeland": "Homeland", "New_area": "New_area", "Time": "Time", "Degree": "Degree", "Purpose": "Purpose", "Descriptor": "Descriptor", "Explanation": "Explanation"}], "Color": ["Color", {"Entity": "Entity", "Color": "Color", "Type": "Type", "Comparand": "Comparand", "Color_qualifier": "Color_qualifier", "Descriptor": "Descriptor", "Cause": "Cause", "Degree": "Degree", "Subregion": "Subregion", "Attribute": "Attribute"}], "Color_qualities": ["Color_qualities", {"Color": "Color", "Degree": "Degree", "Described_entity": "Described_entity"}], "Come_down_with": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Come_into_effect": ["Event", {"Binding_principle": "Event", "Manner": "Manner", "Place": "Place", "Time": "Time", "Duration": "Duration", "Frequency": "Frequency", "Explanation": "Explanation"}], "Come_together": ["Event", {"Place": "Place", "Time": "Time", "Frequency": "Frequency", "Manner": "Manner"}], "Coming_to_be": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Coming_to_believe": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Coming_up_with": ["Coming_up_with", {"Cognizer": "Cognizer", "Idea": "Idea", "Purpose": "Purpose", "Material": "Material", "Amount_of_progress": "Amount_of_progress", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Location_of_appearance": "Location_of_appearance", "Place": "Place", "Time": "Time"}], "Commemorative": ["Commemorative", {"Honored_entity": "Honored_entity", "Dedicated_type": "Dedicated_type", "Dedicated_entity": "Dedicated_entity"}], "Commerce_buy": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner"}], "Commerce_collect": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner"}], "Commerce_goods-transfer": ["Event", {"Time": "Time", "Place": "Place", "Explanation": "Explanation"}], "Commerce_money-transfer": ["Event", {"Place": "Place", "Time": "Time", "Explanation": "Explanation"}], "Commerce_pay": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Commerce_scenario": ["Commerce_scenario", {"Buyer": "Buyer", "Seller": "Seller", "Money": "Money", "Goods": "Goods", "Rate": "Rate", "Unit": "Unit", "Means": "Means", "Manner": "Manner", "Purpose": "Purpose"}], "Commerce_sell": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Commercial_transaction": ["Commercial_transaction", {"Buyer": "Buyer", "Goods": "Goods", "Means": "Means", "Money": "Money", "Rate": "Rate", "Seller": "Seller", "Unit": "Unit"}], "Commitment": ["Commitment", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Medium": "Medium", "Manner": "Manner", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Period_of_iterations": "Period_of_iterations"}], "Committing_crime": ["Event", {"Crime": "Event", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Commonality": ["Commonality", {"Entities": "Entities", "Commonality": "Commonality", "Entity_1": "Entity_1", "Entity_2": "Entity_2"}], "Communicate_categorization": ["Communicate_categorization", {"Speaker": "Speaker", "Category": "Category", "Item": "Item", "Means": "Means", "Medium": "Medium", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances", "Criteria": "Criteria", "Manner": "Manner", "Duration": "Duration"}], "Communication": ["Transitive_action", {"Communicator": "Agent", "Addressee": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place"}], "Communication_manner": ["Transitive_action", {"Speaker": "Agent", "Addressee": "Patient", "Manner": "Manner", "Time": "Time", "Means": "Means"}], "Communication_means": ["Communication_means", {"Communicator": "Communicator", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Manner": "Manner", "Means": "Means", "Explanation": "Explanation", "Depictive": "Depictive"}], "Communication_noise": ["Transitive_action", {"Speaker": "Agent", "Addressee": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Communication_response": ["Transitive_action", {"Speaker": "Agent", "Addressee": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Commutation": ["Commutation", {"Offender": "Offender", "Executive_authority": "Executive_authority", "Explanation": "Explanation", "Time": "Time", "Original_punishment": "Original_punishment", "New_punishment": "New_punishment", "Manner": "Manner", "Place": "Place", "Means": "Means"}], "Commutative_process": ["Commutative_process", {"Term1": "Term1", "Term2": "Term2", "Terms": "Terms", "Calculator": "Calculator"}], "Commutative_statement": ["Commutative_statement", {"Result": "Result", "Term1": "Term1", "Term2": "Term2", "Terms": "Terms"}], "Compatibility": ["Compatibility", {"Item_1": "Item_1", "Item_2": "Item_2", "Items": "Items", "Degree": "Degree", "Parameter": "Parameter"}], "Competition": ["Competition", {"Participant_1": "Participant_1", "Participant_2": "Participant_2", "Participants": "Participants", "Competition": "Competition", "Score": "Score", "Rank": "Rank", "Prize": "Prize", "Venue": "Venue", "Place": "Place", "Manner": "Manner", "Means": "Means", "Time": "Time", "Duration": "Duration", "Purpose": "Purpose", "Degree": "Degree", "Frequency": "Frequency"}], "Complaining": ["Complaining", {"Complainer": "Complainer", "Addressee": "Addressee", "Complaint": "Complaint", "Topic": "Topic", "Manner": "Manner", "Frequency": "Frequency", "Means": "Means", "Internal_cause": "Internal_cause", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Particular_iteration": "Particular_iteration", "Degree": "Degree", "Occasion": "Occasion", "Explanation": "Explanation", "Result": "Result"}], "Completeness": ["Completeness", {"Degree": "Degree", "Whole": "Whole", "Time": "Time"}], "Compliance": ["Compliance", {"Protagonist": "Protagonist", "Act": "Act", "State_of_affairs": "State_of_affairs", "Norm": "Norm", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Time": "Time", "Explanation": "Explanation", "Judge": "Judge"}], "Concessive": ["Concessive", {"Conceded_state_of_affairs": "Conceded_state_of_affairs", "Topic": "Topic", "Main_assertion": "Main_assertion"}], "Condition_symptom_relation": ["Condition_symptom_relation", {"Patient": "Patient", "Medical_condition": "Medical_condition", "Symptom": "Symptom", "Group": "Group", "Time": "Time", "Place": "Place", "Frequency": "Frequency", "Extent": "Extent", "Explanation": "Explanation", "Influence": "Influence"}], "Conditional_occurrence": ["Conditional_occurrence", {"Profiled_possibility": "Profiled_possibility", "Consequence": "Consequence", "Pragmatic_marker": "Pragmatic_marker"}], "Conditional_scenario": ["Conditional_scenario", {"Profiled_possibility": "Profiled_possibility", "Opposite_possibility": "Opposite_possibility", "Consequence": "Consequence", "Anti_consequence": "Anti_consequence"}], "Conduct": ["Conduct", {"Agent": "Agent", "Manner": "Manner", "Circumstances": "Circumstances", "Affected_party": "Affected_party", "Explanation": "Explanation", "Time": "Time", "Place": "Place", "Means": "Means", "Domain": "Domain", "Degree": "Degree", "Standard": "Standard"}], "Conferring_benefit": ["Conferring_benefit", {"Benefactor": "Benefactor", "Beneficiary": "Beneficiary", "Beneficial_situation": "Beneficial_situation", "Degree": "Degree", "Domain": "Domain", "Subset": "Subset"}], "Confronting_problem": ["Event", {"Issue": "Event", "Place": "Place", "Time": "Time", "Manner": "Manner", "Frequency": "Frequency"}], "Connecting_architecture": ["Connecting_architecture", {"Part": "Part", "Whole": "Whole", "Descriptor": "Descriptor", "Orientation": "Orientation", "Material": "Material", "Creator": "Creator", "Source": "Source", "Connected_locations": "Connected_locations", "Direction": "Direction", "Goal": "Goal"}], "Connectors": ["Connectors", {"Connector": "Connector", "Connected_item": "Connected_item", "Fixed_location": "Fixed_location", "Use": "Use", "Material": "Material", "Type": "Type", "Name": "Name", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Descriptor": "Descriptor"}], "Conquering": ["Conquering", {"Conqueror": "Conqueror", "Theme": "Theme", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Instrument": "Instrument", "Depictive": "Depictive", "Frequency": "Frequency"}], "Contact_image_schema": ["Contact_image_schema", {"Profiled_region": "Profiled_region", "Ground": "Ground"}], "Contacting": ["Event", {"Place": "Place", "Time": "Time", "Frequency": "Frequency", "Manner": "Manner"}], "Container_focused_placing": ["Transitive_action", {"Agent": "Agent", "Goal": "Patient", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Container_focused_removing": ["Transitive_action", {"Agent": "Agent", "Source": "Patient", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Cause": "Cause", "Place": "Place", "Time": "Time"}], "Containers": ["Containers", {"Container": "Container", "Contents": "Contents", "Material": "Material", "Type": "Type", "Relative_location": "Relative_location", "Construction": "Construction", "Owner": "Owner", "Use": "Use", "Part": "Part", "Descriptor": "Descriptor"}], "Containing": ["State", {"Container": "Entity"}], "Containment_scenario": ["Containment_scenario", {"Container": "Container", "Interior": "Interior", "Portal": "Portal", "Contents": "Contents", "Time": "Time"}], "Contingency": ["Contingency", {"Outcome": "Outcome", "Determinant": "Determinant", "Degree": "Degree", "Circumstances": "Circumstances"}], "Continued_state_of_affairs": ["Continued_state_of_affairs", {"State_of_affairs": "State_of_affairs", "Reference_occasion": "Reference_occasion", "Circumstances": "Circumstances"}], "Contrary_circumstances": ["Contrary_circumstances", {"Event": "Event", "Adversity": "Adversity", "Contrary_circumstances": "Contrary_circumstances"}], "Contrition": ["Contrition", {"Experiencer": "Experiencer", "Action": "Action", "Degree": "Degree", "Expressor": "Expressor", "Authenticity": "Authenticity", "Emotional_state": "Emotional_state", "Depictive": "Depictive", "Time": "Time", "Manner": "Manner"}], "Control": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Controller_object": ["Controller_object", {"Control": "Control", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Controlled_entity": "Controlled_entity"}], "Convey_importance": ["Convey_importance", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Medium": "Medium", "Manner": "Manner", "Means": "Means", "Time": "Time", "Iterations": "Iterations", "Degree": "Degree", "Place": "Place", "Circumstances": "Circumstances", "Frequency": "Frequency", "Period_of_iterations": "Period_of_iterations", "Event_description": "Event_description", "Particular_iteration": "Particular_iteration"}], "Convoy": ["Convoy", {"Vehicles": "Vehicles", "Convoy": "Convoy", "Aggregate_property": "Aggregate_property", "Name": "Name", "Domain": "Domain", "Possessor": "Possessor", "Cargo": "Cargo", "Source": "Source", "Path": "Path", "Goal": "Goal", "Direction": "Direction", "Support": "Support", "Place": "Place"}], "Cooking_creation": ["Transitive_action", {"Cook": "Agent", "Produced_food": "Patient", "Place": "Place", "Means": "Means", "Time": "Time", "Manner": "Manner"}], "Corporal_punishment": ["Transitive_action", {"Agent": "Agent", "Means": "Means", "Place": "Place", "Time": "Time", "Evaluee": "Patient", "Manner": "Manner", "Result": "Result", "Depictive": "Depictive"}], "Correctness": ["Correctness", {"Information": "Information", "Degree": "Degree", "Domain": "Domain", "Parameter": "Parameter", "Frequency": "Frequency", "Circumstances": "Circumstances", "Source": "Source", "Re-encoding": "Re-encoding", "Manner": "Manner", "Time": "Time", "Medium": "Medium", "Communicative_force": "Communicative_force", "Result": "Result", "Communicative_act": "Communicative_act", "Topic": "Topic"}], "Corroding": ["Corroding", {"Initial_state": "Initial_state", "Duration": "Duration", "Place": "Place", "Explanation": "Explanation", "Result": "Result", "Time": "Time", "Patient": "Patient", "Degree": "Degree", "Subregion": "Subregion", "Speed": "Speed"}], "Corroding_caused": ["Transitive_action", {"Place": "Place", "Result": "Result", "Time": "Time", "Patient": "Patient", "Manner": "Manner", "Means": "Means", "Cause": "Cause", "Agent": "Agent"}], "Cotheme": ["Event", {"Manner": "Manner", "Area": "Place", "Time": "Time", "Place": "Place"}], "Counterattack": ["Transitive_action", {"Victim": "Patient", "Assailant": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Court_examination": ["Court_examination", {"Questioner": "Questioner", "Witness": "Witness", "Topic": "Topic", "Time": "Time", "Place": "Place", "Manner": "Manner", "Purpose": "Purpose", "Means": "Means", "Duration": "Duration"}], "Craft": ["Craft", {"Activity": "Activity", "Practitioner": "Practitioner", "Place": "Place", "Descriptor": "Descriptor", "Culture": "Culture"}], "Create_physical_artwork": ["Transitive_action", {"Creator": "Agent", "Time": "Time", "Representation": "Patient", "Manner": "Manner", "Depictive": "Depictive", "Place": "Place", "Means": "Means"}], "Create_representation": ["Create_representation", {"Representation": "Representation", "Creator": "Creator", "Time": "Time", "Represented": "Represented", "Depictive_of_represented": "Depictive_of_represented", "Manner": "Manner", "Role": "Role", "Depictive": "Depictive", "Material": "Material", "Purpose": "Purpose", "Place": "Place", "Instrument": "Instrument", "Means": "Means", "Iterations": "Iterations", "Reference": "Reference"}], "Creating": ["Transitive_action", {"Created_entity": "Patient", "Depictive": "Depictive", "Means": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time", "Cause": "Cause", "Creator": "Agent"}], "Crime_scenario": ["Crime_scenario", {"Suspect": "Suspect", "Perpetrator": "Perpetrator", "Crime": "Crime", "Charge": "Charge", "Authorities": "Authorities"}], "Criminal_investigation": ["Criminal_investigation", {"Investigator": "Investigator", "Incident": "Incident", "Time": "Time", "Duration": "Duration", "Suspect": "Suspect"}], "Criminal_process": ["Criminal_process", {"Court": "Court", "Place": "Place", "Time": "Time", "Defendant": "Defendant", "Judge": "Judge", "Prosecution": "Prosecution", "Charges": "Charges", "Defense": "Defense", "Jury": "Jury", "Offense": "Offense", "Authorities": "Authorities", "Suspect": "Suspect", "Witness": "Witness", "Victim": "Victim"}], "Cure": ["Transitive_action", {"Healer": "Agent", "Patient": "Patient", "Treatment": "Cause", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Custom": ["Custom", {"Behavior": "Behavior", "Protagonist": "Protagonist", "Domain": "Domain", "Descriptor": "Descriptor", "Place": "Place", "Society": "Society"}], "Cutting": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Item": "Patient", "Manner": "Manner"}], "Cycle_of_existence_scenario": ["Cycle_of_existence_scenario", {"Entity": "Entity"}], "Cycle_of_life_and_death": ["Cycle_of_life_and_death", {"Protagonist": "Protagonist"}], "Damaging": ["Transitive_action", {"Agent": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Patient": "Patient", "Result": "Result", "Cause": "Cause"}], "Daring": ["Event", {"Action": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Dead_or_alive": ["State", {"Protagonist": "Entity"}], "Death": ["Event", {"Explanation": "Explanation", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Deception_end": ["Deception_end", {"Victim": "Victim", "Deceiver": "Deceiver", "Phenomenon": "Phenomenon", "Topic": "Topic", "Time": "Time", "Place": "Place"}], "Deception_scenario": ["Deception_scenario", {"Victim": "Victim", "Deceiver": "Deceiver", "Phenomenon": "Phenomenon", "Topic": "Topic"}], "Deception_success": ["Deception_success", {"Deceiver": "Deceiver", "Victim": "Victim", "Topic": "Topic", "Means": "Means", "Time": "Time", "Place": "Place", "Phenomenon": "Phenomenon"}], "Deciding": ["Deciding", {"Cognizer": "Cognizer", "Decision": "Decision", "Possibilities": "Possibilities", "Time": "Time", "Place": "Place", "Manner": "Manner", "Inherent_purpose": "Inherent_purpose", "Circumstance": "Circumstance", "Explanation": "Explanation"}], "Defending": ["Defending", {"Defender": "Defender", "Instrument": "Instrument", "Assailant": "Assailant", "Manner": "Manner", "Means": "Means", "Place": "Place", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Location_of_protagonist": "Location_of_protagonist", "Depictive": "Depictive", "Victim": "Victim", "Location_of_assailant": "Location_of_assailant"}], "Degree": ["Degree", {"Gradable_attribute": "Gradable_attribute"}], "Degree_of_processing": ["Degree_of_processing", {"Alterant": "Alterant", "Material": "Material", "Degree": "Degree"}], "Delimitation_of_diversity": ["Delimitation_of_diversity", {"Item": "Item", "Variable": "Variable", "Limit1": "Limit1", "Limit2": "Limit2", "Limits": "Limits", "Degree": "Degree"}], "Delimited_state_scenario": ["Delimited_state_scenario", {"Duration": "Duration", "State": "State"}], "Delivery": ["Delivery", {"Deliverer": "Deliverer", "Goal": "Goal", "Theme": "Theme", "Vehicle": "Vehicle", "Depictive": "Depictive", "Manner": "Manner", "Recipient": "Recipient", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Cotheme": "Cotheme", "Container": "Container", "Place": "Place", "Speed": "Speed", "Circumstances": "Circumstances", "Source": "Source", "Means": "Means", "Path": "Path", "Beneficiary": "Beneficiary", "Event_description": "Event_description", "Period_of_iterations": "Period_of_iterations"}], "Deny_or_grant_permission": ["Deny_or_grant_permission", {"Authority": "Authority", "Protagonist": "Protagonist", "Action": "Action", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Event_description": "Event_description", "Degree": "Degree", "Explanation": "Explanation", "Circumstances": "Circumstances", "Allowed_category": "Allowed_category", "Period_of_iterations": "Period_of_iterations", "Frequency": "Frequency", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means"}], "Departing": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place", "Explanation": "Explanation"}], "Deserving": ["Deserving", {"State_of_affairs": "State_of_affairs", "Action": "Action", "Degree": "Degree", "Domain": "Domain", "Circumstances": "Circumstances"}], "Desirability": ["Desirability", {"Evaluee": "Evaluee", "Degree": "Degree", "Circumstances": "Circumstances", "Parameter": "Parameter", "Comparison_set": "Comparison_set", "Affected_party": "Affected_party", "Depictive": "Depictive"}], "Desirable_event": ["Desirable_event", {"State_of_affairs": "State_of_affairs", "Circumstances": "Circumstances", "Purpose": "Purpose", "Degree": "Degree"}], "Desiring": ["Desiring", {"Experiencer": "Experiencer", "Event": "Event", "Focal_participant": "Focal_participant", "Degree": "Degree", "Manner": "Manner", "Explanation": "Explanation", "Purpose_of_event": "Purpose_of_event", "Time_of_event": "Time_of_event", "Location_of_event": "Location_of_event", "Time": "Time", "Place": "Place", "Duration": "Duration", "Role_of_focal_participant": "Role_of_focal_participant"}], "Destiny": ["Event", {"State_of_affairs": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Destroying": ["Transitive_action", {"Destroyer": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Result": "Result", "Time": "Time", "Patient": "Patient", "Cause": "Cause"}], "Detaching": ["Transitive_action", {"Agent": "Agent", "Item": "Patient", "Means": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Detaining": ["Detaining", {"Authorities": "Authorities", "Charges": "Charges", "Place": "Place", "Suspect": "Suspect", "Time": "Time", "Holding_location": "Holding_location", "Duration": "Duration", "Legal_basis": "Legal_basis", "Purpose": "Purpose", "Dependent_state": "Dependent_state"}], "Detonate_explosive": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner", "Explosive": "Patient"}], "Differentiation": ["Differentiation", {"Cognizer": "Cognizer", "Phenomenon_1": "Phenomenon_1", "Phenomenon_2": "Phenomenon_2", "Phenomena": "Phenomena", "Quality": "Quality", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Circumstances": "Circumstances"}], "Difficulty": ["Difficulty", {"Activity": "Activity", "Degree": "Degree", "Circumstances": "Circumstances", "Experiencer": "Experiencer", "Parameter": "Parameter", "Standard": "Standard", "Time": "Time"}], "Dimension": ["Dimension", {"Dimension": "Dimension", "Object": "Object", "Measurement": "Measurement", "Locus": "Locus", "Domain": "Domain", "Degree": "Degree"}], "Direction": ["Direction", {"Landmark": "Landmark", "Path": "Path", "Domain": "Domain", "Independent_variable": "Independent_variable", "Distance": "Distance"}], "Directional_locative_relation": ["State", {"Figure": "Entity"}], "Disaster_scenario": ["Disaster_scenario", {"Responder": "Responder", "Victim": "Victim", "Place": "Place", "Response": "Response", "Time": "Time", "Duration": "Duration", "Disaster": "Disaster"}], "Discussion": ["Discussion", {"Interlocutor_1": "Interlocutor_1", "Interlocutor_2": "Interlocutor_2", "Interlocutors": "Interlocutors", "Topic": "Topic", "Language": "Language", "Amount_of_discussion": "Amount_of_discussion", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Duration": "Duration", "Purpose": "Purpose", "Time": "Time", "Place": "Place", "Means_of_communication": "Means_of_communication", "Period_of_iterations": "Period_of_iterations", "Containing_event": "Containing_event", "Frequency": "Frequency", "Domain": "Domain"}], "Disembarking": ["Disembarking", {"Traveller": "Traveller", "Vehicle": "Vehicle", "Manner": "Manner", "Path": "Path", "Duration_of_final_state": "Duration_of_final_state", "Depictive": "Depictive", "Time": "Time", "Cotheme": "Cotheme", "Purpose": "Purpose", "Place": "Place", "Goal": "Goal"}], "Disgraceful_situation": ["Disgraceful_situation", {"State_of_affairs": "State_of_affairs", "Protagonist": "Protagonist", "Degree": "Degree", "Explanation": "Explanation", "Judge": "Judge"}], "Dispersal": ["Transitive_action", {"Agent": "Agent", "Individuals": "Patient", "Cause": "Cause", "Manner": "Manner", "Time": "Time", "Means": "Means", "Result": "Result", "Place": "Place"}], "Distant_operated_IED": ["Distant_operated_IED", {"Bomb": "Bomb", "Use": "Use", "Type": "Type", "Material": "Material", "Detonator": "Detonator", "Part": "Part", "Name": "Name", "Time_of_creation": "Time_of_creation", "Creator": "Creator", "Descriptor": "Descriptor", "Target": "Target"}], "Distinctiveness": ["Distinctiveness", {"Feature": "Feature", "Entity": "Entity", "Degree": "Degree", "Duration": "Duration"}], "Distributed_abundance": ["Distributed_abundance", {"Theme": "Theme", "Location": "Location", "Degree": "Degree", "Time": "Time"}], "Distributed_position": ["State", {"Theme": "Entity"}], "Diversity": ["Diversity", {"Group": "Group", "Dimension": "Dimension", "Degree": "Degree", "Time": "Time", "Place": "Place", "Manner": "Manner", "Explanation": "Explanation", "Depictive": "Depictive"}], "Documents": ["Documents", {"Bearer": "Bearer", "Issuer": "Issuer", "Obligation": "Obligation", "Right": "Right", "Status": "Status", "Specification": "Specification", "Document": "Document", "Medium": "Medium", "Descriptor": "Descriptor"}], "Dodging": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Domain": ["Domain", {"Predicate": "Predicate", "Domain": "Domain", "Explanation": "Explanation"}], "Dominate_competitor": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Dominate_situation": ["Dominate_situation", {"Agent": "Agent", "Situation": "Situation", "Time": "Time", "Duration": "Duration", "Place": "Place", "Manner": "Manner", "Degree": "Degree"}], "Domination": ["Domination", {"Agent": "Agent", "Situation": "Situation", "Competitor": "Competitor", "Time": "Time", "Place": "Place", "Manner": "Manner", "Duration": "Duration", "Degree": "Degree"}], "Dough_rising": ["Dough_rising", {"Dough": "Dough", "Duration_of_activity": "Duration_of_activity", "Time": "Time", "Speed": "Speed", "Manner": "Manner", "Circumstances": "Circumstances", "Size_change": "Size_change", "Explanation": "Explanation"}], "Downing": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Depictive": "Depictive", "Result": "Result", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Dressing": ["Dressing", {"Wearer": "Wearer", "Clothing": "Clothing", "Body_location": "Body_location", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Result": "Result", "Duration": "Duration", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Purpose": "Purpose"}], "Drop_in_on": ["Event", {"Manner": "Manner", "Time": "Time"}], "Dunking": ["Dunking", {"Agent": "Agent", "Theme": "Theme", "Substance": "Substance", "Manner": "Manner", "Time": "Time"}], "Duplication": ["Transitive_action", {"Creator": "Agent", "Copy": "Patient", "Means": "Means", "Manner": "Manner", "Depictive": "Depictive", "Time": "Time", "Place": "Place"}], "Duration_description": ["Duration_description", {"Eventuality": "Eventuality", "Period": "Period", "Degree": "Degree"}], "Duration_relation": ["Duration_relation", {"Eventuality": "Eventuality", "Period": "Period", "Duration": "Duration", "Entity": "Entity", "User": "User"}], "Duration_scenario": ["Duration_scenario", {"Period": "Period", "Attribute": "Attribute", "Duration": "Duration", "Degree": "Degree", "Unit": "Unit", "Count": "Count", "Event": "Event"}], "Dying": ["State", {"Protagonist": "State"}], "Dynamic_situation_scenario": ["Dynamic_situation_scenario", {"Time": "Time", "Entity": "Entity", "Explanation": "Explanation", "Event": "Event", "Place": "Place"}], "Dynamism": ["Dynamism", {"Action": "Action", "Exerter": "Exerter", "Descriptor": "Descriptor", "Degree": "Degree", "Time": "Time", "Force": "Force", "Circumstances": "Circumstances", "Place": "Place", "Domain": "Domain"}], "Earnings_and_losses": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Eclipse": ["Eclipse", {"Obstruction": "Obstruction", "Eclipsed": "Eclipsed", "Vantage_point": "Vantage_point", "Degree": "Degree", "Subregion": "Subregion"}], "Economy": ["Economy", {"Political_region": "Political_region", "Economy": "Economy", "Domain": "Domain", "Market_type": "Market_type", "Descriptor": "Descriptor"}], "Education_teaching": ["Transitive_action", {"Teacher": "Agent", "Student": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place"}], "Electricity": ["Electricity", {"Electricity": "Electricity", "Source": "Source", "Descriptor": "Descriptor", "Inherent_purpose": "Inherent_purpose"}], "Elusive_goal": ["Elusive_goal", {"Experiencer": "Experiencer", "Desired_goal": "Desired_goal", "Time": "Time", "Place": "Place", "Manner": "Manner", "Degree": "Degree", "Duration": "Duration"}], "Emanating": ["Emanating", {"Area": "Area", "Degree": "Degree", "Depictive": "Depictive", "Distance": "Distance", "Duration": "Duration", "Emission": "Emission", "Goal": "Goal", "Manner": "Manner", "Path": "Path", "Speed": "Speed", "Time": "Time", "Carrier": "Carrier", "Source": "Source", "Form": "Form", "Result": "Result"}], "Emergency": ["Event", {"Undesirable_event": "Event", "Circumstances": "Explanation", "Place": "Place", "Time": "Time", "Manner": "Manner", "Timespan": "Timespan", "Duration": "Duration", "Frequency": "Frequency"}], "Emergency_fire": ["Emergency_fire", {"Fire": "Fire", "Fuel": "Fuel", "Manner": "Manner", "Name": "Name", "Place": "Place", "Time": "Time"}], "Emitting": ["Emitting", {"Manner": "Manner", "Time": "Time", "Source_emitter": "Source_emitter", "Emission": "Emission", "Area": "Area", "Degree": "Degree", "Depictive": "Depictive", "Distance": "Distance", "Goal": "Goal", "Means": "Means", "Path": "Path", "Sub-source": "Sub-source", "Speed": "Speed", "Explanation": "Explanation", "Duration": "Duration", "Carrier": "Carrier", "Form": "Form"}], "Emotion_active": ["Emotion_active", {"Experiencer": "Experiencer", "Topic": "Topic", "Degree": "Degree", "Manner": "Manner", "Result": "Result", "Means": "Means"}], "Emotion_directed": ["Emotion_directed", {"Experiencer": "Experiencer", "Topic": "Topic", "Stimulus": "Stimulus", "Degree": "Degree", "Empathy_target": "Empathy_target", "Expressor": "Expressor", "Explanation": "Explanation", "Circumstances": "Circumstances", "State": "State", "Event": "Event", "Parameter": "Parameter", "Manner": "Manner", "Frequency": "Frequency"}], "Emotion_heat": ["Emotion_heat", {"Experiencer": "Experiencer", "Emotion": "Emotion", "Cause": "Cause", "Seat_of_emotion": "Seat_of_emotion", "Degree": "Degree", "Manner": "Manner", "Topic": "Topic", "Expression": "Expression"}], "Emotions": ["State", {"Experiencer": "Entity", "State": "State"}], "Emotions_by_possibility": ["State", {"Experiencer": "Entity", "State": "State"}], "Emotions_by_stimulus": ["State", {"Experiencer": "Entity", "State": "State"}], "Emotions_of_mental_activity": ["State", {"Experiencer": "Entity"}], "Emotions_success_or_failure": ["State", {"Experiencer": "Entity", "State": "State"}], "Emphasizing": ["Emphasizing", {"Consideration": "Consideration", "Degree": "Degree", "Undertaking": "Undertaking", "Explanation": "Explanation", "Agent": "Agent", "Purpose": "Purpose", "Means": "Means", "Competing_consideration": "Competing_consideration", "Time": "Time", "Place": "Place", "Manner": "Manner", "Artifact": "Artifact", "Action": "Action", "Frequency": "Frequency", "Depictive": "Depictive"}], "Employee_scenario": ["Employee_scenario", {"Compensation": "Compensation", "Employee": "Employee", "Employer": "Employer", "Position": "Position", "Task": "Task", "Field": "Field", "Duration": "Duration"}], "Employer_scenario": ["Employer_scenario", {"Compensation": "Compensation", "Employee": "Employee", "Employer": "Employer", "Position": "Position", "Task": "Task", "Field": "Field", "Duration": "Duration"}], "Employing": ["Employing", {"Compensation": "Compensation", "Employee": "Employee", "Employer": "Employer", "Field": "Field", "Manner": "Manner", "Place": "Place", "Position": "Position", "Purpose": "Purpose", "Task": "Task", "Time": "Time", "Duration": "Duration", "Contract_basis": "Contract_basis", "Descriptor": "Descriptor", "Subgroup": "Subgroup"}], "Employment_continue": ["Employment_continue", {"Employee": "Employee", "Employer": "Employer", "Compensation": "Compensation", "Duration": "Duration", "Field": "Field", "Manner": "Manner", "Place": "Place", "Position": "Position", "Task": "Task", "Time": "Time"}], "Employment_end": ["Employment_end", {"Employee": "Employee", "Employer": "Employer", "Manner": "Manner", "Place": "Place", "Position": "Position", "Time": "Time"}], "Employment_scenario": ["Employment_scenario", {"Compensation": "Compensation", "Employee": "Employee", "Employer": "Employer", "Position": "Position", "Task": "Task", "Field": "Field", "Duration": "Duration"}], "Employment_start": ["Employment_start", {"Employee": "Employee", "Employer": "Employer", "Compensation": "Compensation", "Field": "Field", "Manner": "Manner", "Place": "Place", "Position": "Position", "Task": "Task", "Time": "Time"}], "Emptying": ["Transitive_action", {"Agent": "Agent", "Source": "Patient", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Cause": "Cause", "Place": "Place", "Time": "Time"}], "Encoding": ["Encoding", {"Speaker": "Speaker", "Message": "Message", "Manner": "Manner", "Medium": "Medium", "Addressee": "Addressee", "Means": "Means"}], "Encounter": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Endangering": ["Transitive_action", {"Cause": "Cause", "Valued_entity": "Patient", "Agent": "Agent", "Endangering_act": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Endeavor_failure": ["Endeavor_failure", {"Endeavor": "Endeavor", "Explanation": "Explanation", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances", "Manner": "Manner", "Containing_event": "Containing_event", "Depictive": "Depictive", "Degree": "Degree", "Means": "Means"}], "Enforcing": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Entering_of_plea": ["Entering_of_plea", {"Judge": "Judge", "Accused": "Accused", "Charges": "Charges", "Plea": "Plea", "Time": "Time", "Place": "Place", "Court": "Court"}], "Entity": ["Entity", {"Constituent_parts": "Constituent_parts", "Formational_cause": "Formational_cause", "Name": "Name", "Entity": "Entity", "Type": "Type"}], "Entourage": ["Entourage", {"Individuals": "Individuals", "Entourage": "Entourage", "Aggregate_property": "Aggregate_property", "Name": "Name", "Container_possessor": "Container_possessor", "Domain": "Domain", "Attended_person": "Attended_person"}], "Erasing": ["Transitive_action", {"Agent": "Agent", "Information": "Patient", "Cause": "Cause", "Manner": "Manner", "Time": "Time", "Place": "Place", "Means": "Means"}], "Escaping": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Estimated_value": ["Estimated_value", {"Cognizer": "Cognizer", "Value": "Value", "Item": "Item", "Evidence": "Evidence", "Time": "Time", "Place": "Place", "Estimation": "Estimation", "Question": "Question"}], "Estimating": ["Estimating", {"Cognizer": "Cognizer", "Feature": "Feature", "Value": "Value", "Item": "Item", "Evidence": "Evidence", "Time": "Time", "Place": "Place", "Estimation": "Estimation", "Question": "Question", "Means": "Means", "Manner": "Manner", "Circumstances": "Circumstances", "Explanation": "Explanation", "Result": "Result", "Frequency": "Frequency"}], "Evading": ["Event", {"Area": "Place", "Manner": "Manner", "Time": "Time"}], "Evaluative_comparison": ["Evaluative_comparison", {"Profiled_item": "Profiled_item", "Standard_item": "Standard_item", "Attribute": "Attribute", "Degree": "Degree", "Standard_attribute": "Standard_attribute", "Profiled_attribute": "Profiled_attribute", "Comparison_set": "Comparison_set", "Place": "Place", "Time": "Time", "Manner": "Manner"}], "Event": ["Event", {"Event": "Event", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Duration": "Duration", "Manner": "Manner", "Frequency": "Frequency", "Timespan": "Timespan"}], "Event_endstate": ["State", {"Entity": "Entity", "State": "State"}], "Event_initial_state": ["State", {"Entity": "Entity", "State": "State"}], "Event_instance": ["Event_instance", {"Instance": "Instance", "Event": "Event", "Instance_prop": "Instance_prop", "Iteration_count": "Iteration_count"}], "Eventive_affecting": ["Event", {"Event": "Event", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Manner": "Manner"}], "Eventive_cognizer_affecting": ["Event", {"Event": "Event", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Evidence": ["Evidence", {"Support": "Support", "Proposition": "Proposition", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Depictive": "Depictive", "Result": "Result", "Domain_of_relevance": "Domain_of_relevance", "Cognizer": "Cognizer"}], "Evoking": ["Evoking", {"Cognizer": "Cognizer", "Phenomenon": "Phenomenon", "Degree": "Degree", "Manner": "Manner", "Duration": "Duration", "Explanation": "Explanation", "Time": "Time", "Stimulus": "Stimulus", "Feature": "Feature"}], "Examination": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Exchange": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Exchange_currency": ["Transitive_action", {"Money_owner": "Agent", "Place": "Place", "Time": "Time", "Manner": "Manner", "Means": "Means", "Money": "Patient"}], "Exclude_member": ["Exclude_member", {"Member": "Member", "Group": "Group", "Authority": "Authority", "Time": "Time", "Explanation": "Explanation", "Place": "Place", "Means": "Means", "Depictive": "Depictive"}], "Excreting": ["Excreting", {"Excreta": "Excreta", "Excreter": "Excreter", "Source": "Source", "Path": "Path", "Goal": "Goal", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Frequency": "Frequency", "Degree": "Degree"}], "Execute_plan": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Execution": ["Transitive_action", {"Executioner": "Agent", "Means": "Means", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Executed": "Patient", "Manner": "Manner", "Result": "Result"}], "Exemplar": ["Exemplar", {"Instance": "Instance", "Type": "Type", "Domain": "Domain", "Instance_prop": "Instance_prop"}], "Exemplariness": ["Exemplariness", {"Entity": "Entity", "Comparison_set": "Comparison_set", "Domain": "Domain", "Degree": "Degree"}], "Exercising": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place", "Frequency": "Frequency"}], "Existence": ["State", {"Entity": "Entity"}], "Expansion": ["Expansion", {"Item": "Item", "Dimension": "Dimension", "Group": "Group", "Initial_size": "Initial_size", "Result_size": "Result_size", "Size_change": "Size_change", "Rate": "Rate", "Duration": "Duration", "Time": "Time", "Co-variable": "Co-variable", "Manner": "Manner", "Degree": "Degree", "Path": "Path", "Goal": "Goal"}], "Expectation": ["Expectation", {"Cognizer": "Cognizer", "Phenomenon": "Phenomenon", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Evidence": "Evidence", "Place": "Place", "Time": "Time", "Topic": "Topic", "Time_of_phenomenon": "Time_of_phenomenon"}], "Expected_location_of_person": ["State", {"Person": "Entity"}], "Expend_resource": ["Transitive_action", {"Resource": "Patient", "Agent": "Agent", "Manner": "Manner", "Place": "Place", "Means": "Means", "Time": "Time"}], "Expensiveness": ["Expensiveness", {"Goods": "Goods", "Payer": "Payer", "Asset": "Asset", "Origin": "Origin", "Degree": "Degree", "Intended_event": "Intended_event", "Time": "Time", "Rate": "Rate"}], "Experience_bodily_harm": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time", "Injuring_entity": "Explanation", "Duration": "Duration", "Frequency": "Frequency"}], "Experiencer_focus": ["Experiencer_focus", {"Experiencer": "Experiencer", "Content": "Content", "Explanation": "Explanation", "Degree": "Degree", "Manner": "Manner", "Expressor": "Expressor", "Parameter": "Parameter", "Topic": "Topic", "State": "State", "Event": "Event", "Circumstances": "Circumstances", "Time": "Time"}], "Experiencer_obj": ["Experiencer_obj", {"Experiencer": "Experiencer", "Stimulus": "Stimulus", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Circumstances": "Circumstances", "Explanation": "Explanation", "Time": "Time"}], "Experimentation": ["Experimentation", {"Experimenter": "Experimenter", "Control_group": "Control_group", "Control_group_member": "Control_group_member", "Treatment_group": "Treatment_group", "Treated_individual": "Treated_individual", "Duration": "Duration", "Place": "Place", "Time": "Time", "Phenomenon": "Phenomenon", "Result": "Result", "Descriptor": "Descriptor", "Experiment": "Experiment", "Hypothesis": "Hypothesis", "Subjects": "Subjects", "Instrument": "Instrument", "Topic": "Topic"}], "Expertise": ["Expertise", {"Protagonist": "Protagonist", "Skill": "Skill", "Knowledge": "Knowledge", "Degree": "Degree", "Behavior_product": "Behavior_product", "Focal_participant": "Focal_participant", "Role": "Role", "Manner": "Manner", "Judge": "Judge", "Time": "Time"}], "Explaining_the_facts": ["Explaining_the_facts", {"Fact": "Fact", "State_of_affairs": "State_of_affairs", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Viewpoint": "Viewpoint", "Question": "Question", "Concessive": "Concessive"}], "Explosion": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Exporting": ["Exporting", {"Exporter": "Exporter", "Vehicle": "Vehicle", "Manner": "Manner", "Means": "Means", "Goods": "Goods", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Depictive": "Depictive", "Importing_area": "Importing_area", "Path": "Path", "Exporting_area": "Exporting_area", "Re-encoding": "Re-encoding", "Type": "Type"}], "Expressing_publicly": ["Expressing_publicly", {"Communicator": "Communicator", "Addressee": "Addressee", "Content": "Content", "Manner": "Manner", "Means": "Means", "Internal_cause": "Internal_cause", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Particular_iteration": "Particular_iteration", "Purpose": "Purpose", "Frequency": "Frequency", "Circumstances": "Circumstances", "Explanation": "Explanation"}], "Extradition": ["Transitive_action", {"Authorities": "Agent", "Suspect": "Patient", "Time": "Time", "Manner": "Manner", "Means": "Means", "Place": "Place"}], "Extreme_point": ["Extreme_point", {"Entity": "Entity", "Marker": "Marker"}], "Extreme_value": ["Extreme_value", {"Entity": "Entity", "Attribute": "Attribute", "Value": "Value", "Period": "Period", "Degree": "Degree", "Domain": "Domain", "Descriptor": "Descriptor", "Depictive": "Depictive", "Explanation": "Explanation"}], "Facial_expression": ["Facial_expression", {"Manner": "Manner", "Degree": "Degree", "Expression": "Expression", "Possessor": "Possessor", "Internal_cause": "Internal_cause", "Subregion": "Subregion", "Conveyed_emotion": "Conveyed_emotion", "Intended_perceiver": "Intended_perceiver", "External_cause": "External_cause", "Duration": "Duration"}], "Fairness_evaluation": ["Fairness_evaluation", {"Actor": "Actor", "Action": "Action", "Grounds": "Grounds", "Affected_party": "Affected_party", "Degree": "Degree", "Parameter": "Parameter", "Manner": "Manner"}], "Fall_asleep": ["Fall_asleep", {"Place": "Place", "Sleeper": "Sleeper", "Time": "Time"}], "Fall_for": ["Fall_for", {"Victim": "Victim", "Deception": "Deception", "Time": "Time", "Place": "Place", "Manner": "Manner", "Degree": "Degree"}], "Fame": ["Fame", {"Entity": "Entity", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Explanation": "Explanation", "Reason": "Reason", "Duration": "Duration", "Place": "Place", "Role": "Role", "Means": "Means"}], "Familiarity": ["Familiarity", {"Entity": "Entity", "Cognizer": "Cognizer", "Degree": "Degree", "Role": "Role", "Depictive": "Depictive", "Context": "Context"}], "Fastener": ["Fastener", {"Container": "Container", "Fastener": "Fastener", "Container_portal": "Container_portal", "Material": "Material", "Descriptor": "Descriptor", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Use": "Use"}], "Fear": ["State", {"Experiencer": "Entity", "State": "State"}], "Feeling": ["Feeling", {"Experiencer": "Experiencer", "Emotion": "Emotion", "Emotional_state": "Emotional_state", "Evaluation": "Evaluation", "Explanation": "Explanation"}], "Feigning": ["Feigning", {"Agent": "Agent", "Original": "Original", "Copy": "Copy", "Manner": "Manner", "Means": "Means", "Degree": "Degree", "State_of_affairs": "State_of_affairs", "Purpose": "Purpose", "Explanation": "Explanation", "Frequency": "Frequency", "Time": "Time", "Period_of_iterations": "Period_of_iterations", "Duration": "Duration", "Depictive": "Depictive", "Circumstances": "Circumstances", "Place": "Place"}], "Fields": ["Fields", {"Activity": "Activity", "Practitioner": "Practitioner", "Salient_entity": "Salient_entity", "Work": "Work", "Type": "Type", "Place": "Place", "Time": "Time"}], "Fighting_activity": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Filling": ["Transitive_action", {"Agent": "Agent", "Goal": "Patient", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Fining": ["Transitive_action", {"Speaker": "Agent", "Means": "Means", "Place": "Place", "Time": "Time", "Payer": "Patient", "Manner": "Manner"}], "Finish_competition": ["Event", {"Manner": "Manner", "Time": "Time"}], "Finish_game": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Fire_break": ["Fire_break", {"Fire_break": "Fire_break", "Creator": "Creator", "Material": "Material", "Name": "Name", "Time_of_creation": "Time_of_creation", "Type": "Type", "Use": "Use"}], "Fire_burning": ["Fire_burning", {"Place": "Place", "Time": "Time", "Fire": "Fire", "Fuel": "Fuel", "Manner": "Manner", "Name": "Name", "Duration": "Duration", "Depictive": "Depictive", "Result": "Result", "Subregion": "Subregion"}], "Fire_emergency_scenario": ["Fire_emergency_scenario", {"Fire": "Fire", "Duration": "Duration", "Place": "Place", "Responder": "Responder", "Response": "Response", "Time": "Time", "Victim": "Victim"}], "Fire_end_scenario": ["Fire_end_scenario", {"Place": "Place", "Time": "Time", "Fire": "Fire", "Degree": "Degree"}], "Fire_going_out": ["Fire_going_out", {"Depictive": "Depictive", "Manner": "Manner", "Result": "Result", "Place": "Place", "Time": "Time", "Fire": "Fire", "Degree": "Degree", "Explanation": "Explanation", "Circumstances": "Circumstances", "Containing_event": "Containing_event"}], "Fire_stopping_scenario": ["Fire_stopping_scenario", {"Place": "Place", "Time": "Time", "Agent": "Agent", "Fire": "Fire", "Degree": "Degree"}], "Firefighting": ["Firefighting", {"Fire": "Fire", "Firefighter": "Firefighter", "Time": "Time", "Place": "Place", "Manner": "Manner", "Purpose": "Purpose", "Instrument": "Instrument", "Depictive": "Depictive"}], "Firing": ["Transitive_action", {"Employee": "Patient", "Employer": "Agent", "Manner": "Manner", "Place": "Place", "Time": "Time", "Means": "Means"}], "Firing_point": ["Firing_point", {"Firing_point": "Firing_point", "Relative_location": "Relative_location", "Descriptor": "Descriptor", "Name": "Name", "Detonator": "Detonator"}], "First_experience": ["First_experience", {"Experience": "Experience", "Context": "Context"}], "First_rank": ["First_rank", {"Item": "Item", "Limits_of_consideration": "Limits_of_consideration", "Contrast_set": "Contrast_set", "Attribute": "Attribute"}], "Fleeing": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Fluidic_motion": ["Event", {"Duration": "Duration", "Time": "Time", "Manner": "Manner", "Place": "Place"}], "Food": ["Food", {"Descriptor": "Descriptor", "Type": "Type", "Food": "Food", "Constituent_parts": "Constituent_parts"}], "Food_gathering": ["Food_gathering", {"Gatherer": "Gatherer", "Crop": "Crop", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Frequency": "Frequency", "Particular_iteration": "Particular_iteration", "Source": "Source", "Circumstances": "Circumstances", "Degree": "Degree", "Beneficiary": "Beneficiary"}], "Foreign_or_domestic_country": ["Foreign_or_domestic_country", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Current_country": "Current_country", "Name": "Name", "Relative_location": "Relative_location", "Descriptor": "Descriptor", "Population": "Population", "Discourse_salient_country": "Discourse_salient_country"}], "Forging": ["Transitive_action", {"Agent": "Agent", "Forgery": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Forgiveness": ["Forgiveness", {"Judge": "Judge", "Evaluee": "Evaluee", "Offense": "Offense"}], "Forgoing": ["Forgoing", {"Forgoer": "Forgoer", "Desirable": "Desirable", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Explanation": "Explanation", "Circumstances": "Circumstances"}], "Forming_relationships": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Fragmentation_scenario": ["Fragmentation_scenario", {"Whole": "Whole", "Parts": "Parts", "Part_1": "Part_1", "Part_2": "Part_2", "Criterion": "Criterion", "Depictive": "Depictive", "Manner": "Manner", "Degree": "Degree", "Result": "Result", "Time": "Time", "Place": "Place", "Resistant_surface": "Resistant_surface", "Means": "Means"}], "Freeing_from_confinement": ["Freeing_from_confinement", {"Agent": "Agent", "Theme": "Theme", "Manner": "Manner", "Means": "Means", "Explanation": "Explanation", "Purpose": "Purpose", "Place": "Place", "Time": "Time", "Location_of_confinement": "Location_of_confinement", "Concessive": "Concessive", "Circumstances": "Circumstances"}], "Frequency": ["Frequency", {"Event": "Event", "Degree": "Degree", "Interval": "Interval", "Time_span": "Time_span", "Rate": "Rate", "Salient_entity": "Salient_entity", "Attribute": "Attribute", "Time": "Time", "Group": "Group"}], "Friction": ["Friction", {"Theme": "Theme", "Static_object": "Static_object", "Themes": "Themes", "Manner": "Manner", "Place": "Place", "Degree": "Degree"}], "Friendly_or_hostile": ["Friendly_or_hostile", {"Side_1": "Side_1", "Side_2": "Side_2", "Degree": "Degree", "Time": "Time", "Explanation": "Explanation", "Descriptor": "Descriptor", "Concessive": "Concessive", "Place": "Place", "Sides": "Sides"}], "Front_for": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Frugality": ["Frugality", {"Resource_controller": "Resource_controller", "Behavior": "Behavior", "Resource": "Resource", "Degree": "Degree", "Judge": "Judge"}], "Fugitive": ["Fugitive", {"Fugitive": "Fugitive", "Prison": "Prison", "Authorities": "Authorities", "Crime": "Crime", "Place": "Place", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation", "Duration": "Duration"}], "Fullness": ["Fullness", {"Container": "Container", "Contents": "Contents", "Degree": "Degree", "Time": "Time", "Frequency": "Frequency", "Duration": "Duration"}], "Function": ["Function", {"Entity": "Entity", "Activity": "Activity", "Role": "Role", "Descriptor": "Descriptor", "Duration": "Duration", "Manner": "Manner", "Means": "Means"}], "Funding": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Gathering_up": ["Transitive_action", {"Aggregate": "Patient", "Agent": "Agent", "Time": "Time", "Means": "Means", "Place": "Place", "Manner": "Manner"}], "Gesture": ["Transitive_action", {"Communicator": "Agent", "Addressee": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Get_a_job": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Getting": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner"}], "Getting_scenario": ["Getting_scenario", {"Recipient": "Recipient", "Theme": "Theme", "Source": "Source", "Purpose": "Purpose", "Explanation": "Explanation"}], "Getting_triggered": ["Getting_triggered", {"System": "System", "Manner": "Manner", "Place": "Place", "Time": "Time", "Frequency": "Frequency"}], "Getting_underway": ["Getting_underway", {"Self_mover": "Self_mover", "Source": "Source", "Path": "Path", "Goal": "Goal", "Manner": "Manner", "Means": "Means", "Time": "Time", "Depictive": "Depictive", "Duration_of_final_state": "Duration_of_final_state", "Mode_of_transportation": "Mode_of_transportation", "Journey": "Journey", "Direction": "Direction"}], "Getting_up": ["Getting_up", {"Protagonist": "Protagonist", "Bed": "Bed", "Time": "Time", "Purpose": "Purpose", "Manner": "Manner", "New_situation": "New_situation", "Circumstances": "Circumstances", "Explanation": "Explanation", "Duration_of_final_state": "Duration_of_final_state", "Place": "Place"}], "Getting_vehicle_underway": ["Getting_vehicle_underway", {"Driver": "Driver", "Vehicle": "Vehicle", "Source": "Source", "Intended_goal": "Intended_goal", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Result": "Result", "Co-participant": "Co-participant", "Circumstances": "Circumstances", "Place": "Place", "Duration_of_final_state": "Duration_of_final_state", "Time": "Time", "Explanation": "Explanation"}], "Give_impression": ["Give_impression", {"Phenomenon": "Phenomenon", "Characterization": "Characterization", "Appraisal": "Appraisal", "Inference": "Inference", "Perceiver_passive": "Perceiver_passive", "Body_part": "Body_part", "Location_of_protagonist": "Location_of_protagonist", "Path": "Path", "State": "State", "Ground": "Ground", "Degree": "Degree", "Circumstances": "Circumstances", "Frequency": "Frequency"}], "Giving": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Giving_birth": ["Giving_birth", {"Mother": "Mother", "Child": "Child", "Father": "Father", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Circumstances": "Circumstances", "Egg": "Egg", "Means": "Means", "Parents": "Parents", "Result": "Result", "Manner": "Manner"}], "Giving_in": ["Giving_in", {"Capitulator": "Capitulator", "Issue": "Issue", "Compeller": "Compeller", "Time": "Time", "Explanation": "Explanation", "Force": "Force", "Place": "Place", "Purpose": "Purpose", "Manner": "Manner", "Degree": "Degree", "Resultant_action": "Resultant_action"}], "Giving_scenario": ["Giving_scenario", {"Donor": "Donor", "Recipient": "Recipient", "Theme": "Theme", "Purpose": "Purpose", "Manner": "Manner", "Imposed_purpose": "Imposed_purpose"}], "Gizmo": ["Gizmo", {"Use": "Use", "User": "User", "Power_source": "Power_source", "Gizmo": "Gizmo", "Descriptor": "Descriptor"}], "Go_into_shape": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Duration": "Duration", "Manner": "Manner", "Frequency": "Frequency"}], "Goal": ["State", {"Trajector": "Entity"}], "Going_back_on_a_commitment": ["Going_back_on_a_commitment", {"Protagonist": "Protagonist", "Affected_party": "Affected_party", "Commitment": "Commitment", "Manner": "Manner", "Time": "Time", "Place": "Place", "Explanation": "Explanation", "Event_description": "Event_description", "Degree": "Degree", "Re-encoding": "Re-encoding", "Iterations": "Iterations", "Result": "Result"}], "Government_institution": ["Government_institution", {"Institution": "Institution", "Members": "Members", "Purpose": "Purpose", "Period_of_existence": "Period_of_existence", "Name": "Name", "Place": "Place", "Descriptor": "Descriptor", "Domain": "Domain"}], "Gradable_artistic_quality": ["Gradable_artistic_quality", {"Entity": "Entity", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Place": "Place"}], "Gradable_attributes": ["Gradable_attributes", {"Entity": "Entity", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Value": "Value", "Place": "Place"}], "Gradable_proximity": ["State", {"Figure": "Entity"}], "Graph_shape": ["Graph_shape", {"Shape": "Shape", "Data": "Data", "Graph": "Graph", "Name": "Name", "Descriptor": "Descriptor", "Location": "Location"}], "Grasp": ["Grasp", {"Cognizer": "Cognizer", "Phenomenon": "Phenomenon", "Completeness": "Completeness", "Manner": "Manner", "Reference_point": "Reference_point", "Category": "Category", "Time": "Time", "Faculty": "Faculty", "Evidence": "Evidence", "Concessive": "Concessive"}], "Grinding": ["Transitive_action", {"Grinding_cause": "Cause", "Grinder": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Result": "Result", "Time": "Time", "Patient": "Patient"}], "Grooming": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Manner": "Manner", "Time": "Time", "Place": "Place", "Means": "Means"}], "Ground_up": ["Ground_up", {"Patient": "Patient", "Result": "Result"}], "Growing_food": ["Growing_food", {"Grower": "Grower", "Food": "Food", "Instrument": "Instrument", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Frequency": "Frequency", "Particular_iteration": "Particular_iteration", "Ground": "Ground", "Circumstances": "Circumstances", "Source": "Source"}], "Guest_and_host": ["Guest_and_host", {"Host": "Host", "Guest": "Guest", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Duration": "Duration", "Host_location": "Host_location", "Time": "Time", "Descriptor": "Descriptor"}], "Guilt_or_innocence": ["Guilt_or_innocence", {"Accused": "Accused", "Misdeed": "Misdeed", "Viewpoint": "Viewpoint", "Degree": "Degree"}], "Gusto": ["Gusto", {"Person": "Person", "Degree": "Degree"}], "Hair_configuration": ["Hair_configuration", {"Hair": "Hair", "Possessor": "Possessor", "Subregion": "Subregion", "Configuration": "Configuration", "Hair_property": "Hair_property", "Location": "Location", "Accessory": "Accessory"}], "Halt": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Duration": "Duration"}], "Have_as_requirement": ["Have_as_requirement", {"Dependent": "Dependent", "Requirement": "Requirement", "Degree": "Degree", "Explanation": "Explanation", "Time": "Time", "Condition": "Condition", "Domain": "Domain", "Required_entity": "Required_entity", "Required_individual": "Required_individual", "Place": "Place"}], "Have_as_translation_equivalent": ["Have_as_translation_equivalent", {"Source_symbol": "Source_symbol", "Source_representation": "Source_representation", "Time": "Time", "Circumstances": "Circumstances", "Target_symbol": "Target_symbol", "Target_representation": "Target_representation", "Content": "Content", "Equivalence": "Equivalence", "Medium": "Medium"}], "Have_associated": ["Have_associated", {"Entity": "Entity", "Time": "Time", "Duration": "Duration", "Explanation": "Explanation", "Place": "Place", "Circumstances": "Circumstances", "Viewpoint": "Viewpoint", "Concessive": "Concessive", "Depictive": "Depictive", "Topical_entity": "Topical_entity", "Period_of_iterations": "Period_of_iterations"}], "Have_visitor_over": ["Have_visitor_over", {"Host": "Host", "Visitor": "Visitor", "Purpose": "Purpose"}], "Having_commercial_agreement": ["Having_commercial_agreement", {"Party_1": "Party_1", "Party_2": "Party_2", "Obligation": "Obligation", "Topic": "Topic", "Medium": "Medium", "Parties": "Parties", "Place": "Place", "Time": "Time"}], "Having_or_lacking_access": ["Having_or_lacking_access", {"Theme": "Theme", "Degree": "Degree", "Circumstances": "Circumstances", "Explanation": "Explanation", "Useful_location": "Useful_location", "Barrier": "Barrier"}], "Health_response": ["Health_response", {"Protagonist": "Protagonist", "Trigger": "Trigger", "Manner": "Manner", "Degree": "Degree", "Body_part": "Body_part"}], "Hearsay": ["Hearsay", {"Speaker": "Speaker", "Hearer": "Hearer", "Message": "Message", "Topic": "Topic", "Medium": "Medium", "Period_of_iterations": "Period_of_iterations", "Time": "Time"}], "Heat_potential": ["Heat_potential", {"Insulator": "Insulator", "Activity": "Activity", "Circumstances": "Circumstances", "Degree": "Degree", "Experiencer": "Experiencer"}], "Hedging": ["Hedging", {"Hedged_content": "Hedged_content"}], "Heralding": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Hiding_objects": ["Transitive_action", {"Hidden_object": "Patient", "Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner"}], "Hindering": ["Hindering", {"Protagonist": "Protagonist", "Hindrance": "Hindrance", "Action": "Action", "Time": "Time", "Place": "Place", "Degree": "Degree", "Means": "Means", "Explanation": "Explanation", "Manner": "Manner", "Duration": "Duration", "Concessive": "Concessive", "Frequency": "Frequency", "Circumstances": "Circumstances"}], "Hiring": ["Transitive_action", {"Employee": "Patient", "Employer": "Agent", "Manner": "Manner", "Place": "Place", "Time": "Time", "Means": "Means"}], "Historic_event": ["Event", {"Event": "Event", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Manner": "Manner"}], "History": ["History", {"Topic": "Topic", "Domain": "Domain", "End_time": "End_time", "Start_time": "Start_time", "Time_span": "Time_span", "Duration": "Duration", "Time": "Time"}], "History_scenario": ["History_scenario", {"Event": "Event", "Place": "Place", "Time": "Time"}], "Hit_or_miss": ["Hit_or_miss", {"Agent": "Agent", "Target": "Target", "Outcome": "Outcome", "Means": "Means", "Degree": "Degree", "Time": "Time", "Depictive": "Depictive", "Place": "Place", "Manner": "Manner", "Purpose": "Purpose", "Particular_iteration": "Particular_iteration", "Circumstances": "Circumstances", "Instrument": "Instrument", "Target_location": "Target_location", "Iterations": "Iterations", "Deviation": "Deviation"}], "Hit_target": ["Transitive_action", {"Target": "Patient", "Agent": "Agent", "Time": "Time", "Place": "Place", "Means": "Means", "Manner": "Manner"}], "Holding_off_on": ["Holding_off_on", {"Agent": "Agent", "Desirable_action": "Desirable_action", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Explanation": "Explanation", "Circumstances": "Circumstances", "Salient_entity": "Salient_entity", "Duration": "Duration", "End_point": "End_point"}], "Hospitality": ["Hospitality", {"Host": "Host", "Guest": "Guest", "Behavior": "Behavior", "Degree": "Degree", "Topic": "Topic", "Expressor": "Expressor", "Manner": "Manner", "Judge": "Judge"}], "Hostile_encounter": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Hunting": ["Hunting", {"Hunter": "Hunter", "Food": "Food", "Instrument": "Instrument", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Outcome": "Outcome", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Frequency": "Frequency", "Degree": "Degree", "Ground": "Ground", "Particular_iteration": "Particular_iteration", "Co-participant": "Co-participant"}], "Hunting_scenario": ["Event", {"Place": "Place", "Time": "Time"}], "Hunting_success_or_failure": ["Hunting_success_or_failure", {"Hunter": "Hunter", "Food": "Food", "Instrument": "Instrument", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Frequency": "Frequency", "Degree": "Degree", "Particular_iteration": "Particular_iteration"}], "Identicality": ["Identicality", {"Type": "Type", "Current_instance": "Current_instance", "Previous_instance": "Previous_instance", "Previous_context": "Previous_context", "Set_of_instances": "Set_of_instances", "Time": "Time"}], "Identity": ["Identity", {"Instance": "Instance", "Identity": "Identity"}], "Identity_scenario": ["Identity_scenario", {"Type": "Type", "Instance": "Instance", "Identity": "Identity"}], "Idiosyncrasy": ["Idiosyncrasy", {"Idiosyncrasy": "Idiosyncrasy", "Entity": "Entity", "Degree": "Degree"}], "Image_schema": ["Image_schema", {"Profiled_region": "Profiled_region", "Ground": "Ground"}], "Imitating": ["Imitating", {"Agent": "Agent", "Characteristic": "Characteristic", "Manner": "Manner", "Means": "Means", "Standard": "Standard", "Purpose": "Purpose", "Explanation": "Explanation", "Depictive": "Depictive", "Containing_event": "Containing_event", "Degree": "Degree", "Time": "Time", "Place": "Place", "Duration": "Duration"}], "Immobilization": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Means": "Means", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Impact": ["Impact", {"Place": "Place", "Result": "Result", "Time": "Time", "Explanation": "Explanation", "Manner": "Manner", "Impactor": "Impactor", "Impactee": "Impactee", "Impactors": "Impactors", "Speed": "Speed", "Subregion": "Subregion", "Force": "Force", "Period_of_iterations": "Period_of_iterations", "Depictive": "Depictive"}], "Import_export_scenario": ["Import_export_scenario", {"Agent": "Agent", "Vehicle": "Vehicle", "Manner": "Manner", "Means": "Means", "Goods": "Goods", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Depictive": "Depictive", "Importing_area": "Importing_area", "Path": "Path", "Exporting_area": "Exporting_area", "Descriptor": "Descriptor"}], "Importance": ["Importance", {"Factor": "Factor", "Degree": "Degree", "Undertaking": "Undertaking", "Explanation": "Explanation", "Interested_party": "Interested_party", "Field": "Field", "Time": "Time", "Frequency": "Frequency", "Place": "Place"}], "Importing": ["Importing", {"Importer": "Importer", "Vehicle": "Vehicle", "Manner": "Manner", "Means": "Means", "Goods": "Goods", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Depictive": "Depictive", "Importing_area": "Importing_area", "Path": "Path", "Exporting_area": "Exporting_area", "Particular_iteration": "Particular_iteration", "Frequency": "Frequency", "Result": "Result", "Beneficiary": "Beneficiary"}], "Imposing_obligation": ["Transitive_action", {"Responsible_party": "Patient", "Time": "Time", "Place": "Place", "Obligator": "Agent", "Situation": "Cause", "Manner": "Manner", "Means": "Means"}], "Impression": ["Impression", {"Figure": "Figure", "Audience": "Audience", "Descriptor": "Descriptor", "Degree": "Degree", "Context": "Context", "Impression": "Impression"}], "Imprisonment": ["Transitive_action", {"Prisoner": "Patient", "Authorities": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner"}], "Improvement_or_decline": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Improvised_explosive_device": ["Improvised_explosive_device", {"Bomb": "Bomb", "Use": "Use", "Type": "Type", "Material": "Material", "Wielder": "Wielder", "Part": "Part", "Name": "Name", "Time_of_creation": "Time_of_creation", "Creator": "Creator", "Descriptor": "Descriptor", "Target": "Target", "Location": "Location"}], "Inclination": ["Inclination", {"Entity": "Entity", "Behavior": "Behavior", "Degree": "Degree", "Basis": "Basis", "Containing_event": "Containing_event"}], "Inclusion": ["Inclusion", {"Total": "Total", "Part": "Part", "Purpose": "Purpose", "Frequency": "Frequency", "Contrast_set": "Contrast_set", "Subregion": "Subregion", "Explanation": "Explanation", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Inclusion_scenario": ["Inclusion_scenario", {"Whole": "Whole", "Part": "Part", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Increment": ["Increment", {"Class": "Class", "Added_set": "Added_set", "Initial_set": "Initial_set", "Increment": "Increment"}], "Indicating": ["Indicating", {"Communicator": "Communicator", "Unresolved_referent": "Unresolved_referent", "Medium": "Medium", "Amount_of_information": "Amount_of_information", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Time": "Time", "Duration": "Duration", "Frequency": "Frequency", "Explanation": "Explanation", "Place": "Place", "Purpose": "Purpose"}], "Indigenous_origin": ["Indigenous_origin", {"Entity": "Entity", "Origin": "Origin"}], "Individual_history": ["Individual_history", {"Participant": "Participant", "Events": "Events", "Domain": "Domain", "End_time": "End_time", "Start_time": "Start_time", "Time_span": "Time_span", "Duration": "Duration", "Depictive": "Depictive", "Time": "Time"}], "Ineffability": ["Ineffability", {"Stimulus": "Stimulus", "Experiencer": "Experiencer", "Degree": "Degree", "Circumstances": "Circumstances", "Parameter": "Parameter", "Comparison_set": "Comparison_set", "Property": "Property", "Attribute": "Attribute"}], "Infecting": ["Transitive_action", {"Infection": "Event", "Infected_entity": "Patient", "Infection_cause": "Cause", "Manner": "Manner", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Means": "Means", "Result": "Result"}], "Influencing_potential": ["Influencing_potential", {"Force": "Force", "Entity": "Entity", "Domain": "Domain", "Source": "Source", "State_of_affairs": "State_of_affairs"}], "Information": ["Information", {"Information": "Information", "Cognizer": "Cognizer", "Topic": "Topic", "Source": "Source", "Means_of_gathering": "Means_of_gathering"}], "Information_display": ["Information_display", {"Display": "Display", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material"}], "Infrastructure": ["Infrastructure", {"Activity": "Activity", "Place": "Place", "Possessor": "Possessor", "Resource": "Resource", "User": "User", "Descriptor": "Descriptor", "Infrastructure": "Infrastructure"}], "Ingest_substance": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Ingestion": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Ingredients": ["Ingredients", {"Material": "Material", "Type": "Type", "Origin": "Origin", "Descriptor": "Descriptor", "Use": "Use", "Product": "Product", "Name": "Name"}], "Inherent_purpose": ["Inherent_purpose", {"Apparatus": "Apparatus", "Goal": "Goal", "Domain": "Domain", "Type": "Type"}], "Inhibit_motion_scenario": ["Inhibit_motion_scenario", {"Agent": "Agent", "Theme": "Theme", "Holding_location": "Holding_location", "Cause": "Cause"}], "Inhibit_movement": ["Transitive_action", {"Theme": "Patient", "Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner"}], "Inspecting": ["Inspecting", {"Inspector": "Inspector", "Ground": "Ground", "Unwanted_entity": "Unwanted_entity", "Means": "Means", "Purpose": "Purpose", "Manner": "Manner", "Degree": "Degree", "Location_of_protagonist": "Location_of_protagonist", "Desired_state_of_affairs": "Desired_state_of_affairs", "Time": "Time", "Circumstances": "Circumstances", "Instrument": "Instrument", "Particular_iteration": "Particular_iteration"}], "Installing": ["Installing", {"Agent": "Agent", "Component": "Component", "Location_of_protagonist": "Location_of_protagonist", "Fixed_location": "Fixed_location", "Manner": "Manner", "Degree": "Degree", "Depictive": "Depictive", "Means": "Means", "Duration_of_final_state": "Duration_of_final_state", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Area": "Area", "Co-participant": "Co-participant", "Purpose": "Purpose"}], "Instance": ["Instance", {"Instance": "Instance", "Type": "Type", "Instance_prop": "Instance_prop"}], "Institutionalization": ["Institutionalization", {"Patient": "Patient", "Facility": "Facility", "Authority": "Authority", "Affliction": "Affliction", "Time": "Time", "Purpose": "Purpose", "Means": "Means", "Manner": "Manner", "Explanation": "Explanation", "Duration_of_final_state": "Duration_of_final_state", "Place": "Place", "Depictive": "Depictive", "Particular_iteration": "Particular_iteration", "Frequency": "Frequency"}], "Institutions": ["Institutions", {"Institution": "Institution", "Domain": "Domain", "Purpose": "Purpose", "Members": "Members", "Place": "Place"}], "Intentional_deception": ["Intentional_deception", {"Deceiver": "Deceiver", "Victim": "Victim", "Topic": "Topic", "Means": "Means", "Time": "Time", "Place": "Place"}], "Intentional_traversing": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Intentionally_act": ["Event", {"Act": "Event", "Place": "Place", "Time": "Time", "Manner": "Manner", "Frequency": "Frequency"}], "Intentionally_affect": ["Transitive_action", {"Means": "Means", "Event": "Event", "Agent": "Agent", "Place": "Place", "Time": "Time", "Patient": "Patient", "Manner": "Manner"}], "Intentionally_create": ["Transitive_action", {"Creator": "Agent", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Created_entity": "Patient", "Manner": "Manner", "Means": "Means"}], "Intercepting": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Interior_profile_relation": ["State", {"Figure": "Entity"}], "Interrupt_process": ["Transitive_action", {"Cause": "Cause", "Process": "Patient", "Place": "Place", "Time": "Time", "Actor": "Agent", "Manner": "Manner", "Means": "Means"}], "Intoxicants": ["Intoxicants", {"Intoxicant": "Intoxicant", "Type": "Type", "Descriptor": "Descriptor", "Country_of_origin": "Country_of_origin"}], "Intoxication": ["Intoxication", {"Cognizer": "Cognizer", "Intoxicant": "Intoxicant", "Degree": "Degree", "Evaluation": "Evaluation", "Duration": "Duration", "Manner": "Manner", "Time": "Time"}], "Invading": ["Transitive_action", {"Land": "Patient", "Invader": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Invasion_scenario": ["Invasion_scenario", {"Invader": "Invader", "Attacked": "Attacked", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Instrument": "Instrument"}], "Irregular_combatants": ["Irregular_combatants", {"Origin": "Origin", "Combatant": "Combatant", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Side_1": "Side_1", "Side_2": "Side_2", "Conflict": "Conflict", "Purpose": "Purpose", "Group": "Group"}], "Isolated_places": ["Isolated_places", {"Place": "Place", "Relative_location": "Relative_location"}], "Judgment": ["Judgment", {"Cognizer": "Cognizer", "Evaluee": "Evaluee", "Reason": "Reason", "Role": "Role", "Expressor": "Expressor", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Topic": "Topic", "Extent_of_acclaim": "Extent_of_acclaim", "Result": "Result"}], "Judgment_communication": ["Judgment_communication", {"Addressee": "Addressee", "Communicator": "Communicator", "Medium": "Medium", "Topic": "Topic", "Degree": "Degree", "Evaluee": "Evaluee", "Expressor": "Expressor", "Manner": "Manner", "Means": "Means", "Reason": "Reason", "Role": "Role", "Result": "Result", "Depictive": "Depictive", "Grounds": "Grounds", "Extent_of_acclaim": "Extent_of_acclaim", "Time": "Time", "Place": "Place", "Internal_cause": "Internal_cause", "Frequency": "Frequency"}], "Judgment_direct_address": ["Judgment_direct_address", {"Communicator": "Communicator", "Addressee": "Addressee", "Topic": "Topic", "Reason": "Reason", "Medium": "Medium", "Degree": "Degree", "Depictive": "Depictive", "Grounds": "Grounds", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Role": "Role", "Expressor": "Expressor"}], "Judgment_of_intensity": ["Judgment_of_intensity", {"Entity": "Entity", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Place": "Place"}], "Judicial_body": ["Judicial_body", {"Judicial_body": "Judicial_body", "Domain": "Domain", "Task": "Task", "Rank": "Rank", "Seat": "Seat", "Jurisdiction": "Jurisdiction", "Source_of_authority": "Source_of_authority", "Judges": "Judges", "Place": "Place"}], "Jury_deliberation": ["Jury_deliberation", {"Jury": "Jury", "Duration": "Duration", "Charges": "Charges", "Case": "Case", "Time": "Time", "Place": "Place", "Possible_sentence": "Possible_sentence"}], "Just_found_out": ["State", {"Experiencer": "Entity", "State": "State"}], "Justifying": ["Justifying", {"Agent": "Agent", "Explanation": "Explanation", "Act": "Act", "State_of_affairs": "State_of_affairs", "Judge": "Judge", "Means": "Means", "Frequency": "Frequency", "Domain": "Domain", "Time": "Time", "Degree": "Degree"}], "Key": ["Key", {"Key": "Key", "Function": "Function", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Location": "Location", "Object": "Object"}], "Kidnapping": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Event": "Event"}], "Killing": ["Transitive_action", {"Killer": "Agent", "Victim": "Patient", "Cause": "Cause", "Means": "Means", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Result": "Result", "Manner": "Manner"}], "Kinship": ["Kinship", {"Alter": "Alter", "Ego": "Ego", "Relatives": "Relatives", "Degree": "Degree", "Descriptor": "Descriptor"}], "Knot_creation": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Knot": "Patient", "Manner": "Manner", "Depictive": "Depictive"}], "Knot_creation_scenario": ["Knot_creation_scenario", {"Agent": "Agent", "Instrument": "Instrument", "Place": "Place", "Purpose": "Purpose", "Time": "Time", "Means": "Means", "Explanation": "Explanation", "Rope": "Rope", "Knot": "Knot", "Manner": "Manner", "Locus": "Locus"}], "Labeling": ["Labeling", {"Speaker": "Speaker", "Entity": "Entity", "Label": "Label", "Time": "Time", "Place": "Place", "Medium": "Medium", "Particular_iteration": "Particular_iteration", "Explanation": "Explanation", "Duration_of_final_state": "Duration_of_final_state"}], "Labor_product": ["Labor_product", {"Agent": "Agent", "Cause": "Cause", "Input": "Input", "Output": "Output", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Beneficiary": "Beneficiary", "Presentation": "Presentation", "Descriptor": "Descriptor"}], "Launch_process": ["Launch_process", {"Process": "Process", "Place": "Place", "Means": "Means", "Time": "Time", "Medium": "Medium", "Agent": "Agent", "Purpose": "Purpose", "Co-timed_event": "Co-timed_event", "Manner": "Manner", "Communicative_force": "Communicative_force", "Explanation": "Explanation", "Circumstances": "Circumstances", "Particular_iteration": "Particular_iteration", "New_situation": "New_situation", "Containing_event": "Containing_event", "Concessive": "Concessive", "Depictive": "Depictive", "Event_description": "Event_description", "Beneficiary": "Beneficiary", "Re-encoding": "Re-encoding", "Frequency": "Frequency"}], "Law": ["Law", {"Law": "Law", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Part": "Part", "Forbidden": "Forbidden", "Required": "Required", "Jurisdiction": "Jurisdiction", "Descriptor": "Descriptor"}], "Law_enforcement_agency": ["Law_enforcement_agency", {"Agency": "Agency", "Members": "Members", "Purpose": "Purpose", "Period_of_existence": "Period_of_existence", "Name": "Name", "Place": "Place", "Descriptor": "Descriptor", "Jurisdiction": "Jurisdiction"}], "Leadership": ["Leadership", {"Leader": "Leader", "Role": "Role", "Duration": "Duration", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Degree": "Degree", "Time": "Time", "Governed": "Governed", "Descriptor": "Descriptor", "Type": "Type", "Domain": "Domain", "Activity": "Activity", "Place": "Place"}], "Leaving_traces": ["Leaving_traces", {"Evidence": "Evidence", "Entity": "Entity", "Descriptor": "Descriptor", "Location": "Location", "Event": "Event", "Time": "Time", "Reliability": "Reliability"}], "Left_to_do": ["Left_to_do", {"Process": "Process", "Remainder": "Remainder", "Time": "Time", "Agent": "Agent"}], "Legal_rulings": ["Event", {"Finding": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Legality": ["Legality", {"Action": "Action", "Code": "Code", "Object": "Object", "Explanation": "Explanation"}], "Lending": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Level_of_force_exertion": ["Level_of_force_exertion", {"Exerter": "Exerter", "Force": "Force", "Time": "Time", "Circumstances": "Circumstances", "Action": "Action", "Degree": "Degree", "Place": "Place", "Descriptor": "Descriptor", "Domain": "Domain"}], "Level_of_force_resistance": ["Level_of_force_resistance", {"Resisting_entity": "Resisting_entity", "Degree": "Degree", "Place": "Place", "Time": "Time", "Circumstances": "Circumstances", "Descriptor": "Descriptor", "Domain": "Domain", "Opposing_force": "Opposing_force"}], "Level_of_light": ["Level_of_light", {"Location": "Location", "Source": "Source", "Degree": "Degree", "Descriptor": "Descriptor"}], "Light_movement": ["Light_movement", {"Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Result": "Result", "Emitter": "Emitter", "Source": "Source", "Beam": "Beam", "Path": "Path", "Goal": "Goal"}], "Likelihood": ["Likelihood", {"Hypothetical_event": "Hypothetical_event", "Explanation": "Explanation", "Degree": "Degree", "Place": "Place", "Time": "Time", "Circumstances": "Circumstances"}], "Limitation": ["Limitation", {"Entity": "Entity", "Degree": "Degree"}], "Limiting": ["Transitive_action", {"Agent": "Agent", "Range_of_options": "Patient", "Time": "Time", "Manner": "Manner", "Place": "Place", "Means": "Means"}], "Linguistic_meaning": ["Linguistic_meaning", {"Form": "Form", "Meaning": "Meaning", "Textual_location": "Textual_location", "Referent": "Referent", "Degree": "Degree"}], "Lively_place": ["State", {"Location": "Entity"}], "Living_conditions": ["Living_conditions", {"Experiencer": "Experiencer", "Condition": "Condition", "Place": "Place", "Time": "Time", "Duration": "Duration"}], "Locale": ["Locale", {"Locale": "Locale", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Formational_cause": "Formational_cause", "Container_possessor": "Container_possessor", "Name": "Name", "Descriptor": "Descriptor", "Related_event": "Related_event", "Inherent_purpose": "Inherent_purpose"}], "Locale_by_characteristic_entity": ["Locale_by_characteristic_entity", {"Locale": "Locale", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Formational_cause": "Formational_cause", "Container_possessor": "Container_possessor", "Descriptor": "Descriptor", "Related_event": "Related_event", "Inherent_purpose": "Inherent_purpose", "Characteristic": "Characteristic"}], "Locale_by_collocation": ["Locale_by_collocation", {"Profiled_region": "Profiled_region", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Formational_cause": "Formational_cause", "Container_possessor": "Container_possessor", "Descriptor": "Descriptor", "Related_event": "Related_event", "Inherent_purpose": "Inherent_purpose", "Entity": "Entity", "Time": "Time"}], "Locale_by_event": ["Locale_by_event", {"Locale": "Locale", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Defining_event": "Defining_event", "Descriptor": "Descriptor", "Name": "Name"}], "Locale_by_ownership": ["Locale_by_ownership", {"Locale": "Locale", "Relative_location": "Relative_location", "Owner": "Owner", "Constituent_parts": "Constituent_parts", "Descriptor": "Descriptor", "Container_possessor": "Container_possessor", "Name": "Name", "Inherent_purpose": "Inherent_purpose"}], "Locale_by_use": ["Locale_by_use", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Formational_cause": "Formational_cause", "Locale": "Locale", "Name": "Name", "Relative_location": "Relative_location", "Use": "Use", "Descriptor": "Descriptor", "Circumstances": "Circumstances"}], "Locale_closure": ["Locale_closure", {"Locale": "Locale", "Explanation": "Explanation", "Containing_event": "Containing_event", "Depictive": "Depictive", "Time": "Time", "Manner": "Manner", "Circumstances": "Circumstances", "Place": "Place", "Duration": "Duration"}], "Locating": ["Locating", {"Perceiver": "Perceiver", "Sought_entity": "Sought_entity", "Location": "Location", "Ground": "Ground", "Time": "Time"}], "Location_in_time": ["Location_in_time", {"Relative_time": "Relative_time", "Name": "Name", "Whole": "Whole", "Focal_time": "Focal_time", "Salient_event": "Salient_event", "Descriptor": "Descriptor"}], "Location_of_light": ["Location_of_light", {"Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Figure": "Figure", "Ground": "Ground", "Result": "Result", "Cause_of_shine": "Cause_of_shine", "Light": "Light", "Duration": "Duration", "Place": "Place", "Time": "Time"}], "Location_on_path": ["State", {"Figure": "Entity"}], "Locative_relation": ["State", {"Figure": "Entity"}], "Locative_scenario": ["Locative_scenario", {"Figure": "Figure", "Ground": "Ground", "Figures": "Figures", "Profiled_region": "Profiled_region"}], "Lodging_scenario": ["Lodging_scenario", {"Host": "Host", "Lodger": "Lodger", "Time": "Time", "Place": "Place", "Residence": "Residence"}], "Lose_possession": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time"}], "Lose_possession_scenario": ["Lose_possession_scenario", {"Donor": "Donor", "Theme": "Theme"}], "Losing": ["Losing", {"Owner": "Owner", "Possession": "Possession", "Time": "Time", "Place": "Place", "Means": "Means", "Explanation": "Explanation"}], "Losing_it": ["Losing_it", {"Protagonist": "Protagonist", "Action": "Action", "Degree": "Degree", "Manner": "Manner", "Affected_party": "Affected_party", "Explanation": "Explanation"}], "Losing_someone": ["Event", {"Deceased": "Event", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Manner": "Manner", "Timespan": "Timespan", "Duration": "Duration", "Frequency": "Frequency"}], "Losing_track_of": ["Losing_track_of", {"Perceiver": "Perceiver", "Theme": "Theme", "Time": "Time", "Place": "Place", "Explanation": "Explanation"}], "Losing_track_of_perceiver": ["Losing_track_of_perceiver", {"Theme": "Theme", "Perceiver": "Perceiver", "Place": "Place", "Time": "Time", "Explanation": "Explanation"}], "Losing_track_of_theme": ["Losing_track_of_theme", {"Perceiver": "Perceiver", "Theme": "Theme", "Place": "Place", "Time": "Time", "Explanation": "Explanation"}], "Luck": ["Luck", {"State_of_affairs": "State_of_affairs", "Protagonist": "Protagonist", "Descriptor": "Descriptor", "Role": "Role", "Time": "Time", "Degree": "Degree", "Place": "Place"}], "Make_acquaintance": ["Make_acquaintance", {"Time": "Time", "Place": "Place", "Individuals": "Individuals", "Context": "Context", "Individual_1": "Individual_1", "Individual_2": "Individual_2", "Intermediary": "Intermediary", "Explanation": "Explanation", "Iterations": "Iterations", "Depictive": "Depictive", "Particular_iteration": "Particular_iteration"}], "Make_agreement_on_action": ["Make_agreement_on_action", {"Party_1": "Party_1", "Party_2": "Party_2", "Obligation": "Obligation", "Topic": "Topic", "Medium": "Medium", "Manner": "Manner", "Parties": "Parties", "Place": "Place", "Time": "Time", "Descriptor": "Descriptor"}], "Make_cognitive_connection": ["Make_cognitive_connection", {"Concept_1": "Concept_1", "Concept_2": "Concept_2", "Evidence": "Evidence", "Cognizer": "Cognizer", "Concepts": "Concepts", "Frequency": "Frequency", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances"}], "Make_compromise": ["Make_compromise", {"Party_1": "Party_1", "Party_2": "Party_2", "Obligation": "Obligation", "Topic": "Topic", "Medium": "Medium", "Manner": "Manner", "Parties": "Parties", "Place": "Place", "Time": "Time", "Descriptor": "Descriptor", "Purpose": "Purpose"}], "Make_noise": ["Make_noise", {"Sound_source": "Sound_source", "Explanation": "Explanation", "Sound": "Sound", "Manner": "Manner", "Location_of_protagonist": "Location_of_protagonist", "Degree": "Degree", "Depictive": "Depictive", "Internal_cause": "Internal_cause", "Subregion": "Subregion", "Addressee": "Addressee", "Noisy_event": "Noisy_event", "Path": "Path", "Place": "Place", "Circumstances": "Circumstances", "Time": "Time", "Iterations": "Iterations", "Particular_iteration": "Particular_iteration"}], "Making_arrangements": ["Transitive_action", {"Agent": "Agent", "Event": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Scheduled_time": "Time"}], "Making_faces": ["Making_faces", {"Agent": "Agent", "Internal_cause": "Internal_cause", "Body_part": "Body_part", "Degree": "Degree", "Manner": "Manner", "Intended_perceiver": "Intended_perceiver", "Time": "Time", "Location_of_protagonist": "Location_of_protagonist", "Path_of_gaze": "Path_of_gaze", "Cognate_event": "Cognate_event", "Depictive": "Depictive", "External_cause": "External_cause"}], "Manipulate_into_doing": ["Transitive_action", {"Manipulator": "Agent", "Victim": "Patient", "Means": "Means", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Manipulate_into_shape": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Theme": "Patient", "Manner": "Manner"}], "Manipulation": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Manner": ["Manner", {"Comparison_event": "Comparison_event", "Salient_entity": "Salient_entity", "Manner": "Manner", "Manner_descriptor": "Manner_descriptor", "Foreground_event": "Foreground_event", "Comparison_activity": "Comparison_activity"}], "Manner_of_life": ["Manner_of_life", {"Experiencer": "Experiencer", "Lifestyle": "Lifestyle", "Manner": "Manner", "Time": "Time", "Degree": "Degree", "Place": "Place", "Domain": "Domain", "Descriptor": "Descriptor"}], "Manufacturing": ["Transitive_action", {"Producer": "Agent", "Product": "Patient", "Place": "Place", "Time": "Time", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means"}], "Margin_of_resolution": ["Margin_of_resolution", {"Outcome": "Outcome", "Margin": "Margin", "Degree": "Degree", "Circumstances": "Circumstances", "Value": "Value"}], "Mass_motion": ["Event", {"Time": "Time", "Duration": "Duration", "Manner": "Manner", "Place": "Place"}], "Mathematical_relationship": ["Mathematical_relationship", {"Expression_1": "Expression_1", "Expression_2": "Expression_2", "Type": "Type"}], "Means": ["Means", {"Agent": "Agent", "Means": "Means", "Purpose": "Purpose", "Descriptor": "Descriptor", "Time": "Time"}], "Measurable_attributes": ["Measurable_attributes", {"Entity": "Entity", "Attribute": "Attribute", "Value": "Value", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances"}], "Measure_area": ["Measure_area", {"Unit": "Unit", "Area": "Area", "Count": "Count", "Occupant": "Occupant"}], "Measure_by_action": ["Measure_by_action", {"Entity": "Entity", "Event": "Event", "Count": "Count", "Particular_iteration": "Particular_iteration"}], "Measure_duration": ["Measure_duration", {"Count": "Count", "Unit": "Unit", "Process": "Process", "Agent": "Agent"}], "Measure_linear_extent": ["Measure_linear_extent", {"Count": "Count", "Stuff": "Stuff", "Unit": "Unit", "Dimension": "Dimension"}], "Measure_mass": ["Measure_mass", {"Count": "Count", "Unit": "Unit", "Stuff": "Stuff"}], "Measure_scenario": ["Measure_scenario", {"Entity": "Entity", "Attribute": "Attribute", "Value": "Value", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Unit": "Unit", "Count": "Count"}], "Measure_volume": ["Measure_volume", {"Count": "Count", "Stuff": "Stuff", "Unit": "Unit", "Size": "Size"}], "Measures": ["Measures", {"Count": "Count", "Unit": "Unit", "Entity": "Entity", "Attribute": "Attribute"}], "Medical_conditions": ["Medical_conditions", {"Patient": "Patient", "Body_part": "Body_part", "Cause": "Cause", "Symptom": "Symptom", "Name": "Name", "Ailment": "Ailment", "Degree": "Degree", "Place": "Place", "Duration": "Duration"}], "Medical_instruments": ["Medical_instruments", {"Purpose": "Purpose", "Instrument": "Instrument"}], "Medical_interaction_scenario": ["Medical_interaction_scenario", {"Medic": "Medic", "Affliction": "Affliction", "Body_system": "Body_system", "Medical_center": "Medical_center", "Patient": "Patient"}], "Medical_intervention": ["Medical_intervention", {"Intervention": "Intervention", "Result": "Result", "Medical_condition": "Medical_condition", "Patient": "Patient", "Side_effects": "Side_effects", "Extent": "Extent", "Frequency_of_success": "Frequency_of_success", "Medical_professional": "Medical_professional"}], "Medical_professionals": ["Medical_professionals", {"Type": "Type", "Professional": "Professional", "Affliction": "Affliction", "Body_system": "Body_system", "Age": "Age", "Compensation": "Compensation", "Contract_basis": "Contract_basis", "Employer": "Employer", "Ethnicity": "Ethnicity", "Place_of_employment": "Place_of_employment", "Rank": "Rank", "Origin": "Origin"}], "Medical_specialties": ["Medical_specialties", {"Specialty": "Specialty", "Type": "Type", "Body_system": "Body_system", "Affliction": "Affliction"}], "Medium": ["Medium", {"Text": "Text", "Item": "Item", "Frequency": "Frequency", "Time": "Time"}], "Meet_specifications": ["Meet_specifications", {"Agent": "Agent", "Entity": "Entity", "Event": "Event", "Standard": "Standard", "Manner": "Manner", "Means": "Means", "Time": "Time", "Degree": "Degree"}], "Meet_with": ["Meet_with", {"Party_1": "Party_1", "Party_2": "Party_2", "Purpose": "Purpose", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner"}], "Meet_with_response": ["Meet_with_response", {"Trigger": "Trigger", "Response": "Response", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Member_of_military": ["Member_of_military", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Rank": "Rank", "Place_of_employment": "Place_of_employment", "Loyal_side": "Loyal_side", "Type": "Type", "Compensation": "Compensation", "Contract_basis": "Contract_basis", "Military_organization": "Military_organization"}], "Membership": ["Membership", {"Member": "Member", "Group": "Group", "Standing": "Standing", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Memorization": ["Memorization", {"Cognizer": "Cognizer", "Pattern": "Pattern", "Time": "Time", "Place": "Place", "Manner": "Manner", "Completeness": "Completeness", "Means": "Means", "Purpose": "Purpose"}], "Memory": ["Memory", {"Cognizer": "Cognizer", "Content": "Content", "Topic": "Topic", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Duration": "Duration", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Experience": "Experience", "Circumstances": "Circumstances"}], "Mental_activity": ["Mental_activity", {"Sentient_entity": "Sentient_entity", "Content": "Content", "Evidence": "Evidence", "Topic": "Topic", "Degree": "Degree", "Manner": "Manner", "Expressor": "Expressor", "Role": "Role", "Paradigm": "Paradigm", "Time": "Time"}], "Mental_property": ["Mental_property", {"Protagonist": "Protagonist", "Behavior": "Behavior", "Practice": "Practice", "Degree": "Degree", "Manner": "Manner", "Domain": "Domain", "Judge": "Judge"}], "Mental_stimulus_exp_focus": ["Mental_stimulus_exp_focus", {"Experiencer": "Experiencer", "Topic": "Topic", "Stimulus": "Stimulus", "Degree": "Degree", "Empathy_target": "Empathy_target", "Explanation": "Explanation", "Circumstances": "Circumstances", "State": "State", "Parameter": "Parameter", "Manner": "Manner", "Time": "Time", "Expressor": "Expressor", "Duration": "Duration"}], "Mental_stimulus_stimulus_focus": ["Mental_stimulus_stimulus_focus", {"Experiencer": "Experiencer", "Stimulus": "Stimulus", "Degree": "Degree", "Empathy_target": "Empathy_target", "Explanation": "Explanation", "Circumstances": "Circumstances", "Parameter": "Parameter", "Manner": "Manner", "Time": "Time", "Frequency": "Frequency"}], "Mention": ["Mention", {"Communicator": "Communicator", "Addressee": "Addressee", "Message": "Message", "Medium": "Medium", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Time": "Time", "Duration": "Duration", "Iterations": "Iterations", "Particular_iteration": "Particular_iteration", "Frequency": "Frequency", "Specified_content": "Specified_content", "Containing_event": "Containing_event", "Circumstances": "Circumstances", "Place": "Place", "Purpose": "Purpose"}], "Military": ["Military", {"Force": "Force", "Possessor": "Possessor", "Descriptor": "Descriptor", "Members": "Members", "Domain": "Domain", "Goal": "Goal", "Period_of_existence": "Period_of_existence"}], "Military_operation": ["Event", {"Area": "Place", "Time": "Time", "Manner": "Manner"}], "Mining": ["Event", {"Place": "Place", "Time": "Time"}], "Misdeed": ["Event", {"Misdeed": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Money": ["Money", {"Money": "Money", "Inherent_purpose": "Inherent_purpose", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Origin": "Origin", "Possessor": "Possessor"}], "Morality_evaluation": ["Morality_evaluation", {"Evaluee": "Evaluee", "Behavior": "Behavior", "Degree": "Degree", "Expressor": "Expressor", "Judge": "Judge"}], "Motion": ["Event", {"Duration": "Duration", "Time": "Time", "Manner": "Manner", "Place": "Place", "Frequency": "Frequency"}], "Motion_directional": ["Event", {"Duration": "Duration", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Motion_noise": ["Event", {"Manner": "Manner", "Place": "Place", "Duration": "Duration", "Time": "Time"}], "Motion_scenario": ["Motion_scenario", {"Duration": "Duration", "Time": "Time", "Area": "Area", "Cotheme": "Cotheme", "Distance": "Distance", "Goal": "Goal", "Path": "Path", "Source": "Source", "Speed": "Speed", "Theme": "Theme", "Mode_of_transportation": "Mode_of_transportation"}], "Moving_in_place": ["Moving_in_place", {"Theme": "Theme", "Fixed_location": "Fixed_location", "Periodicity": "Periodicity", "Angle": "Angle", "Time": "Time", "Place": "Place", "Direction": "Direction", "Manner": "Manner", "Result": "Result", "Explanation": "Explanation", "Depictive": "Depictive", "Purpose": "Purpose", "Path_shape": "Path_shape"}], "Name_conferral": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Namesake": ["Namesake", {"Entity": "Entity", "Namesake": "Namesake", "Anchor": "Anchor", "Descriptor": "Descriptor"}], "Natural_features": ["Natural_features", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Formational_cause": "Formational_cause", "Locale": "Locale", "Name": "Name", "Relative_location": "Relative_location", "Type": "Type", "Descriptor": "Descriptor"}], "Needing": ["Needing", {"Cognizer": "Cognizer", "Requirement": "Requirement", "Dependent": "Dependent", "Circumstances": "Circumstances", "Degree": "Degree", "Time": "Time", "Place": "Place", "Consequences": "Consequences", "Frequency": "Frequency", "Iterations": "Iterations", "Particular_iteration": "Particular_iteration", "Explanation": "Explanation"}], "Negation": ["Negation", {"Negated_proposition": "Negated_proposition", "Factual_situation": "Factual_situation"}], "Negative_conditional": ["Negative_conditional", {"Profiled_possibility": "Profiled_possibility", "Anti_consequence": "Anti_consequence"}], "Network": ["Network", {"Network": "Network", "Nodes": "Nodes", "Connections": "Connections", "Descriptor": "Descriptor", "Possessor": "Possessor"}], "Noise_makers": ["Noise_makers", {"Noise_maker": "Noise_maker", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Ground": "Ground"}], "Non-commutative_process": ["Non-commutative_process", {"Term_1": "Term_1", "Term_2": "Term_2", "Calculator": "Calculator"}], "Non-commutative_statement": ["Non-commutative_statement", {"Term_1": "Term_1", "Term_2": "Term_2", "Result": "Result"}], "Non-gradable_proximity": ["State", {"Figure": "Entity"}], "Noncombatant": ["Noncombatant", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Conflict": "Conflict"}], "Notability": ["Notability", {"Type": "Type", "Name": "Name", "Time": "Time", "Place": "Place", "Degree": "Degree"}], "Notification_of_charges": ["Notification_of_charges", {"Arraign_authority": "Arraign_authority", "Accused": "Accused", "Charges": "Charges", "Place": "Place", "Time": "Time", "Containing_event": "Containing_event"}], "Nuclear_process": ["Event", {"Time": "Time", "Manner": "Manner"}], "Objective_influence": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Obligation_scenario": ["Obligation_scenario", {"Responsible_party": "Responsible_party", "Duty": "Duty", "Condition": "Condition", "Consequence": "Consequence", "Time": "Time", "Place": "Place", "Degree": "Degree", "Purpose": "Purpose"}], "Obscurity": ["Obscurity", {"Entity": "Entity", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Explanation": "Explanation", "Duration": "Duration", "Place": "Place"}], "Obviousness": ["Obviousness", {"Phenomenon": "Phenomenon", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Perceiver": "Perceiver", "Evidence": "Evidence", "Group": "Group", "Location_of_protagonist": "Location_of_protagonist", "Particular_iteration": "Particular_iteration", "Direction": "Direction"}], "Occupy_rank": ["Occupy_rank", {"Rank": "Rank", "Item": "Item", "Dimension": "Dimension", "Time": "Time", "Comparison_set": "Comparison_set"}], "Offenses": ["Offenses", {"Degree": "Degree", "Specification": "Specification", "Offense": "Offense", "Victim": "Victim", "Punishment": "Punishment", "Perpetrator": "Perpetrator"}], "Offering": ["Offering", {"Offerer": "Offerer", "Potential_recipient": "Potential_recipient", "Theme": "Theme", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Purpose": "Purpose", "Means": "Means", "Manner": "Manner", "Circumstances": "Circumstances", "Imposed_purpose": "Imposed_purpose", "Depictive": "Depictive", "Period_of_iterations": "Period_of_iterations"}], "Offshoot": ["Offshoot", {"Original_body": "Original_body", "Branch": "Branch", "Place": "Place", "Time": "Time"}], "Omen": ["Omen", {"Predictive_phenomenon": "Predictive_phenomenon", "Future_phenomenon": "Future_phenomenon", "Outcome": "Outcome", "Interested_party": "Interested_party", "Strength": "Strength", "Time": "Time", "Explanation": "Explanation", "Circumstances": "Circumstances", "Duration": "Duration", "Place": "Place"}], "Ontogeny": ["Ontogeny", {"Entity": "Entity", "Organism": "Organism", "Prior_state": "Prior_state", "Post_state": "Post_state", "Time": "Time", "Degree": "Degree", "Domain": "Domain", "Manner": "Manner", "Place": "Place", "Rate": "Rate", "Duration": "Duration"}], "Openness": ["Openness", {"Theme": "Theme", "Useful_location": "Useful_location", "Barrier": "Barrier", "Degree": "Degree", "Time": "Time"}], "Operate_vehicle": ["Transitive_action", {"Driver": "Agent", "Vehicle": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Operate_vehicle_scenario": ["Operate_vehicle_scenario", {"Operator": "Operator", "Vehicle": "Vehicle", "Source": "Source", "Path": "Path", "Goal": "Goal", "Area": "Area", "Place": "Place", "Time": "Time", "Manner": "Manner", "Means": "Means"}], "Operating_a_system": ["Transitive_action", {"System": "Patient", "Operator": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner"}], "Operational_testing": ["Operational_testing", {"Tester": "Tester", "Product": "Product", "Unwanted_characteristics": "Unwanted_characteristics", "Means": "Means", "Purpose": "Purpose", "Manner": "Manner", "Degree": "Degree", "Location_of_protagonist": "Location_of_protagonist", "Desired_state_of_affairs": "Desired_state_of_affairs", "Time": "Time", "Circumstances": "Circumstances", "Duration": "Duration", "Place": "Place", "Function": "Function", "Tested_property": "Tested_property", "Period_of_iterations": "Period_of_iterations", "Result": "Result"}], "Opinion": ["Opinion", {"Cognizer": "Cognizer", "Opinion": "Opinion", "Evidence": "Evidence", "Topic": "Topic", "Constancy": "Constancy", "Manner": "Manner", "Role": "Role", "Domain": "Domain", "Time": "Time", "Circumstances": "Circumstances"}], "Opportunity": ["Opportunity", {"Opportunity": "Opportunity", "Agent": "Agent", "Desirable_situation": "Desirable_situation"}], "Optical_image": ["Optical_image", {"Image": "Image", "Source": "Source"}], "Ordinal_numbers": ["Ordinal_numbers", {"Type": "Type", "Starting_point": "Starting_point", "Basis_of_order": "Basis_of_order", "Item": "Item", "Comparison_set": "Comparison_set"}], "Organization": ["Organization", {"Organization": "Organization", "Members": "Members", "Purpose": "Purpose", "Period_of_existence": "Period_of_existence", "Name": "Name", "Container_possessor": "Container_possessor", "Place": "Place", "Descriptor": "Descriptor"}], "Origin": ["Origin", {"Entity": "Entity", "Origin": "Origin"}], "Others_situation_as_stimulus": ["State", {"Experiencer": "Entity"}], "Out_of_existence": ["Out_of_existence", {"Entity": "Entity", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Duration": "Duration", "Role": "Role", "Manner": "Manner", "Circumstances": "Circumstances"}], "Pardon": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Part_edge": ["Part_edge", {"Orientation": "Orientation", "Whole": "Whole", "Part_prop": "Part_prop", "Part": "Part"}], "Part_inner_outer": ["Part_inner_outer", {"Part": "Part", "Whole": "Whole", "Part_prop": "Part_prop"}], "Part_ordered_segments": ["Part_ordered_segments", {"Ordinality": "Ordinality", "Part_prop": "Part_prop", "Part": "Part", "Whole": "Whole"}], "Part_orientational": ["Part_orientational", {"Part": "Part", "Part_prop": "Part_prop", "Whole": "Whole"}], "Part_piece": ["Part_piece", {"Piece": "Piece", "Piece_prop": "Piece_prop", "Substance": "Substance"}], "Part_whole": ["Part_whole", {"Part": "Part", "Whole": "Whole", "Part_prop": "Part_prop", "Orientation": "Orientation", "System": "System", "Name": "Name"}], "Partiality": ["Partiality", {"Decision_maker": "Decision_maker", "Side_1": "Side_1", "Sides": "Sides", "Side_2": "Side_2", "Domain": "Domain", "Degree": "Degree", "Manifestation_of_bias": "Manifestation_of_bias", "Dispute": "Dispute", "Judge": "Judge", "Explanation": "Explanation", "Time": "Time", "Expressor": "Expressor", "Manner": "Manner"}], "Participation": ["Participation", {"Participants": "Participants", "Participant_1": "Participant_1", "Participant_2": "Participant_2", "Event": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner", "Purpose": "Purpose", "Means": "Means", "Degree_of_involvement": "Degree_of_involvement", "Institution": "Institution", "Duration": "Duration"}], "Partitive": ["Partitive", {"Subset": "Subset", "Group": "Group"}], "Passing": ["Transitive_action", {"Agent": "Cause", "Theme": "Patient", "Depictive": "Depictive", "Means": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Passing_off": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Path_shape": ["Path_shape", {"Source": "Source", "Path": "Path", "Goal": "Goal", "Road": "Road", "Manner": "Manner", "Distance": "Distance", "Area": "Area", "Degree": "Degree", "Means": "Means", "Result": "Result", "Speed": "Speed", "Depictive": "Depictive", "Place": "Place", "Path_shape": "Path_shape", "Direction": "Direction", "Time": "Time", "Purpose": "Purpose"}], "Path_traveled": ["Path_traveled", {"Path": "Path", "Source": "Source", "Goal": "Goal", "Endpoints": "Endpoints", "Characteristic": "Characteristic", "Landmark": "Landmark", "Direction": "Direction", "Ground": "Ground", "Length": "Length", "Theme": "Theme"}], "Patrolling": ["Patrolling", {"Patrol": "Patrol", "Ground": "Ground", "Unwanted_entity": "Unwanted_entity", "Means": "Means", "Purpose": "Purpose", "Manner": "Manner", "Degree": "Degree", "Location_of_protagonist": "Location_of_protagonist", "Desired_state_of_affairs": "Desired_state_of_affairs", "Time": "Time", "Circumstances": "Circumstances", "Instrument": "Instrument", "Particular_iteration": "Particular_iteration", "Descriptor": "Descriptor", "Members": "Members", "Duration": "Duration", "Co-participant": "Co-participant", "Vehicle": "Vehicle", "Possessor": "Possessor"}], "Pattern": ["Pattern", {"Entities": "Entities", "Name": "Name", "Descriptor": "Descriptor"}], "People": ["People", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance"}], "People_along_political_spectrum": ["People_along_political_spectrum", {"Individual": "Individual", "Place": "Place", "Domain": "Domain", "Origin": "Origin", "Descriptor": "Descriptor", "Persistent_characteristic": "Persistent_characteristic", "Age": "Age", "Ethnicity": "Ethnicity", "Position_qualifier": "Position_qualifier"}], "People_by_age": ["People_by_age", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance"}], "People_by_jurisdiction": ["People_by_jurisdiction", {"Jurisdiction": "Jurisdiction", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Authority": "Authority"}], "People_by_military_specialty": ["People_by_military_specialty", {"Origin": "Origin", "Fighter": "Fighter", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Rank": "Rank", "Place_of_operation": "Place_of_operation", "Loyal_side": "Loyal_side", "Type": "Type", "Compensation": "Compensation", "Contract_basis": "Contract_basis", "Military_organization": "Military_organization"}], "People_by_morality": ["People_by_morality", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Field": "Field"}], "People_by_origin": ["People_by_origin", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance"}], "People_by_religion": ["People_by_religion", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Religion": "Religion"}], "People_by_residence": ["People_by_residence", {"Known_resident": "Known_resident", "Location": "Location", "Indicated_resident": "Indicated_resident", "Age": "Age", "Descriptor": "Descriptor", "Persistent_characteristic": "Persistent_characteristic", "Residents": "Residents", "Ethnicity": "Ethnicity"}], "People_by_vocation": ["People_by_vocation", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Rank": "Rank", "Place_of_employment": "Place_of_employment", "Employer": "Employer", "Type": "Type", "Compensation": "Compensation", "Contract_basis": "Contract_basis"}], "Perception": ["Perception", {"Perceiver": "Perceiver", "Sought_phenomenon": "Sought_phenomenon", "Phenomenon": "Phenomenon"}], "Perception_active": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Perception_body": ["Perception_body", {"Experiencer": "Experiencer", "Body_part": "Body_part", "Explanation": "Explanation", "Degree": "Degree", "Manner": "Manner", "Subregion": "Subregion"}], "Perception_experience": ["Perception_experience", {"Perceiver_passive": "Perceiver_passive", "Phenomenon": "Phenomenon", "Body_part": "Body_part", "Location_of_protagonist": "Location_of_protagonist", "Direction": "Direction", "Depictive": "Depictive", "State": "State", "Manner": "Manner", "Degree": "Degree", "Means": "Means", "Time": "Time", "Duration": "Duration", "Contrastive_context": "Contrastive_context", "Concessive": "Concessive", "Circumstances": "Circumstances", "Frequency": "Frequency", "Place": "Place", "Ground": "Ground", "Obscuring_medium": "Obscuring_medium"}], "Performers": ["Performers", {"Origin": "Origin", "Person": "Person", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Rank": "Rank", "Place_of_employment": "Place_of_employment", "Employer": "Employer", "Type": "Type", "Compensation": "Compensation", "Contract_basis": "Contract_basis"}], "Performers_and_roles": ["Performers_and_roles", {"Audience": "Audience", "Medium": "Medium", "Performance": "Performance", "Performer": "Performer", "Score": "Score", "Script": "Script", "Type": "Type", "Role": "Role", "Time": "Time", "Place": "Place", "Manner": "Manner", "Performer1": "Performer1", "Performer2": "Performer2", "Duration": "Duration", "Event_description": "Event_description"}], "Performing_arts": ["Performing_arts", {"Performer": "Performer", "Personnel": "Personnel", "Audience": "Audience", "Performance": "Performance", "Script": "Script", "Score": "Score", "Type": "Type", "Medium": "Medium"}], "Personal_relationship": ["Personal_relationship", {"Partner_1": "Partner_1", "Partner_2": "Partner_2", "Partners": "Partners", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Relationship": "Relationship", "Duration": "Duration", "Source_of_relationship": "Source_of_relationship"}], "Personal_success": ["Personal_success", {"Person": "Person", "Time": "Time", "Degree": "Degree", "Endeavor": "Endeavor", "Explanation": "Explanation", "Field": "Field"}], "Physical_artworks": ["Physical_artworks", {"Artifact": "Artifact", "Use": "Use", "Creator": "Creator", "Time_of_creation": "Time_of_creation", "Name": "Name", "Type": "Type", "Material": "Material", "Represented": "Represented", "State_of_represented": "State_of_represented", "Descriptor": "Descriptor", "Place": "Place"}], "Physical_entity": ["Physical_entity", {"Constituents": "Constituents", "Entity": "Entity", "Formational_cause": "Formational_cause", "Name": "Name", "Type": "Type", "Place": "Place"}], "Piracy": ["Event", {"Event": "Event", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Placing": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Result": "Result", "Place": "Place", "Time": "Time", "Cause": "Cause"}], "Placing_scenario": ["Placing_scenario", {"Agent": "Agent", "Theme": "Theme", "Source": "Source", "Path": "Path", "Goal": "Goal", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Explanation": "Explanation", "Time": "Time", "Place": "Place", "Instrument": "Instrument", "Subregion": "Subregion", "Cause": "Cause"}], "Planned_trajectory": ["Planned_trajectory", {"Theme": "Theme", "Source": "Source", "Path": "Path", "Goal": "Goal", "Descriptor": "Descriptor"}], "Planting": ["Planting", {"Agent": "Agent", "Theme": "Theme", "Instrument": "Instrument", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Outcome": "Outcome", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Frequency": "Frequency", "Degree": "Degree", "Ground": "Ground", "Particular_iteration": "Particular_iteration", "Depictive": "Depictive", "Co-participant": "Co-participant", "Explanation": "Explanation"}], "Plants": ["Plants", {"Plant": "Plant", "Characteristic": "Characteristic", "Descriptor": "Descriptor", "Origin": "Origin"}], "Point_of_dispute": ["Point_of_dispute", {"Question": "Question", "Group": "Group", "Status": "Status", "Descriptor": "Descriptor", "Domain": "Domain", "Context": "Context", "Time": "Time", "Viewpoint": "Viewpoint"}], "Political_actions": ["Political_actions", {"Activists": "Activists", "Institution": "Institution", "Demands": "Demands", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Place": "Place", "Type": "Type", "Result": "Result"}], "Political_locales": ["Political_locales", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Locale": "Locale", "Name": "Name", "Relative_location": "Relative_location", "Descriptor": "Descriptor", "Population": "Population"}], "Popularity": ["Popularity", {"Evaluee": "Evaluee", "Degree": "Degree", "Judge": "Judge", "Time": "Time", "Place": "Place"}], "Posing_as": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Position_on_a_scale": ["Position_on_a_scale", {"Item": "Item", "Variable": "Variable", "Value": "Value", "Degree": "Degree", "Domain": "Domain"}], "Possession": ["Possession", {"Owner": "Owner", "Possession": "Possession", "Depictive": "Depictive", "Manner": "Manner", "Duration": "Duration", "Time": "Time", "Explanation": "Explanation"}], "Possibility": ["Possibility", {"Possible_event": "Possible_event", "Circumstances": "Circumstances", "Explanation": "Explanation", "Condition": "Condition", "Time": "Time"}], "Post_getting": ["Post_getting", {"Recipient": "Recipient", "Theme": "Theme", "Manner": "Manner", "Time": "Time"}], "Post_giving": ["Post_giving", {"Donor": "Donor", "Theme": "Theme", "Manner": "Manner", "Recipient": "Recipient", "Time": "Time"}], "Post_lose_possession": ["Post_lose_possession", {"Owner": "Owner", "Possession": "Possession", "Manner": "Manner", "Time": "Time"}], "Post_receiving": ["Post_receiving", {"Recipient": "Recipient", "Donor": "Donor", "Theme": "Theme", "Manner": "Manner", "Time": "Time"}], "Post_transfer": ["Post_transfer", {"Donor": "Donor", "Theme": "Theme", "Manner": "Manner", "Recipient": "Recipient", "Time": "Time"}], "Posture": ["State", {"Agent": "Entity"}], "Practice": ["Event", {"Action": "Event", "Place": "Place", "Time": "Time", "Manner": "Manner"}], "Praiseworthiness": ["Praiseworthiness", {"Evaluee": "Evaluee", "Behavior": "Behavior", "Degree": "Degree", "Judge": "Judge"}], "Prank": ["Prank", {"Prank": "Prank", "Joker": "Joker", "Victim": "Victim", "Descriptor": "Descriptor"}], "Pre_getting": ["Pre_getting", {"Recipient": "Recipient", "Theme": "Theme", "Manner": "Manner", "Time": "Time"}], "Pre_giving": ["Pre_giving", {"Donor": "Donor", "Theme": "Theme", "Manner": "Manner", "Recipient": "Recipient", "Time": "Time"}], "Pre_lose_possession": ["Pre_lose_possession", {"Owner": "Owner", "Possession": "Possession", "Manner": "Manner", "Time": "Time"}], "Pre_receiving": ["Pre_receiving", {"Recipient": "Recipient", "Donor": "Donor", "Theme": "Theme", "Manner": "Manner", "Time": "Time"}], "Pre_transfer": ["Pre_transfer", {"Donor": "Donor", "Theme": "Theme", "Manner": "Manner", "Recipient": "Recipient", "Time": "Time"}], "Precariousness": ["Precariousness", {"Theme": "Theme", "Degree": "Degree", "Falling_event": "Falling_event", "Dangerous_entity": "Dangerous_entity", "Place": "Place", "Time": "Time", "Explanation": "Explanation", "Situation": "Situation", "Domain": "Domain", "Depictive": "Depictive", "Frequency": "Frequency", "Duration": "Duration", "Manner": "Manner", "Location": "Location", "Result": "Result"}], "Precipitation": ["Precipitation", {"Precipitation": "Precipitation", "Rate": "Rate", "Quantity": "Quantity", "Place": "Place", "Duration": "Duration", "Time": "Time", "Explanation": "Explanation", "Manner": "Manner", "Temperature": "Temperature", "Frequency": "Frequency"}], "Predicament": ["State", {"Experiencer": "Entity", "Situation": "State"}], "Predicting": ["Predicting", {"Speaker": "Speaker", "Eventuality": "Eventuality", "Evidence": "Evidence", "Time": "Time", "Place": "Place", "Manner": "Manner", "Time_of_eventuality": "Time_of_eventuality", "Accuracy": "Accuracy", "Descriptor": "Descriptor", "Medium": "Medium", "Topic": "Topic", "Means": "Means"}], "Preference": ["Preference", {"Experiencer": "Experiencer", "Event": "Event", "Focal_participant": "Focal_participant", "Degree": "Degree", "Manner": "Manner", "Explanation": "Explanation", "Purpose_of_event": "Purpose_of_event", "Time_of_event": "Time_of_event", "Location_of_event": "Location_of_event", "Time": "Time", "Place": "Place", "Duration": "Duration", "Contrast": "Contrast"}], "Preferred_alternative_scenario": ["Preferred_alternative_scenario", {"Profiled_possibility": "Profiled_possibility", "Opposite_possibility": "Opposite_possibility", "Positive_consequence": "Positive_consequence", "Undesirable_consequence": "Undesirable_consequence"}], "Preliminaries": ["Preliminaries", {"Agent": "Agent", "Preparatory_act": "Preparatory_act", "Purpose": "Purpose", "Descriptor": "Descriptor", "Degree": "Degree", "Domain_of_relevance": "Domain_of_relevance", "Time": "Time", "Place": "Place", "Preparatory_phase": "Preparatory_phase"}], "Presence": ["State", {"Entity": "Entity"}], "Presentation_of_mitigation": ["Presentation_of_mitigation", {"Mitigating_situation": "Mitigating_situation"}], "Preserving": ["Transitive_action", {"Agent": "Agent", "Medium": "Means", "Patient": "Patient", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Prevarication": ["Prevarication", {"Speaker": "Speaker", "Addressee": "Addressee", "Topic": "Topic", "Place": "Place", "Time": "Time", "Means": "Means", "Duration": "Duration", "Purpose": "Purpose", "Degree": "Degree", "Frequency": "Frequency"}], "Prevent_or_allow_possession": ["Prevent_or_allow_possession", {"Potential_hindrance": "Potential_hindrance", "State_of_affairs": "State_of_affairs", "Time": "Time", "Place": "Place", "Agent": "Agent", "Protagonist": "Protagonist", "Purpose": "Purpose", "Duration": "Duration", "Explanation": "Explanation", "Frequency": "Frequency", "Containing_event": "Containing_event"}], "Preventing_or_letting": ["Preventing_or_letting", {"Potential_hindrance": "Potential_hindrance", "Event": "Event", "Time": "Time", "Place": "Place", "Agent": "Agent", "Degree": "Degree", "Circumstances": "Circumstances", "Manner": "Manner", "Means": "Means", "Event_description": "Event_description", "Depictive": "Depictive", "Period_of_iterations": "Period_of_iterations", "Allowed_category": "Allowed_category", "Explanation": "Explanation", "Frequency": "Frequency", "Purpose": "Purpose"}], "Price_per_unit": ["Price_per_unit", {"Product": "Product", "Price": "Price", "Seller": "Seller", "Buyer": "Buyer", "Descriptor": "Descriptor"}], "Prison": ["Prison", {"Operator": "Operator", "Inmates": "Inmates", "Name": "Name", "Location": "Location", "Security": "Security", "Penal_institution": "Penal_institution", "Part": "Part", "Descriptor": "Descriptor"}], "Probability": ["Probability", {"Odds": "Odds", "Position": "Position", "Hypothetical_event": "Hypothetical_event"}], "Process": ["Process", {"Explanation": "Explanation", "Process": "Process", "Place": "Place", "Time": "Time", "Manner": "Manner", "Result": "Result", "Duration": "Duration"}], "Process_completed_state": ["State", {"Process": "Entity"}], "Process_continue": ["Process_continue", {"Depictive": "Depictive", "Manner": "Manner", "Duration": "Duration", "Event": "Event", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Next_subevent": "Next_subevent", "Circumstances": "Circumstances", "Concessive": "Concessive"}], "Process_end": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner", "Frequency": "Frequency", "Duration": "Duration"}], "Process_initial_state": ["State", {"Process": "Entity"}], "Process_pause": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation", "Duration": "Duration"}], "Process_resume": ["Event", {"Duration": "Duration", "Process": "Event", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Frequency": "Frequency", "Manner": "Manner"}], "Process_start": ["Event", {"Event": "Event", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner", "Duration": "Duration", "Frequency": "Frequency"}], "Process_stop": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner", "Duration": "Duration", "Frequency": "Frequency"}], "Process_stopped_state": ["State", {"Process": "Entity"}], "Process_uncompleted_state": ["State", {"Process": "Entity"}], "Processing_materials": ["Transitive_action", {"Agent": "Agent", "Alterant": "Means", "Material": "Patient", "Place": "Place", "Time": "Time", "Manner": "Manner"}], "Procreative_sex": ["Procreative_sex", {"Participants": "Participants", "Participant_1": "Participant_1", "Participant_2": "Participant_2", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Domain": "Domain", "Purpose": "Purpose"}], "Product_delivery": ["Product_delivery", {"Deliverer": "Deliverer", "Goal": "Goal", "Goods": "Goods", "Vehicle": "Vehicle", "Depictive": "Depictive", "Manner": "Manner", "Purchaser": "Purchaser", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Cotheme": "Cotheme", "Container": "Container", "Place": "Place", "Speed": "Speed", "Circumstances": "Circumstances", "Source": "Source", "Means": "Means", "Path": "Path"}], "Product_development": ["Product_development", {"Developer": "Developer", "Product": "Product", "Company": "Company", "Place": "Place", "Time": "Time", "Manner": "Manner", "Use": "Use"}], "Product_development_scenario": ["Product_development_scenario", {"Developer": "Developer", "Entity": "Entity", "Time": "Time", "Place": "Place", "Company": "Company", "Purpose": "Purpose", "Explanation": "Explanation"}], "Product_line": ["Product_line", {"Brand": "Brand", "Collection": "Collection", "Products": "Products", "Descriptor": "Descriptor", "Collection_name": "Collection_name", "Designer": "Designer"}], "Progression": ["Progression", {"Entity": "Entity", "Prior_state": "Prior_state", "Post_state": "Post_state", "Time": "Time", "Rate": "Rate", "Manner": "Manner", "Duration": "Duration", "Degree": "Degree", "Domain": "Domain", "Explanation": "Explanation", "Place": "Place", "Event_description": "Event_description", "Frequency": "Frequency", "Circumstances": "Circumstances"}], "Prohibiting_or_licensing": ["Prohibiting_or_licensing", {"State_of_affairs": "State_of_affairs", "Principle": "Principle", "Place": "Place", "Time": "Time", "Circumstances": "Circumstances", "Explanation": "Explanation"}], "Project": ["Project", {"Agent": "Agent", "Field": "Field", "Activity": "Activity", "Name": "Name", "Goal": "Goal", "Salient_entity": "Salient_entity", "Manner": "Manner", "Duration": "Duration", "Co-participant": "Co-participant", "Project": "Project", "Time": "Time", "Place": "Place", "Descriptor": "Descriptor"}], "Proliferating_in_number": ["Event", {"Manner": "Manner", "Time": "Time", "Duration": "Duration", "Place": "Place"}], "Prominence": ["Prominence", {"Entity": "Entity", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Place": "Place"}], "Proper_reference": ["Proper_reference", {"Entity": "Entity", "Intended_referent": "Intended_referent"}], "Proportion": ["Proportion", {"Criteria": "Criteria", "Subset": "Subset", "Group": "Group", "Descriptor": "Descriptor", "Ratio": "Ratio"}], "Proportional_quantity": ["Proportional_quantity", {"Denoted_quantity": "Denoted_quantity", "Mass": "Mass", "Individuals": "Individuals", "Q_prop": "Q_prop", "Reference_quantity": "Reference_quantity", "Degree": "Degree"}], "Protecting": ["Protecting", {"Protection": "Protection", "Place": "Place", "Time": "Time", "Danger": "Danger", "Asset": "Asset", "Means": "Means", "Instrument": "Instrument", "Manner": "Manner", "Event_description": "Event_description", "Descriptor": "Descriptor", "Degree": "Degree", "Explanation": "Explanation", "Duration": "Duration", "Depictive": "Depictive", "Beneficiary": "Beneficiary"}], "Protest": ["Protest", {"Protester": "Protester", "Issue": "Issue", "Side": "Side", "Degree": "Degree", "Time": "Time", "Explanation": "Explanation", "Action": "Action", "Descriptor": "Descriptor", "Particular_iteration": "Particular_iteration", "Manner": "Manner", "Concessive": "Concessive", "Place": "Place", "Duration": "Duration", "Frequency": "Frequency"}], "Provide_lodging": ["Provide_lodging", {"Host": "Host", "Lodger": "Lodger", "Circumstances": "Circumstances", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Explanation": "Explanation", "Manner": "Manner", "Means": "Means", "Residence": "Residence"}], "Proximity_image_schema": ["Proximity_image_schema", {"Near_profiled_region": "Near_profiled_region", "Ground": "Ground", "Degree": "Degree", "Distant_profiled_region": "Distant_profiled_region"}], "Public_services": ["Public_services", {"Institution": "Institution", "Domain": "Domain", "Target_group": "Target_group", "Service_action": "Service_action"}], "Publishing": ["Transitive_action", {"Publisher": "Agent", "Work": "Patient", "Time": "Time", "Place": "Place", "Manner": "Manner", "Means": "Means"}], "Punctual_perception": ["Punctual_perception", {"Perceiver": "Perceiver", "Phenomenon": "Phenomenon", "Body_part": "Body_part", "Location_of_protagonist": "Location_of_protagonist", "Direction": "Direction", "Depictive": "Depictive", "Ground": "Ground", "Manner": "Manner", "Degree": "Degree", "Means": "Means", "Time": "Time", "Duration": "Duration"}], "Purpose": ["Purpose", {"Agent": "Agent", "Goal": "Goal", "Means": "Means", "Domain": "Domain", "Time": "Time", "Restrictor": "Restrictor", "Attribute": "Attribute", "Value": "Value"}], "Putting_out_fire": ["Putting_out_fire", {"Depictive": "Depictive", "Manner": "Manner", "Result": "Result", "Place": "Place", "Time": "Time", "Agent": "Agent", "Fire": "Fire", "Means": "Means", "Purpose": "Purpose", "Degree": "Degree", "Explanation": "Explanation", "Circumstances": "Circumstances", "Containing_event": "Containing_event"}], "Quantified_mass": ["Quantified_mass", {"Quantity": "Quantity", "Mass": "Mass", "Individuals": "Individuals", "Q_prop": "Q_prop", "Degree": "Degree"}], "Quantity": ["Quantity", {"Entity": "Entity", "Quantity": "Quantity", "Value": "Value", "Descriptor": "Descriptor"}], "Quarreling": ["Quarreling", {"Arguers": "Arguers", "Arguer1": "Arguer1", "Arguer2": "Arguer2", "Issue": "Issue", "Frequency": "Frequency", "Depictive": "Depictive", "Duration": "Duration", "Manner": "Manner", "Means": "Means", "Medium": "Medium", "Amount_of_discussion": "Amount_of_discussion", "Purpose": "Purpose", "Place": "Place", "Time": "Time"}], "Questioning": ["Questioning", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Medium": "Medium", "Manner": "Manner", "Internal_cause": "Internal_cause", "Time": "Time", "Iterations": "Iterations"}], "Quitting": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Quitting_a_place": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time", "Explanation": "Explanation"}], "Race_descriptor": ["Race_descriptor", {"Person": "Person"}], "Range": ["Range", {"Event": "Event", "Participant": "Participant", "Instrument": "Instrument", "Distance": "Distance", "Circumstances": "Circumstances"}], "Rank": ["Rank", {"Rank": "Rank", "Item": "Item"}], "Ranked_expectation": ["Ranked_expectation", {"Entity": "Entity"}], "Rape": ["Transitive_action", {"Perpetrator": "Agent", "Victim": "Patient", "Event": "Event", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Rashness": ["Rashness", {"Protagonist": "Protagonist", "Action": "Action", "Time": "Time", "Degree": "Degree", "Judge": "Judge"}], "Rate_description": ["Rate_description", {"Event": "Event", "Rate": "Rate", "Degree": "Degree", "Agent": "Agent"}], "Rate_quantification": ["Rate_quantification", {"Event": "Event", "Rate": "Rate", "Descriptor": "Descriptor", "Entity": "Entity", "Type": "Type", "Degree": "Degree"}], "Ratification": ["Ratification", {"Ratifier": "Ratifier", "Proposal": "Proposal", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Explanation": "Explanation", "Manner": "Manner", "Means": "Means"}], "Reading_activity": ["Reading_activity", {"Reader": "Reader", "Text": "Text", "Degree": "Degree", "Sought_phenomenon": "Sought_phenomenon", "Manner": "Manner", "Means": "Means", "Purpose": "Purpose", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances", "Textual_location": "Textual_location", "Topic": "Topic", "Frequency": "Frequency"}], "Reading_aloud": ["Reading_aloud", {"Addressee": "Addressee", "Speaker": "Speaker", "Text": "Text", "Manner": "Manner", "Source": "Source", "Time": "Time", "Purpose": "Purpose", "Place": "Place", "Means": "Means"}], "Reading_perception": ["Reading_perception", {"Reader": "Reader", "Text": "Text", "Degree": "Degree", "Sought_phenomenon": "Sought_phenomenon", "Manner": "Manner", "Means": "Means", "Purpose": "Purpose", "Time": "Time", "Place": "Place", "Circumstances": "Circumstances", "Context": "Context"}], "Reason": ["Reason", {"Agent": "Agent", "Action": "Action", "State_of_affairs": "State_of_affairs"}], "Reasoning": ["Reasoning", {"Content": "Content", "Medium": "Medium", "Arguer": "Arguer", "Addressee": "Addressee", "Support": "Support", "Manner": "Manner", "Means": "Means", "Depictive": "Depictive", "Result": "Result", "Degree": "Degree", "Time": "Time", "Place": "Place", "Duration": "Duration", "Group": "Group"}], "Reassuring": ["Transitive_action", {"Speaker": "Agent", "Experiencer": "Patient", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Rebellion": ["Rebellion", {"Rebel": "Rebel", "Current_leadership": "Current_leadership", "Current_order": "Current_order", "Place": "Place", "Time": "Time", "Means": "Means", "Degree": "Degree", "Manner": "Manner", "New_order": "New_order", "Result": "Result", "Duration": "Duration"}], "Receive_visitor_scenario": ["Receive_visitor_scenario", {"Host": "Host", "Visitor": "Visitor", "Purpose": "Purpose"}], "Receiving": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Receiving_scenario": ["Receiving_scenario", {"Recipient": "Recipient", "Donor": "Donor", "Theme": "Theme", "Purpose": "Purpose", "Means": "Means", "Mode_of_transfer": "Mode_of_transfer"}], "Reciprocality": ["Reciprocality", {"Protagonist_1": "Protagonist_1", "Protagonist_2": "Protagonist_2", "Protagonists": "Protagonists"}], "Recording": ["Recording", {"Agent": "Agent", "Phenomenon": "Phenomenon", "Manner": "Manner", "Means": "Means", "Time": "Time", "Purpose": "Purpose", "Instrument": "Instrument", "Attribute": "Attribute", "Value": "Value", "Entity": "Entity", "Medium": "Medium", "Language": "Language", "Place": "Place", "Degree": "Degree", "Frequency": "Frequency", "Duration": "Duration", "Period_of_iterations": "Period_of_iterations"}], "Records": ["Records", {"Record": "Record", "Data": "Data", "Recorder": "Recorder", "Entity": "Entity", "Type": "Type", "Descriptor": "Descriptor", "Material": "Material", "Medium": "Medium", "Place": "Place", "Time_of_creation": "Time_of_creation", "Title": "Title", "Topic": "Topic", "Use": "Use"}], "Recovery": ["Recovery", {"Patient": "Patient", "Affliction": "Affliction", "Body_part": "Body_part", "Manner": "Manner", "Degree": "Degree", "Means": "Means", "Company": "Company", "Time": "Time", "Place": "Place"}], "Redirecting": ["Redirecting", {"Theme": "Theme", "Original_path": "Original_path", "Path": "Path", "Goal": "Goal", "Time": "Time", "Manner": "Manner", "Depictive": "Depictive", "Place": "Place", "Direction": "Direction", "Purpose": "Purpose", "Agent": "Agent", "Cause": "Cause", "Means": "Means"}], "Reference_text": ["Reference_text", {"Source_of_information": "Source_of_information", "Information": "Information"}], "Referring_by_name": ["Referring_by_name", {"Speaker": "Speaker", "Entity": "Entity", "Name": "Name", "Time": "Time", "Descriptor": "Descriptor"}], "Reforming_a_system": ["Reforming_a_system", {"Agent": "Agent", "Time": "Time", "Degree": "Degree", "Manner": "Manner", "Explanation": "Explanation", "Entity": "Entity", "Purpose": "Purpose", "Initial_category": "Initial_category", "Final_category": "Final_category", "Means": "Means", "Re-encoding": "Re-encoding", "Event_description": "Event_description", "Circumstances": "Circumstances", "Duration": "Duration", "Cause": "Cause", "Place": "Place"}], "Regard": ["Regard", {"Cognizer": "Cognizer", "Evaluee": "Evaluee", "Explanation": "Explanation", "Role": "Role", "Depictive": "Depictive", "Manner": "Manner", "Extent_of_acclaim": "Extent_of_acclaim", "Judgment": "Judgment"}], "Region_with_portal": ["Region_with_portal", {"Interior": "Interior", "Ground": "Ground", "Surface": "Surface", "Boundary": "Boundary", "Exterior": "Exterior"}], "Rejuvenation": ["Transitive_action", {"Entity": "Patient", "Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner", "Cause": "Cause"}], "Relating_concepts": ["Relating_concepts", {"Concept_1": "Concept_1", "Concept_2": "Concept_2", "Point_of_view": "Point_of_view", "Evidence": "Evidence", "Circumstances": "Circumstances", "Concepts": "Concepts", "Degree": "Degree", "Specification": "Specification"}], "Relation": ["Relation", {"Entity_1": "Entity_1", "Entity_2": "Entity_2", "Entities": "Entities", "Relation_type": "Relation_type"}], "Relation_between_individuals": ["Relation_between_individuals", {"Individual_1": "Individual_1", "Individual_2": "Individual_2", "Relation": "Relation", "Individuals": "Individuals"}], "Relational_location": ["Relational_location", {"Profiled_region": "Profiled_region", "Constituent_parts": "Constituent_parts", "Relative_location": "Relative_location", "Formational_cause": "Formational_cause", "Container_possessor": "Container_possessor", "Descriptor": "Descriptor", "Related_event": "Related_event", "Inherent_purpose": "Inherent_purpose", "Ground": "Ground"}], "Relational_natural_features": ["Relational_natural_features", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Formational_cause": "Formational_cause", "Focal_feature": "Focal_feature", "Name": "Name", "Relative_location": "Relative_location", "Type": "Type", "Descriptor": "Descriptor", "Landmark_feature": "Landmark_feature"}], "Relational_political_locales": ["Relational_political_locales", {"Constituent_parts": "Constituent_parts", "Container_possessor": "Container_possessor", "Locale": "Locale", "Name": "Name", "Relative_location": "Relative_location", "Descriptor": "Descriptor", "Population": "Population"}], "Relational_quantity": ["Relational_quantity", {"Rate": "Rate", "Numerator": "Numerator", "Focal_entity": "Focal_entity", "Descriptor": "Descriptor", "Type": "Type", "Denominator": "Denominator"}], "Relative_time": ["Relative_time", {"Focal_occasion": "Focal_occasion", "Landmark_occasion": "Landmark_occasion", "Interval": "Interval", "Degree": "Degree", "Manner": "Manner", "Explanation": "Explanation", "Focal_participant": "Focal_participant"}], "Releasing": ["Transitive_action", {"Captor": "Agent", "Theme": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Releasing_from_custody": ["Transitive_action", {"Authorities": "Agent", "Suspect": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Reliance": ["Reliance", {"Protagonist": "Protagonist", "Benefit": "Benefit", "Degree": "Degree", "Intermediary": "Intermediary", "Instrument": "Instrument", "Purpose": "Purpose", "Means": "Means", "Circumstances": "Circumstances"}], "Reliance_on_expectation": ["Reliance_on_expectation", {"Cognizer": "Cognizer", "Expectation": "Expectation", "Circumstances": "Circumstances"}], "Religious_belief": ["Religious_belief", {"Believer": "Believer", "Content": "Content", "Degree": "Degree", "Manner": "Manner", "Role": "Role", "Element": "Element"}], "Remainder": ["Remainder", {"Remainder": "Remainder", "Resource": "Resource", "Location": "Location", "Original_owner": "Original_owner", "Time": "Time", "Beneficiary": "Beneficiary", "Original_context": "Original_context"}], "Remembering_experience": ["Remembering_experience", {"Cognizer": "Cognizer", "Salient_entity": "Salient_entity", "Experience": "Experience", "Impression": "Impression", "State": "State", "Vividness": "Vividness", "Context": "Context", "Time": "Time", "Manner": "Manner", "Duration": "Duration"}], "Remembering_information": ["Remembering_information", {"Cognizer": "Cognizer", "Mental_content": "Mental_content", "Accuracy": "Accuracy", "Time": "Time", "Topic": "Topic", "Context": "Context"}], "Remembering_to_do": ["Remembering_to_do", {"Cognizer": "Cognizer", "Action": "Action", "Time": "Time", "Salient_entity": "Salient_entity", "Frequency": "Frequency"}], "Removing": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Manner": "Manner", "Means": "Means", "Result": "Result", "Cause": "Cause", "Time": "Time", "Place": "Place", "Depictive": "Depictive"}], "Removing_scenario": ["Removing_scenario", {"Agent": "Agent", "Theme": "Theme", "Source": "Source", "Path": "Path", "Goal": "Goal", "Degree": "Degree", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Result": "Result", "Instrument": "Instrument", "Cause": "Cause", "Place": "Place", "Time": "Time", "Containing_event": "Containing_event", "Explanation": "Explanation", "Circumstances": "Circumstances"}], "Render_nonfunctional": ["Transitive_action", {"Agent": "Agent", "Artifact": "Patient", "Means": "Means", "Cause": "Cause", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Renting": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time", "Manner": "Manner"}], "Renting_out": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Renunciation": ["Renunciation", {"Speaker": "Speaker", "Addressee": "Addressee", "Content": "Content", "Manner": "Manner", "Means": "Means", "Internal_cause": "Internal_cause", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Containing_event": "Containing_event"}], "Reparation": ["Transitive_action", {"Injured_party": "Patient", "Wrongdoer": "Agent", "Benefiting_action": "Event", "Manner": "Manner", "Place": "Place", "Time": "Time", "Means": "Means"}], "Repayment": ["Repayment", {"Loaner": "Loaner", "Debtor": "Debtor", "Money": "Money", "Loan": "Loan", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Manner": "Manner", "Place": "Place", "Means": "Means"}], "Repel": ["Repel", {"Enemy": "Enemy", "Defender": "Defender", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Instrument": "Instrument", "Invasion_act": "Invasion_act", "Result": "Result"}], "Replacing": ["Transitive_action", {"Means": "Means", "Agent": "Agent", "Place": "Place", "Time": "Time", "New": "Patient", "Manner": "Manner"}], "Reporting": ["Reporting", {"Informer": "Informer", "Wrongdoer": "Wrongdoer", "Authorities": "Authorities", "Behavior": "Behavior", "Time": "Time", "Place": "Place", "Purpose": "Purpose"}], "Representative": ["Representative", {"Origin": "Origin", "Representative": "Representative", "Persistent_characteristic": "Persistent_characteristic", "Descriptor": "Descriptor", "Age": "Age", "Ethnicity": "Ethnicity", "Context_of_acquaintance": "Context_of_acquaintance", "Rank": "Rank", "Place_of_employment": "Place_of_employment", "Represented": "Represented", "Type": "Type", "Compensation": "Compensation", "Contract_basis": "Contract_basis"}], "Representing": ["Representing", {"Phenomenon": "Phenomenon", "Degree": "Degree", "Time": "Time", "Means": "Means", "Entity": "Entity", "Cognizer": "Cognizer", "Frequency": "Frequency", "Explanation": "Explanation", "Place": "Place"}], "Request": ["Request", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Medium": "Medium", "Manner": "Manner", "Means": "Means", "Time": "Time", "Beneficiary": "Beneficiary", "Containing_event": "Containing_event", "Iterations": "Iterations", "Depictive": "Depictive"}], "Request_entity": ["Request_entity", {"Customer": "Customer", "Entity": "Entity", "Medium": "Medium", "Supplier": "Supplier", "Time": "Time", "Beneficiary": "Beneficiary", "Manner": "Manner", "Means": "Means"}], "Required_event": ["Required_event", {"Required_situation": "Required_situation", "Negative_consequences": "Negative_consequences", "Circumstances": "Circumstances", "Purpose": "Purpose", "Time": "Time", "Place": "Place", "Explanation": "Explanation", "Degree": "Degree"}], "Requirement_scenario": ["Requirement_scenario", {"Dependent": "Dependent", "Requirement": "Requirement", "Degree": "Degree", "Explanation": "Explanation", "Time": "Time", "Condition": "Condition", "Domain": "Domain", "Place": "Place", "Dependent_individual": "Dependent_individual", "Required_entity": "Required_entity", "Required_individual": "Required_individual"}], "Rescuing": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Time": "Time", "Manner": "Manner", "Place": "Place", "Means": "Means"}], "Research": ["Research", {"Researcher": "Researcher", "Field": "Field", "Question": "Question", "Topic": "Topic", "Time": "Time", "Means": "Means", "Population": "Population", "Manner": "Manner", "Purpose": "Purpose", "Duration_of_state": "Duration_of_state", "Place": "Place", "Type": "Type"}], "Reserving": ["Reserving", {"Client": "Client", "Services": "Services", "Organization": "Organization", "Scheduled_time": "Scheduled_time", "Booker": "Booker", "Manner": "Manner", "Place": "Place", "Purpose": "Purpose", "Means": "Means", "Time": "Time", "Payment": "Payment"}], "Reshaping": ["Transitive_action", {"Deformer": "Agent", "Manner": "Manner", "Means": "Means", "Patient": "Patient", "Place": "Place", "Time": "Time", "Cause": "Cause"}], "Residence": ["Residence", {"Resident": "Resident", "Location": "Location", "Co_resident": "Co_resident", "Frequency": "Frequency", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Time": "Time", "Circumstances": "Circumstances"}], "Resolve_problem": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner", "Frequency": "Frequency"}], "Respond_to_proposal": ["Respond_to_proposal", {"Speaker": "Speaker", "Interlocutor": "Interlocutor", "Medium": "Medium", "Proposal": "Proposal", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Internal_cause": "Internal_cause", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Particular_iteration": "Particular_iteration", "Role": "Role", "Group": "Group", "Iterations": "Iterations", "Explanation": "Explanation"}], "Response": ["Event", {"Trigger": "Event", "Time": "Time", "Manner": "Manner", "Place": "Place"}], "Response_scenario": ["Response_scenario", {"Responding_entity": "Responding_entity", "Trigger": "Trigger", "Response": "Response", "Agent": "Agent", "Manner": "Manner", "Place": "Place", "Purpose": "Purpose", "Time": "Time"}], "Responsibility": ["Responsibility", {"Act": "Act", "Agent": "Agent", "Place": "Place", "Time": "Time", "Domain": "Domain", "Frequency": "Frequency", "Period_of_iterations": "Period_of_iterations", "Result": "Result", "Particular_iteration": "Particular_iteration", "Explanation": "Explanation", "Event_description": "Event_description", "Degree": "Degree"}], "Rest": ["Rest", {"Part": "Part", "Rest": "Rest", "Whole": "Whole"}], "Result_of_attempt_scenario": ["Result_of_attempt_scenario", {"Agent": "Agent", "Goal": "Goal", "Action": "Action", "Time": "Time", "Depictive": "Depictive", "Place": "Place", "Role": "Role", "Circumstances": "Circumstances", "Explanation": "Explanation", "Containing_event": "Containing_event", "Degree": "Degree"}], "Resurrection": ["Resurrection", {"Protagonist": "Protagonist", "Time": "Time", "Explanation": "Explanation", "Prior_state": "Prior_state", "Result": "Result", "Depictive": "Depictive", "Place": "Place"}], "Retaining": ["Retaining", {"Agent": "Agent", "Theme": "Theme", "Duration": "Duration", "Place": "Place", "Manner": "Manner", "Time": "Time", "Means": "Means"}], "Reveal_secret": ["Reveal_secret", {"Speaker": "Speaker", "Addressee": "Addressee", "Information": "Information", "Topic": "Topic", "Manner": "Manner", "Completeness": "Completeness", "Means": "Means", "Internal_cause": "Internal_cause", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Re-encoding": "Re-encoding", "Location_of_protagonist": "Location_of_protagonist", "Containing_event": "Containing_event", "Source_material": "Source_material", "Event_description": "Event_description", "Period_of_iterations": "Period_of_iterations", "Frequency": "Frequency", "Descriptor": "Descriptor"}], "Revenge": ["Transitive_action", {"Avenger": "Agent", "Offender": "Patient", "Manner": "Manner", "Punishment": "Means", "Place": "Place", "Time": "Time"}], "Revolution": ["Revolution", {"Agent": "Agent", "Current_leadership": "Current_leadership", "Current_order": "Current_order", "Place": "Place", "Time": "Time", "Means": "Means", "Degree": "Degree", "Manner": "Manner"}], "Rewards_and_punishments": ["Transitive_action", {"Evaluee": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Agent": "Agent", "Response_action": "Event"}], "Ride_vehicle": ["Ride_vehicle", {"Theme": "Theme", "Vehicle": "Vehicle", "Source": "Source", "Manner": "Manner", "Path": "Path", "Goal": "Goal", "Distance": "Distance", "Duration": "Duration", "Speed": "Speed", "Area": "Area", "Road": "Road", "Route": "Route", "Depictive": "Depictive", "Time": "Time", "Cotheme": "Cotheme", "Purpose": "Purpose"}], "Rising_to_a_challenge": ["Rising_to_a_challenge", {"Protagonist": "Protagonist", "Activity": "Activity", "Degree": "Degree", "Circumstances": "Circumstances", "Explanation": "Explanation", "Relevant_feature": "Relevant_feature", "Means": "Means", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Risk_scenario": ["Risk_scenario", {"Asset": "Asset", "Harmful_event": "Harmful_event", "Situation": "Situation", "Degree": "Degree", "Time": "Time", "Place": "Place"}], "Risky_situation": ["Risky_situation", {"Situation": "Situation", "Asset": "Asset", "Degree": "Degree", "Place": "Place", "Time": "Time", "Domain": "Domain", "Dangerous_entity": "Dangerous_entity", "Frequency": "Frequency", "Circumstances": "Circumstances"}], "Rite": ["Rite", {"Leader": "Leader", "Member": "Member", "Organization": "Organization", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Instrument": "Instrument", "Desired_state_of_affairs": "Desired_state_of_affairs", "Type": "Type", "Object": "Object", "New_status": "New_status", "Guardian": "Guardian"}], "Roadways": ["Roadways", {"Roadway": "Roadway", "Source": "Source", "Goal": "Goal", "Endpoints": "Endpoints", "Characteristic": "Characteristic", "Name": "Name", "Path": "Path", "Use": "Use", "Direction": "Direction", "Relative_location": "Relative_location", "Material": "Material", "Frequency_of_use": "Frequency_of_use", "Abundant_entities": "Abundant_entities", "Length": "Length", "Part": "Part"}], "Robbery": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Rope_manipulation": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Rope": "Patient", "Manner": "Manner"}], "Rotting": ["Event", {"Place": "Place", "Time": "Time", "Explanation": "Explanation", "Duration": "Duration", "Frequency": "Frequency", "Manner": "Manner"}], "Run_risk": ["Run_risk", {"Protagonist": "Protagonist", "Place": "Place", "Severity": "Severity", "Time": "Time", "Bad_outcome": "Bad_outcome", "Asset": "Asset", "Action": "Action", "Frequency": "Frequency", "Purpose": "Purpose", "Explanation": "Explanation", "Iterations": "Iterations", "Circumstances": "Circumstances", "Beneficiary": "Beneficiary"}], "Sacrificing_for": ["Sacrificing_for", {"Agent": "Agent", "Asset": "Asset", "Depictive": "Depictive", "Manner": "Manner", "Duration": "Duration", "Time": "Time", "Explanation": "Explanation", "Benefit": "Benefit"}], "Satisfying": ["Satisfying", {"Agent": "Agent", "Entity": "Entity", "Event": "Event", "Standard": "Standard", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Scarcity": ["Scarcity", {"Collection": "Collection", "Quantity": "Quantity", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Measure": "Measure", "Place": "Place"}], "Scheduling": ["Scheduling", {"Agent": "Agent", "Event": "Event", "Scheduled_time": "Scheduled_time", "Place": "Place", "Beneficiary": "Beneficiary", "Frequency": "Frequency", "Means": "Means", "Purpose": "Purpose", "Explanation": "Explanation", "Manner": "Manner", "Time": "Time"}], "Scope": ["Scope", {"Event": "Event", "Attribute": "Attribute", "Salient_entity": "Salient_entity"}], "Scouring": ["Scouring", {"Searcher": "Searcher", "Ground": "Ground", "Sought_entity": "Sought_entity", "Manner": "Manner", "Duration": "Duration", "Degree": "Degree", "Instrument": "Instrument", "Means": "Means", "Purpose": "Purpose", "Time": "Time"}], "Scrutinizing_for": ["Scrutinizing_for", {"Cognizer": "Cognizer", "Ground": "Ground", "Phenomenon": "Phenomenon", "Manner": "Manner", "Means": "Means", "Degree": "Degree", "Purpose": "Purpose", "Instrument": "Instrument"}], "Scrutiny": ["Scrutiny", {"Cognizer": "Cognizer", "Ground": "Ground", "Phenomenon": "Phenomenon", "Manner": "Manner", "Means": "Means", "Degree": "Degree", "Direction": "Direction", "Purpose": "Purpose", "Medium": "Medium", "Instrument": "Instrument", "Time": "Time"}], "Searching_scenario": ["Searching_scenario", {"Cognizer": "Cognizer", "Ground": "Ground", "Phenomenon": "Phenomenon", "Manner": "Manner", "Means": "Means", "Degree": "Degree", "Purpose": "Purpose", "Instrument": "Instrument"}], "Secrecy_status": ["Secrecy_status", {"Phenomenon": "Phenomenon", "Degree": "Degree", "Time": "Time", "Cognizer": "Cognizer", "Communicative_force": "Communicative_force"}], "See_through": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Seeking": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Seeking_to_achieve": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Self_control": ["Self_control", {"Agent": "Agent", "Event": "Event", "Degree": "Degree", "Place": "Place", "Time": "Time"}], "Self_motion": ["Event", {"Manner": "Manner", "Area": "Place", "Time": "Time", "Place": "Place"}], "Sending": ["Sending", {"Sender": "Sender", "Path": "Path", "Goal": "Goal", "Source": "Source", "Theme": "Theme", "Transport_means": "Transport_means", "Degree": "Degree", "Depictive": "Depictive", "Distance": "Distance", "Manner": "Manner", "Recipient": "Recipient", "Purpose": "Purpose", "Explanation": "Explanation", "Time": "Time", "Cotheme": "Cotheme", "Container": "Container", "Place": "Place"}], "Sensation": ["Sensation", {"Perceiver_passive": "Perceiver_passive", "Source": "Source", "Percept": "Percept", "Body_part": "Body_part", "Descriptor": "Descriptor", "Ground": "Ground", "Time": "Time", "Degree": "Degree"}], "Sent_items": ["Sent_items", {"Sender": "Sender", "Goal": "Goal", "Source": "Source", "Sent_item": "Sent_item", "Transport_means": "Transport_means", "Recipient": "Recipient", "Time": "Time", "Place": "Place", "Descriptor": "Descriptor"}], "Sentencing": ["Sentencing", {"Convict": "Convict", "Court": "Court", "Sentence": "Sentence", "Type": "Type", "Term_of_sentence": "Term_of_sentence", "Time": "Time", "Offense": "Offense", "Place": "Place", "Depictive": "Depictive"}], "Separating": ["Transitive_action", {"Whole": "Patient", "Agent": "Agent", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place"}], "Sequence": ["Sequence", {"Entity_1": "Entity_1", "Entity_2": "Entity_2", "Entities": "Entities", "Relation_type": "Relation_type", "Descriptor": "Descriptor"}], "Serving_in_capacity": ["Serving_in_capacity", {"Agent": "Agent", "Role": "Role", "Duration": "Duration", "Descriptor": "Descriptor", "Time": "Time", "Place": "Place"}], "Set_of_interrelated_entities": ["Set_of_interrelated_entities", {"Component_entities": "Component_entities", "Complex": "Complex", "Descriptor": "Descriptor", "Possessor": "Possessor"}], "Set_relation": ["Set_relation", {"Superset": "Superset", "Subset": "Subset", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Setting_back_burn": ["Transitive_action", {"Firefighter": "Agent", "Flammables": "Patient", "Time": "Time", "Place": "Place", "Manner": "Manner", "Means": "Means", "Depictive": "Depictive"}], "Setting_fire": ["Transitive_action", {"Kindler": "Agent", "Flammables": "Patient", "Cause": "Cause", "Time": "Time", "Place": "Place", "Manner": "Manner", "Means": "Means", "Depictive": "Depictive"}], "Setting_out": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time", "Explanation": "Explanation"}], "Severity_of_offense": ["Severity_of_offense", {"Offense": "Offense", "Code": "Code"}], "Sex": ["Sex", {"Participants": "Participants", "Participant_1": "Participant_1", "Participant_2": "Participant_2", "Duration": "Duration", "Manner": "Manner", "Place": "Place", "Time": "Time", "Domain": "Domain", "Purpose": "Purpose", "Means": "Means"}], "Sexual_reproduction_scenario": ["Sexual_reproduction_scenario", {"Parents": "Parents", "Father": "Father", "Mother": "Mother", "Offspring": "Offspring"}], "Shaped_part": ["Shaped_part", {"Part": "Part", "Whole": "Whole", "Part_prop": "Part_prop", "Orientation": "Orientation"}], "Shapes": ["Shapes", {"Substance": "Substance", "Shape": "Shape", "Shape_prop": "Shape_prop", "Count": "Count"}], "Sharing": ["Sharing", {"Protagonists": "Protagonists", "Protagonist_1": "Protagonist_1", "Protagonist_2": "Protagonist_2", "Entity": "Entity", "Time": "Time", "Place": "Place"}], "Sharpness": ["Sharpness", {"Entity": "Entity", "Attribute": "Attribute", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Sharpness": "Sharpness"}], "Shoot_projectiles": ["Transitive_action", {"Projectile": "Patient", "Agent": "Cause", "Manner": "Manner", "Means": "Means", "Depictive": "Depictive", "Place": "Place", "Time": "Time"}], "Shooting_scenario": ["Event", {"Place": "Place", "Time": "Time"}], "Shopping": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Short_selling": ["Transitive_action", {"Assets": "Patient", "Intermediary": "Agent", "Time": "Time", "Place": "Place", "Manner": "Manner", "Means": "Means"}], "Sidereal_appearance": ["Sidereal_appearance", {"Depictive": "Depictive", "Goal": "Goal", "Manner": "Manner", "Path": "Path", "Speed": "Speed", "Time": "Time", "Astronomical_entity": "Astronomical_entity", "Source": "Source", "Result": "Result", "Place": "Place", "Degree": "Degree", "Circumstances": "Circumstances", "Correlated_event": "Correlated_event", "Frequency": "Frequency"}], "Sign": ["Sign", {"Indicator": "Indicator", "Indicated": "Indicated", "Reliability": "Reliability", "Descriptor": "Descriptor", "Frequency": "Frequency"}], "Sign_agreement": ["Transitive_action", {"Signatory": "Agent", "Signature": "Patient", "Depictive": "Depictive", "Place": "Place", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Silencing": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Speaker": "Patient", "Manner": "Manner"}], "Similarity": ["Similarity", {"Entities": "Entities", "Entity_1": "Entity_1", "Entity_2": "Entity_2", "Dimension": "Dimension", "Degree": "Degree", "Time": "Time", "Place": "Place", "Manner": "Manner", "Explanation": "Explanation", "Depictive": "Depictive", "Circumstances": "Circumstances", "Differentiating_fact": "Differentiating_fact"}], "Simple_name": ["Simple_name", {"Term": "Term", "Entity": "Entity", "Speaker": "Speaker"}], "Simple_naming": ["Simple_naming", {"Entity": "Entity", "Term": "Term", "Speaker": "Speaker", "Explanation": "Explanation", "Frequency": "Frequency"}], "Simultaneity": ["Simultaneity", {"Profiled_event": "Profiled_event", "Landmark_event": "Landmark_event", "Events": "Events", "Degree": "Degree"}], "Size": ["Size", {"Entity": "Entity", "Degree": "Degree", "Standard": "Standard", "Subregion": "Subregion", "Dimension": "Dimension"}], "Sleep": ["Sleep", {"Sleeper": "Sleeper", "Duration": "Duration", "Time": "Time", "Place": "Place", "Degree": "Degree", "Manner": "Manner"}], "Sleep_wake_cycle": ["Sleep_wake_cycle", {"Duration": "Duration", "Place": "Place", "Sleeper": "Sleeper", "Time": "Time"}], "Smuggling": ["Event", {"Place": "Place", "Time": "Time", "Event": "Event", "Manner": "Manner"}], "Soaking": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Manner": "Manner", "Place": "Place", "Time": "Time", "Means": "Means"}], "Soaking_up": ["Soaking_up", {"Item": "Item", "Substance": "Substance", "Place": "Place", "Time": "Time", "Duration": "Duration", "Manner": "Manner", "Degree": "Degree"}], "Sociability": ["Sociability", {"Protagonist": "Protagonist", "Company": "Company", "Content": "Content", "Manner": "Manner", "Degree": "Degree", "Judge": "Judge"}], "Social_behavior_evaluation": ["Social_behavior_evaluation", {"Behavior": "Behavior", "Individual": "Individual", "Judge": "Judge", "Degree": "Degree"}], "Social_connection": ["Social_connection", {"Individuals": "Individuals", "Individual_1": "Individual_1", "Individual_2": "Individual_2", "Connection": "Connection", "Type": "Type", "Degree": "Degree"}], "Social_desirability": ["Social_desirability", {"Evaluee": "Evaluee", "Degree": "Degree", "Circumstances": "Circumstances", "Comparison_set": "Comparison_set", "Depictive": "Depictive"}], "Social_event": ["Social_event", {"Duration": "Duration", "Social_event": "Social_event", "Place": "Place", "Time": "Time", "Host": "Host", "Beneficiary": "Beneficiary", "Occasion": "Occasion", "Attendee": "Attendee", "Degree": "Degree", "Manner": "Manner", "Refreshment": "Refreshment", "Style": "Style", "Period_of_iterations": "Period_of_iterations", "Descriptor": "Descriptor", "Name": "Name", "Frequency": "Frequency", "Purpose": "Purpose"}], "Social_event_collective": ["Social_event_collective", {"Attendees": "Attendees", "Degree": "Degree", "Duration": "Duration", "Manner": "Manner", "Place": "Place", "Time": "Time", "Particular_iteration": "Particular_iteration"}], "Social_event_individuals": ["Social_event_individuals", {"Party_1": "Party_1", "Party_2": "Party_2", "Degree": "Degree", "Duration": "Duration", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Social_interaction_evaluation": ["Social_interaction_evaluation", {"Evaluee": "Evaluee", "Affected_party": "Affected_party", "Behavior": "Behavior", "Degree": "Degree", "Topic": "Topic", "Expressor": "Expressor", "Manner": "Manner", "Judge": "Judge"}], "Socially_significant_history_scenario": ["Socially_significant_history_scenario", {"Event": "Event", "Place": "Place", "Time": "Time", "Manner": "Manner", "Domain": "Domain"}], "Sole_instance": ["Sole_instance", {"Item": "Item", "Type": "Type"}], "Sound_level": ["Sound_level", {"Entity": "Entity", "Attribute": "Attribute", "Volume": "Volume", "Degree": "Degree", "Circumstances": "Circumstances", "Time": "Time", "Place": "Place", "Explanation": "Explanation"}], "Sound_movement": ["Sound_movement", {"Sound": "Sound", "Location_of_sound_source": "Location_of_sound_source", "Path": "Path", "Place": "Place", "Time": "Time", "Sound_source": "Sound_source", "Manner": "Manner", "Goal": "Goal"}], "Sounds": ["Sounds", {"Noisy_event": "Noisy_event", "Sound_source": "Sound_source", "Theme": "Theme", "Ground": "Ground", "Themes": "Themes", "Location_of_sound_source": "Location_of_sound_source", "Place": "Place", "Internal_cause": "Internal_cause", "Manner": "Manner", "Component_sound": "Component_sound", "Degree": "Degree", "Explanation": "Explanation", "Path": "Path"}], "Source_of_getting": ["Source_of_getting", {"Theme": "Theme", "Source": "Source", "Goal": "Goal", "Descriptor": "Descriptor"}], "Source_path_goal": ["Source_path_goal", {"Trajector": "Trajector", "Source": "Source", "Path": "Path", "Goal": "Goal", "Means": "Means"}], "Spatial_co-location": ["State", {"Figure": "Entity"}], "Spatial_contact": ["State", {"Figure": "Entity"}], "Speak_on_topic": ["Speak_on_topic", {"Audience": "Audience", "Speaker": "Speaker", "Topic": "Topic", "Manner": "Manner", "Medium": "Medium", "Occasion": "Occasion", "Time": "Time", "Place": "Place", "Explanation": "Explanation"}], "Specific_individual": ["Specific_individual", {"Type": "Type", "Instance": "Instance"}], "Speed_description": ["Speed_description", {"Entity": "Entity", "Attribute": "Attribute", "Speed": "Speed", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Explanation": "Explanation"}], "Spelling_and_pronouncing": ["Spelling_and_pronouncing", {"Speaker": "Speaker", "Sign": "Sign", "Judgment": "Judgment", "Formal_realization": "Formal_realization", "Part_of_form": "Part_of_form", "Manner": "Manner", "Time": "Time", "Textual_location": "Textual_location", "Addressee": "Addressee", "Explanation": "Explanation", "Frequency": "Frequency", "Depictive": "Depictive", "Particular_iteration": "Particular_iteration", "Purpose": "Purpose"}], "Sports_jargon": ["Sports_jargon", {"Competition": "Competition", "Agent": "Agent"}], "Stage_of_progress": ["Stage_of_progress", {"Entity": "Entity", "Time": "Time", "Manner": "Manner", "Degree": "Degree", "Domain": "Domain"}], "Standing_by": ["Standing_by", {"Protagonist": "Protagonist", "Salient_entity": "Salient_entity", "Time": "Time", "Place": "Place", "Duration": "Duration", "Manner": "Manner", "Expected_request": "Expected_request", "End_point": "End_point", "Explanation": "Explanation", "Depictive": "Depictive", "Purpose": "Purpose", "Co-participant": "Co-participant", "Activity": "Activity"}], "State": ["State", {"Entity": "Entity", "State": "State"}], "State_continue": ["State_continue", {"Entity": "Entity", "State": "State", "Time": "Time", "Place": "Place", "Explanation": "Explanation", "Duration": "Duration", "Circumstances": "Circumstances", "Depictive": "Depictive"}], "State_of_entity": ["State", {"Entity": "Entity", "State": "State"}], "Statement": ["Statement", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Manner": "Manner", "Means": "Means", "Internal_cause": "Internal_cause", "Medium": "Medium", "Depictive": "Depictive", "Time": "Time", "Place": "Place", "Occasion": "Occasion", "Particular_iteration": "Particular_iteration", "Communicative_force": "Communicative_force", "Degree": "Degree", "Group": "Group", "Event_description": "Event_description", "Frequency": "Frequency", "Iterations": "Iterations", "Containing_event": "Containing_event"}], "Stimulus_focus": ["Stimulus_focus", {"Stimulus": "Stimulus", "Experiencer": "Experiencer", "Degree": "Degree", "Circumstances": "Circumstances", "Parameter": "Parameter", "Comparison_set": "Comparison_set", "Property": "Property"}], "Stinginess": ["Stinginess", {"Resource_controller": "Resource_controller", "Resource": "Resource", "Recipient": "Recipient", "Degree": "Degree", "Behavior": "Behavior", "Judge": "Judge", "Expressor": "Expressor", "Manner": "Manner"}], "Store": ["Store", {"Supply": "Supply", "Resource": "Resource", "Use": "Use", "Possessor": "Possessor", "Descriptor": "Descriptor"}], "Storing": ["Storing", {"Agent": "Agent", "Theme": "Theme", "Location": "Location", "Manner": "Manner", "Depictive": "Depictive", "Duration": "Duration", "Place": "Place", "Explanation": "Explanation", "Time": "Time", "Area": "Area", "Co-participant": "Co-participant", "Purpose": "Purpose", "Frequency": "Frequency"}], "Strictness": ["Strictness", {"Agent": "Agent", "Controlled_entity": "Controlled_entity", "Controlling_act": "Controlling_act", "Issue": "Issue", "Medium": "Medium", "Degree": "Degree", "Area": "Area", "Judge": "Judge", "Expressor": "Expressor", "Manner": "Manner"}], "Studying": ["Studying", {"Teacher": "Teacher", "Student": "Student", "Institution": "Institution", "Subject": "Subject", "Level": "Level", "Depictive": "Depictive", "Manner": "Manner", "Time": "Time", "Place": "Place", "Duration": "Duration", "Explanation": "Explanation", "Co-participant": "Co-participant", "Intended_academic_credit": "Intended_academic_credit"}], "Suasion": ["Event", {"Text": "Event", "Manner": "Manner", "Time": "Time"}], "Subjective_influence": ["Subjective_influence", {"Cognizer": "Cognizer", "Situation": "Situation", "Entity": "Entity", "Action": "Action", "Behavior": "Behavior", "Product": "Product", "Time": "Time", "Event_description": "Event_description", "Agent": "Agent", "Place": "Place", "Domain": "Domain", "Descriptor": "Descriptor"}], "Subjective_temperature": ["Subjective_temperature", {"Experiencer": "Experiencer", "Degree": "Degree", "Body_part": "Body_part"}], "Submitting_documents": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Subordinates_and_superiors": ["Subordinates_and_superiors", {"Superior": "Superior", "Subordinate": "Subordinate"}], "Subsisting": ["State", {}], "Substance": ["Substance", {"Constituents": "Constituents", "Substance": "Substance", "Type": "Type", "Origin": "Origin", "Descriptor": "Descriptor", "Inherent_purpose": "Inherent_purpose"}], "Substance_by_phase": ["Substance_by_phase", {"Substance": "Substance", "Subregion": "Subregion"}], "Subversion": ["Subversion", {"Cause": "Cause", "Counter_actor": "Counter_actor", "Agent": "Agent", "Activity": "Activity", "State_of_affairs": "State_of_affairs", "Degree": "Degree", "Purpose": "Purpose", "Place": "Place", "Time": "Time", "Manner": "Manner", "Frequency": "Frequency", "Iterations": "Iterations", "Means": "Means"}], "Success_or_failure": ["Success_or_failure", {"Agent": "Agent", "Goal": "Goal", "Means": "Means", "Degree": "Degree", "Time": "Time", "Depictive": "Depictive", "Place": "Place", "Role": "Role", "Circumstances": "Circumstances", "Explanation": "Explanation", "Containing_event": "Containing_event", "Re-encoding": "Re-encoding"}], "Successful_action": ["Successful_action", {"Means": "Means", "Goal": "Goal", "Instrument": "Instrument", "Place": "Place", "Time": "Time", "Circumstances": "Circumstances", "Protagonist": "Protagonist", "Degree": "Degree", "Role": "Role", "Explanation": "Explanation", "Containing_event": "Containing_event"}], "Successfully_communicate_message": ["Successfully_communicate_message", {"Communicator": "Communicator", "Addressee": "Addressee", "Message": "Message", "Medium": "Medium", "Depictive": "Depictive", "Manner": "Manner", "Means": "Means", "Time": "Time", "Adequacy": "Adequacy"}], "Sufficiency": ["Sufficiency", {"Item": "Item", "Scale": "Scale", "Enabled_situation": "Enabled_situation", "Degree": "Degree", "Circumstances": "Circumstances"}], "Suicide_attack": ["Transitive_action", {"Victim": "Patient", "Assailant": "Agent", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time"}], "Suitability": ["Suitability", {"Evaluee": "Evaluee", "Degree": "Degree", "Purpose": "Purpose", "User": "User"}], "Summarizing": ["Transitive_action", {"Communicator": "Agent", "Addressee": "Patient", "Time": "Time", "Manner": "Manner", "Means": "Means"}], "Supply": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Supporting": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time"}], "Surpassing": ["Surpassing", {"Standard_item": "Standard_item", "Profiled_item": "Profiled_item", "Attribute": "Attribute", "Extent": "Extent", "Time": "Time", "Standard_attribute": "Standard_attribute", "Profiled_attribute": "Profiled_attribute", "Comparison_set": "Comparison_set", "Iterations": "Iterations", "Circumstances": "Circumstances"}], "Surrendering": ["Surrendering", {"Fugitive": "Fugitive", "Authorities": "Authorities", "Place": "Place", "Time": "Time", "Charges": "Charges", "Manner": "Manner", "Explanation": "Explanation"}], "Surrendering_possession": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Surrounding": ["Surrounding", {"Figure": "Figure", "Ground": "Ground", "Time": "Time", "Direction": "Direction", "Distance": "Distance", "Profiled_region": "Profiled_region", "Directness": "Directness", "Accessibility": "Accessibility"}], "Surviving": ["Surviving", {"Survivor": "Survivor", "Dangerous_situation": "Dangerous_situation", "Place": "Place", "Time": "Time", "Means": "Means", "Degree": "Degree", "Depictive": "Depictive"}], "Suspicion": ["Suspicion", {"Authority": "Authority", "Suspect": "Suspect", "Incident": "Incident", "Time": "Time"}], "Symmetrical_collective_reciprocality": ["Symmetrical_collective_reciprocality", {"Protagonists": "Protagonists"}], "System": ["System", {"Component_entities": "Component_entities", "Complex": "Complex", "Function": "Function", "Descriptor": "Descriptor", "Possessor": "Possessor", "Salient_entity": "Salient_entity"}], "System_complexity": ["System_complexity", {"System": "System", "Degree": "Degree", "Dimension": "Dimension"}], "Take_place_of": ["Take_place_of", {"New": "New", "Role": "Role", "Function": "Function", "Old": "Old", "Time": "Time", "Degree": "Degree", "Manner": "Manner", "Textual_location": "Textual_location", "Explanation": "Explanation"}], "Taking": ["Transitive_action", {"Agent": "Agent", "Theme": "Patient", "Place": "Place", "Time": "Time", "Manner": "Manner", "Means": "Means"}], "Taking_captive": ["Taking_captive", {"Captive": "Captive", "Agent": "Agent", "Instrument": "Instrument", "Reciprocation": "Reciprocation", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Means": "Means", "Manner": "Manner", "Explanation": "Explanation", "Cause": "Cause", "Depictive": "Depictive", "Containing_event": "Containing_event"}], "Taking_sides": ["Taking_sides", {"Cognizer": "Cognizer", "Issue": "Issue", "Side": "Side", "Degree": "Degree", "Time": "Time", "Explanation": "Explanation", "Action": "Action", "Descriptor": "Descriptor", "Particular_iteration": "Particular_iteration", "Manner": "Manner", "Concessive": "Concessive", "Place": "Place"}], "Taking_time": ["Taking_time", {"Activity": "Activity", "Attribute": "Attribute", "Time_length": "Time_length", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Agent": "Agent", "Duration": "Duration"}], "Talking_into": ["Transitive_action", {"Speaker": "Agent", "Addressee": "Patient", "Means": "Means"}], "Tasting": ["Tasting", {"Agent": "Agent", "Food": "Food", "Means": "Means", "Instrument": "Instrument", "Purpose": "Purpose", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Team": ["Team", {"Members": "Members", "Team": "Team", "Aggregate_property": "Aggregate_property", "Name": "Name", "Container_possessor": "Container_possessor", "Domain": "Domain", "Activity": "Activity", "Parent_organization": "Parent_organization"}], "Telling": ["Telling", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Manner": "Manner", "Means": "Means", "Medium": "Medium", "Time": "Time", "Place": "Place", "Communicative_force": "Communicative_force", "Descriptor": "Descriptor", "Iterations": "Iterations"}], "Temperature": ["Temperature", {"Entity": "Entity", "Attribute": "Attribute", "Temperature": "Temperature", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Subregion": "Subregion"}], "Temporal_collocation": ["Temporal_collocation", {"Trajector_entity": "Trajector_entity", "Landmark_event": "Landmark_event", "Event_description": "Event_description", "Trajector_period": "Trajector_period", "Landmark_period": "Landmark_period", "Trajector_event": "Trajector_event", "Landmark_entity": "Landmark_entity"}], "Temporal_pattern": ["Temporal_pattern", {"Process": "Process", "Subevent": "Subevent", "Descriptor": "Descriptor", "Pattern": "Pattern", "Type": "Type"}], "Temporal_subregion": ["Temporal_subregion", {"Subpart": "Subpart", "Subpart_property": "Subpart_property", "Time_period": "Time_period", "Time": "Time", "Degree": "Degree"}], "Temporary_group": ["Temporary_group", {"Temporary_group": "Temporary_group", "Members": "Members", "Purpose": "Purpose", "Period_of_existence": "Period_of_existence", "Name": "Name", "Container_possessor": "Container_possessor", "Place": "Place", "Descriptor": "Descriptor", "Parent_organization": "Parent_organization"}], "Temporary_leave": ["State", {"Person": "Entity"}], "Temporary_stay": ["Event", {"Location": "Place", "Time": "Time", "Manner": "Manner"}], "Temporary_transfer_scenario": ["Temporary_transfer_scenario", {"Theme": "Theme", "Lender": "Lender", "Borrower": "Borrower", "Duration": "Duration"}], "Terms_of_agreement": ["Terms_of_agreement", {"Agreement": "Agreement", "Regulated_entity": "Regulated_entity", "Requirements": "Requirements", "Desired_state_of_affairs": "Desired_state_of_affairs", "Party": "Party", "Descriptor": "Descriptor"}], "Terrorism": ["Terrorism", {"Terrorist": "Terrorist", "Act": "Act", "Victim": "Victim", "Organization": "Organization", "Descriptor": "Descriptor", "Manner": "Manner", "Means": "Means", "Time": "Time", "Place": "Place", "Purpose": "Purpose", "Instrument": "Instrument"}], "Text": ["Text", {"Author": "Author", "Text": "Text", "Beneficiary": "Beneficiary", "Time_of_creation": "Time_of_creation", "Material": "Material", "Containing_text": "Containing_text", "Genre": "Genre", "Use": "Use", "Subpart": "Subpart", "Topic": "Topic", "Title": "Title", "Medium": "Medium", "Place": "Place", "Descriptor": "Descriptor"}], "Text_creation": ["Transitive_action", {"Author": "Agent", "Text": "Patient", "Depictive": "Depictive", "Place": "Place", "Manner": "Manner", "Means": "Means", "Time": "Time"}], "Theft": ["Transitive_action", {"Perpetrator": "Agent", "Goods": "Patient", "Manner": "Manner", "Means": "Means", "Place": "Place"}], "Thermodynamic_phase": ["Thermodynamic_phase", {"Matter": "Matter", "Phase": "Phase"}], "Thriving": ["State", {"Entity": "Entity"}], "Thwarting": ["Thwarting", {"Preventing_cause": "Preventing_cause", "Protagonist": "Protagonist", "Action": "Action", "Time": "Time", "Place": "Place", "Manner": "Manner", "Degree": "Degree", "Explanation": "Explanation", "Frequency": "Frequency"}], "Time_period_of_action": ["Time_period_of_action", {"Enabled_action": "Enabled_action", "Duration": "Duration", "Agent": "Agent", "Whole": "Whole"}], "Time_vector": ["Time_vector", {"Landmark_event": "Landmark_event", "Distance": "Distance", "Direction": "Direction", "Event": "Event"}], "Timespan": ["Timespan", {"Duration": "Duration", "State": "State", "Whole": "Whole", "Descriptor": "Descriptor"}], "Timetable": ["Timetable", {"Timetable": "Timetable", "Events": "Events", "Cognizer": "Cognizer", "Period_of_iterations": "Period_of_iterations", "Time_of_implementation": "Time_of_implementation", "Purpose": "Purpose", "Descriptor": "Descriptor"}], "Tolerating": ["Tolerating", {"Experiencer": "Experiencer", "Content": "Content", "Explanation": "Explanation", "Degree": "Degree", "Manner": "Manner", "Parameter": "Parameter", "Topic": "Topic", "State": "State", "Event": "Event", "Circumstances": "Circumstances", "Time": "Time"}], "Tool_purpose": ["Tool_purpose", {"Purpose": "Purpose", "Tool": "Tool", "Type": "Type", "Domain": "Domain"}], "Topic": ["Topic", {"Topic": "Topic", "Text": "Text", "Communicator": "Communicator", "Degree": "Degree", "Manner": "Manner", "Status": "Status", "Time": "Time", "Explanation": "Explanation"}], "Touring": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Toxic_substance": ["Toxic_substance", {"Victim": "Victim", "Degree": "Degree", "Body_part": "Body_part", "Explanation": "Explanation", "Toxic_substance": "Toxic_substance", "Circumstances": "Circumstances", "Toxin_source": "Toxin_source", "Type": "Type", "Duration": "Duration"}], "Transfer": ["Event", {"Place": "Place", "Explanation": "Explanation", "Time": "Time"}], "Transfer_scenario": ["Transfer_scenario", {"Recipient": "Recipient", "Theme": "Theme", "Donor": "Donor", "Transferors": "Transferors"}], "Transition_to_a_quality": ["Event", {"Place": "Place", "Time": "Time", "Duration_of_final_state": "Duration", "Manner": "Manner", "Explanation": "Explanation"}], "Transition_to_a_situation": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Explanation": "Explanation"}], "Transition_to_state": ["Event", {"Place": "Place", "Time": "Time", "Duration_of_final_state": "Duration", "Manner": "Manner", "Explanation": "Explanation"}], "Transitive_action": ["Transitive_action", {"Agent": "Agent", "Patient": "Patient", "Event": "Event", "Depictive": "Depictive", "Result": "Result", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Cause": "Cause"}], "Translating": ["Transitive_action", {"Manner": "Manner", "Means": "Means", "Time": "Time", "Target_symbol": "Patient", "Place": "Place"}], "Transportation_status": ["State", {"Rider": "Entity"}], "Trap": ["Trap", {"Trap": "Trap", "Deceiver": "Deceiver", "Victim": "Victim", "Descriptor": "Descriptor"}], "Travel": ["Event", {"Area": "Place", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Traversing": ["Event", {"Manner": "Manner", "Place": "Place", "Time": "Time", "Duration": "Duration", "Frequency": "Frequency"}], "Treating_and_mistreating": ["Treating_and_mistreating", {"Agent": "Agent", "Manner": "Manner", "Circumstances": "Circumstances", "Affected_party": "Affected_party", "Explanation": "Explanation", "Time": "Time", "Place": "Place", "Means": "Means", "Domain": "Domain", "Degree": "Degree", "Standard": "Standard"}], "Trendiness": ["Trendiness", {"Behavior": "Behavior", "Degree": "Degree", "Time": "Time", "Circumstances": "Circumstances", "Evaluee": "Evaluee", "Judge": "Judge", "Place": "Place"}], "Trial": ["Trial", {"Charges": "Charges", "Court": "Court", "Defense": "Defense", "Jury": "Jury", "Place": "Place", "Prosecution": "Prosecution", "Time": "Time", "Defendant": "Defendant", "Judge": "Judge", "Case": "Case", "Manner": "Manner"}], "Triggering": ["Triggering", {"Cause": "Cause", "System": "System", "Means": "Means", "Actor": "Actor", "Manner": "Manner", "Place": "Place", "Time": "Time", "Purpose": "Purpose"}], "Trust": ["Trust", {"Cognizer": "Cognizer", "Topic": "Topic", "Content": "Content", "Degree": "Degree", "Manner": "Manner", "Expressor": "Expressor", "Information_source": "Information_source", "Information": "Information"}], "Try_defendant": ["Try_defendant", {"Judge": "Judge", "Court": "Court", "Defendant": "Defendant", "Jury": "Jury", "Time": "Time", "Place": "Place", "Charges": "Charges", "Governing_authority": "Governing_authority", "Manner": "Manner"}], "Trying_out": ["Trying_out", {"Evaluator": "Evaluator", "Experience": "Experience", "Entity": "Entity", "Manner": "Manner", "Means": "Means", "Purpose": "Purpose", "Time": "Time", "Place": "Place"}], "Turning_out": ["Turning_out", {"State_of_affairs": "State_of_affairs", "Time": "Time"}], "Type": ["Type", {"Subtype": "Subtype", "Category": "Category", "Type_property": "Type_property", "Item_property": "Item_property"}], "Typicality": ["Typicality", {"Degree": "Degree", "State_of_affairs": "State_of_affairs", "Comparison_set": "Comparison_set", "Feature": "Feature"}], "Unattributed_information": ["Unattributed_information", {"Reported_fact": "Reported_fact", "Time": "Time", "Duration": "Duration", "Explanation": "Explanation"}], "Undergo_change": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Undergo_transformation": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Undergoing": ["Event", {"Event": "Event", "Time": "Time", "Place": "Place", "Explanation": "Explanation", "Manner": "Manner"}], "Undergoing_scenario": ["Undergoing_scenario", {"Entity": "Entity", "Event": "Event", "Time": "Time", "Place": "Place", "Explanation": "Explanation", "Purpose": "Purpose", "Circumstances": "Circumstances"}], "Undressing": ["Undressing", {"Wearer": "Wearer", "Clothing": "Clothing", "Body_location": "Body_location", "Manner": "Manner", "Means": "Means", "Result": "Result", "Degree": "Degree", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Circumstances": "Circumstances", "Explanation": "Explanation"}], "Unemployment_rate": ["Unemployment_rate", {"Individuals": "Individuals", "Employment": "Employment", "Value": "Value", "Degree": "Degree", "Time": "Time", "Group": "Group", "Place": "Place"}], "Use_firearm": ["Transitive_action", {"Agent": "Agent", "Firearm": "Patient", "Means": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Use_vehicle": ["Use_vehicle", {"Theme": "Theme", "Vehicle": "Vehicle", "Source": "Source", "Manner": "Manner", "Path": "Path", "Goal": "Goal", "Distance": "Distance", "Duration": "Duration", "Speed": "Speed", "Area": "Area", "Road": "Road", "Route": "Route", "Time": "Time", "Cotheme": "Cotheme", "Driver": "Driver"}], "Used_up": ["Used_up", {"Resource": "Resource", "Degree": "Degree", "Explanation": "Explanation", "Excess": "Excess", "Subregion": "Subregion"}], "Usefulness": ["Usefulness", {"Entity": "Entity", "Purpose": "Purpose", "Degree": "Degree", "Domain": "Domain", "Time": "Time"}], "Using": ["Transitive_action", {"Agent": "Agent", "Place": "Place", "Time": "Time", "Means": "Means", "Manner": "Manner", "Instrument": "Patient"}], "Using_resource": ["Using_resource", {"Agent": "Agent", "Resource": "Resource", "Purpose": "Purpose", "Portion": "Portion", "Means": "Means", "Manner": "Manner", "Place": "Place", "Time": "Time"}], "Vehicle": ["Vehicle", {"Descriptor": "Descriptor", "Vehicle": "Vehicle", "Possessor": "Possessor", "Itinerary": "Itinerary", "Means_of_propulsion": "Means_of_propulsion", "Use": "Use"}], "Vehicle_departure_initial_stage": ["Vehicle_departure_initial_stage", {"Vehicle": "Vehicle", "Source": "Source", "Intended_goal": "Intended_goal", "Manner": "Manner", "Depictive": "Depictive", "Means": "Means", "Result": "Result", "Co-participant": "Co-participant", "Circumstances": "Circumstances", "Place": "Place", "Duration_of_final_state": "Duration_of_final_state", "Time": "Time", "Explanation": "Explanation"}], "Vehicle_landing": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Vehicle_subpart": ["Vehicle_subpart", {"Part": "Part", "Whole": "Whole", "Function": "Function", "Orientation": "Orientation", "Descriptor": "Descriptor"}], "Verdict": ["Event", {"Finding": "Event", "Time": "Time", "Place": "Place", "Manner": "Manner"}], "Verification": ["Verification", {"Inspector": "Inspector", "Unconfirmed_content": "Unconfirmed_content", "Manner": "Manner", "Means": "Means", "Degree": "Degree", "Purpose": "Purpose", "Medium": "Medium", "Instrument": "Instrument", "Condition": "Condition", "Descriptor": "Descriptor", "Communicative_force": "Communicative_force", "Time": "Time", "Place": "Place", "Explanation": "Explanation"}], "Version_sequence": ["Version_sequence", {"Item": "Item", "Degree": "Degree"}], "Victim_operated_IED": ["Victim_operated_IED", {"Bomb": "Bomb", "Use": "Use", "Type": "Type", "Material": "Material", "Bomber": "Bomber", "Part": "Part", "Name": "Name", "Time_of_creation": "Time_of_creation", "Creator": "Creator", "Descriptor": "Descriptor", "Victim": "Victim"}], "Violence": ["Violence", {"Aggressor": "Aggressor", "Victim": "Victim", "Degree": "Degree", "Manner": "Manner", "Means": "Means", "Place": "Place", "Time": "Time", "Instrument": "Instrument", "Purpose": "Purpose", "Containing_event": "Containing_event", "Explanation": "Explanation", "Iterations": "Iterations", "Cause": "Cause", "Circumstances": "Circumstances", "Frequency": "Frequency", "Aggressors": "Aggressors"}], "Visit_host": ["Visit_host", {"Visitor": "Visitor", "Host": "Host", "Purpose": "Purpose", "Normal_location": "Normal_location", "Host_location": "Host_location"}], "Visit_host_arrival": ["Event", {"Manner": "Manner", "Time": "Time"}], "Visit_host_departure": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Visit_host_stay": ["Visit_host_stay", {"Visitor": "Visitor", "Host": "Host", "Dependent_state": "Dependent_state", "Purpose": "Purpose", "Normal_location": "Normal_location", "Time": "Time", "Duration": "Duration", "Manner": "Manner", "Place": "Place", "Means": "Means", "Iterations": "Iterations", "Frequency": "Frequency", "Host_location": "Host_location"}], "Visiting": ["Event", {"Time": "Time", "Manner": "Manner", "Place": "Place"}], "Visiting_scenario": ["Visiting_scenario", {"Agent": "Agent", "Entity": "Entity", "Purpose": "Purpose", "Normal_location": "Normal_location"}], "Visiting_scenario_arrival": ["Event", {"Manner": "Manner", "Time": "Time"}], "Visiting_scenario_departing": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Visiting_scenario_stay": ["Visiting_scenario_stay", {"Agent": "Agent", "Entity": "Entity", "Dependent_state": "Dependent_state", "Purpose": "Purpose", "Normal_location": "Normal_location", "Time": "Time", "Duration": "Duration", "Manner": "Manner", "Place": "Place", "Means": "Means", "Iterations": "Iterations", "Frequency": "Frequency"}], "Visitor_and_host": ["Visitor_and_host", {"Visitor": "Visitor", "Host": "Host", "Purpose": "Purpose", "Normal_location": "Normal_location", "Host_location": "Host_location"}], "Visitor_arrival": ["Event", {"Manner": "Manner", "Time": "Time"}], "Visitor_departure": ["Event", {"Manner": "Manner", "Time": "Time", "Place": "Place"}], "Visitor_scenario": ["Visitor_scenario", {"Agent": "Agent", "Entity": "Entity", "Purpose": "Purpose", "Normal_location": "Normal_location"}], "Vocalizations": ["Vocalizations", {"Sound_source": "Sound_source", "Location_of_sound_source": "Location_of_sound_source", "Place": "Place", "Internal_cause": "Internal_cause", "Manner": "Manner", "Degree": "Degree", "Explanation": "Explanation", "Path": "Path", "Frequency": "Frequency"}], "Volubility": ["Volubility", {"Speaker": "Speaker", "Company": "Company", "Text": "Text", "Topic": "Topic", "Medium": "Medium", "Degree": "Degree", "Manner": "Manner", "Judge": "Judge"}], "Wagering": ["Wagering", {"Gambler": "Gambler", "Place": "Place", "Time": "Time", "Asset": "Asset", "Frequency": "Frequency", "Purpose": "Purpose", "Explanation": "Explanation", "Iterations": "Iterations", "Circumstances": "Circumstances", "Beneficiary": "Beneficiary", "Outcome": "Outcome", "Uncertain_situation": "Uncertain_situation"}], "Waiting": ["Waiting", {"Protagonist": "Protagonist", "Salient_entity": "Salient_entity", "Time": "Time", "Place": "Place", "Duration": "Duration", "Manner": "Manner", "Expected_event": "Expected_event", "End_point": "End_point", "Explanation": "Explanation", "Depictive": "Depictive", "Purpose": "Purpose", "Co-participant": "Co-participant"}], "Waking_up": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner"}], "Want_suspect": ["Want_suspect", {"Suspect": "Suspect", "Charges": "Charges", "Degree": "Degree"}], "Warning": ["Warning", {"Speaker": "Speaker", "Addressee": "Addressee", "Message": "Message", "Topic": "Topic", "Manner": "Manner", "Means": "Means", "Medium": "Medium", "Time": "Time", "Place": "Place", "Communicative_force": "Communicative_force", "Descriptor": "Descriptor", "Iterations": "Iterations"}], "Waver_between_options": ["Waver_between_options", {"Cognizer": "Cognizer", "Explanation": "Explanation", "Options": "Options", "Place": "Place", "Time": "Time", "Manner": "Manner", "Issue": "Issue", "Option_1": "Option_1", "Option_2": "Option_2", "Duration": "Duration", "Frequency": "Frequency", "Degree": "Degree", "Containing_event": "Containing_event", "Circumstances": "Circumstances"}], "Wealthiness": ["Wealthiness", {"Person": "Person", "Institution": "Institution", "Degree": "Degree", "Type_of_possession": "Type_of_possession"}], "Weapon": ["Weapon", {"Weapon": "Weapon", "Use": "Use", "Type": "Type", "Material": "Material", "Wielder": "Wielder", "Part": "Part", "Name": "Name", "Time_of_creation": "Time_of_creation", "Creator": "Creator", "Descriptor": "Descriptor"}], "Wearing": ["Wearing", {"Wearer": "Wearer", "Clothing": "Clothing", "Body_part": "Body_part", "Degree": "Degree", "Manner": "Manner", "Time": "Time", "Source": "Source", "Intended_wearing_location": "Intended_wearing_location", "Purpose": "Purpose", "Relative_location": "Relative_location"}], "Weather": ["Weather", {"Place": "Place", "Time": "Time", "Specification": "Specification"}], "Wholes_and_parts": ["Wholes_and_parts", {"Whole": "Whole", "Part": "Part", "Manner": "Manner", "Time": "Time", "Place": "Place"}], "Willingness": ["Willingness", {"Cognizer": "Cognizer", "Activity": "Activity", "Explanation": "Explanation", "Place": "Place", "Time": "Time", "Purpose": "Purpose", "Degree": "Degree", "Frequency": "Frequency"}], "Win_prize": ["Win_prize", {"Competitor": "Competitor", "Score": "Score", "Margin": "Margin", "Rank": "Rank", "Prize": "Prize", "Means": "Means", "Manner": "Manner", "Time": "Time", "Place": "Place", "Venue": "Venue", "Particular_iteration": "Particular_iteration", "Competition": "Competition", "Explanation": "Explanation", "Period_of_iterations": "Period_of_iterations", "Opponent": "Opponent", "Circumstances": "Circumstances", "Re-encoding": "Re-encoding", "Result": "Result", "Iterations": "Iterations", "Communicative_force": "Communicative_force", "Event_description": "Event_description"}], "Withdraw_from_participation": ["Withdraw_from_participation", {"Participant": "Participant", "Activity": "Activity", "Explanation": "Explanation", "Place": "Place", "Time": "Time", "Organization": "Organization", "Purpose": "Purpose", "Means": "Means", "Medium": "Medium", "Manner": "Manner"}], "Within_distance": ["State", {"Figure": "Entity"}], "Word_relations": ["Word_relations", {"Sign_1": "Sign_1", "Sign_2": "Sign_2", "Signs": "Signs", "Circumstances": "Circumstances"}], "Work": ["Event", {"Time": "Time", "Place": "Place", "Manner": "Manner"}], "Working_a_post": ["Event", {"Place": "Place", "Time": "Time", "Manner": "Manner", "Frequency": "Frequency"}]} \ No newline at end of file diff --git a/resources/dep_labels.txt b/resources/dep_labels.txt new file mode 100755 index 0000000000000000000000000000000000000000..9ebe4a0116ba6f11393e25fa749f4c5275519ff6 --- /dev/null +++ b/resources/dep_labels.txt @@ -0,0 +1,159 @@ +acl:relcl↑ +acl:relcl↓ +acl↑ +acl↓ +advcl↑ +advcl↓ +advmod↑ +advmod↓ +amod↑ +amod↓ +appos↑ +appos↓ +aux:pass↑ +aux:pass↓ +aux↑ +aux↓ +case↑ +case↓ +ccomp↑ +ccomp↓ +cc↑ +cc↓ +compound:prt↑ +compound:prt↓ +compound↑ +compound↓ +conj↑ +conj↓ +cop↑ +cop↓ +csubj↑ +csubj↓ +dep↑ +dep↓ +det:poss↑ +det:poss↓ +det:predet↑ +det:predet↓ +det↑ +det↓ +discourse↑ +discourse↓ +expl:impers↑ +expl:impers↓ +expl:pass↓ +expl:pv↓ +expl↑ +expl↓ +fixed↑ +fixed↓ +flat:foreign↑ +flat:name↑ +flat:name↓ +flat↑ +flat↓ +iobj↑ +iobj↓ +mark↑ +mark↓ +nmod:poss↑ +nmod:poss↓ +nmod↑ +nmod↓ +nsubj:pass↑ +nsubj:pass↓ +nsubj↑ +nsubj↓ +nummod↑ +nummod↓ +obj↑ +obj↓ +obl:agent↑ +obl:agent↓ +obl↑ +obl↓ +orphan↓ +parataxis↑ +parataxis↓ +punct↑ +punct↓ +vocative↑ +vocative↓ +xcomp↑ +xcomp↓ +↑--acl:relcl↓ +↑--acl↓ +↑--advcl↓ +↑--advmod↓ +↑--amod↓ +↑--appos↓ +↑--aux:pass↓ +↑--aux↓ +↑--case↓ +↑--ccomp↓ +↑--cc↓ +↑--compound:prt↓ +↑--compound↓ +↑--conj↓ +↑--cop↓ +↑--csubj↓ +↑--dep↓ +↑--det:poss↓ +↑--det↓ +↑--discourse↓ +↑--expl:impers↓ +↑--expl:pass↓ +↑--expl↓ +↑--fixed↓ +↑--flat:foreign↓ +↑--flat:name↓ +↑--flat↓ +↑--iobj↓ +↑--mark↓ +↑--nmod:poss↓ +↑--nmod↓ +↑--nsubj:pass↓ +↑--nsubj↓ +↑--nummod↓ +↑--obj↓ +↑--obl:agent↓ +↑--obl↓ +↑--parataxis↓ +↑--xcomp↓ +↓--acl:relcl↓ +↓--acl↓ +↓--advcl↓ +↓--advmod↓ +↓--amod↓ +↓--appos↓ +↓--aux:pass↓ +↓--aux↓ +↓--case↓ +↓--ccomp↓ +↓--cc↓ +↓--compound:prt↓ +↓--compound↓ +↓--conj↓ +↓--cop↓ +↓--dep↓ +↓--det:poss↓ +↓--det↓ +↓--expl:impers↓ +↓--expl↓ +↓--fixed↓ +↓--flat:name↓ +↓--flat↓ +↓--iobj↓ +↓--mark↓ +↓--nmod:poss↓ +↓--nmod↓ +↓--nsubj:pass↓ +↓--nsubj↓ +↓--nummod↓ +↓--obj↓ +↓--obl:agent↓ +↓--obl↓ +↓--parataxis↓ +↓--xcomp↓ +⋆ diff --git a/resources/femicide_frame_list.txt b/resources/femicide_frame_list.txt new file mode 100755 index 0000000000000000000000000000000000000000..0f4d6c9416c7e1d95be6d01e4455156f7b9761aa --- /dev/null +++ b/resources/femicide_frame_list.txt @@ -0,0 +1,23 @@ +# 1) based on Gaetana & Marion's template file +Abusing#Violence +Attack#Violence +Cause_harm#Violence +Hit_target#Violence +Killing#Murder +Rape#Violence +Use_firearm#Violence + +# 2) based on Gosse's paper/document (Table 2) +Attack#Violence +Causation +Cause_harm#Violence +Cause_motion +Emotion_directed +Event#Murder +Quarreling + +Dead_or_alive#Murder +Death#Murder +Experience_bodily_harm +Killing#Murder +Catastrophe#Murder \ No newline at end of file diff --git a/resources/femicides_frame_to_roles.csv b/resources/femicides_frame_to_roles.csv new file mode 100755 index 0000000000000000000000000000000000000000..8b0cf51934b8a914d6fb3777d28dc67efb5c16f0 --- /dev/null +++ b/resources/femicides_frame_to_roles.csv @@ -0,0 +1,16 @@ +frame,role:perpetrator_like,role:victim_like,role:cause_like,notes +Abusing,Abuser,Victim,-, +Attack,Assailant,Victim,-, +Causation,Causer,Affected,Cause, +Cause_harm,Agent,Victim,Cause, +Cause_motion,-,-,-,does not seem to usually refer to the main murder event +Dead_or_alive,-,Protagonist,Explanation, +Death,-,Protagonist,Cause, +Emotion_directed,-,-,-,does not seem to usually refer to the main murder event +Event,-,-,-,does not involve any participants +Experience_bodily_harm,Experiencer|Body_part,-,-, +Hit_target,Agent,Target,-, +Killing,Killer,Victim,Cause, +Quarreling,-,-,-,core roles (Arguers/Arguer1/Arguer2) could denote either Perpetrator or victim +Rape,Perpetrator,Victim,-, +Use_firearm,Agent,Goal,-, \ No newline at end of file diff --git a/resources/fn_frames_to_roles.json b/resources/fn_frames_to_roles.json new file mode 100755 index 0000000000000000000000000000000000000000..0f21cefd3993b0b487a6f697f977c6cc2841af2e --- /dev/null +++ b/resources/fn_frames_to_roles.json @@ -0,0 +1 @@ +{"Abandonment": ["Agent", "Theme", "Place", "Time", "Manner", "Duration", "Explanation", "Depictive", "Degree", "Means", "Purpose", "Event_description"], "Abounding_with": ["Theme", "Location", "Degree", "Depictive", "Time"], "Absorb_heat": ["Entity", "Container", "Heat_source", "Place", "Medium", "Manner", "Time", "Explanation", "Temperature", "Duration", "Circumstances", "Purpose", "Depictive", "Result"], "Abundance": ["Collection", "Quantity", "Degree", "Time", "Circumstances", "Measure", "Place"], "Abusing": ["Abuser", "Victim", "Type", "Degree", "Place", "Time", "Manner", "Means", "Instrument", "Purpose", "Explanation", "Duration", "Frequency", "Depictive", "Circumstances", "Period_of_iterations"], "Access_scenario": ["Theme", "Useful_location", "Barrier"], "Accompaniment": ["Participant", "Co-participant", "Participants"], "Accomplishment": ["Means", "Agent", "Instrument", "Place", "Time", "Manner", "Explanation", "Degree", "Goal", "Outcome", "Circumstances", "Duration", "Domain", "Particular_iteration"], "Accoutrements": ["Wearer", "Style", "Material", "Accoutrement", "Descriptor", "Use", "Part", "Body_location", "Creator", "Time_of_creation", "Name"], "Accuracy": ["Agent", "Target", "Outcome", "Means", "Degree", "Time", "Place", "Instrument", "Target_value", "Deviation", "Domain", "Circumstances", "Frequency"], "Achieving_first": ["Cognizer", "New_idea", "Time", "Place", "Means", "Purpose", "Explanation", "Field", "Instrument", "Manner", "Basis", "Location_of_appearance"], "Active_substance": ["Effect", "Substance", "Descriptor", "Type", "Name"], "Activity": ["Activity", "Duration", "Place", "Time", "Agent", "Manner"], "Activity_abandoned_state": ["Agent", "Time", "Duration", "Activity", "Place"], "Activity_done_state": ["Agent", "Activity", "Time", "Place"], "Activity_finish": ["Depictive", "Manner", "Result", "Co-timed_event", "Place", "Time", "Agent", "Activity", "Means", "Purpose", "Degree", "Explanation", "Circumstances", "Containing_event"], "Activity_ongoing": ["Duration", "Activity", "Place", "Purpose", "Time", "Depictive", "Manner", "Means", "Co-timed_event", "Agent", "Explanation", "Event_description", "Circumstances"], "Activity_pause": ["Activity", "Agent", "Manner", "Means", "Place", "Time", "Purpose", "Depictive", "Completeness", "Duration", "Legal_basis", "Explanation", "Event_description"], "Activity_paused_state": ["Agent", "Time", "Activity", "Duration"], "Activity_prepare": ["Agent", "Activity", "Place", "Time", "Manner", "Means", "Purpose", "Duration", "Depictive", "Degree", "Beneficiary", "Iterations", "Event_description"], "Activity_ready_state": ["Protagonist", "Activity", "Salient_entity", "Time", "Result", "Duration", "Degree"], "Activity_resume": ["Duration", "Activity", "Place", "Explanation", "Time", "Manner", "Agent", "Circumstances", "Depictive", "Result", "Event_description"], "Activity_start": ["Place", "Purpose", "Time", "Depictive", "Manner", "Means", "Activity", "Agent", "Co-timed_event", "Circumstances", "Containing_event", "Event_description", "Explanation", "Particular_iteration", "New_situation", "Communicative_force", "Concessive"], "Activity_stop": ["Purpose", "Place", "Time", "Depictive", "Manner", "Result", "Agent", "Activity", "Duration", "Means", "Co-timed_event", "Degree", "Frequency", "Containing_event", "Circumstances", "Re-encoding", "Explanation", "Event_description", "Particular_iteration"], "Actually_occurring_entity": ["Instance", "Type"], "Addiction": ["Addict", "Addictant", "Degree", "Compeller"], "Adding_up": ["Cognizer", "Numbers", "Result", "Time", "Place", "Purpose", "Means", "Manner"], "Adducing": ["Speaker", "Addressee", "Manner", "Means", "Medium", "Depictive", "Time", "Place", "Specified_entity", "Role", "Purpose", "Explanation", "Containing_event", "Event_description", "Frequency", "Circumstances"], "Adjacency": ["Ground", "Figure", "Distance", "Direction", "Time", "Figures", "Deixis", "Accessibility", "Directness"], "Adjusting": ["Agent", "Part", "Feature", "Imposed_purpose", "Means", "Place", "Time", "Final_value", "Instrument", "Purpose", "Manner", "Degree", "Circumstances"], "Adopt_selection": ["Agent", "Attribute", "Value", "Time", "Manner", "Event_description", "Depictive", "Purpose", "Role", "Place", "Frequency", "Containing_event", "Circumstances", "Re-encoding", "Particular_iteration", "Means", "Instrument", "Duration", "Explanation", "Communicative_force"], "Aesthetics": ["Entity", "Attribute", "Degree", "Time", "Circumstances", "Viewpoint", "Place"], "Affirm_or_deny": ["Speaker", "Message", "Addressee", "Place", "Time", "Manner", "Iterations", "Means", "Depictive", "Degree", "Containing_event", "Event_description", "Frequency", "Internal_cause", "Medium", "Topic"], "Age": ["Entity", "Attribute", "Age", "Degree", "Time", "Circumstances", "Expressor", "Descriptor", "Duration"], "Aggregate": ["Individuals", "Aggregate", "Aggregate_property", "Name", "Container_possessor", "Domain"], "Aging": ["Entity", "Time", "Circumstances", "Manner", "Place", "Result"], "Agree_or_refuse_to_act": ["Speaker", "Interlocutor", "Medium", "Proposed_action", "Manner", "Depictive", "Means", "Internal_cause", "Place", "Time", "Purpose", "Particular_iteration", "Role", "Co-timed_event", "Frequency", "Explanation", "Event_description"], "Agriculture": ["Agriculturist", "Food", "Instrument", "Duration", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Frequency", "Degree", "Ground", "Particular_iteration", "Type", "Event_description", "Circumstances"], "Aiming": ["Agent", "Targeted", "Outcome", "Means", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "Particular_iteration", "Circumstances", "Instrument", "Target_location", "Location_of_protagonist", "Activity", "Containing_event", "Explanation"], "Alignment_image_schema": ["Alignment_match", "Ground", "Alignment_mismatch"], "Alliance": ["Alliance", "Members", "Purpose", "Period_of_existence", "Member_1", "Member_2", "Descriptor"], "Alternatives": ["Situation", "Agent", "Number_of_possibilities", "Salient_entity", "Purpose"], "Alternativity": ["Profiled_alternative", "Contrasting_alternative"], "Amalgamation": ["Parts", "Whole", "Part_1", "Part_2", "Degree", "Manner", "Result", "Time", "Place", "Depictive", "Descriptor"], "Amassing": ["Recipient", "Mass_theme", "Source", "Place", "Purpose", "Explanation", "Time", "Means", "Manner", "Result", "Duration", "Circumstances", "Role"], "Ambient_temperature": ["Place", "Attribute", "Temperature", "Degree", "Time", "Circumstances", "Weather"], "Ammunition": ["Ammunition", "Use", "Creator", "Time_of_creation", "Name", "Type", "Material", "Weapon"], "Amounting_to": ["Value", "Attribute", "Time_span", "Frequency", "Numbers"], "Animals": ["Animal", "Descriptor", "Origin", "Characteristic"], "Annoyance": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Parameter", "Manner", "Time"], "Appeal": ["Convict", "Representative", "Decision", "Grounds", "Court", "Time", "Re-encoding", "Explanation"], "Appellations": ["Name", "Title", "Context", "Type"], "Apply_heat": ["Cook", "Heating_instrument", "Place", "Food", "Time", "Means", "Purpose", "Duration", "Medium", "Co-participant", "Temperature_setting", "Degree", "Manner", "Container", "Beneficiary"], "Appointing": ["Selector", "Official", "Role", "Degree", "Depictive", "Manner", "Means", "Result", "Circumstances", "Function", "Time", "Place", "Body"], "Architectural_part": ["Part", "Whole", "Descriptor", "Orientation", "Material", "Creator"], "Arithmetic": ["Term1", "Term2", "Terms"], "Arithmetic_commutative": ["Terms", "Term1", "Term2"], "Arithmetic_non-commutative": ["Term_1", "Term_2"], "Armor": ["Armor", "Danger", "Asset", "Descriptor", "Degree", "Material", "Subregion", "Type"], "Arraignment": ["Defendant", "Place", "Time", "Judge", "Charges", "Duration", "Manner"], "Arranging": ["Agent", "Theme", "Time", "Configuration", "Manner", "Location", "Circumstances", "Purpose", "Instrument", "Means", "Degree"], "Arrest": ["Charges", "Place", "Time", "Authorities", "Suspect", "Type", "Offense", "Manner", "Means", "Purpose", "Source_of_legal_authority", "Co-participant"], "Arriving": ["Theme", "Source", "Path", "Goal", "Manner", "Means", "Mode_of_transportation", "Cotheme", "Time", "New_situation", "Depictive", "Period_of_iterations", "Circumstances", "Purpose", "Degree", "Event_description", "Re-encoding", "Frequency", "Place"], "Arson": ["Degree", "Depictive", "Offense", "Manner", "Means", "Purpose", "Duration", "Place", "Time", "Perpetrator", "Victim", "Frequency", "Explanation"], "Artifact": ["Artifact", "Use", "Creator", "Time_of_creation", "Name", "Type", "Material", "Descriptor"], "Artifact_subpart": ["Component", "Artifact", "Function", "Material", "Creator", "Time_of_creation"], "Artificiality": ["Entity", "Reference_category", "Degree"], "Artistic_style": ["Artist", "Artwork", "Form", "Time", "Descriptor"], "Assemble": ["Individuals", "Group", "Party_1", "Party_2", "Manner", "Place", "Means", "Time", "Purpose"], "Assessing": ["Assessor", "Phenomenon", "Value", "Feature", "Evidence", "Manner", "Method", "Means", "Time", "Standard", "Purpose", "Place", "Medium", "Co-participant", "Frequency", "Beneficiary", "Depictive", "Degree", "Circumstances", "Result", "Duration", "Explanation"], "Assigned_location": ["Station", "Constituent_parts", "Relative_location", "Formational_cause", "Container_possessor", "Descriptor", "Related_event", "Task", "Responsible_party"], "Assistance": ["Benefited_party", "Helper", "Goal", "Focal_entity", "Time", "Place", "Manner", "Means", "Instrument", "Domain", "Degree", "Duration", "Purpose", "Frequency", "Explanation"], "Asymmetric_reciprocality": ["Protagonist_1", "Protagonist_2"], "Atonement": ["Agent", "Wrong", "Amends", "Degree", "Purpose", "Manner", "Time", "Place"], "Attaching": ["Agent", "Item", "Result", "Goal", "Connector", "Items", "Handle", "Means", "Manner", "Place", "Purpose", "Time", "Instrument", "Degree", "Frequency", "Period_of_iterations", "Duration"], "Attack": ["Victim", "Weapon", "Assailant", "Manner", "Means", "Place", "Purpose", "Explanation", "Time", "Source", "Depictive", "Re-encoding", "Result", "Containing_event", "Particular_iteration", "Circumstances", "Iterations", "Event_description", "Path", "Frequency", "Duration", "Direction"], "Attempt": ["Agent", "Goal", "Outcome", "Means", "Effort", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "Particular_iteration", "Circumstances", "Domain", "Condition", "Frequency", "Explanation"], "Attempt_action_scenario": ["Agent", "Goal", "Outcome", "Means", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "Particular_iteration", "Circumstances", "Condition", "Frequency"], "Attempt_distant_interaction_scenario": ["Agent", "Target", "Outcome", "Means", "Degree", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "Particular_iteration", "Circumstances", "Instrument", "Target_location"], "Attempt_means": ["Agent", "Goal", "Outcome", "Means", "Degree", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "Particular_iteration", "Circumstances", "Domain", "Frequency"], "Attempt_obtain_food_scenario": ["Seeker", "Food", "Instrument", "Duration", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Frequency", "Degree", "Ground", "Particular_iteration"], "Attempt_obtain_mineral_scenario": ["Agent", "Outcome", "Means", "Time", "Place", "Duration", "Mineral"], "Attempt_suasion": ["Content", "Addressee", "Speaker", "Topic", "Medium", "Manner", "Depictive", "Means", "Degree", "Time", "Explanation", "Period_of_iterations", "Circumstances", "Group", "Frequency", "Re-encoding", "Place", "Purpose", "Salient_entity", "Role"], "Attempting_and_resolving_scenario": ["Agent", "Goal", "Outcome", "Means", "Time", "Place", "Duration", "Manner", "Purpose"], "Attending": ["Agent", "Event", "Manner", "Means", "Place", "Time", "Circumstances", "Purpose", "Frequency", "Duration", "Iterations", "Event_description"], "Attention": ["Perceiver", "Ground", "Figure", "Degree", "Circumstances", "Manner", "Expressor"], "Attention_getting": ["Address_term", "Interjection"], "Attitude_description": ["Cognizer", "Attitude", "State_of_affairs", "Degree", "Time"], "Attributed_information": ["Proposition", "Speaker", "Text"], "Attributes": ["Entity", "Attribute", "Value"], "Authority": ["Agent", "Theme", "Domain", "Source", "Descriptor"], "Avoiding": ["Agent", "Place", "Time", "Purpose", "Undesirable_situation", "Means", "Manner", "Circumstances", "Degree", "Explanation"], "Awareness": ["Cognizer", "Content", "Evidence", "Topic", "Degree", "Manner", "Expressor", "Role", "Paradigm", "Time", "Explanation"], "Awareness_situation": ["Cognizer", "Content", "Expressor", "Topic", "Degree", "Evidence", "Manner", "Role", "Time"], "Awareness_status": ["Cognizer", "Content", "Degree", "Evidence", "Role", "Time"], "Bail_decision": ["Accused", "Judge", "Status", "Time", "Place", "Manner", "Means", "Purpose"], "Basis_for_attribute": ["Trajector", "Landmark", "Profiled_region"], "Be_in_agreement_on_action": ["Party_1", "Party_2", "Obligation", "Topic", "Medium", "Parties", "Place", "Time", "Manner", "Circumstances", "Degree", "Duration", "Descriptor"], "Be_in_agreement_on_assessment": ["Cognizers", "Cognizer_1", "Cognizer_2", "Question", "Degree", "Time", "Place", "Manner", "Explanation", "Depictive", "Opinion", "Topic", "Circumstances"], "Be_on_alert": ["Protagonist", "Activity", "Time", "Result", "Duration", "Degree", "Danger", "Dangerous_entity"], "Be_subset_of": ["Total", "Part", "Frequency", "Contrast_set", "Subregion", "Explanation", "Manner", "Time", "Place"], "Be_translation_equivalent": ["Source_symbol", "Source_representation", "Time", "Circumstances", "Target_symbol", "Target_representation", "Content", "Equivalence", "Medium"], "Bearing_arms": ["Degree", "Weapon", "Protagonist", "Place", "Time"], "Beat_opponent": ["Winner", "Score", "Margin", "Rank", "Prize", "Means", "Manner", "Time", "Place", "Venue", "Particular_iteration", "Explanation", "Period_of_iterations", "Loser", "Circumstances", "Re-encoding", "Result", "Iterations", "Communicative_force", "Event_description", "Degree", "Depictive", "Competition", "Frequency"], "Becoming": ["Place", "Time", "Duration_of_final_state", "Manner", "Entity", "Final_quality", "Final_category", "Transitional_period", "Initial_state", "Circumstances", "Initial_category", "Group", "Explanation"], "Becoming_a_member": ["New_member", "Place", "Purpose", "Time", "Means", "Manner", "Frequency", "Group", "Explanation", "Role", "Depictive", "Reciprocation", "Circumstances", "Re-encoding"], "Becoming_attached": ["Connector", "Handle", "Item", "Items", "Goal", "Result", "Manner", "Place", "Time"], "Becoming_aware": ["Cognizer", "Phenomenon", "Ground", "State", "Evidence", "Degree", "Manner", "Means", "Topic", "Time", "Purpose", "Instrument", "Frequency", "Circumstances", "Explanation", "Particular_iteration", "Period_of_iterations"], "Becoming_detached": ["Item", "Source", "Items", "Manner", "Place", "Time", "Degree", "Event_description"], "Becoming_dry": ["Entity", "Degree", "Manner", "Place", "Time", "Circumstances", "Concessive", "Particular_iteration"], "Becoming_separated": ["Whole", "Parts", "Part_1", "Part_2", "Criterion", "Depictive", "Manner", "Degree", "Means", "Result", "Time", "Place"], "Becoming_silent": ["Speaker", "Topic", "Place", "Time", "Expressor", "Manner", "Explanation"], "Becoming_visible": ["Entity", "Perceiver", "Manner", "Place", "Time"], "Behind_the_scenes": ["Artist", "Production", "Type", "Distributor", "Studio", "Medium", "Time", "Place", "Nationality", "Purpose", "Performer", "Score", "Scene", "Manner"], "Being_active": ["Duration", "Activity", "Place", "Purpose", "Time", "Manner", "Agent", "Salient_entity", "Role", "Degree", "Event_description", "Frequency", "Depictive", "Circumstances", "Explanation", "Iterations"], "Being_at_risk": ["Asset", "Degree", "Harmful_event", "Dangerous_entity", "Place", "Time", "Explanation", "Situation", "Domain", "Depictive", "Frequency", "Duration"], "Being_attached": ["Connector", "Handle", "Item", "Items", "Goal", "Dependent_state", "Manner"], "Being_awake": ["Protagonist", "Duration", "Time", "Place", "Degree", "Manner"], "Being_born": ["Child", "Time", "Place", "Relatives", "Depictive", "Means"], "Being_contained_within": ["Profiled_region", "Landmark", "Trajector", "Time"], "Being_detached": ["Item", "Items", "Source", "Manner"], "Being_dry": ["Item", "Degree", "Subregion"], "Being_employed": ["Compensation", "Employee", "Employer", "Manner", "Place_of_employment", "Position", "Purpose", "Task", "Time", "Field", "Duration", "Rank", "Type", "Contract_basis", "Place", "Frequency", "Event_description", "Circumstances", "Particular_iteration"], "Being_in_captivity": ["Theme", "Holding_location", "Agent", "Reciprocation", "Place", "Time", "Manner", "Explanation", "Duration", "Cause"], "Being_in_category": ["Cognizer", "Item", "Category", "Criteria", "Manner", "Means", "Time", "Circumstances"], "Being_in_control": ["Controlling_entity", "Dependent_entity", "Dependent_situation", "Dependent_variable", "Degree", "Time", "Place", "Manner", "Concessive"], "Being_in_effect": ["Binding_principle", "Duration", "Time", "Place", "Circumstances", "Explanation", "Obligated_party", "Degree"], "Being_in_operation": ["Device", "Time", "Place", "Duration"], "Being_incarcerated": ["Prisoner", "Prison", "Authorities", "Crime", "Place", "Time", "Manner", "Explanation", "Duration"], "Being_included": ["Whole", "Part"], "Being_located": ["Theme", "Place", "Dependent_state", "Time", "Location", "Cotheme", "Depictive"], "Being_named": ["Name", "Entity", "Language", "Type", "Descriptor", "Context", "Etymological_root"], "Being_necessary": ["Dependent", "Requirement", "Degree", "Time", "Condition", "Domain", "Place", "Dependent_individual", "Required_entity", "Descriptor", "Explanation"], "Being_obligated": ["Responsible_party", "Duty", "Condition", "Consequence", "Time", "Place", "Frequency"], "Being_obligatory": ["Condition", "Consequence", "Duty", "Responsible_party", "Time", "Place", "Purpose", "Explanation"], "Being_operational": ["Object", "Degree"], "Being_pregnant": ["Mother", "Father", "Parents", "Offspring", "Duration"], "Being_questionable": ["Behavior", "Degree", "Social_actor", "Judge", "Entity"], "Being_relevant": ["Phenomenon", "Endeavor", "Cognizer", "Degree", "Specification"], "Being_rotted": ["Patient", "Degree"], "Being_up_to_it": ["Entity", "Activity", "Degree", "Circumstances", "Explanation", "Relevant_feature"], "Being_wet": ["Item", "Liquid", "Degree", "Explanation", "Subregion"], "Besieging": ["Assailant", "Victim", "Manner", "Means", "Place", "Purpose", "Source", "Time", "Weapon", "Path", "Duration"], "Beyond_compare": ["Standard", "Variable", "Competitors", "Domain"], "Billing": ["Debtor", "Goods", "Means", "Money", "Rate", "Owed_party", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner", "Billing_authority", "Payment_status", "Bad_action"], "Biological_area": ["Constituent_parts", "Container_possessor", "Formational_cause", "Locale", "Name", "Relative_location", "Descriptor"], "Biological_classification": ["Rank", "Member", "Subtype", "Property"], "Biological_entity": ["Organism", "Descriptor", "Origin"], "Biological_mechanisms": ["Trigger", "Systemic_effect", "Place"], "Biological_urge": ["Degree", "Experiencer", "Time", "Place", "Expressor", "Duration", "Explanation", "State", "Parameter"], "Birth_scenario": ["Offspring", "Mother", "Father", "Parents", "Time", "Place", "Manner"], "Board_vehicle": ["Traveller", "Vehicle", "Source", "Manner", "Path", "Duration_of_final_state", "Depictive", "Time", "Cotheme", "Purpose", "Place", "Circumstances"], "Body_decoration": ["Body_location", "Decorated_individual", "Decoration", "Decoration_descriptor", "Picture", "Use", "Type"], "Body_description_holistic": ["Degree", "Individual", "Figure"], "Body_description_part": ["Individual", "Figure", "Degree"], "Body_mark": ["Attachment", "Body_mark", "Descriptor", "Possessor", "Cause", "Type", "Constituents"], "Body_movement": ["Agent", "Body_part", "Internal_cause", "External_cause", "Addressee", "Source", "Path", "Goal", "Area", "Degree", "Depictive", "Manner", "Result", "Message", "Time", "Subregion", "Purpose", "Cognate_event", "Duration", "Place", "Re-encoding", "Coordinated_event"], "Body_parts": ["Possessor", "Descriptor", "Body_part", "Subregion", "Orientational_location", "Attachment"], "Bond_maturation": ["Financial_instrument", "Time", "Issuer", "Holder", "Value", "Principle", "Interest"], "Borrowing": ["Borrower", "Duration", "Lender", "Theme", "Purpose", "Time", "Means_of_transfer", "Place", "Manner"], "Boundary": ["Boundary", "Entity", "Entities", "Relative_location"], "Bounded_entity": ["Bounded_area", "Constituent_parts", "Relative_location", "Name", "Owner", "Formational_cause", "Type"], "Bounded_region": ["Interior", "Ground", "Surface", "Boundary", "Exterior"], "Bragging": ["Speaker", "Addressee", "Topic", "Manner", "Means", "Medium", "Depictive", "Time", "Place", "Explanation", "Message", "Role", "Expressor", "Occasion", "Particular_iteration", "Internal_cause", "Degree"], "Breaking_apart": ["Whole", "Pieces", "Criterion", "Manner", "Time", "Place", "Means"], "Breaking_off": ["Subpart", "Whole", "Criterion", "Time", "Place", "Manner", "Means"], "Breaking_out_captive": ["Agent", "Theme", "Manner", "Means", "Explanation", "Purpose", "Place", "Time", "Location_of_confinement", "Concessive", "Circumstances"], "Breathing": ["Agent", "Air", "Goal", "Manner", "Means", "Source", "Path", "Degree", "Depictive", "Place", "Duration", "Distance", "Instrument", "Time", "Internal_cause", "External_cause", "Circumstances", "Purpose"], "Bringing": ["Agent", "Goal", "Source", "Path", "Theme", "Constant_location", "Area", "Depictive", "Distance", "Manner", "Speed", "Purpose", "Carrier", "Means", "Place", "Time", "Explanation", "Beneficiary", "Particular_iteration", "Frequency", "Degree", "Co-participant", "Duration", "Period_of_iterations"], "Building": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Components", "Created_entity", "Result", "Depictive", "Manner", "Beneficiary", "Duration", "Particular_iteration", "Descriptor", "Period_of_iterations"], "Building_subparts": ["Building_part", "Whole", "Use", "Type", "Place", "Descriptor"], "Buildings": ["Creator", "Building", "Function", "Name", "Material", "Time_of_creation", "Type", "Descriptor", "Place", "Relative_location", "Possessor"], "Bungling": ["Degree", "Depictive", "Manner", "Means", "Agent", "Patient", "Place", "Instrument", "Time", "Action", "Area"], "Burying": ["Agent", "Theme", "Source", "Path", "Goal", "Manner", "Degree", "Depictive", "Means", "Result", "Duration", "Place", "Explanation", "Time", "Area", "Cotheme", "Distance", "Speed", "Cause", "Purpose", "Beneficiary"], "Business_closure": ["Entity", "Explanation", "Time", "Place", "Circumstances", "Manner", "Containing_event", "Depictive"], "Businesses": ["Product", "Proprietor", "Descriptor", "Place", "Business", "Business_name", "Service_provider"], "Cache": ["Cache", "Resource", "Use", "Possessor", "Descriptor"], "Calendric_unit": ["Relative_time", "Name", "Whole", "Count", "Unit", "Salient_event", "Landmark_period", "Trajector_event"], "Candidness": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Degree", "Manner"], "Capability": ["Entity", "Event", "Degree", "Circumstances", "Explanation", "Relevant_feature", "Status", "Role", "Time", "Frequency"], "Capacity": ["Entity", "Degree", "Circumstances", "Explanation", "Status", "Theme", "Depictive", "Subregion", "Purpose", "Time"], "Capital_stock": ["Stock", "Type", "Shareholder", "Issuer", "Amount"], "Cardinal_numbers": ["Number", "Entity", "Precision", "Multiplier", "Composite_number", "Unit"], "Carry_goods": ["Distributor", "Goods", "Time", "Place", "Manner", "Duration", "Frequency"], "Catastrophe": ["Undesirable_event", "Place", "Time", "Patient", "Degree", "Manner", "Circumstances", "Cause"], "Catching_fire": ["Place", "Time", "Fire", "Fuel", "Manner", "Explanation"], "Categorization": ["Cognizer", "Item", "Category", "Criteria", "Manner", "Means", "Time", "Circumstances", "Concessive", "Explanation"], "Causation": ["Cause", "Affected", "Effect", "Place", "Time", "Actor", "Circumstances", "Manner", "Explanation", "Means", "Frequency", "Concessive"], "Causation_scenario": ["Cause", "Effect", "Averted_situation", "Time", "Place"], "Cause_bodily_experience": ["Agent", "Experiencer", "Result", "Degree", "Manner", "Means", "Place", "Time", "Body_part", "Instrument", "Purpose", "Depictive", "Containing_event", "Explanation", "Iterations", "Cause", "Subregion_bodypart", "Circumstances", "Frequency", "Duration", "Particular_iteration", "Concessive", "Re-encoding", "Period_of_iterations"], "Cause_change": ["Agent", "Initial_category", "Final_category", "Final_value", "Initial_value", "Time", "Degree", "Manner", "Explanation", "Attribute", "Entity", "Cause", "Purpose", "Means", "Containing_event", "Place", "Duration", "Circumstances", "Role", "Event_description", "Period_of_iterations", "Re-encoding"], "Cause_change_of_consistency": ["Circumstances", "Degree", "Initial_state", "Manner", "Place", "Explanation", "Result", "Speed", "Subregion", "Time", "Patient", "Agent", "Instrument", "Means", "Purpose", "Cause", "Change_agent", "Container", "Hot_cold_source"], "Cause_change_of_phase": ["Agent", "Instrument", "Manner", "Means", "Patient", "Place", "Purpose", "Time", "Circumstances", "Degree", "Initial_state", "Result", "Speed", "Subregion", "Cause", "Container", "Duration", "Depictive", "Medium", "Hot_cold_source"], "Cause_change_of_position_on_a_scale": ["Agent", "Difference", "Attribute", "Value_1", "Value_2", "Co-variable", "Path", "Speed", "Item", "Means", "Purpose", "Time", "Cause", "Manner", "Place"], "Cause_change_of_strength": ["Agent", "Patient", "Depictive", "Result", "Means", "Manner", "Time", "Place", "Cause", "Containing_event", "Degree", "Frequency", "Circumstances"], "Cause_emotion": ["Agent", "Experiencer", "Degree", "Instrument", "Frequency", "Means", "Manner", "Event_description", "Particular_iteration", "Depictive", "Explanation", "Period_of_iterations", "Time", "Containing_event", "Event", "Type", "Medium", "Place"], "Cause_expansion": ["Agent", "Item", "Initial_size", "Result_size", "Size_change", "Dimension", "Means", "Manner", "Co-variable", "Group", "Rate", "Cause", "Elapsed_time", "Time", "Place", "Explanation", "Purpose", "Instrument"], "Cause_fluidic_motion": ["Agent", "Cause", "Fluid", "Source", "Goal", "Path", "Area", "Manner", "Time", "Explanation", "Result", "Place", "Instrument", "Means", "Purpose", "Distance"], "Cause_harm": ["Agent", "Victim", "Result", "Degree", "Manner", "Means", "Place", "Time", "Body_part", "Instrument", "Purpose", "Depictive", "Containing_event", "Explanation", "Iterations", "Cause", "Subregion_bodypart", "Circumstances", "Frequency", "Duration", "Particular_iteration", "Concessive", "Re-encoding", "Period_of_iterations"], "Cause_impact": ["Force", "Impactee", "Impactor", "Impactors", "Manner", "Place", "Result", "Speed", "Subregion", "Time", "Agent", "Instrument", "Means", "Purpose", "Period_of_iterations", "Cause"], "Cause_motion": ["Agent", "Theme", "Source", "Path", "Goal", "Distance", "Area", "Depictive", "Degree", "Means", "Manner", "Subregion", "Cause", "Instrument", "Place", "Time", "Result", "Handle", "Initial_state", "Explanation", "Duration"], "Cause_proliferation_in_number": ["Agent", "Difference", "Attribute", "Initial_number", "Final_number", "Co-variable", "Path", "Speed", "Set", "Means", "Purpose", "Time", "Cause", "Manner", "Place", "Initial_state", "Final_state"], "Cause_temperature_change": ["Agent", "Instrument", "Item", "Temperature_goal", "Temperature_change", "Temperature_start", "Manner", "Means", "Place", "Purpose", "Time", "Result", "Cause", "Duration", "Subregion", "Container", "Depictive", "Hot_Cold_source", "Circumstances", "Degree"], "Cause_to_amalgamate": ["Agent", "Whole", "Parts", "Part_1", "Part_2", "Manner", "Degree", "Means", "Result", "Depictive", "Purpose", "Place", "Time"], "Cause_to_be_dry": ["Agent", "Dryee", "Instrument", "Manner", "Means", "Place", "Purpose", "Time", "Cause", "Subregion", "Duration", "Temperature", "Degree"], "Cause_to_be_included": ["Agent", "Existing_member", "New_member", "Group", "Cause", "Particular_iteration", "Means", "Time", "Manner", "Purpose", "Place"], "Cause_to_be_sharp": ["Means", "Agent", "Instrument", "Place", "Purpose", "Time", "Patient", "Manner", "Explanation", "Degree", "Cause", "Result"], "Cause_to_be_wet": ["Agent", "Liquid", "Patient", "Manner", "Means", "Place", "Purpose", "Time", "Instrument", "Cause", "Degree", "Subregion", "Explanation"], "Cause_to_burn": ["Agent", "Flammables", "Cause", "Time", "Place", "Manner", "Means", "Explanation", "Containing_event", "Depictive", "Actor"], "Cause_to_continue": ["Agent", "Process", "State", "Duration", "Means", "Cause", "Purpose", "Instrument", "Time", "Manner", "Place"], "Cause_to_end": ["Process", "Means", "Place", "Explanation", "Time", "Degree", "Depictive", "Manner", "Agent", "Cause", "State"], "Cause_to_experience": ["Means", "Agent", "Experiencer", "Manner", "Resulting_action", "Time", "Place", "Instrument", "Purpose", "Degree"], "Cause_to_fragment": ["Agent", "Instrument", "Manner", "Means", "Whole_patient", "Place", "Purpose", "Explanation", "Time", "Pieces", "Degree", "Subregion", "Result", "Resistant_surface", "Cause"], "Cause_to_land": ["Vehicle", "Source", "Path", "Goal", "Manner", "Means", "Cotheme", "Time", "New_situation", "Depictive", "Period_of_iterations", "Circumstances", "Purpose", "Degree", "Event_description", "Re-encoding", "Frequency", "Place", "Operator"], "Cause_to_make_noise": ["Agent", "Sound_maker", "Subregion", "Location_of_protagonist", "Depictive", "Manner", "Means", "Cause", "Explanation", "Purpose", "Time", "Place", "Frequency", "Iterations"], "Cause_to_make_progress": ["Project", "Prior_state", "Post_state", "Time", "Rate", "Manner", "Duration", "Degree", "Domain", "Agent", "Place", "Explanation", "Particular_iteration", "Purpose", "Means"], "Cause_to_move_in_place": ["Theme", "Place", "Duration", "Explanation", "Time", "Manner", "Means", "Degree", "Periodicity", "Fixed_location", "Agent", "Instrument", "Purpose", "Angle", "Locus", "Bodypart_of_agent", "Cause", "Direction", "Result"], "Cause_to_perceive": ["Agent", "Phenomenon", "Perceiver", "Means", "Manner", "Time", "Frequency", "Place", "Purpose", "Actor", "Entity", "Medium", "Co-participant", "Explanation"], "Cause_to_resume": ["Agent", "Process", "Hiatus", "Time", "Cause", "Place", "Means", "Manner", "Duration_of_final_state"], "Cause_to_rot": ["Agent", "Patient", "Depictive", "Result", "Means", "Manner", "Time", "Place", "Cause", "Instrument"], "Cause_to_start": ["Cause", "Effect", "Place", "Means", "Time", "Medium", "Purpose", "Co-timed_event", "Manner", "Communicative_force", "Explanation", "Circumstances", "Particular_iteration", "New_situation", "Containing_event", "Concessive", "Depictive", "Event_description"], "Cause_to_wake": ["Place", "Sleeper", "Time", "Agent", "Instrument", "Means", "Purpose", "Explanation", "Cause", "Sleep_state", "Manner", "Degree"], "Ceasing_to_be": ["Entity", "Place", "Time", "Explanation", "Components", "Duration_of_final_state", "Role", "Period_of_iterations", "Manner", "Degree"], "Certainty": ["Cognizer", "Topic", "Content", "Degree", "Manner", "Expressor", "Concessive", "Explanation"], "Change_accessibility": ["Agent", "Useful_location", "Theme", "Degree", "Portal", "Manner", "Means", "Time", "Place", "Purpose", "Subregion", "Instrument"], "Change_direction": ["Theme", "Source", "Path", "Goal", "Manner", "Means", "Speed", "Cotheme", "Depictive", "Place", "Path_shape", "Direction", "Time", "Purpose", "Means_of_motion", "Explanation", "Containing_event", "Frequency", "Re-encoding", "New_situation", "Circumstances", "Angle", "Result"], "Change_event_duration": ["Agent", "New_duration", "Initial_duration", "Time", "Degree", "Manner", "Explanation", "Event", "Cause", "Purpose", "Means"], "Change_event_time": ["Agent", "Cause", "Event", "Manner", "Means", "Degree", "Destination_event", "Destination_time", "Interval", "Landmark_time", "Explanation", "Purpose", "Time", "Place"], "Change_of_consistency": ["Result", "Initial_state", "Patient", "Place", "Time", "Explanation", "Speed", "Circumstances", "Manner", "Degree", "Subregion"], "Change_of_leadership": ["Selector", "Old_leader", "New_leader", "Role", "Old_order", "Degree", "Depictive", "Manner", "Means", "Result", "Circumstances", "Function", "Time", "Place", "Body"], "Change_of_phase": ["Patient", "Result", "Initial_state", "Degree", "Speed", "Manner", "Place", "Time", "Circumstances", "Subregion"], "Change_of_phase_scenario": ["Patient", "Result", "Initial_state", "Degree", "Speed", "Manner", "Place", "Time", "Circumstances", "Subregion"], "Change_of_quantity_of_possession": ["Owner", "Possession", "Time", "Place", "Degree", "Explanation"], "Change_of_temperature": ["Item", "Initial_temperature", "Final_temperature", "Temperature_change", "Hot_cold_source", "Cause", "Container", "Depictive", "Duration", "Time", "Place", "Subregion", "Manner", "Circumstances", "Result", "Particular_iteration", "Temperature", "Degree"], "Change_operational_state": ["Device", "Time", "Place", "Agent", "Cause", "Purpose", "Explanation", "Manner", "Degree", "Means"], "Change_position_on_a_scale": ["Attribute", "Item", "Difference", "Path", "Final_value", "Initial_value", "Speed", "Correlated_variable", "Manner", "Degree", "Circumstances", "Result", "Group", "Time", "Duration", "Value_range", "Initial_correlate", "Final_correlate", "Place", "Initial_state", "Final_state", "Period_of_iterations", "Particular_iteration", "Containing_event", "Explanation"], "Change_post-state": ["Entity"], "Change_posture": ["Manner", "Protagonist", "Depictive", "Location", "Time", "Result", "Path", "Goal", "Source", "Direction", "Purpose", "Distance", "Point_of_contact", "Means"], "Change_resistance": ["Agent", "Patient", "Depictive", "Result", "Means", "Manner", "Time", "Place", "Cause", "Attack"], "Change_tool": ["Agent", "Place", "Purpose", "Time", "Means", "Manner", "Tools", "Old_tool", "New_tool", "Iterations"], "Chaos": ["Entity", "State", "Degree", "Place", "Duration", "Time", "Descriptor"], "Chatting": ["Interlocutors", "Interlocutor_1", "Interlocutor_2", "Duration", "Topic", "Language", "Means_of_communication", "Purpose", "Time", "Place", "Means", "Manner", "Depictive"], "Chemical-sense_description": ["Perceptual_source", "Degree", "Sensory_attribute"], "Chemical_potency": ["Chemical_entity", "Degree", "Time", "Circumstances", "Place"], "Choosing": ["Depictive", "Cognizer", "Chosen", "Explanation", "Possibilities", "Means", "Place", "Larger_purpose", "Time", "Manner", "Topic", "Inherent_purpose", "Contrast"], "Circumscribed_existence": ["Entity", "Time", "Place", "Circumstances", "Descriptor"], "Citing": ["Defendant", "Court", "Authority", "Charges", "Fine", "Place", "Time"], "Claim_ownership": ["Claimant", "Property", "Beneficiary", "Role"], "Clemency": ["Offender", "Crime", "Executive_authority", "Explanation", "Time", "Means", "Manner", "Purpose", "Place"], "Closure": ["Containing_object", "Agent", "Fastener", "Enclosed_region", "Manipulator", "Container_portal", "Degree", "Instrument", "Manner", "Means", "Place", "Time", "Result", "Beneficiary", "Circumstances", "Depictive"], "Clothing": ["Garment", "Wearer", "Style", "Material", "Descriptor", "Subregion", "Use", "Body_location", "Creator", "Time_of_creation", "Name"], "Clothing_parts": ["Clothing", "Subpart", "Material", "Subregion", "Wearer", "Body_location", "Descriptor"], "Co-association": ["Participant1", "Participants", "Participant2", "Place", "Time", "Institution"], "Cogitation": ["Cognizer", "Topic", "Degree", "Depictive", "Manner", "Means", "Result", "Medium", "Purpose", "Time"], "Cognitive_connection": ["Concept_1", "Concept_2", "Point_of_view", "Circumstances", "Concepts", "Degree", "Specification"], "Cognitive_impact": ["Phenomenon", "Experiencer", "Judgment", "Circumstances", "Manner", "Frequency"], "Coincidence": ["State_of_affairs", "Time", "Place", "Manner"], "Collaboration": ["Partner_1", "Partner_2", "Undertaking", "Manner", "Partners", "Time", "Place", "Duration", "Degree", "Means"], "Collocation_image_schema": ["Profiled_region", "Ground"], "Colonization": ["Colonists", "Homeland", "New_area", "Time", "Degree", "Purpose", "Descriptor", "Explanation"], "Color": ["Entity", "Color", "Type", "Comparand", "Color_qualifier", "Descriptor", "Cause", "Degree", "Subregion", "Attribute"], "Color_qualities": ["Color", "Degree", "Described_entity"], "Come_down_with": ["Protagonist", "Disease", "Source", "Time", "Place", "Manner"], "Come_into_effect": ["Binding_principle", "Manner", "Place", "Time", "Depictive", "Duration", "Result", "Initial_subevent", "Frequency", "Explanation"], "Come_together": ["Individuals", "Configuration", "Means", "Place", "Time", "Purpose", "Iterations", "Frequency", "Manner", "Topic", "Party_1", "Party_2", "Explanation", "Particular_iteration"], "Coming_to_be": ["Entity", "Place", "Time", "Explanation", "Components", "Duration_of_final_state", "Role", "Period_of_iterations", "Manner"], "Coming_to_believe": ["Cognizer", "Evidence", "Content", "Topic", "Degree", "Depictive", "Manner", "Means", "Time", "Medium", "Place"], "Coming_up_with": ["Cognizer", "Idea", "Purpose", "Material", "Amount_of_progress", "Depictive", "Manner", "Means", "Result", "Location_of_appearance", "Place", "Time"], "Commemorative": ["Honored_entity", "Dedicated_type", "Dedicated_entity"], "Commerce_buy": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner", "Recipient", "Period_of_iterations", "Imposed_purpose"], "Commerce_collect": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner"], "Commerce_goods-transfer": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit", "Time", "Place", "Explanation", "Manner", "Purpose", "Exchangers"], "Commerce_money-transfer": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit", "Place", "Time", "Explanation", "Manner", "Purpose", "Exchangers"], "Commerce_pay": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner", "Circumstances", "Frequency"], "Commerce_scenario": ["Buyer", "Seller", "Money", "Goods", "Rate", "Unit", "Means", "Manner", "Purpose"], "Commerce_sell": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner", "Result", "Period_of_iterations", "Imposed_purpose", "Back", "Relay"], "Commercial_transaction": ["Buyer", "Goods", "Means", "Money", "Rate", "Seller", "Unit"], "Commitment": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Manner", "Time", "Place", "Purpose", "Period_of_iterations"], "Committing_crime": ["Perpetrator", "Crime", "Purpose", "Manner", "Means", "Explanation", "Time", "Place", "Instrument", "Frequency"], "Commonality": ["Entities", "Commonality", "Entity_1", "Entity_2"], "Communicate_categorization": ["Speaker", "Category", "Item", "Means", "Medium", "Time", "Place", "Circumstances", "Criteria", "Manner", "Duration"], "Communication": ["Communicator", "Addressee", "Message", "Topic", "Medium", "Amount_of_information", "Depictive", "Manner", "Means", "Time", "Duration", "Frequency", "Place", "Purpose", "Quote"], "Communication_manner": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Manner", "Depictive", "Degree", "Result", "Back", "Duration", "Time", "Place", "Means"], "Communication_means": ["Communicator", "Addressee", "Message", "Topic", "Manner", "Means", "Explanation", "Depictive"], "Communication_noise": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Depictive", "Manner", "Internal_cause", "Degree", "Means", "Voice", "Place", "Explanation", "Back", "Time"], "Communication_response": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Trigger", "Manner", "Depictive", "Means", "Internal_cause", "Place", "Time", "Purpose", "Duration"], "Commutation": ["Offender", "Executive_authority", "Explanation", "Time", "Original_punishment", "New_punishment", "Manner", "Place", "Means"], "Commutative_process": ["Term1", "Term2", "Terms", "Calculator"], "Commutative_statement": ["Result", "Term1", "Term2", "Terms"], "Compatibility": ["Item_1", "Item_2", "Items", "Degree", "Parameter"], "Competition": ["Participant_1", "Participant_2", "Participants", "Competition", "Score", "Rank", "Prize", "Venue", "Place", "Manner", "Means", "Time", "Duration", "Purpose", "Degree", "Frequency"], "Complaining": ["Complainer", "Addressee", "Complaint", "Topic", "Manner", "Frequency", "Means", "Internal_cause", "Medium", "Depictive", "Time", "Place", "Particular_iteration", "Degree", "Occasion", "Explanation", "Result"], "Completeness": ["Degree", "Whole", "Time"], "Compliance": ["Protagonist", "Act", "State_of_affairs", "Norm", "Degree", "Depictive", "Manner", "Means", "Result", "Time", "Explanation", "Judge"], "Concessive": ["Conceded_state_of_affairs", "Topic", "Main_assertion"], "Condition_symptom_relation": ["Patient", "Medical_condition", "Symptom", "Group", "Time", "Place", "Frequency", "Extent", "Explanation", "Influence"], "Conditional_occurrence": ["Profiled_possibility", "Consequence", "Pragmatic_marker"], "Conditional_scenario": ["Profiled_possibility", "Opposite_possibility", "Consequence", "Anti_consequence"], "Conduct": ["Agent", "Manner", "Circumstances", "Affected_party", "Explanation", "Time", "Place", "Means", "Domain", "Degree", "Standard"], "Conferring_benefit": ["Benefactor", "Beneficiary", "Beneficial_situation", "Degree", "Domain", "Subset"], "Confronting_problem": ["Issue", "Agent", "Place", "Purpose", "Time", "Means", "Manner", "Domain", "Frequency", "Period_of_iterations", "Result", "Particular_iteration", "Explanation", "Event_description"], "Connecting_architecture": ["Part", "Whole", "Descriptor", "Orientation", "Material", "Creator", "Source", "Connected_locations", "Direction", "Goal"], "Connectors": ["Connector", "Connected_item", "Fixed_location", "Use", "Material", "Type", "Name", "Creator", "Time_of_creation", "Descriptor"], "Conquering": ["Conqueror", "Theme", "Degree", "Manner", "Means", "Place", "Time", "Purpose", "Instrument", "Depictive", "Frequency"], "Contact_image_schema": ["Profiled_region", "Ground"], "Contacting": ["Communicator", "Medium", "Addressee", "Address", "Communication", "Purpose", "Topic", "Location_of_protagonist", "Place", "Time", "Intermediary", "Depictive", "Frequency", "Manner", "Means"], "Container_focused_placing": ["Agent", "Theme", "Source", "Path", "Goal", "Degree", "Depictive", "Manner", "Means", "Result", "Explanation", "Time", "Place", "Purpose", "Instrument", "Subregion", "Cause"], "Container_focused_removing": ["Agent", "Theme", "Source", "Path", "Goal", "Degree", "Depictive", "Manner", "Means", "Result", "Instrument", "Cause", "Place", "Time", "Containing_event", "Explanation", "Circumstances"], "Containers": ["Container", "Contents", "Material", "Type", "Relative_location", "Construction", "Owner", "Use", "Part", "Descriptor"], "Containing": ["Container", "Contents", "Time"], "Containment_scenario": ["Container", "Interior", "Portal", "Contents", "Time"], "Contingency": ["Outcome", "Determinant", "Degree", "Circumstances"], "Continued_state_of_affairs": ["State_of_affairs", "Reference_occasion", "Circumstances"], "Contrary_circumstances": ["Event", "Adversity", "Contrary_circumstances"], "Contrition": ["Experiencer", "Action", "Degree", "Expressor", "Authenticity", "Emotional_state", "Depictive", "Time", "Manner"], "Control": ["Controlling_entity", "Dependent_entity", "Controlling_variable", "Dependent_situation", "Dependent_variable", "Controlling_situation", "Degree", "Time", "Place", "Manner"], "Controller_object": ["Control", "Use", "Creator", "Time_of_creation", "Name", "Type", "Material", "Controlled_entity"], "Convey_importance": ["Speaker", "Addressee", "Message", "Medium", "Manner", "Means", "Time", "Iterations", "Degree", "Place", "Circumstances", "Frequency", "Period_of_iterations", "Event_description", "Particular_iteration"], "Convoy": ["Vehicles", "Convoy", "Aggregate_property", "Name", "Domain", "Possessor", "Cargo", "Source", "Path", "Goal", "Direction", "Support", "Place"], "Cooking_creation": ["Cook", "Produced_food", "Heating_instrument", "Container", "Place", "Means", "Purpose", "Recipient", "Time", "Degree", "Manner", "Ingredients"], "Corporal_punishment": ["Agent", "Instrument", "Means", "Place", "Purpose", "Time", "Evaluee", "Manner", "Reason", "Result", "Body_part", "Depictive", "Degree", "Severity"], "Correctness": ["Information", "Degree", "Domain", "Parameter", "Frequency", "Circumstances", "Source", "Re-encoding", "Manner", "Time", "Medium", "Communicative_force", "Result", "Communicative_act", "Topic"], "Corroding": ["Initial_state", "Duration", "Place", "Explanation", "Result", "Time", "Patient", "Degree", "Subregion", "Speed"], "Corroding_caused": ["Degree", "Duration", "Initial_state", "Place", "Explanation", "Result", "Time", "Patient", "Speed", "Subregion", "Manner", "Means", "Purpose", "Cause", "Agent", "Instrument"], "Cotheme": ["Theme", "Cotheme", "Source", "Path", "Goal", "Manner", "Distance", "Area", "Depictive", "Event", "Means", "Result", "Mode_of_transportation", "Speed", "Road", "Duration", "Time", "Purpose", "Following_distance", "Handle", "Place", "Explanation", "Direction"], "Counterattack": ["Victim", "Weapon", "Assailant", "Manner", "Means", "Place", "Purpose", "Explanation", "Time", "Source", "Depictive", "Re-encoding", "Result", "Containing_event", "Particular_iteration", "Circumstances", "Iterations", "Event_description", "Path"], "Court_examination": ["Questioner", "Witness", "Topic", "Time", "Place", "Manner", "Purpose", "Means", "Duration"], "Craft": ["Activity", "Practitioner", "Place", "Descriptor", "Culture"], "Create_physical_artwork": ["Creator", "Time", "Representation", "Manner", "Role", "Depictive", "Location_of_representation", "Purpose", "Place", "Explanation", "Instrument", "Means", "Descriptor", "Reference"], "Create_representation": ["Representation", "Creator", "Time", "Represented", "Depictive_of_represented", "Manner", "Role", "Depictive", "Material", "Purpose", "Place", "Instrument", "Means", "Iterations", "Reference"], "Creating": ["Components", "Created_entity", "Depictive", "Means", "Manner", "Place", "Time", "Cause", "Instrument", "Co-participant", "Creator", "Purpose", "Imposed_purpose", "Beneficiary", "Role", "Period_of_iterations", "Frequency", "Circumstances", "Recipient"], "Crime_scenario": ["Suspect", "Perpetrator", "Crime", "Charge", "Authorities"], "Criminal_investigation": ["Investigator", "Incident", "Time", "Duration", "Suspect"], "Criminal_process": ["Court", "Place", "Time", "Defendant", "Judge", "Prosecution", "Charges", "Defense", "Jury", "Offense", "Authorities", "Suspect", "Witness", "Victim"], "Cure": ["Healer", "Patient", "Affliction", "Treatment", "Degree", "Manner", "Medication", "Reciprocation", "Place", "Purpose", "Time", "Body_part", "Duration"], "Custom": ["Behavior", "Protagonist", "Domain", "Descriptor", "Place", "Society"], "Cutting": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Item", "Result", "Manner", "Pieces"], "Cycle_of_existence_scenario": ["Entity"], "Cycle_of_life_and_death": ["Protagonist"], "Damaging": ["Agent", "Degree", "Instrument", "Manner", "Means", "Place", "Purpose", "Explanation", "Subregion", "Time", "Patient", "Character_of_end_state", "Result", "Cause"], "Daring": ["Agent", "Action", "Purpose", "Explanation", "Time", "Place", "Manner"], "Dead_or_alive": ["Explanation", "Degree", "Protagonist", "Figure", "Time"], "Death": ["Protagonist", "Explanation", "Degree", "Depictive", "Manner", "Result", "Place", "Time", "Containing_event", "Maleficiary"], "Deception_end": ["Victim", "Deceiver", "Phenomenon", "Topic", "Time", "Place"], "Deception_scenario": ["Victim", "Deceiver", "Phenomenon", "Topic"], "Deception_success": ["Deceiver", "Victim", "Topic", "Means", "Time", "Place", "Phenomenon"], "Deciding": ["Cognizer", "Decision", "Possibilities", "Time", "Place", "Manner", "Inherent_purpose", "Circumstance", "Explanation"], "Defending": ["Defender", "Instrument", "Assailant", "Manner", "Means", "Place", "Purpose", "Explanation", "Time", "Location_of_protagonist", "Depictive", "Victim", "Location_of_assailant"], "Degree": ["Gradable_attribute"], "Degree_of_processing": ["Alterant", "Material", "Degree"], "Delimitation_of_diversity": ["Item", "Variable", "Limit1", "Limit2", "Limits", "Degree"], "Delimited_state_scenario": ["Duration", "State"], "Delivery": ["Deliverer", "Goal", "Theme", "Vehicle", "Depictive", "Manner", "Recipient", "Purpose", "Explanation", "Time", "Cotheme", "Container", "Place", "Speed", "Circumstances", "Source", "Means", "Path", "Beneficiary", "Event_description", "Period_of_iterations"], "Deny_or_grant_permission": ["Authority", "Protagonist", "Action", "Time", "Place", "Purpose", "Event_description", "Degree", "Explanation", "Circumstances", "Allowed_category", "Period_of_iterations", "Frequency", "Depictive", "Manner", "Means"], "Departing": ["Theme", "Source", "Path", "Goal", "Manner", "Means", "Speed", "Mode_of_transportation", "Cotheme", "Distance", "Time", "Frequency", "Journey", "Place", "Depictive", "Explanation", "Purpose", "Duration_of_final_state", "Iterations", "Circumstances", "Re-encoding", "Containing_event", "Event_description"], "Deserving": ["State_of_affairs", "Action", "Degree", "Domain", "Circumstances"], "Desirability": ["Evaluee", "Degree", "Circumstances", "Parameter", "Comparison_set", "Affected_party", "Depictive"], "Desirable_event": ["State_of_affairs", "Circumstances", "Purpose", "Degree"], "Desiring": ["Experiencer", "Event", "Focal_participant", "Degree", "Manner", "Explanation", "Purpose_of_event", "Time_of_event", "Location_of_event", "Time", "Place", "Duration", "Role_of_focal_participant"], "Destiny": ["State_of_affairs", "Protagonist", "Descriptor", "Role", "Time", "Place", "Manner"], "Destroying": ["Destroyer", "Degree", "Instrument", "Manner", "Means", "Place", "Purpose", "Explanation", "Result", "Subregion", "Time", "Patient", "Cause", "Role", "Frequency", "Containing_event", "Depictive", "Medium"], "Detaching": ["Agent", "Item", "Result", "Source", "Items", "Means", "Manner", "Place", "Purpose", "Time", "Instrument", "Degree"], "Detaining": ["Authorities", "Charges", "Place", "Suspect", "Time", "Holding_location", "Duration", "Legal_basis", "Purpose", "Dependent_state"], "Detonate_explosive": ["Agent", "Place", "Purpose", "Time", "Means", "Manner", "Explosive", "Outcome", "Containing_event", "Frequency", "Period_of_iterations", "Circumstances", "Depictive", "Explanation", "Degree", "Duration", "Instrument", "Victim"], "Differentiation": ["Cognizer", "Phenomenon_1", "Phenomenon_2", "Phenomena", "Quality", "Degree", "Depictive", "Manner", "Means", "Circumstances"], "Difficulty": ["Activity", "Degree", "Circumstances", "Experiencer", "Parameter", "Standard", "Time"], "Dimension": ["Dimension", "Object", "Measurement", "Locus", "Domain", "Degree"], "Direction": ["Landmark", "Path", "Domain", "Independent_variable", "Distance"], "Directional_locative_relation": ["Ground", "Figure", "Accessibility", "Direction", "Time", "Distance", "Deixis", "Directness", "Temporal_profile"], "Disaster_scenario": ["Responder", "Victim", "Place", "Response", "Time", "Duration", "Disaster"], "Discussion": ["Interlocutor_1", "Interlocutor_2", "Interlocutors", "Topic", "Language", "Amount_of_discussion", "Depictive", "Manner", "Means", "Duration", "Purpose", "Time", "Place", "Means_of_communication", "Period_of_iterations", "Containing_event", "Frequency", "Domain"], "Disembarking": ["Traveller", "Vehicle", "Manner", "Path", "Duration_of_final_state", "Depictive", "Time", "Cotheme", "Purpose", "Place", "Goal"], "Disgraceful_situation": ["State_of_affairs", "Protagonist", "Degree", "Explanation", "Judge"], "Dispersal": ["Agent", "Individuals", "Source", "Goal_area", "Cause", "Manner", "Time", "Means", "Result", "Path", "Place", "Explanation", "Distance", "Speed"], "Distant_operated_IED": ["Bomb", "Use", "Type", "Material", "Detonator", "Part", "Name", "Time_of_creation", "Creator", "Descriptor", "Target"], "Distinctiveness": ["Feature", "Entity", "Degree", "Duration"], "Distributed_abundance": ["Theme", "Location", "Degree", "Time"], "Distributed_position": ["Theme", "Location", "Subregion", "Time", "Deixis", "Region_quantification", "Temporal_profile"], "Diversity": ["Group", "Dimension", "Degree", "Time", "Place", "Manner", "Explanation", "Depictive"], "Documents": ["Bearer", "Issuer", "Obligation", "Right", "Status", "Specification", "Document", "Medium", "Descriptor"], "Dodging": ["Dodger", "Bad_entity", "Degree", "Manner", "Place", "Time", "Purpose", "Explanation", "Means"], "Domain": ["Predicate", "Domain", "Explanation"], "Dominate_competitor": ["Agent", "Patient", "Situation", "Duration", "Manner", "Place", "Time", "Degree"], "Dominate_situation": ["Agent", "Situation", "Time", "Duration", "Place", "Manner", "Degree"], "Domination": ["Agent", "Situation", "Competitor", "Time", "Place", "Manner", "Duration", "Degree"], "Dough_rising": ["Dough", "Duration_of_activity", "Time", "Speed", "Manner", "Circumstances", "Size_change", "Explanation"], "Downing": ["Agent", "Patient", "Depictive", "Result", "Means", "Manner", "Time", "Place", "Cause", "Instrument"], "Dressing": ["Wearer", "Clothing", "Body_location", "Manner", "Depictive", "Means", "Result", "Duration", "Place", "Explanation", "Time", "Purpose"], "Drop_in_on": ["Visitor", "Normal_location", "Path", "Host", "Manner", "Means", "Mode_of_transportation", "Time", "Purpose", "Host_location", "Containing_event", "Frequency", "Duration", "Place", "Particular_iteration", "Explanation"], "Dunking": ["Agent", "Theme", "Substance", "Manner", "Time"], "Duplication": ["Creator", "Original", "Copy", "Source", "Goal", "Characterization", "Means", "Manner", "Result", "Depictive", "Degree", "Purpose", "Time", "Place", "Explanation", "Instrument", "Duration", "Fidelity", "Iterations", "Frequency", "Co-participant"], "Duration_description": ["Eventuality", "Period", "Degree"], "Duration_relation": ["Eventuality", "Period", "Duration", "Entity", "User"], "Duration_scenario": ["Period", "Attribute", "Duration", "Degree", "Unit", "Count", "Event"], "Dying": ["Protagonist", "Place", "Explanation", "Time", "Duration", "Manner", "Frequency"], "Dynamic_situation_scenario": ["Time", "Entity", "Explanation", "Event", "Place"], "Dynamism": ["Action", "Exerter", "Descriptor", "Degree", "Time", "Force", "Circumstances", "Place", "Domain"], "Earnings_and_losses": ["Buyer", "Earner", "Earnings", "Goods", "Rate", "Unit", "Means", "Manner", "Purpose", "Place", "Time", "Containing_event", "Explanation"], "Eclipse": ["Obstruction", "Eclipsed", "Vantage_point", "Degree", "Subregion"], "Economy": ["Political_region", "Economy", "Domain", "Market_type", "Descriptor"], "Education_teaching": ["Teacher", "Student", "Institution", "Subject", "Level", "Qualification", "Degree", "Depictive", "Manner", "Means", "Result", "Time", "Place", "Duration", "Skill", "Precept", "Fact", "Material", "Role", "Course", "Purpose"], "Electricity": ["Electricity", "Source", "Descriptor", "Inherent_purpose"], "Elusive_goal": ["Experiencer", "Desired_goal", "Time", "Place", "Manner", "Degree", "Duration"], "Emanating": ["Area", "Degree", "Depictive", "Distance", "Duration", "Emission", "Goal", "Manner", "Path", "Speed", "Time", "Carrier", "Source", "Form", "Result"], "Emergency": ["Undesirable_event", "Entity", "Circumstances", "Place", "Domain", "Experiencer", "Time", "Manner", "Timespan", "Duration", "Frequency"], "Emergency_fire": ["Fire", "Fuel", "Manner", "Name", "Place", "Time"], "Emitting": ["Manner", "Time", "Source_emitter", "Emission", "Area", "Degree", "Depictive", "Distance", "Goal", "Means", "Path", "Sub-source", "Speed", "Explanation", "Duration", "Carrier", "Form"], "Emotion_active": ["Experiencer", "Topic", "Degree", "Manner", "Result", "Means"], "Emotion_directed": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Event", "Parameter", "Manner", "Frequency"], "Emotion_heat": ["Experiencer", "Emotion", "Cause", "Seat_of_emotion", "Degree", "Manner", "Topic", "Expression"], "Emotions": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Event", "Parameter", "Manner"], "Emotions_by_possibility": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Event", "Parameter", "Manner", "Time"], "Emotions_by_stimulus": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Event", "Parameter", "Manner", "Time"], "Emotions_of_mental_activity": ["Experiencer", "Stimulus", "Degree", "Empathy_target", "Explanation", "Circumstances", "Parameter", "Manner", "Time", "Event_description"], "Emotions_success_or_failure": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Event", "Parameter", "Manner", "Time", "Frequency"], "Emphasizing": ["Consideration", "Degree", "Undertaking", "Explanation", "Agent", "Purpose", "Means", "Competing_consideration", "Time", "Place", "Manner", "Artifact", "Action", "Frequency", "Depictive"], "Employee_scenario": ["Compensation", "Employee", "Employer", "Position", "Task", "Field", "Duration"], "Employer_scenario": ["Compensation", "Employee", "Employer", "Position", "Task", "Field", "Duration"], "Employing": ["Compensation", "Employee", "Employer", "Field", "Manner", "Place", "Position", "Purpose", "Task", "Time", "Duration", "Contract_basis", "Descriptor", "Subgroup"], "Employment_continue": ["Employee", "Employer", "Compensation", "Duration", "Field", "Manner", "Place", "Position", "Task", "Time"], "Employment_end": ["Employee", "Employer", "Manner", "Place", "Position", "Time"], "Employment_scenario": ["Compensation", "Employee", "Employer", "Position", "Task", "Field", "Duration"], "Employment_start": ["Employee", "Employer", "Compensation", "Field", "Manner", "Place", "Position", "Task", "Time"], "Emptying": ["Agent", "Theme", "Source", "Path", "Goal", "Degree", "Depictive", "Manner", "Means", "Result", "Instrument", "Cause", "Place", "Time", "Containing_event", "Explanation", "Circumstances", "Purpose"], "Encoding": ["Speaker", "Message", "Manner", "Medium", "Addressee", "Means"], "Encounter": ["Group", "Individuals", "Party_1", "Party_2", "Manner", "Means", "Time", "Place"], "Endangering": ["Cause", "Valued_entity", "Agent", "Endangering_act", "Manner", "Place", "Time"], "Endeavor_failure": ["Endeavor", "Explanation", "Time", "Place", "Circumstances", "Manner", "Containing_event", "Depictive", "Degree", "Means"], "Enforcing": ["Rule", "Duration", "Time", "Place", "Circumstances", "Explanation", "Focal_participant", "Agent", "Manner", "Means", "Purpose", "Degree", "Medium", "Outcome"], "Entering_of_plea": ["Judge", "Accused", "Charges", "Plea", "Time", "Place", "Court"], "Entity": ["Constituent_parts", "Formational_cause", "Name", "Entity", "Type"], "Entourage": ["Individuals", "Entourage", "Aggregate_property", "Name", "Container_possessor", "Domain", "Attended_person"], "Erasing": ["Agent", "Information", "Cause", "Document", "Manner", "Time", "Place", "Means"], "Escaping": ["Escapee", "Goal", "Means", "Manner", "Undesirable_location", "Speed", "Vehicle", "Time", "Purpose", "Place", "Depictive", "Path", "Degree", "Distance", "Explanation"], "Estimated_value": ["Cognizer", "Value", "Item", "Evidence", "Time", "Place", "Estimation", "Question"], "Estimating": ["Cognizer", "Feature", "Value", "Item", "Evidence", "Time", "Place", "Estimation", "Question", "Means", "Manner", "Circumstances", "Explanation", "Result", "Frequency"], "Evading": ["Area", "Path", "Evader", "Mode_of_transportation", "Means", "Pursuer", "Degree", "Manner", "Purpose", "Explanation", "Circumstances", "Time", "Depictive", "Speed", "Capture"], "Evaluative_comparison": ["Profiled_item", "Standard_item", "Attribute", "Degree", "Standard_attribute", "Profiled_attribute", "Comparison_set", "Place", "Time", "Manner"], "Event": ["Event", "Place", "Explanation", "Time", "Duration", "Manner", "Frequency", "Timespan"], "Event_endstate": ["Entity", "State"], "Event_initial_state": ["Entity", "State"], "Event_instance": ["Instance", "Event", "Instance_prop", "Iteration_count"], "Eventive_affecting": ["Event", "Place", "Time", "Explanation", "Entity", "Manner", "Frequency"], "Eventive_cognizer_affecting": ["Cognizer", "Content", "Event", "Degree", "Manner", "Time", "Place"], "Evidence": ["Support", "Proposition", "Degree", "Manner", "Means", "Depictive", "Result", "Domain_of_relevance", "Cognizer"], "Evoking": ["Cognizer", "Phenomenon", "Degree", "Manner", "Duration", "Explanation", "Time", "Stimulus", "Feature"], "Examination": ["Examiner", "Examinee", "Knowledge", "Qualification", "Examination", "Means", "Purpose", "Place", "Time", "Manner"], "Exchange": ["Exchanger_1", "Place", "Purpose", "Time", "Means", "Manner", "Exchanger_2", "Exchangers", "Depictive", "Theme_1", "Theme_2", "Themes", "Frequency", "Period_of_iterations"], "Exchange_currency": ["Money_owner", "Sum_1", "Source_currency", "Sum_2", "Exchange_service", "Target_currency", "Place", "Time", "Manner", "Exchange_rate", "Means", "Purpose", "Money"], "Exclude_member": ["Member", "Group", "Authority", "Time", "Explanation", "Place", "Means", "Depictive"], "Excreting": ["Excreta", "Excreter", "Source", "Path", "Goal", "Manner", "Means", "Place", "Time", "Purpose", "Frequency", "Degree"], "Execute_plan": ["Plan", "Duration", "Time", "Place", "Circumstances", "Explanation", "Focal_participant", "Agent", "Manner", "Means", "Purpose", "Degree", "Medium", "Outcome"], "Execution": ["Executioner", "Instrument", "Means", "Place", "Purpose", "Execution", "Time", "Degree", "Depictive", "Executed", "Manner", "Explanation", "Result"], "Exemplar": ["Instance", "Type", "Domain", "Instance_prop"], "Exemplariness": ["Entity", "Comparison_set", "Domain", "Degree"], "Exercising": ["Agent", "Body_part", "Means", "Manner", "Time", "Place", "Frequency", "Subtype", "Purpose"], "Existence": ["Entity", "Time", "Duration", "Inherent_purpose", "State", "Explanation", "Place", "Circumstances", "Viewpoint", "Concessive", "Depictive"], "Expansion": ["Item", "Dimension", "Group", "Initial_size", "Result_size", "Size_change", "Rate", "Duration", "Time", "Co-variable", "Manner", "Degree", "Path", "Goal"], "Expectation": ["Cognizer", "Phenomenon", "Degree", "Depictive", "Manner", "Evidence", "Place", "Time", "Topic", "Time_of_phenomenon"], "Expected_location_of_person": ["Location", "Person", "Time", "Duration"], "Expend_resource": ["Resource", "Agent", "Purpose", "Manner", "Place", "Means", "Time", "Degree"], "Expensiveness": ["Goods", "Payer", "Asset", "Origin", "Degree", "Intended_event", "Time", "Rate"], "Experience_bodily_harm": ["Body_part", "Containing_event", "Manner", "Place", "Experiencer", "Time", "Injuring_entity", "Severity", "Iterations", "Duration", "Frequency"], "Experiencer_focus": ["Experiencer", "Content", "Explanation", "Degree", "Manner", "Expressor", "Parameter", "Topic", "State", "Event", "Circumstances", "Time"], "Experiencer_obj": ["Experiencer", "Stimulus", "Degree", "Depictive", "Manner", "Means", "Result", "Circumstances", "Explanation", "Time"], "Experimentation": ["Experimenter", "Control_group", "Control_group_member", "Treatment_group", "Treated_individual", "Duration", "Place", "Time", "Phenomenon", "Result", "Descriptor", "Experiment", "Hypothesis", "Subjects", "Instrument", "Topic"], "Expertise": ["Protagonist", "Skill", "Knowledge", "Degree", "Behavior_product", "Focal_participant", "Role", "Manner", "Judge", "Time"], "Explaining_the_facts": ["Fact", "State_of_affairs", "Degree", "Manner", "Means", "Viewpoint", "Question", "Concessive"], "Explosion": ["Explosive", "Time", "Place", "Victim", "Containing_event", "Means", "Manner", "Degree", "Frequency"], "Exporting": ["Exporter", "Vehicle", "Manner", "Means", "Goods", "Purpose", "Explanation", "Time", "Depictive", "Importing_area", "Path", "Exporting_area", "Re-encoding", "Type"], "Expressing_publicly": ["Communicator", "Addressee", "Content", "Manner", "Means", "Internal_cause", "Medium", "Depictive", "Time", "Place", "Particular_iteration", "Purpose", "Frequency", "Circumstances", "Explanation"], "Extradition": ["Authorities", "Current_jurisdiction", "Crime_jurisdiction", "Suspect", "Purpose", "Explanation", "Legal_basis", "Time", "Manner", "Depictive", "Means", "Place"], "Extreme_point": ["Entity", "Marker"], "Extreme_value": ["Entity", "Attribute", "Value", "Period", "Degree", "Domain", "Descriptor", "Depictive", "Explanation"], "Facial_expression": ["Manner", "Degree", "Expression", "Possessor", "Internal_cause", "Subregion", "Conveyed_emotion", "Intended_perceiver", "External_cause", "Duration"], "Fairness_evaluation": ["Actor", "Action", "Grounds", "Affected_party", "Degree", "Parameter", "Manner"], "Fall_asleep": ["Place", "Sleeper", "Time"], "Fall_for": ["Victim", "Deception", "Time", "Place", "Manner", "Degree"], "Fame": ["Entity", "Degree", "Time", "Circumstances", "Explanation", "Reason", "Duration", "Place", "Role", "Means"], "Familiarity": ["Entity", "Cognizer", "Degree", "Role", "Depictive", "Context"], "Fastener": ["Container", "Fastener", "Container_portal", "Material", "Descriptor", "Creator", "Time_of_creation", "Name", "Type", "Use"], "Fear": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Parameter", "Manner", "Time"], "Feeling": ["Experiencer", "Emotion", "Emotional_state", "Evaluation", "Explanation"], "Feigning": ["Agent", "Original", "Copy", "Manner", "Means", "Degree", "State_of_affairs", "Purpose", "Explanation", "Frequency", "Time", "Period_of_iterations", "Duration", "Depictive", "Circumstances", "Place"], "Fields": ["Activity", "Practitioner", "Salient_entity", "Work", "Type", "Place", "Time"], "Fighting_activity": ["Combatants", "Fight", "Time", "Place", "Manner", "Degree", "Salient_activity", "Issue", "Duration", "Means", "Instrument", "Purpose"], "Filling": ["Agent", "Theme", "Source", "Path", "Goal", "Degree", "Depictive", "Manner", "Means", "Result", "Explanation", "Time", "Place", "Purpose", "Instrument", "Subregion", "Cause"], "Fining": ["Speaker", "Instrument", "Means", "Place", "Purpose", "Time", "Payer", "Manner", "Reason", "Result", "Fine", "Rate", "Unit", "Event", "Degree"], "Finish_competition": ["Competitor", "Opponent", "Competitors", "Score", "Margin", "Rank", "Prize", "Competition", "Means", "Manner", "Time", "Place", "Venue", "Particular_iteration"], "Finish_game": ["Game", "Player", "Manner", "Means", "Time", "Place", "Purpose", "Degree"], "Fire_break": ["Fire_break", "Creator", "Material", "Name", "Time_of_creation", "Type", "Use"], "Fire_burning": ["Place", "Time", "Fire", "Fuel", "Manner", "Name", "Duration", "Depictive", "Result", "Subregion"], "Fire_emergency_scenario": ["Fire", "Duration", "Place", "Responder", "Response", "Time", "Victim"], "Fire_end_scenario": ["Place", "Time", "Fire", "Degree"], "Fire_going_out": ["Depictive", "Manner", "Result", "Place", "Time", "Fire", "Degree", "Explanation", "Circumstances", "Containing_event"], "Fire_stopping_scenario": ["Place", "Time", "Agent", "Fire", "Degree"], "Firefighting": ["Fire", "Firefighter", "Time", "Place", "Manner", "Purpose", "Instrument", "Depictive"], "Firing": ["Employee", "Employer", "Manner", "Place", "Position", "Purpose", "Task", "Time", "Explanation", "Means"], "Firing_point": ["Firing_point", "Relative_location", "Descriptor", "Name", "Detonator"], "First_experience": ["Experience", "Context"], "First_rank": ["Item", "Limits_of_consideration", "Contrast_set", "Attribute"], "Fleeing": ["Self_mover", "Source", "Path", "Goal", "Manner", "Distance", "Time", "Cotheme", "Speed", "Depictive", "Means", "Result", "Internal_cause", "Duration", "Purpose", "Place", "Explanation", "External_cause", "Direction", "Means_of_motion"], "Fluidic_motion": ["Area", "Distance", "Duration", "Goal", "Path", "Source", "Speed", "Fluid", "Time", "Configuration", "Manner", "Explanation", "Depictive", "Result", "Place"], "Food": ["Descriptor", "Type", "Food", "Constituent_parts"], "Food_gathering": ["Gatherer", "Crop", "Duration", "Manner", "Means", "Place", "Time", "Purpose", "Frequency", "Particular_iteration", "Source", "Circumstances", "Degree", "Beneficiary"], "Foreign_or_domestic_country": ["Constituent_parts", "Container_possessor", "Current_country", "Name", "Relative_location", "Descriptor", "Population", "Discourse_salient_country"], "Forging": ["Agent", "Forgery", "Manner", "Means", "Degree", "Explanation", "Purpose", "Standard", "Instrument", "Place", "Time", "Fidelity", "Source"], "Forgiveness": ["Judge", "Evaluee", "Offense"], "Forgoing": ["Forgoer", "Desirable", "Degree", "Manner", "Means", "Place", "Time", "Purpose", "Explanation", "Circumstances"], "Forming_relationships": ["Partner_1", "Partner_2", "Partners", "Means", "Time", "Manner", "Depictive", "Duration_of_final_state", "Place", "Purpose", "Communicative_force", "Frequency", "Circumstances", "Explanation", "Iterations"], "Fragmentation_scenario": ["Whole", "Parts", "Part_1", "Part_2", "Criterion", "Depictive", "Manner", "Degree", "Result", "Time", "Place", "Resistant_surface", "Means"], "Freeing_from_confinement": ["Agent", "Theme", "Manner", "Means", "Explanation", "Purpose", "Place", "Time", "Location_of_confinement", "Concessive", "Circumstances"], "Frequency": ["Event", "Degree", "Interval", "Time_span", "Rate", "Salient_entity", "Attribute", "Time", "Group"], "Friction": ["Theme", "Static_object", "Themes", "Manner", "Place", "Degree"], "Friendly_or_hostile": ["Side_1", "Side_2", "Degree", "Time", "Explanation", "Descriptor", "Concessive", "Place", "Sides"], "Front_for": ["Front", "Illicit_organization", "Illicit_activity", "Time", "Purpose", "Place", "Means", "Manner"], "Frugality": ["Resource_controller", "Behavior", "Resource", "Degree", "Judge"], "Fugitive": ["Fugitive", "Prison", "Authorities", "Crime", "Place", "Time", "Manner", "Explanation", "Duration"], "Fullness": ["Container", "Contents", "Degree", "Time", "Frequency", "Duration"], "Function": ["Entity", "Activity", "Role", "Descriptor", "Duration", "Manner", "Means"], "Funding": ["Supplier", "Recipient", "Imposed_purpose", "Circumstances", "Explanation", "Manner", "Means", "Period_of_iterations", "Place", "Source", "Time", "Money", "Purpose"], "Gathering_up": ["Aggregate", "Agent", "Time", "Means", "Place", "Individuals", "Manner", "Instrument", "Purpose", "Frequency", "Containing_event", "Goal", "Co-participant", "Path", "Source"], "Gesture": ["Communicator", "Addressee", "Message", "Manner", "Means", "Body_part", "Time", "Place", "Indicated_entity", "Instrument"], "Get_a_job": ["Compensation", "Employee", "Employer", "Manner", "Place", "Position", "Purpose", "Task", "Time", "Means", "Contract_basis"], "Getting": ["Recipient", "Theme", "Source", "Place", "Purpose", "Explanation", "Time", "Means", "Manner", "Result", "Concessive", "Beneficiary", "Circumstances"], "Getting_scenario": ["Recipient", "Theme", "Source", "Purpose", "Explanation"], "Getting_triggered": ["System", "Manner", "Place", "Time", "Frequency"], "Getting_underway": ["Self_mover", "Source", "Path", "Goal", "Manner", "Means", "Time", "Depictive", "Duration_of_final_state", "Mode_of_transportation", "Journey", "Direction"], "Getting_up": ["Protagonist", "Bed", "Time", "Purpose", "Manner", "New_situation", "Circumstances", "Explanation", "Duration_of_final_state", "Place"], "Getting_vehicle_underway": ["Driver", "Vehicle", "Source", "Intended_goal", "Manner", "Depictive", "Means", "Result", "Co-participant", "Circumstances", "Place", "Duration_of_final_state", "Time", "Explanation"], "Give_impression": ["Phenomenon", "Characterization", "Appraisal", "Inference", "Perceiver_passive", "Body_part", "Location_of_protagonist", "Path", "State", "Ground", "Degree", "Circumstances", "Frequency"], "Giving": ["Donor", "Recipient", "Theme", "Place", "Explanation", "Time", "Purpose", "Means", "Manner", "Circumstances", "Imposed_purpose", "Depictive", "Period_of_iterations"], "Giving_birth": ["Mother", "Child", "Father", "Place", "Time", "Depictive", "Circumstances", "Egg", "Means", "Parents", "Result", "Manner"], "Giving_in": ["Capitulator", "Issue", "Compeller", "Time", "Explanation", "Force", "Place", "Purpose", "Manner", "Degree", "Resultant_action"], "Giving_scenario": ["Donor", "Recipient", "Theme", "Purpose", "Manner", "Imposed_purpose"], "Gizmo": ["Use", "User", "Power_source", "Gizmo", "Descriptor"], "Go_into_shape": ["Place", "Explanation", "Time", "Duration", "Manner", "Frequency", "Theme", "Resultant_configuration", "Containing_event", "Circumstances", "Imposed_purpose"], "Goal": ["Landmark", "Profiled_region", "Trajector", "Time"], "Going_back_on_a_commitment": ["Protagonist", "Affected_party", "Commitment", "Manner", "Time", "Place", "Explanation", "Event_description", "Degree", "Re-encoding", "Iterations", "Result"], "Government_institution": ["Institution", "Members", "Purpose", "Period_of_existence", "Name", "Place", "Descriptor", "Domain"], "Gradable_artistic_quality": ["Entity", "Attribute", "Degree", "Time", "Circumstances", "Place"], "Gradable_attributes": ["Entity", "Attribute", "Degree", "Time", "Circumstances", "Value", "Place"], "Gradable_proximity": ["Ground", "Figure", "Accessibility", "Direction", "Time", "Figures", "Degree", "Deixis", "Directness", "Temporal_profile", "Distance"], "Graph_shape": ["Shape", "Data", "Graph", "Name", "Descriptor", "Location"], "Grasp": ["Cognizer", "Phenomenon", "Completeness", "Manner", "Reference_point", "Category", "Time", "Faculty", "Evidence", "Concessive"], "Grinding": ["Grinding_cause", "Grinder", "Instrument", "Locus", "Manner", "Means", "Place", "Purpose", "Result", "Time", "Patient", "Duration", "Goal"], "Grooming": ["Result", "Agent", "Patient", "Instrument", "Body_part", "Subregion", "Medium", "Frequency", "Manner", "Time", "Place", "Duration", "Purpose", "Means"], "Ground_up": ["Patient", "Result"], "Growing_food": ["Grower", "Food", "Instrument", "Duration", "Manner", "Means", "Place", "Time", "Purpose", "Frequency", "Particular_iteration", "Ground", "Circumstances", "Source"], "Guest_and_host": ["Host", "Guest", "Degree", "Depictive", "Manner", "Means", "Duration", "Host_location", "Time", "Descriptor"], "Guilt_or_innocence": ["Accused", "Misdeed", "Viewpoint", "Degree"], "Gusto": ["Person", "Degree"], "Hair_configuration": ["Hair", "Possessor", "Subregion", "Configuration", "Hair_property", "Location", "Accessory"], "Halt": ["Purpose", "Place", "Time", "Depictive", "Manner", "Theme", "Duration", "Means", "Co-timed_event", "Explanation", "Period_of_iterations", "Containing_event"], "Have_as_requirement": ["Dependent", "Requirement", "Degree", "Explanation", "Time", "Condition", "Domain", "Required_entity", "Required_individual", "Place"], "Have_as_translation_equivalent": ["Source_symbol", "Source_representation", "Time", "Circumstances", "Target_symbol", "Target_representation", "Content", "Equivalence", "Medium"], "Have_associated": ["Entity", "Time", "Duration", "Explanation", "Place", "Circumstances", "Viewpoint", "Concessive", "Depictive", "Topical_entity", "Period_of_iterations"], "Have_visitor_over": ["Host", "Visitor", "Purpose"], "Having_commercial_agreement": ["Party_1", "Party_2", "Obligation", "Topic", "Medium", "Parties", "Place", "Time"], "Having_or_lacking_access": ["Theme", "Degree", "Circumstances", "Explanation", "Useful_location", "Barrier"], "Health_response": ["Protagonist", "Trigger", "Manner", "Degree", "Body_part"], "Hearsay": ["Speaker", "Hearer", "Message", "Topic", "Medium", "Period_of_iterations", "Time"], "Heat_potential": ["Insulator", "Activity", "Circumstances", "Degree", "Experiencer"], "Hedging": ["Hedged_content"], "Heralding": ["Communicator", "Place", "Purpose", "Time", "Means", "Manner", "Individual", "Event", "Medium"], "Hiding_objects": ["Obstruction", "Hidden_object", "Potential_observer", "Degree", "Agent", "Hiding_place", "Place", "Time", "Explanation", "Means", "Purpose", "Manner"], "Hindering": ["Protagonist", "Hindrance", "Action", "Time", "Place", "Degree", "Means", "Explanation", "Manner", "Duration", "Concessive", "Frequency", "Circumstances"], "Hiring": ["Employee", "Employer", "Compensation", "Manner", "Place", "Time", "Purpose", "Task", "Position", "Field", "Instrument", "Means", "Contract_basis", "Period_of_iterations"], "Historic_event": ["Event", "Place", "Time", "Explanation", "Entity", "Manner", "Domain", "Degree"], "History": ["Topic", "Domain", "End_time", "Start_time", "Time_span", "Duration", "Time"], "History_scenario": ["Event", "Place", "Time"], "Hit_or_miss": ["Agent", "Target", "Outcome", "Means", "Degree", "Time", "Depictive", "Place", "Manner", "Purpose", "Particular_iteration", "Circumstances", "Instrument", "Target_location", "Iterations", "Deviation"], "Hit_target": ["Target", "Agent", "Purpose", "Time", "Place", "Subregion", "Means", "Instrument", "Manner"], "Holding_off_on": ["Agent", "Desirable_action", "Degree", "Manner", "Means", "Place", "Time", "Purpose", "Explanation", "Circumstances", "Salient_entity", "Duration", "End_point"], "Hospitality": ["Host", "Guest", "Behavior", "Degree", "Topic", "Expressor", "Manner", "Judge"], "Hostile_encounter": ["Side_1", "Side_2", "Sides", "Issue", "Purpose", "Means", "Manner", "Place", "Time", "Degree", "Depictive", "Result", "Duration", "Explanation", "Instrument", "Internal_cause", "Particular_iteration"], "Hunting": ["Hunter", "Food", "Instrument", "Duration", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Frequency", "Degree", "Ground", "Particular_iteration", "Co-participant"], "Hunting_scenario": ["Hunter", "Food", "Instrument", "Duration", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Frequency", "Degree", "Ground", "Particular_iteration"], "Hunting_success_or_failure": ["Hunter", "Food", "Instrument", "Manner", "Means", "Place", "Time", "Purpose", "Frequency", "Degree", "Particular_iteration"], "Identicality": ["Type", "Current_instance", "Previous_instance", "Previous_context", "Set_of_instances", "Time"], "Identity": ["Instance", "Identity"], "Identity_scenario": ["Type", "Instance", "Identity"], "Idiosyncrasy": ["Idiosyncrasy", "Entity", "Degree"], "Image_schema": ["Profiled_region", "Ground"], "Imitating": ["Agent", "Characteristic", "Manner", "Means", "Standard", "Purpose", "Explanation", "Depictive", "Containing_event", "Degree", "Time", "Place", "Duration"], "Immobilization": ["Agent", "Instrument", "Patient", "Means", "Purpose", "Time", "Place", "Anchor", "Degree", "Manner"], "Impact": ["Place", "Result", "Time", "Explanation", "Manner", "Impactor", "Impactee", "Impactors", "Speed", "Subregion", "Force", "Period_of_iterations", "Depictive"], "Import_export_scenario": ["Agent", "Vehicle", "Manner", "Means", "Goods", "Purpose", "Explanation", "Time", "Depictive", "Importing_area", "Path", "Exporting_area", "Descriptor"], "Importance": ["Factor", "Degree", "Undertaking", "Explanation", "Interested_party", "Field", "Time", "Frequency", "Place"], "Importing": ["Importer", "Vehicle", "Manner", "Means", "Goods", "Purpose", "Explanation", "Time", "Depictive", "Importing_area", "Path", "Exporting_area", "Particular_iteration", "Frequency", "Result", "Beneficiary"], "Imposing_obligation": ["Responsible_party", "Duty", "Condition", "Time", "Place", "Obligator", "Situation", "Principle", "Purpose", "Manner", "Means"], "Impression": ["Figure", "Audience", "Descriptor", "Degree", "Context", "Impression"], "Imprisonment": ["Prisoner", "Prison", "Authorities", "Offense", "Place", "Time", "Purpose", "Means", "Manner", "Explanation", "Duration", "Conviction", "Iterations"], "Improvement_or_decline": ["Entity", "Prior_state", "Post_state", "Time", "Rate", "Manner", "Duration", "Degree", "Domain", "Explanation", "Place", "Event_description", "Frequency", "Circumstances"], "Improvised_explosive_device": ["Bomb", "Use", "Type", "Material", "Wielder", "Part", "Name", "Time_of_creation", "Creator", "Descriptor", "Target", "Location"], "Inclination": ["Entity", "Behavior", "Degree", "Basis", "Containing_event"], "Inclusion": ["Total", "Part", "Purpose", "Frequency", "Contrast_set", "Subregion", "Explanation", "Manner", "Time", "Place"], "Inclusion_scenario": ["Whole", "Part", "Manner", "Time", "Place"], "Increment": ["Class", "Added_set", "Initial_set", "Increment"], "Indicating": ["Communicator", "Unresolved_referent", "Medium", "Amount_of_information", "Depictive", "Manner", "Means", "Time", "Duration", "Frequency", "Explanation", "Place", "Purpose"], "Indigenous_origin": ["Entity", "Origin"], "Individual_history": ["Participant", "Events", "Domain", "End_time", "Start_time", "Time_span", "Duration", "Depictive", "Time"], "Ineffability": ["Stimulus", "Experiencer", "Degree", "Circumstances", "Parameter", "Comparison_set", "Property", "Attribute"], "Infecting": ["Infection", "Infected_entity", "Infection_cause", "Medium", "Manner", "Place", "Time", "Depictive", "Means", "Result"], "Influencing_potential": ["Force", "Entity", "Domain", "Source", "State_of_affairs"], "Information": ["Information", "Cognizer", "Topic", "Source", "Means_of_gathering"], "Information_display": ["Display", "Use", "Creator", "Time_of_creation", "Name", "Type", "Material"], "Infrastructure": ["Activity", "Place", "Possessor", "Resource", "User", "Descriptor", "Infrastructure"], "Ingest_substance": ["Manner", "Means", "Place", "Purpose", "Time", "Delivery_device", "Ingestor", "Substance", "Frequency", "Entry_path", "Duration"], "Ingestion": ["Ingestor", "Place", "Time", "Ingestibles", "Instrument", "Manner", "Source", "Means", "Degree", "Purpose", "Duration"], "Ingredients": ["Material", "Type", "Origin", "Descriptor", "Use", "Product", "Name"], "Inherent_purpose": ["Apparatus", "Goal", "Domain", "Type"], "Inhibit_motion_scenario": ["Agent", "Theme", "Holding_location", "Cause"], "Inhibit_movement": ["Theme", "Holding_location", "Agent", "Instrument", "Reciprocation", "Place", "Time", "Purpose", "Means", "Manner", "Explanation", "Duration", "Cause"], "Inspecting": ["Inspector", "Ground", "Unwanted_entity", "Means", "Purpose", "Manner", "Degree", "Location_of_protagonist", "Desired_state_of_affairs", "Time", "Circumstances", "Instrument", "Particular_iteration"], "Installing": ["Agent", "Component", "Location_of_protagonist", "Fixed_location", "Manner", "Degree", "Depictive", "Means", "Duration_of_final_state", "Place", "Explanation", "Time", "Area", "Co-participant", "Purpose"], "Instance": ["Instance", "Type", "Instance_prop"], "Institutionalization": ["Patient", "Facility", "Authority", "Affliction", "Time", "Purpose", "Means", "Manner", "Explanation", "Duration_of_final_state", "Place", "Depictive", "Particular_iteration", "Frequency"], "Institutions": ["Institution", "Domain", "Purpose", "Members", "Place"], "Intentional_deception": ["Deceiver", "Victim", "Topic", "Means", "Time", "Place"], "Intentional_traversing": ["Self_mover", "Source", "Path", "Goal", "Manner", "Distance", "Means", "Speed", "Cotheme", "Depictive", "Place", "Path_shape", "Direction", "Time", "Purpose", "Means_of_motion", "Duration", "Explanation", "Containing_event", "Frequency", "Re-encoding", "New_situation", "Circumstances", "Endpoints", "Co-participant"], "Intentionally_act": ["Act", "Agent", "Place", "Purpose", "Time", "Means", "Manner", "Domain", "Frequency", "Period_of_iterations", "Result", "Particular_iteration", "Explanation", "Event_description", "Apparent_conclusion"], "Intentionally_affect": ["Means", "Event", "Agent", "Instrument", "Place", "Purpose", "Time", "Patient", "Manner", "Explanation", "Degree", "Event_description"], "Intentionally_create": ["Creator", "Place", "Time", "Purpose", "Components", "Depictive", "Created_entity", "Manner", "Means", "Instrument", "Role", "Co-participant"], "Intercepting": ["Interceptor", "Theme", "Place", "Time", "Depictive", "Manner", "Circumstances", "Purpose", "Means"], "Interior_profile_relation": ["Figure", "Ground", "Time", "Direction", "Accessibility", "Profiled_region", "Directness", "Temporal_profile", "Deixis", "Region_quantification"], "Interrupt_process": ["Cause", "Process", "Place", "Time", "Actor", "Circumstances", "Manner", "Explanation", "Means", "Frequency", "Concessive"], "Intoxicants": ["Intoxicant", "Type", "Descriptor", "Country_of_origin"], "Intoxication": ["Cognizer", "Intoxicant", "Degree", "Evaluation", "Duration", "Manner", "Time"], "Invading": ["Land", "Weapon", "Invader", "Manner", "Means", "Place", "Purpose", "Explanation", "Time", "Source", "Depictive", "Re-encoding", "Result", "Containing_event", "Particular_iteration", "Circumstances", "Iterations", "Event_description", "Path", "Frequency", "Type", "Degree", "Period_of_iterations", "Duration"], "Invasion_scenario": ["Invader", "Attacked", "Degree", "Manner", "Means", "Place", "Time", "Purpose", "Instrument"], "Irregular_combatants": ["Origin", "Combatant", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Side_1", "Side_2", "Conflict", "Purpose", "Group"], "Isolated_places": ["Place", "Relative_location"], "Judgment": ["Cognizer", "Evaluee", "Reason", "Role", "Expressor", "Degree", "Depictive", "Manner", "Means", "Topic", "Extent_of_acclaim", "Result"], "Judgment_communication": ["Addressee", "Communicator", "Medium", "Topic", "Degree", "Evaluee", "Expressor", "Manner", "Means", "Reason", "Role", "Result", "Depictive", "Grounds", "Extent_of_acclaim", "Time", "Place", "Internal_cause", "Frequency"], "Judgment_direct_address": ["Communicator", "Addressee", "Topic", "Reason", "Medium", "Degree", "Depictive", "Grounds", "Manner", "Means", "Place", "Time", "Role", "Expressor"], "Judgment_of_intensity": ["Entity", "Attribute", "Degree", "Time", "Circumstances", "Place"], "Judicial_body": ["Judicial_body", "Domain", "Task", "Rank", "Seat", "Jurisdiction", "Source_of_authority", "Judges", "Place"], "Jury_deliberation": ["Jury", "Duration", "Charges", "Case", "Time", "Place", "Possible_sentence"], "Just_found_out": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Expressor", "Explanation", "Circumstances", "State", "Parameter", "Manner", "Time", "Type", "Medium"], "Justifying": ["Agent", "Explanation", "Act", "State_of_affairs", "Judge", "Means", "Frequency", "Domain", "Time", "Degree"], "Key": ["Key", "Function", "Creator", "Time_of_creation", "Name", "Type", "Material", "Location", "Object"], "Kidnapping": ["Perpetrator", "Victim", "Place", "Time", "Source", "Goal", "Degree", "Manner", "Means", "Purpose", "Explanation", "Event", "Co-participant", "Duration", "Frequency"], "Killing": ["Killer", "Victim", "Cause", "Purpose", "Means", "Explanation", "Place", "Time", "Depictive", "Result", "Instrument", "Manner", "Degree", "Beneficiary", "Circumstances", "Period_of_iterations", "Frequency", "Containing_event"], "Kinship": ["Alter", "Ego", "Relatives", "Degree", "Descriptor"], "Knot_creation": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Knot", "Manner", "Depictive"], "Knot_creation_scenario": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Explanation", "Rope", "Knot", "Manner", "Locus"], "Labeling": ["Speaker", "Entity", "Label", "Time", "Place", "Medium", "Particular_iteration", "Explanation", "Duration_of_final_state"], "Labor_product": ["Agent", "Cause", "Input", "Output", "Depictive", "Time", "Place", "Beneficiary", "Presentation", "Descriptor"], "Launch_process": ["Process", "Place", "Means", "Time", "Medium", "Agent", "Purpose", "Co-timed_event", "Manner", "Communicative_force", "Explanation", "Circumstances", "Particular_iteration", "New_situation", "Containing_event", "Concessive", "Depictive", "Event_description", "Beneficiary", "Re-encoding", "Frequency"], "Law": ["Law", "Use", "Creator", "Time_of_creation", "Name", "Type", "Part", "Forbidden", "Required", "Jurisdiction", "Descriptor"], "Law_enforcement_agency": ["Agency", "Members", "Purpose", "Period_of_existence", "Name", "Place", "Descriptor", "Jurisdiction"], "Leadership": ["Leader", "Role", "Duration", "Depictive", "Manner", "Means", "Degree", "Time", "Governed", "Descriptor", "Type", "Domain", "Activity", "Place"], "Leaving_traces": ["Evidence", "Entity", "Descriptor", "Location", "Event", "Time", "Reliability"], "Left_to_do": ["Process", "Remainder", "Time", "Agent"], "Legal_rulings": ["Authority", "Finding", "Case", "Time", "Place", "Legal_basis", "Circumstances", "Manner", "Purpose", "Means", "Explanation", "Re-encoding", "Particular_iteration", "Communicative_force", "Duration", "Defendant"], "Legality": ["Action", "Code", "Object", "Explanation"], "Lending": ["Borrower", "Duration", "Lender", "Theme", "Purpose", "Time", "Manner", "Place"], "Level_of_force_exertion": ["Exerter", "Force", "Time", "Circumstances", "Action", "Degree", "Place", "Descriptor", "Domain"], "Level_of_force_resistance": ["Resisting_entity", "Degree", "Place", "Time", "Circumstances", "Descriptor", "Domain", "Opposing_force"], "Level_of_light": ["Location", "Source", "Degree", "Descriptor"], "Light_movement": ["Degree", "Depictive", "Manner", "Result", "Emitter", "Source", "Beam", "Path", "Goal"], "Likelihood": ["Hypothetical_event", "Explanation", "Degree", "Place", "Time", "Circumstances"], "Limitation": ["Entity", "Degree"], "Limiting": ["Agent", "Cause", "Range_of_options", "Degree", "Characteristic", "Time", "Duration", "Manner", "Place", "Means", "Purpose"], "Linguistic_meaning": ["Form", "Meaning", "Textual_location", "Referent", "Degree"], "Lively_place": ["Location", "Degree", "Time", "Circumstances", "Place", "Activity", "Individuals", "Duration", "Manner", "Explanation"], "Living_conditions": ["Experiencer", "Condition", "Place", "Time", "Duration"], "Locale": ["Locale", "Constituent_parts", "Relative_location", "Formational_cause", "Container_possessor", "Name", "Descriptor", "Related_event", "Inherent_purpose"], "Locale_by_characteristic_entity": ["Locale", "Constituent_parts", "Relative_location", "Formational_cause", "Container_possessor", "Descriptor", "Related_event", "Inherent_purpose", "Characteristic"], "Locale_by_collocation": ["Profiled_region", "Constituent_parts", "Relative_location", "Formational_cause", "Container_possessor", "Descriptor", "Related_event", "Inherent_purpose", "Entity", "Time"], "Locale_by_event": ["Locale", "Constituent_parts", "Relative_location", "Defining_event", "Descriptor", "Name"], "Locale_by_ownership": ["Locale", "Relative_location", "Owner", "Constituent_parts", "Descriptor", "Container_possessor", "Name", "Inherent_purpose"], "Locale_by_use": ["Constituent_parts", "Container_possessor", "Formational_cause", "Locale", "Name", "Relative_location", "Use", "Descriptor", "Circumstances"], "Locale_closure": ["Locale", "Explanation", "Containing_event", "Depictive", "Time", "Manner", "Circumstances", "Place", "Duration"], "Locating": ["Perceiver", "Sought_entity", "Location", "Ground", "Time"], "Location_in_time": ["Relative_time", "Name", "Whole", "Focal_time", "Salient_event", "Descriptor"], "Location_of_light": ["Degree", "Depictive", "Manner", "Figure", "Ground", "Result", "Cause_of_shine", "Light", "Duration", "Place", "Time"], "Location_on_path": ["Ground", "Figure", "Distance", "Direction", "Time", "Figures", "Deixis", "Accessibility", "Directness", "Temporal_profile", "Region_quantification", "Profiled_region"], "Locative_relation": ["Ground", "Figure", "Distance", "Direction", "Time", "Figures", "Deixis", "Accessibility", "Directness", "Temporal_profile", "Region_quantification", "Profiled_region"], "Locative_scenario": ["Figure", "Ground", "Figures", "Profiled_region"], "Lodging_scenario": ["Host", "Lodger", "Time", "Place", "Residence"], "Lose_possession": ["Place", "Explanation", "Time", "Donor", "Theme", "Purpose", "Recipient"], "Lose_possession_scenario": ["Donor", "Theme"], "Losing": ["Owner", "Possession", "Time", "Place", "Means", "Explanation"], "Losing_it": ["Protagonist", "Action", "Degree", "Manner", "Affected_party", "Explanation"], "Losing_someone": ["Sufferer", "Deceased", "Place", "Time", "Explanation", "Manner", "Timespan", "Duration", "Frequency"], "Losing_track_of": ["Perceiver", "Theme", "Time", "Place", "Explanation"], "Losing_track_of_perceiver": ["Theme", "Perceiver", "Place", "Time", "Explanation"], "Losing_track_of_theme": ["Perceiver", "Theme", "Place", "Time", "Explanation"], "Luck": ["State_of_affairs", "Protagonist", "Descriptor", "Role", "Time", "Degree", "Place"], "Make_acquaintance": ["Time", "Place", "Individuals", "Context", "Individual_1", "Individual_2", "Intermediary", "Explanation", "Iterations", "Depictive", "Particular_iteration"], "Make_agreement_on_action": ["Party_1", "Party_2", "Obligation", "Topic", "Medium", "Manner", "Parties", "Place", "Time", "Descriptor"], "Make_cognitive_connection": ["Concept_1", "Concept_2", "Evidence", "Cognizer", "Concepts", "Frequency", "Time", "Place", "Circumstances"], "Make_compromise": ["Party_1", "Party_2", "Obligation", "Topic", "Medium", "Manner", "Parties", "Place", "Time", "Descriptor", "Purpose"], "Make_noise": ["Sound_source", "Explanation", "Sound", "Manner", "Location_of_protagonist", "Degree", "Depictive", "Internal_cause", "Subregion", "Addressee", "Noisy_event", "Path", "Place", "Circumstances", "Time", "Iterations", "Particular_iteration"], "Making_arrangements": ["Agent", "Event", "Beneficiary", "Frequency", "Manner", "Means", "Place", "Purpose", "Explanation", "Scheduled_time", "Time"], "Making_faces": ["Agent", "Internal_cause", "Body_part", "Degree", "Manner", "Intended_perceiver", "Time", "Location_of_protagonist", "Path_of_gaze", "Cognate_event", "Depictive", "External_cause"], "Manipulate_into_doing": ["Manipulator", "Victim", "Resulting_action", "Degree", "Means", "Goods", "Instrument", "Purpose", "Time", "Place", "Manner"], "Manipulate_into_shape": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Explanation", "Theme", "Manner", "Locus", "Resultant_configuration"], "Manipulation": ["Agent", "Entity", "Locus", "Bodypart_of_agent", "Duration", "Manner", "Result", "Time", "Purpose", "Instrument", "Means", "Place", "Depictive", "Explanation", "Particular_iteration"], "Manner": ["Comparison_event", "Salient_entity", "Manner", "Manner_descriptor", "Foreground_event", "Comparison_activity"], "Manner_of_life": ["Experiencer", "Lifestyle", "Manner", "Time", "Degree", "Place", "Domain", "Descriptor"], "Manufacturing": ["Producer", "Product", "Resource", "Place", "Time", "Factory", "Consumer", "Depictive", "Instrument", "Manner", "Means", "Purpose", "Circumstances", "Frequency", "Locus"], "Margin_of_resolution": ["Outcome", "Margin", "Degree", "Circumstances", "Value"], "Mass_motion": ["Mass_theme", "Degree", "Area", "Time", "Speed", "Source", "Path", "Goal", "Duration", "Distance", "Mode_of_transportation", "Manner", "Place", "Direction", "Purpose"], "Mathematical_relationship": ["Expression_1", "Expression_2", "Type"], "Means": ["Agent", "Means", "Purpose", "Descriptor", "Time"], "Measurable_attributes": ["Entity", "Attribute", "Value", "Degree", "Time", "Circumstances"], "Measure_area": ["Unit", "Area", "Count", "Occupant"], "Measure_by_action": ["Entity", "Event", "Count", "Particular_iteration"], "Measure_duration": ["Count", "Unit", "Process", "Agent"], "Measure_linear_extent": ["Count", "Stuff", "Unit", "Dimension"], "Measure_mass": ["Count", "Unit", "Stuff"], "Measure_scenario": ["Entity", "Attribute", "Value", "Degree", "Time", "Circumstances", "Unit", "Count"], "Measure_volume": ["Count", "Stuff", "Unit", "Size"], "Measures": ["Count", "Unit", "Entity", "Attribute"], "Medical_conditions": ["Patient", "Body_part", "Cause", "Symptom", "Name", "Ailment", "Degree", "Place", "Duration"], "Medical_instruments": ["Purpose", "Instrument"], "Medical_interaction_scenario": ["Medic", "Affliction", "Body_system", "Medical_center", "Patient"], "Medical_intervention": ["Intervention", "Result", "Medical_condition", "Patient", "Side_effects", "Extent", "Frequency_of_success", "Medical_professional"], "Medical_professionals": ["Type", "Professional", "Affliction", "Body_system", "Age", "Compensation", "Contract_basis", "Employer", "Ethnicity", "Place_of_employment", "Rank", "Origin"], "Medical_specialties": ["Specialty", "Type", "Body_system", "Affliction"], "Medium": ["Text", "Item", "Frequency", "Time"], "Meet_specifications": ["Agent", "Entity", "Event", "Standard", "Manner", "Means", "Time", "Degree"], "Meet_with": ["Party_1", "Party_2", "Purpose", "Place", "Time", "Means", "Manner"], "Meet_with_response": ["Trigger", "Response", "Manner", "Place", "Time"], "Member_of_military": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Rank", "Place_of_employment", "Loyal_side", "Type", "Compensation", "Contract_basis", "Military_organization"], "Membership": ["Member", "Group", "Standing", "Manner", "Time", "Place"], "Memorization": ["Cognizer", "Pattern", "Time", "Place", "Manner", "Completeness", "Means", "Purpose"], "Memory": ["Cognizer", "Content", "Topic", "Degree", "Depictive", "Manner", "Means", "Result", "Duration", "Place", "Explanation", "Time", "Experience", "Circumstances"], "Mental_activity": ["Sentient_entity", "Content", "Evidence", "Topic", "Degree", "Manner", "Expressor", "Role", "Paradigm", "Time"], "Mental_property": ["Protagonist", "Behavior", "Practice", "Degree", "Manner", "Domain", "Judge"], "Mental_stimulus_exp_focus": ["Experiencer", "Topic", "Stimulus", "Degree", "Empathy_target", "Explanation", "Circumstances", "State", "Parameter", "Manner", "Time", "Expressor", "Duration"], "Mental_stimulus_stimulus_focus": ["Experiencer", "Stimulus", "Degree", "Empathy_target", "Explanation", "Circumstances", "Parameter", "Manner", "Time", "Frequency"], "Mention": ["Communicator", "Addressee", "Message", "Medium", "Depictive", "Manner", "Means", "Time", "Duration", "Iterations", "Particular_iteration", "Frequency", "Specified_content", "Containing_event", "Circumstances", "Place", "Purpose"], "Military": ["Force", "Possessor", "Descriptor", "Members", "Domain", "Goal", "Period_of_existence"], "Military_operation": ["Force", "Possessor", "Area", "Opponent", "Time", "Duration", "Manner", "Means", "Domain", "Goal", "Place"], "Mining": ["Miner", "Resource", "Place", "Means", "Outcome", "Time"], "Misdeed": ["Wrongdoer", "Misdeed", "Severity", "Viewpoint", "Time", "Place", "Purpose", "Means", "Manner", "Injured_party", "Frequency"], "Money": ["Money", "Inherent_purpose", "Creator", "Time_of_creation", "Name", "Type", "Material", "Origin", "Possessor"], "Morality_evaluation": ["Evaluee", "Behavior", "Degree", "Expressor", "Judge"], "Motion": ["Theme", "Source", "Path", "Goal", "Area", "Distance", "Speed", "Carrier", "Duration", "Time", "Manner", "Result", "Depictive", "Place", "Degree", "Direction", "Purpose", "Path_shape", "Containing_event", "Frequency", "Iterations"], "Motion_directional": ["Area", "Depictive", "Distance", "Duration", "Goal", "Manner", "Path", "Speed", "Time", "Carrier", "Theme", "Source", "Result", "Place", "Degree", "Point_of_contact", "Path_shape", "Means", "Direction", "Explanation", "Purpose", "Circumstances"], "Motion_noise": ["Cause", "Theme", "Source", "Path", "Goal", "Area", "Distance", "Speed", "Depictive", "Manner", "Means", "Result", "Degree", "Place", "Duration", "Time"], "Motion_scenario": ["Duration", "Time", "Area", "Cotheme", "Distance", "Goal", "Path", "Source", "Speed", "Theme", "Mode_of_transportation"], "Moving_in_place": ["Theme", "Fixed_location", "Periodicity", "Angle", "Time", "Place", "Direction", "Manner", "Result", "Explanation", "Depictive", "Purpose", "Path_shape"], "Name_conferral": ["Entity", "Name", "Speaker", "Instrument", "Explanation", "Place", "Purpose", "Time", "Name_source", "Manner", "Means"], "Namesake": ["Entity", "Namesake", "Anchor", "Descriptor"], "Natural_features": ["Constituent_parts", "Container_possessor", "Formational_cause", "Locale", "Name", "Relative_location", "Type", "Descriptor"], "Needing": ["Cognizer", "Requirement", "Dependent", "Circumstances", "Degree", "Time", "Place", "Consequences", "Frequency", "Iterations", "Particular_iteration", "Explanation"], "Negation": ["Negated_proposition", "Factual_situation"], "Negative_conditional": ["Profiled_possibility", "Anti_consequence"], "Network": ["Network", "Nodes", "Connections", "Descriptor", "Possessor"], "Noise_makers": ["Noise_maker", "Use", "Creator", "Time_of_creation", "Name", "Type", "Material", "Ground"], "Non-commutative_process": ["Term_1", "Term_2", "Calculator"], "Non-commutative_statement": ["Term_1", "Term_2", "Result"], "Non-gradable_proximity": ["Ground", "Figure", "Accessibility", "Direction", "Time", "Distance", "Deixis", "Directness", "Temporal_profile"], "Noncombatant": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Conflict"], "Notability": ["Type", "Name", "Time", "Place", "Degree"], "Notification_of_charges": ["Arraign_authority", "Accused", "Charges", "Place", "Time", "Containing_event"], "Nuclear_process": ["Element", "Final_element", "Initial_element", "Time", "Manner", "Degree", "Circumstances", "Cause", "Frequency", "Period_of_iterations", "Place"], "Objective_influence": ["Influencing_entity", "Dependent_entity", "Influencing_variable", "Dependent_situation", "Dependent_variable", "Influencing_situation", "Degree", "Time", "Place", "Manner", "Circumstances", "Descriptor"], "Obligation_scenario": ["Responsible_party", "Duty", "Condition", "Consequence", "Time", "Place", "Degree", "Purpose"], "Obscurity": ["Entity", "Degree", "Time", "Circumstances", "Explanation", "Duration", "Place"], "Obviousness": ["Phenomenon", "Attribute", "Degree", "Time", "Circumstances", "Perceiver", "Evidence", "Group", "Location_of_protagonist", "Particular_iteration", "Direction"], "Occupy_rank": ["Rank", "Item", "Dimension", "Time", "Comparison_set"], "Offenses": ["Degree", "Specification", "Offense", "Victim", "Punishment", "Perpetrator"], "Offering": ["Offerer", "Potential_recipient", "Theme", "Place", "Explanation", "Time", "Purpose", "Means", "Manner", "Circumstances", "Imposed_purpose", "Depictive", "Period_of_iterations"], "Offshoot": ["Original_body", "Branch", "Place", "Time"], "Omen": ["Predictive_phenomenon", "Future_phenomenon", "Outcome", "Interested_party", "Strength", "Time", "Explanation", "Circumstances", "Duration", "Place"], "Ontogeny": ["Entity", "Organism", "Prior_state", "Post_state", "Time", "Degree", "Domain", "Manner", "Place", "Rate", "Duration"], "Openness": ["Theme", "Useful_location", "Barrier", "Degree", "Time"], "Operate_vehicle": ["Driver", "Vehicle", "Source", "Path", "Goal", "Manner", "Distance", "Area", "Depictive", "Event", "Means", "Result", "Cotheme", "Speed", "Route", "Circumstances", "Place", "Duration", "Time", "Degree", "Purpose", "Particular_iteration", "Explanation", "Frequency"], "Operate_vehicle_scenario": ["Operator", "Vehicle", "Source", "Path", "Goal", "Area", "Place", "Time", "Manner", "Means"], "Operating_a_system": ["System", "Operator", "Place", "Purpose", "Time", "Means", "Manner", "Duration"], "Operational_testing": ["Tester", "Product", "Unwanted_characteristics", "Means", "Purpose", "Manner", "Degree", "Location_of_protagonist", "Desired_state_of_affairs", "Time", "Circumstances", "Duration", "Place", "Function", "Tested_property", "Period_of_iterations", "Result"], "Opinion": ["Cognizer", "Opinion", "Evidence", "Topic", "Constancy", "Manner", "Role", "Domain", "Time", "Circumstances"], "Opportunity": ["Opportunity", "Agent", "Desirable_situation"], "Optical_image": ["Image", "Source"], "Ordinal_numbers": ["Type", "Starting_point", "Basis_of_order", "Item", "Comparison_set"], "Organization": ["Organization", "Members", "Purpose", "Period_of_existence", "Name", "Container_possessor", "Place", "Descriptor"], "Origin": ["Entity", "Origin"], "Others_situation_as_stimulus": ["Experiencer", "Other", "Degree", "Explanation", "Circumstances", "Parameter", "Manner", "Time", "Situation", "Frequency"], "Out_of_existence": ["Entity", "Place", "Time", "Explanation", "Duration", "Role", "Manner", "Circumstances"], "Pardon": ["Offender", "Authority", "Offense", "Explanation", "Time", "Means", "Manner", "Place", "Purpose"], "Part_edge": ["Orientation", "Whole", "Part_prop", "Part"], "Part_inner_outer": ["Part", "Whole", "Part_prop"], "Part_ordered_segments": ["Ordinality", "Part_prop", "Part", "Whole"], "Part_orientational": ["Part", "Part_prop", "Whole"], "Part_piece": ["Piece", "Piece_prop", "Substance"], "Part_whole": ["Part", "Whole", "Part_prop", "Orientation", "System", "Name"], "Partiality": ["Decision_maker", "Side_1", "Sides", "Side_2", "Domain", "Degree", "Manifestation_of_bias", "Dispute", "Judge", "Explanation", "Time", "Expressor", "Manner"], "Participation": ["Participants", "Participant_1", "Participant_2", "Event", "Time", "Place", "Manner", "Purpose", "Means", "Degree_of_involvement", "Institution", "Duration"], "Partitive": ["Subset", "Group"], "Passing": ["Agent", "Theme", "Source", "Path", "Recipient", "Distance", "Area", "Depictive", "Means", "Manner", "Instrument", "Place", "Time", "Result", "Initial_state", "Explanation"], "Passing_off": ["Agent", "Manner", "Means", "Item", "Purpose", "Explanation", "Simulated_entity", "Place", "Audience", "Time"], "Path_shape": ["Source", "Path", "Goal", "Road", "Manner", "Distance", "Area", "Degree", "Means", "Result", "Speed", "Depictive", "Place", "Path_shape", "Direction", "Time", "Purpose"], "Path_traveled": ["Path", "Source", "Goal", "Endpoints", "Characteristic", "Landmark", "Direction", "Ground", "Length", "Theme"], "Patrolling": ["Patrol", "Ground", "Unwanted_entity", "Means", "Purpose", "Manner", "Degree", "Location_of_protagonist", "Desired_state_of_affairs", "Time", "Circumstances", "Instrument", "Particular_iteration", "Descriptor", "Members", "Duration", "Co-participant", "Vehicle", "Possessor"], "Pattern": ["Entities", "Name", "Descriptor"], "People": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance"], "People_along_political_spectrum": ["Individual", "Place", "Domain", "Origin", "Descriptor", "Persistent_characteristic", "Age", "Ethnicity", "Position_qualifier"], "People_by_age": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance"], "People_by_jurisdiction": ["Jurisdiction", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Authority"], "People_by_military_specialty": ["Origin", "Fighter", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Rank", "Place_of_operation", "Loyal_side", "Type", "Compensation", "Contract_basis", "Military_organization"], "People_by_morality": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Field"], "People_by_origin": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance"], "People_by_religion": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Religion"], "People_by_residence": ["Known_resident", "Location", "Indicated_resident", "Age", "Descriptor", "Persistent_characteristic", "Residents", "Ethnicity"], "People_by_vocation": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Rank", "Place_of_employment", "Employer", "Type", "Compensation", "Contract_basis"], "Perception": ["Perceiver", "Sought_phenomenon", "Phenomenon"], "Perception_active": ["Perceiver_agentive", "Phenomenon", "Body_part", "Location_of_protagonist", "Direction", "Depictive", "State", "Manner", "Means", "Time", "Purpose", "Place", "Duration", "Expected_entity", "Ground", "Obscuring_medium"], "Perception_body": ["Experiencer", "Body_part", "Explanation", "Degree", "Manner", "Subregion"], "Perception_experience": ["Perceiver_passive", "Phenomenon", "Body_part", "Location_of_protagonist", "Direction", "Depictive", "State", "Manner", "Degree", "Means", "Time", "Duration", "Contrastive_context", "Concessive", "Circumstances", "Frequency", "Place", "Ground", "Obscuring_medium"], "Performers": ["Origin", "Person", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Rank", "Place_of_employment", "Employer", "Type", "Compensation", "Contract_basis"], "Performers_and_roles": ["Audience", "Medium", "Performance", "Performer", "Score", "Script", "Type", "Role", "Time", "Place", "Manner", "Performer1", "Performer2", "Duration", "Event_description"], "Performing_arts": ["Performer", "Personnel", "Audience", "Performance", "Script", "Score", "Type", "Medium"], "Personal_relationship": ["Partner_1", "Partner_2", "Partners", "Degree", "Depictive", "Manner", "Means", "Relationship", "Duration", "Source_of_relationship"], "Personal_success": ["Person", "Time", "Degree", "Endeavor", "Explanation", "Field"], "Physical_artworks": ["Artifact", "Use", "Creator", "Time_of_creation", "Name", "Type", "Material", "Represented", "State_of_represented", "Descriptor", "Place"], "Physical_entity": ["Constituents", "Entity", "Formational_cause", "Name", "Type", "Place"], "Piracy": ["Perpetrator", "Vehicle", "Victim", "Degree", "Event", "Manner", "Means", "Duration", "Place", "Time", "Goal", "Source", "Purpose", "Explanation", "Instrument", "Frequency"], "Placing": ["Agent", "Theme", "Source", "Path", "Goal", "Manner", "Degree", "Depictive", "Means", "Result", "Duration", "Place", "Explanation", "Time", "Area", "Cotheme", "Distance", "Speed", "Cause", "Purpose", "Beneficiary"], "Placing_scenario": ["Agent", "Theme", "Source", "Path", "Goal", "Degree", "Depictive", "Manner", "Means", "Result", "Explanation", "Time", "Place", "Instrument", "Subregion", "Cause"], "Planned_trajectory": ["Theme", "Source", "Path", "Goal", "Descriptor"], "Planting": ["Agent", "Theme", "Instrument", "Duration", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Frequency", "Degree", "Ground", "Particular_iteration", "Depictive", "Co-participant", "Explanation"], "Plants": ["Plant", "Characteristic", "Descriptor", "Origin"], "Point_of_dispute": ["Question", "Group", "Status", "Descriptor", "Domain", "Context", "Time", "Viewpoint"], "Political_actions": ["Activists", "Institution", "Demands", "Duration", "Manner", "Means", "Place", "Type", "Result"], "Political_locales": ["Constituent_parts", "Container_possessor", "Locale", "Name", "Relative_location", "Descriptor", "Population"], "Popularity": ["Evaluee", "Degree", "Judge", "Time", "Place"], "Posing_as": ["Agent", "Manner", "Means", "Simulated_entity", "Purpose", "Explanation", "Place", "Time"], "Position_on_a_scale": ["Item", "Variable", "Value", "Degree", "Domain"], "Possession": ["Owner", "Possession", "Depictive", "Manner", "Duration", "Time", "Explanation"], "Possibility": ["Possible_event", "Circumstances", "Explanation", "Condition", "Time"], "Post_getting": ["Recipient", "Theme", "Manner", "Time"], "Post_giving": ["Donor", "Theme", "Manner", "Recipient", "Time"], "Post_lose_possession": ["Owner", "Possession", "Manner", "Time"], "Post_receiving": ["Recipient", "Donor", "Theme", "Manner", "Time"], "Post_transfer": ["Donor", "Theme", "Manner", "Recipient", "Time"], "Posture": ["Agent", "Location", "Degree", "Depictive", "Manner", "Dependent_state", "Time", "Purpose", "Duration", "Point_of_contact"], "Practice": ["Action", "Agent", "Place", "Purpose", "Time", "Means", "Manner", "Occasion", "Duration", "Iterations", "Co-participant"], "Praiseworthiness": ["Evaluee", "Behavior", "Degree", "Judge"], "Prank": ["Prank", "Joker", "Victim", "Descriptor"], "Pre_getting": ["Recipient", "Theme", "Manner", "Time"], "Pre_giving": ["Donor", "Theme", "Manner", "Recipient", "Time"], "Pre_lose_possession": ["Owner", "Possession", "Manner", "Time"], "Pre_receiving": ["Recipient", "Donor", "Theme", "Manner", "Time"], "Pre_transfer": ["Donor", "Theme", "Manner", "Recipient", "Time"], "Precariousness": ["Theme", "Degree", "Falling_event", "Dangerous_entity", "Place", "Time", "Explanation", "Situation", "Domain", "Depictive", "Frequency", "Duration", "Manner", "Location", "Result"], "Precipitation": ["Precipitation", "Rate", "Quantity", "Place", "Duration", "Time", "Explanation", "Manner", "Temperature", "Frequency"], "Predicament": ["Experiencer", "Situation", "Explanation", "Time", "Place", "Domain"], "Predicting": ["Speaker", "Eventuality", "Evidence", "Time", "Place", "Manner", "Time_of_eventuality", "Accuracy", "Descriptor", "Medium", "Topic", "Means"], "Preference": ["Experiencer", "Event", "Focal_participant", "Degree", "Manner", "Explanation", "Purpose_of_event", "Time_of_event", "Location_of_event", "Time", "Place", "Duration", "Contrast"], "Preferred_alternative_scenario": ["Profiled_possibility", "Opposite_possibility", "Positive_consequence", "Undesirable_consequence"], "Preliminaries": ["Agent", "Preparatory_act", "Purpose", "Descriptor", "Degree", "Domain_of_relevance", "Time", "Place", "Preparatory_phase"], "Presence": ["Entity", "Location", "Time", "Depictive", "Duration", "Purpose", "Descriptor", "Degree"], "Presentation_of_mitigation": ["Mitigating_situation"], "Preserving": ["Agent", "Medium", "Patient", "Instrument", "Means", "Manner", "Place", "Time", "Purpose", "Result", "Duration", "Depictive", "Degree"], "Prevarication": ["Speaker", "Addressee", "Topic", "Place", "Time", "Means", "Duration", "Purpose", "Degree", "Frequency"], "Prevent_or_allow_possession": ["Potential_hindrance", "State_of_affairs", "Time", "Place", "Agent", "Protagonist", "Purpose", "Duration", "Explanation", "Frequency", "Containing_event"], "Preventing_or_letting": ["Potential_hindrance", "Event", "Time", "Place", "Agent", "Degree", "Circumstances", "Manner", "Means", "Event_description", "Depictive", "Period_of_iterations", "Allowed_category", "Explanation", "Frequency", "Purpose"], "Price_per_unit": ["Product", "Price", "Seller", "Buyer", "Descriptor"], "Prison": ["Operator", "Inmates", "Name", "Location", "Security", "Penal_institution", "Part", "Descriptor"], "Probability": ["Odds", "Position", "Hypothetical_event"], "Process": ["Explanation", "Process", "Place", "Time", "Manner", "Result", "Duration"], "Process_completed_state": ["Place", "Process", "Time"], "Process_continue": ["Depictive", "Manner", "Duration", "Event", "Place", "Explanation", "Time", "Next_subevent", "Circumstances", "Concessive"], "Process_end": ["Process", "Final_subevent", "Place", "Explanation", "Time", "Degree", "Depictive", "Manner", "Result", "Frequency", "Duration"], "Process_initial_state": ["Process", "Time", "Duration"], "Process_pause": ["Process", "Place", "Time", "Degree", "Depictive", "Manner", "Result", "Final_subevent", "Explanation", "Duration", "Iterations"], "Process_resume": ["Duration", "Process", "Place", "Explanation", "Time", "Frequency", "Manner"], "Process_start": ["Event", "Place", "Explanation", "Time", "Initial_subevent", "Depictive", "Manner", "Result", "Duration", "Frequency"], "Process_stop": ["Process", "Place", "Explanation", "Time", "Degree", "Depictive", "Manner", "Result", "Final_subevent", "Duration", "Frequency"], "Process_stopped_state": ["Process", "Time", "Duration"], "Process_uncompleted_state": ["Place", "Process", "Time"], "Processing_materials": ["Agent", "Alterant", "Material", "Purpose", "Result", "Duration", "Place", "Time", "Subregion", "Explanation", "Dimension", "Manner"], "Procreative_sex": ["Participants", "Participant_1", "Participant_2", "Duration", "Manner", "Means", "Place", "Time", "Domain", "Purpose"], "Product_delivery": ["Deliverer", "Goal", "Goods", "Vehicle", "Depictive", "Manner", "Purchaser", "Purpose", "Explanation", "Time", "Cotheme", "Container", "Place", "Speed", "Circumstances", "Source", "Means", "Path"], "Product_development": ["Developer", "Product", "Company", "Place", "Time", "Manner", "Use"], "Product_development_scenario": ["Developer", "Entity", "Time", "Place", "Company", "Purpose", "Explanation"], "Product_line": ["Brand", "Collection", "Products", "Descriptor", "Collection_name", "Designer"], "Progression": ["Entity", "Prior_state", "Post_state", "Time", "Rate", "Manner", "Duration", "Degree", "Domain", "Explanation", "Place", "Event_description", "Frequency", "Circumstances"], "Prohibiting_or_licensing": ["State_of_affairs", "Principle", "Place", "Time", "Circumstances", "Explanation"], "Project": ["Agent", "Field", "Activity", "Name", "Goal", "Salient_entity", "Manner", "Duration", "Co-participant", "Project", "Time", "Place", "Descriptor"], "Proliferating_in_number": ["Attribute", "Set", "Difference", "Path", "Final_number", "Initial_number", "Speed", "Correlated_variable", "Manner", "Degree", "Circumstances", "Group", "Time", "Duration", "Initial_correlate", "Final_correlate", "Place", "Initial_state", "Final_state"], "Prominence": ["Entity", "Attribute", "Degree", "Time", "Circumstances", "Place"], "Proper_reference": ["Entity", "Intended_referent"], "Proportion": ["Criteria", "Subset", "Group", "Descriptor", "Ratio"], "Proportional_quantity": ["Denoted_quantity", "Mass", "Individuals", "Q_prop", "Reference_quantity", "Degree"], "Protecting": ["Protection", "Place", "Time", "Danger", "Asset", "Means", "Instrument", "Manner", "Event_description", "Descriptor", "Degree", "Explanation", "Duration", "Depictive", "Beneficiary"], "Protest": ["Protester", "Issue", "Side", "Degree", "Time", "Explanation", "Action", "Descriptor", "Particular_iteration", "Manner", "Concessive", "Place", "Duration", "Frequency"], "Provide_lodging": ["Host", "Lodger", "Circumstances", "Time", "Place", "Purpose", "Explanation", "Manner", "Means", "Residence"], "Proximity_image_schema": ["Near_profiled_region", "Ground", "Degree", "Distant_profiled_region"], "Public_services": ["Institution", "Domain", "Target_group", "Service_action"], "Publishing": ["Publisher", "Medium", "Work", "Time", "Audience", "Author", "Purpose", "Place", "Manner", "Means"], "Punctual_perception": ["Perceiver", "Phenomenon", "Body_part", "Location_of_protagonist", "Direction", "Depictive", "Ground", "Manner", "Degree", "Means", "Time", "Duration"], "Purpose": ["Agent", "Goal", "Means", "Domain", "Time", "Restrictor", "Attribute", "Value"], "Putting_out_fire": ["Depictive", "Manner", "Result", "Place", "Time", "Agent", "Fire", "Means", "Purpose", "Degree", "Explanation", "Circumstances", "Containing_event"], "Quantified_mass": ["Quantity", "Mass", "Individuals", "Q_prop", "Degree"], "Quantity": ["Entity", "Quantity", "Value", "Descriptor"], "Quarreling": ["Arguers", "Arguer1", "Arguer2", "Issue", "Frequency", "Depictive", "Duration", "Manner", "Means", "Medium", "Amount_of_discussion", "Purpose", "Place", "Time"], "Questioning": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Manner", "Internal_cause", "Time", "Iterations"], "Quitting": ["Employee", "Employer", "Field", "Manner", "Place", "Position", "Purpose", "Time", "Explanation", "Means"], "Quitting_a_place": ["Self_mover", "Source", "Path", "Intended_goal", "Manner", "Means", "Speed", "Co-participant", "Depictive", "Place", "Path_shape", "Direction", "Time", "Purpose", "Vehicle", "Duration_of_final_state", "Result", "Explanation", "Reciprocation", "Containing_event", "Frequency", "Re-encoding", "New_situation", "Circumstances", "Coordinated_event", "Distance"], "Race_descriptor": ["Person"], "Range": ["Event", "Participant", "Instrument", "Distance", "Circumstances"], "Rank": ["Rank", "Item"], "Ranked_expectation": ["Entity"], "Rape": ["Perpetrator", "Victim", "Degree", "Event", "Manner", "Means", "Result", "Duration", "Place", "Explanation", "Time", "Instrument", "Purpose", "Frequency"], "Rashness": ["Protagonist", "Action", "Time", "Degree", "Judge"], "Rate_description": ["Event", "Rate", "Degree", "Agent"], "Rate_quantification": ["Event", "Rate", "Descriptor", "Entity", "Type", "Degree"], "Ratification": ["Ratifier", "Proposal", "Time", "Place", "Purpose", "Explanation", "Manner", "Means"], "Reading_activity": ["Reader", "Text", "Degree", "Sought_phenomenon", "Manner", "Means", "Purpose", "Time", "Place", "Circumstances", "Textual_location", "Topic", "Frequency"], "Reading_aloud": ["Addressee", "Speaker", "Text", "Manner", "Source", "Time", "Purpose", "Place", "Means"], "Reading_perception": ["Reader", "Text", "Degree", "Sought_phenomenon", "Manner", "Means", "Purpose", "Time", "Place", "Circumstances", "Context"], "Reason": ["Agent", "Action", "State_of_affairs"], "Reasoning": ["Content", "Medium", "Arguer", "Addressee", "Support", "Manner", "Means", "Depictive", "Result", "Degree", "Time", "Place", "Duration", "Group"], "Reassuring": ["Speaker", "Experiencer", "Message", "Situation", "Medium", "Amount_of_reassurance", "Depictive", "Manner", "Means", "Time"], "Rebellion": ["Rebel", "Current_leadership", "Current_order", "Place", "Time", "Means", "Degree", "Manner", "New_order", "Result", "Duration"], "Receive_visitor_scenario": ["Host", "Visitor", "Purpose"], "Receiving": ["Recipient", "Donor", "Theme", "Purpose_of_donor", "Means", "Time", "Place", "Mode_of_transfer", "Depictive", "Manner", "Countertransfer", "Path", "Purpose_of_theme", "Role"], "Receiving_scenario": ["Recipient", "Donor", "Theme", "Purpose", "Means", "Mode_of_transfer"], "Reciprocality": ["Protagonist_1", "Protagonist_2", "Protagonists"], "Recording": ["Agent", "Phenomenon", "Manner", "Means", "Time", "Purpose", "Instrument", "Attribute", "Value", "Entity", "Medium", "Language", "Place", "Degree", "Frequency", "Duration", "Period_of_iterations"], "Records": ["Record", "Data", "Recorder", "Entity", "Type", "Descriptor", "Material", "Medium", "Place", "Time_of_creation", "Title", "Topic", "Use"], "Recovery": ["Patient", "Affliction", "Body_part", "Manner", "Degree", "Means", "Company", "Time", "Place"], "Redirecting": ["Theme", "Original_path", "Path", "Goal", "Time", "Manner", "Depictive", "Place", "Direction", "Purpose", "Agent", "Cause", "Means"], "Reference_text": ["Source_of_information", "Information"], "Referring_by_name": ["Speaker", "Entity", "Name", "Time", "Descriptor"], "Reforming_a_system": ["Agent", "Time", "Degree", "Manner", "Explanation", "Entity", "Purpose", "Initial_category", "Final_category", "Means", "Re-encoding", "Event_description", "Circumstances", "Duration", "Cause", "Place"], "Regard": ["Cognizer", "Evaluee", "Explanation", "Role", "Depictive", "Manner", "Extent_of_acclaim", "Judgment"], "Region_with_portal": ["Interior", "Ground", "Surface", "Boundary", "Exterior"], "Rejuvenation": ["Entity", "Agent", "Place", "Purpose", "Time", "Means", "Manner", "Domain", "Iterations", "Cause", "Event_description", "Frequency", "Degree", "Instrument", "Role", "Result"], "Relating_concepts": ["Concept_1", "Concept_2", "Point_of_view", "Evidence", "Circumstances", "Concepts", "Degree", "Specification"], "Relation": ["Entity_1", "Entity_2", "Entities", "Relation_type"], "Relation_between_individuals": ["Individual_1", "Individual_2", "Relation", "Individuals"], "Relational_location": ["Profiled_region", "Constituent_parts", "Relative_location", "Formational_cause", "Container_possessor", "Descriptor", "Related_event", "Inherent_purpose", "Ground"], "Relational_natural_features": ["Constituent_parts", "Container_possessor", "Formational_cause", "Focal_feature", "Name", "Relative_location", "Type", "Descriptor", "Landmark_feature"], "Relational_political_locales": ["Constituent_parts", "Container_possessor", "Locale", "Name", "Relative_location", "Descriptor", "Population"], "Relational_quantity": ["Rate", "Numerator", "Focal_entity", "Descriptor", "Type", "Denominator"], "Relative_time": ["Focal_occasion", "Landmark_occasion", "Interval", "Degree", "Manner", "Explanation", "Focal_participant"], "Releasing": ["Captor", "Theme", "Manner", "Means", "Explanation", "Purpose", "Place", "Time", "Location_of_confinement", "Concessive", "Circumstances"], "Releasing_from_custody": ["Authorities", "Suspect", "Manner", "Means", "Explanation", "Purpose", "Place", "Time", "Holding_location"], "Reliance": ["Protagonist", "Benefit", "Degree", "Intermediary", "Instrument", "Purpose", "Means", "Circumstances"], "Reliance_on_expectation": ["Cognizer", "Expectation", "Circumstances"], "Religious_belief": ["Believer", "Content", "Degree", "Manner", "Role", "Element"], "Remainder": ["Remainder", "Resource", "Location", "Original_owner", "Time", "Beneficiary", "Original_context"], "Remembering_experience": ["Cognizer", "Salient_entity", "Experience", "Impression", "State", "Vividness", "Context", "Time", "Manner", "Duration"], "Remembering_information": ["Cognizer", "Mental_content", "Accuracy", "Time", "Topic", "Context"], "Remembering_to_do": ["Cognizer", "Action", "Time", "Salient_entity", "Frequency"], "Removing": ["Agent", "Theme", "Source", "Path", "Goal", "Manner", "Means", "Result", "Degree", "Cause", "Distance", "Means_of_motion", "Cotheme", "Time", "Place", "Explanation", "Instrument", "Depictive", "Co-timed_event", "Circumstances", "Purpose", "Particular_iteration", "Direction"], "Removing_scenario": ["Agent", "Theme", "Source", "Path", "Goal", "Degree", "Depictive", "Manner", "Means", "Result", "Instrument", "Cause", "Place", "Time", "Containing_event", "Explanation", "Circumstances"], "Render_nonfunctional": ["Agent", "Artifact", "Purpose", "Means", "Cause", "Time", "Place", "Manner", "Frequency", "Degree", "Duration", "Depictive"], "Renting": ["Lessee", "Goods", "Means", "Money", "Rate", "Lessor", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner", "Recipient", "Duration", "Imposed_purpose"], "Renting_out": ["Lessee", "Goods", "Means", "Money", "Rate", "Lessor", "Unit", "Place", "Purpose", "Explanation", "Time", "Manner", "Result", "Duration", "Imposed_purpose", "Back", "Relay"], "Renunciation": ["Speaker", "Addressee", "Content", "Manner", "Means", "Internal_cause", "Medium", "Depictive", "Time", "Place", "Containing_event"], "Reparation": ["Injured_party", "Injury", "Wrongdoer", "Benefiting_action", "Gift", "Manner", "Place", "Time", "Purpose", "Degree", "Means"], "Repayment": ["Loaner", "Debtor", "Money", "Loan", "Degree", "Time", "Circumstances", "Manner", "Place", "Means"], "Repel": ["Enemy", "Defender", "Degree", "Manner", "Means", "Place", "Time", "Purpose", "Instrument", "Invasion_act", "Result"], "Replacing": ["Means", "Agent", "Instrument", "Place", "Purpose", "Time", "New", "Manner", "Explanation", "Degree", "Old", "Role"], "Reporting": ["Informer", "Wrongdoer", "Authorities", "Behavior", "Time", "Place", "Purpose"], "Representative": ["Origin", "Representative", "Persistent_characteristic", "Descriptor", "Age", "Ethnicity", "Context_of_acquaintance", "Rank", "Place_of_employment", "Represented", "Type", "Compensation", "Contract_basis"], "Representing": ["Phenomenon", "Degree", "Time", "Means", "Entity", "Cognizer", "Frequency", "Explanation", "Place"], "Request": ["Speaker", "Addressee", "Message", "Topic", "Medium", "Manner", "Means", "Time", "Beneficiary", "Containing_event", "Iterations", "Depictive"], "Request_entity": ["Customer", "Entity", "Medium", "Supplier", "Time", "Beneficiary", "Manner", "Means"], "Required_event": ["Required_situation", "Negative_consequences", "Circumstances", "Purpose", "Time", "Place", "Explanation", "Degree"], "Requirement_scenario": ["Dependent", "Requirement", "Degree", "Explanation", "Time", "Condition", "Domain", "Place", "Dependent_individual", "Required_entity", "Required_individual"], "Rescuing": ["Agent", "Patient", "Asset", "Harmful_situation", "Time", "Manner", "Place", "Circumstances", "Instrument", "Means", "Purpose", "Explanation", "Degree"], "Research": ["Researcher", "Field", "Question", "Topic", "Time", "Means", "Population", "Manner", "Purpose", "Duration_of_state", "Place", "Type"], "Reserving": ["Client", "Services", "Organization", "Scheduled_time", "Booker", "Manner", "Place", "Purpose", "Means", "Time", "Payment"], "Reshaping": ["Deformer", "Instrument", "Manner", "Means", "Patient", "Place", "Purpose", "Time", "Result", "Resistant_surface", "Locus", "Cause", "Iterations", "Explanation", "Degree", "Subregion", "Goal", "Containing_event", "Circumstances", "Imposed_purpose", "Configuration"], "Residence": ["Resident", "Location", "Co_resident", "Frequency", "Depictive", "Manner", "Means", "Time", "Circumstances"], "Resolve_problem": ["Agent", "Problem", "Cause", "Means", "Time", "Place", "Degree", "Manner", "Resultant_situation", "Outcome", "Containing_event", "Circumstances", "Instrument", "Beneficiary", "Duration", "Role", "Frequency", "Medium", "Co-participant", "Purpose"], "Respond_to_proposal": ["Speaker", "Interlocutor", "Medium", "Proposal", "Manner", "Depictive", "Means", "Internal_cause", "Place", "Time", "Purpose", "Particular_iteration", "Role", "Group", "Iterations", "Explanation"], "Response": ["Response", "Responding_entity", "Trigger", "Time", "Manner", "Place", "Purpose", "Agent", "Dimension", "Role"], "Response_scenario": ["Responding_entity", "Trigger", "Response", "Agent", "Manner", "Place", "Purpose", "Time"], "Responsibility": ["Act", "Agent", "Place", "Time", "Domain", "Frequency", "Period_of_iterations", "Result", "Particular_iteration", "Explanation", "Event_description", "Degree"], "Rest": ["Part", "Rest", "Whole"], "Result_of_attempt_scenario": ["Agent", "Goal", "Action", "Time", "Depictive", "Place", "Role", "Circumstances", "Explanation", "Containing_event", "Degree"], "Resurrection": ["Protagonist", "Time", "Explanation", "Prior_state", "Result", "Depictive", "Place"], "Retaining": ["Agent", "Theme", "Duration", "Place", "Manner", "Time", "Means"], "Reveal_secret": ["Speaker", "Addressee", "Information", "Topic", "Manner", "Completeness", "Means", "Internal_cause", "Medium", "Depictive", "Time", "Place", "Re-encoding", "Location_of_protagonist", "Containing_event", "Source_material", "Event_description", "Period_of_iterations", "Frequency", "Descriptor"], "Revenge": ["Avenger", "Degree", "Depictive", "Offender", "Instrument", "Manner", "Punishment", "Place", "Purpose", "Injury", "Result", "Time", "Injured_party", "Duration"], "Revolution": ["Agent", "Current_leadership", "Current_order", "Place", "Time", "Means", "Degree", "Manner"], "Rewards_and_punishments": ["Evaluee", "Manner", "Means", "Reason", "Result", "Place", "Time", "Agent", "Instrument", "Purpose", "Response_action", "Degree", "Depictive"], "Ride_vehicle": ["Theme", "Vehicle", "Source", "Manner", "Path", "Goal", "Distance", "Duration", "Speed", "Area", "Road", "Route", "Depictive", "Time", "Cotheme", "Purpose"], "Rising_to_a_challenge": ["Protagonist", "Activity", "Degree", "Circumstances", "Explanation", "Relevant_feature", "Means", "Time", "Place", "Manner"], "Risk_scenario": ["Asset", "Harmful_event", "Situation", "Degree", "Time", "Place"], "Risky_situation": ["Situation", "Asset", "Degree", "Place", "Time", "Domain", "Dangerous_entity", "Frequency", "Circumstances"], "Rite": ["Leader", "Member", "Organization", "Means", "Manner", "Time", "Place", "Instrument", "Desired_state_of_affairs", "Type", "Object", "New_status", "Guardian"], "Roadways": ["Roadway", "Source", "Goal", "Endpoints", "Characteristic", "Name", "Path", "Use", "Direction", "Relative_location", "Material", "Frequency_of_use", "Abundant_entities", "Length", "Part"], "Robbery": ["Perpetrator", "Victim", "Goods", "Source", "Means", "Manner", "Place", "Time", "Purpose", "Explanation", "Frequency", "Co-participant"], "Rope_manipulation": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Explanation", "Rope", "Knot", "Manner", "Locus"], "Rotting": ["Patient", "Place", "Time", "Explanation", "Result", "Initial_state", "Duration", "Speed", "Subregion", "Degree", "Frequency", "Manner", "Circumstances"], "Run_risk": ["Protagonist", "Place", "Severity", "Time", "Bad_outcome", "Asset", "Action", "Frequency", "Purpose", "Explanation", "Iterations", "Circumstances", "Beneficiary"], "Sacrificing_for": ["Agent", "Asset", "Depictive", "Manner", "Duration", "Time", "Explanation", "Benefit"], "Satisfying": ["Agent", "Entity", "Event", "Standard", "Manner", "Means", "Time"], "Scarcity": ["Collection", "Quantity", "Degree", "Time", "Circumstances", "Measure", "Place"], "Scheduling": ["Agent", "Event", "Scheduled_time", "Place", "Beneficiary", "Frequency", "Means", "Purpose", "Explanation", "Manner", "Time"], "Scope": ["Event", "Attribute", "Salient_entity"], "Scouring": ["Searcher", "Ground", "Sought_entity", "Manner", "Duration", "Degree", "Instrument", "Means", "Purpose", "Time"], "Scrutinizing_for": ["Cognizer", "Ground", "Phenomenon", "Manner", "Means", "Degree", "Purpose", "Instrument"], "Scrutiny": ["Cognizer", "Ground", "Phenomenon", "Manner", "Means", "Degree", "Direction", "Purpose", "Medium", "Instrument", "Time"], "Searching_scenario": ["Cognizer", "Ground", "Phenomenon", "Manner", "Means", "Degree", "Purpose", "Instrument"], "Secrecy_status": ["Phenomenon", "Degree", "Time", "Cognizer", "Communicative_force"], "See_through": ["Cognizer", "State_of_affairs", "Focal_entity", "Means", "Medium", "Topic", "Degree", "Depictive", "Manner", "Place", "Time"], "Seeking": ["Cognizer_agent", "Ground", "Sought_entity", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Degree"], "Seeking_to_achieve": ["Agent", "Sought_entity", "Outcome", "Means", "Degree", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "State_of_affairs", "Explanation", "Source", "Circumstances", "Beneficiary"], "Self_control": ["Agent", "Event", "Degree", "Place", "Time"], "Self_motion": ["Self_mover", "Source", "Path", "Goal", "Manner", "Distance", "Area", "Time", "Cotheme", "Speed", "Depictive", "Means", "Result", "Internal_cause", "Duration", "Purpose", "Place", "Explanation", "External_cause", "Direction", "Coordinated_event", "Path_shape", "Concessive"], "Sending": ["Sender", "Path", "Goal", "Source", "Theme", "Transport_means", "Degree", "Depictive", "Distance", "Manner", "Recipient", "Purpose", "Explanation", "Time", "Cotheme", "Container", "Place"], "Sensation": ["Perceiver_passive", "Source", "Percept", "Body_part", "Descriptor", "Ground", "Time", "Degree"], "Sent_items": ["Sender", "Goal", "Source", "Sent_item", "Transport_means", "Recipient", "Time", "Place", "Descriptor"], "Sentencing": ["Convict", "Court", "Sentence", "Type", "Term_of_sentence", "Time", "Offense", "Place", "Depictive"], "Separating": ["Whole", "Parts", "Part_1", "Part_2", "Agent", "Criterion", "Depictive", "Manner", "Degree", "Means", "Result", "Cause", "Recipients", "Time", "Place", "Instrument", "Purpose"], "Sequence": ["Entity_1", "Entity_2", "Entities", "Relation_type", "Descriptor"], "Serving_in_capacity": ["Agent", "Role", "Duration", "Descriptor", "Time", "Place"], "Set_of_interrelated_entities": ["Component_entities", "Complex", "Descriptor", "Possessor"], "Set_relation": ["Superset", "Subset", "Manner", "Time", "Place"], "Setting_back_burn": ["Firefighter", "Flame", "Flammables", "Time", "Place", "Manner", "Means", "Explanation", "Containing_event", "Depictive"], "Setting_fire": ["Kindler", "Flame", "Flammables", "Cause", "Time", "Place", "Manner", "Means", "Explanation", "Containing_event", "Depictive"], "Setting_out": ["Self_mover", "Source", "Path", "Intended_goal", "Manner", "Means", "Speed", "Cotheme", "Depictive", "Place", "Path_shape", "Direction", "Time", "Purpose", "Vehicle", "Duration_of_final_state", "Result", "Explanation", "Reciprocation", "Containing_event", "Frequency", "Re-encoding", "New_situation", "Circumstances", "Coordinated_event", "Distance"], "Severity_of_offense": ["Offense", "Code"], "Sex": ["Participants", "Participant_1", "Participant_2", "Duration", "Manner", "Place", "Time", "Domain", "Purpose", "Means"], "Sexual_reproduction_scenario": ["Parents", "Father", "Mother", "Offspring"], "Shaped_part": ["Part", "Whole", "Part_prop", "Orientation"], "Shapes": ["Substance", "Shape", "Shape_prop", "Count"], "Sharing": ["Protagonists", "Protagonist_1", "Protagonist_2", "Entity", "Time", "Place"], "Sharpness": ["Entity", "Attribute", "Degree", "Time", "Circumstances", "Sharpness"], "Shoot_projectiles": ["Firearm", "Projectile", "Agent", "Distance", "Goal", "Manner", "Means", "Path", "Source", "Degree", "Depictive", "Area", "Place", "Time", "Purpose"], "Shooting_scenario": ["Firearm", "Projectile", "Agent", "Distance", "Goal", "Manner", "Means", "Path", "Source", "Degree", "Depictive", "Area", "Place", "Time", "Purpose"], "Shopping": ["Shopper", "Ground", "Goods", "Manner", "Means", "Outcome", "Place", "Time", "Purpose", "Degree", "Depictive", "Co-participant"], "Short_selling": ["Lender", "Assets", "Intermediary", "Market", "Purpose", "Time", "Place", "Manner", "Means"], "Sidereal_appearance": ["Depictive", "Goal", "Manner", "Path", "Speed", "Time", "Astronomical_entity", "Source", "Result", "Place", "Degree", "Circumstances", "Correlated_event", "Frequency"], "Sign": ["Indicator", "Indicated", "Reliability", "Descriptor", "Frequency"], "Sign_agreement": ["Signatory", "Signature", "Depictive", "Instrument", "Place", "Manner", "Means", "Purpose", "Time", "Explanation", "Agreement", "Co-participant", "Beneficiary", "Role"], "Silencing": ["Agent", "Instrument", "Place", "Purpose", "Time", "Means", "Speaker", "Topic", "Explanation", "Result", "Expressor", "Manner", "Degree"], "Similarity": ["Entities", "Entity_1", "Entity_2", "Dimension", "Degree", "Time", "Place", "Manner", "Explanation", "Depictive", "Circumstances", "Differentiating_fact"], "Simple_name": ["Term", "Entity", "Speaker"], "Simple_naming": ["Entity", "Term", "Speaker", "Explanation", "Frequency"], "Simultaneity": ["Profiled_event", "Landmark_event", "Events", "Degree"], "Size": ["Entity", "Degree", "Standard", "Subregion", "Dimension"], "Sleep": ["Sleeper", "Duration", "Time", "Place", "Degree", "Manner"], "Sleep_wake_cycle": ["Duration", "Place", "Sleeper", "Time"], "Smuggling": ["Perpetrator", "Goods", "Duration", "Place", "Explanation", "Time", "Source", "Path", "Goal", "Means", "Event", "Manner", "Purpose", "Frequency", "Constant_location", "Distance", "Speed"], "Soaking": ["Agent", "Theme", "Duration", "Manner", "Medium", "Container", "Place", "Time", "Means", "Purpose"], "Soaking_up": ["Item", "Substance", "Place", "Time", "Duration", "Manner", "Degree"], "Sociability": ["Protagonist", "Company", "Content", "Manner", "Degree", "Judge"], "Social_behavior_evaluation": ["Behavior", "Individual", "Judge", "Degree"], "Social_connection": ["Individuals", "Individual_1", "Individual_2", "Connection", "Type", "Degree"], "Social_desirability": ["Evaluee", "Degree", "Circumstances", "Comparison_set", "Depictive"], "Social_event": ["Duration", "Social_event", "Place", "Time", "Host", "Beneficiary", "Occasion", "Attendee", "Degree", "Manner", "Refreshment", "Style", "Period_of_iterations", "Descriptor", "Name", "Frequency", "Purpose"], "Social_event_collective": ["Attendees", "Degree", "Duration", "Manner", "Place", "Time", "Particular_iteration"], "Social_event_individuals": ["Party_1", "Party_2", "Degree", "Duration", "Manner", "Place", "Time"], "Social_interaction_evaluation": ["Evaluee", "Affected_party", "Behavior", "Degree", "Topic", "Expressor", "Manner", "Judge"], "Socially_significant_history_scenario": ["Event", "Place", "Time", "Manner", "Domain"], "Sole_instance": ["Item", "Type"], "Sound_level": ["Entity", "Attribute", "Volume", "Degree", "Circumstances", "Time", "Place", "Explanation"], "Sound_movement": ["Sound", "Location_of_sound_source", "Path", "Place", "Time", "Sound_source", "Manner", "Goal"], "Sounds": ["Noisy_event", "Sound_source", "Theme", "Ground", "Themes", "Location_of_sound_source", "Place", "Internal_cause", "Manner", "Component_sound", "Degree", "Explanation", "Path"], "Source_of_getting": ["Theme", "Source", "Goal", "Descriptor"], "Source_path_goal": ["Trajector", "Source", "Path", "Goal", "Means"], "Spatial_co-location": ["Ground", "Figure", "Accessibility", "Direction", "Time", "Deixis", "Directness", "Temporal_profile"], "Spatial_contact": ["Ground", "Figure", "Accessibility", "Direction", "Time", "Figures", "Deixis", "Directness", "Temporal_profile"], "Speak_on_topic": ["Audience", "Speaker", "Topic", "Manner", "Medium", "Occasion", "Time", "Place", "Explanation"], "Specific_individual": ["Type", "Instance"], "Speed_description": ["Entity", "Attribute", "Speed", "Degree", "Time", "Circumstances", "Explanation"], "Spelling_and_pronouncing": ["Speaker", "Sign", "Judgment", "Formal_realization", "Part_of_form", "Manner", "Time", "Textual_location", "Addressee", "Explanation", "Frequency", "Depictive", "Particular_iteration", "Purpose"], "Sports_jargon": ["Competition", "Agent"], "Stage_of_progress": ["Entity", "Time", "Manner", "Degree", "Domain"], "Standing_by": ["Protagonist", "Salient_entity", "Time", "Place", "Duration", "Manner", "Expected_request", "End_point", "Explanation", "Depictive", "Purpose", "Co-participant", "Activity"], "State": ["Entity", "State"], "State_continue": ["Entity", "State", "Time", "Place", "Explanation", "Duration", "Circumstances", "Depictive"], "State_of_entity": ["Entity", "Evaluation", "State", "Parameter"], "Statement": ["Speaker", "Addressee", "Message", "Topic", "Manner", "Means", "Internal_cause", "Medium", "Depictive", "Time", "Place", "Occasion", "Particular_iteration", "Communicative_force", "Degree", "Group", "Event_description", "Frequency", "Iterations", "Containing_event"], "Stimulus_focus": ["Stimulus", "Experiencer", "Degree", "Circumstances", "Parameter", "Comparison_set", "Property"], "Stinginess": ["Resource_controller", "Resource", "Recipient", "Degree", "Behavior", "Judge", "Expressor", "Manner"], "Store": ["Supply", "Resource", "Use", "Possessor", "Descriptor"], "Storing": ["Agent", "Theme", "Location", "Manner", "Depictive", "Duration", "Place", "Explanation", "Time", "Area", "Co-participant", "Purpose", "Frequency"], "Strictness": ["Agent", "Controlled_entity", "Controlling_act", "Issue", "Medium", "Degree", "Area", "Judge", "Expressor", "Manner"], "Studying": ["Teacher", "Student", "Institution", "Subject", "Level", "Depictive", "Manner", "Time", "Place", "Duration", "Explanation", "Co-participant", "Intended_academic_credit"], "Suasion": ["Addressee", "Speaker", "Content", "Text", "Topic", "Means", "Degree", "Manner", "Time", "Place"], "Subjective_influence": ["Cognizer", "Situation", "Entity", "Action", "Behavior", "Product", "Time", "Event_description", "Agent", "Place", "Domain", "Descriptor"], "Subjective_temperature": ["Experiencer", "Degree", "Body_part"], "Submitting_documents": ["Submittor", "Authority", "Documents", "Place", "Explanation", "Time", "Purpose", "Means", "Manner", "Imposed_purpose", "Depictive", "Beneficiary"], "Subordinates_and_superiors": ["Superior", "Subordinate"], "Subsisting": ["Entity", "Support", "Duration", "Degree"], "Substance": ["Constituents", "Substance", "Type", "Origin", "Descriptor", "Inherent_purpose"], "Substance_by_phase": ["Substance", "Subregion"], "Subversion": ["Cause", "Counter_actor", "Agent", "Activity", "State_of_affairs", "Degree", "Purpose", "Place", "Time", "Manner", "Frequency", "Iterations", "Means"], "Success_or_failure": ["Agent", "Goal", "Means", "Degree", "Time", "Depictive", "Place", "Role", "Circumstances", "Explanation", "Containing_event", "Re-encoding"], "Successful_action": ["Means", "Goal", "Instrument", "Place", "Time", "Circumstances", "Protagonist", "Degree", "Role", "Explanation", "Containing_event"], "Successfully_communicate_message": ["Communicator", "Addressee", "Message", "Medium", "Depictive", "Manner", "Means", "Time", "Adequacy"], "Sufficiency": ["Item", "Scale", "Enabled_situation", "Degree", "Circumstances"], "Suicide_attack": ["Victim", "Weapon", "Assailant", "Manner", "Means", "Place", "Purpose", "Time", "Source", "Depictive", "Re-encoding", "Result", "Containing_event", "Explanation", "Particular_iteration", "Circumstances", "Path"], "Suitability": ["Evaluee", "Degree", "Purpose", "User"], "Summarizing": ["Communicator", "Addressee", "State_of_affairs", "Medium", "Summary", "Time", "Place", "Manner", "Means", "Purpose", "Duration", "Containing_event", "Circumstances"], "Supply": ["Supplier", "Recipient", "Theme", "Place", "Explanation", "Time", "Purpose", "Means", "Manner", "Circumstances", "Imposed_purpose", "Period_of_iterations", "Cotheme", "Source"], "Supporting": ["Supporter", "Supported", "Degree", "Duration", "Instrument", "Manner", "Means", "Place", "Time", "Purpose", "Explanation", "Event_description"], "Surpassing": ["Standard_item", "Profiled_item", "Attribute", "Extent", "Time", "Standard_attribute", "Profiled_attribute", "Comparison_set", "Iterations", "Circumstances"], "Surrendering": ["Fugitive", "Authorities", "Place", "Time", "Charges", "Manner", "Explanation"], "Surrendering_possession": ["Surrenderer", "Recipient", "Theme", "Place", "Explanation", "Time", "Purpose", "Means", "Manner", "Circumstances", "Period_of_iterations", "Event_description", "Re-encoding", "Communicative_force", "Particular_iteration", "Depictive", "Containing_event", "Frequency", "Result", "Degree"], "Surrounding": ["Figure", "Ground", "Time", "Direction", "Distance", "Profiled_region", "Directness", "Accessibility"], "Surviving": ["Survivor", "Dangerous_situation", "Place", "Time", "Means", "Degree", "Depictive"], "Suspicion": ["Authority", "Suspect", "Incident", "Time"], "Symmetrical_collective_reciprocality": ["Protagonists"], "System": ["Component_entities", "Complex", "Function", "Descriptor", "Possessor", "Salient_entity"], "System_complexity": ["System", "Degree", "Dimension"], "Take_place_of": ["New", "Role", "Function", "Old", "Time", "Degree", "Manner", "Textual_location", "Explanation"], "Taking": ["Agent", "Theme", "Source", "Place", "Time", "Manner", "Means", "Purpose", "Explanation", "Containing_event"], "Taking_captive": ["Captive", "Agent", "Instrument", "Reciprocation", "Place", "Time", "Purpose", "Means", "Manner", "Explanation", "Cause", "Depictive", "Containing_event"], "Taking_sides": ["Cognizer", "Issue", "Side", "Degree", "Time", "Explanation", "Action", "Descriptor", "Particular_iteration", "Manner", "Concessive", "Place"], "Taking_time": ["Activity", "Attribute", "Time_length", "Degree", "Time", "Circumstances", "Agent", "Duration"], "Talking_into": ["Speaker", "Content", "Addressee", "Means", "Goods", "Purpose", "Instrument", "Place"], "Tasting": ["Agent", "Food", "Means", "Instrument", "Purpose", "Time", "Place", "Manner"], "Team": ["Members", "Team", "Aggregate_property", "Name", "Container_possessor", "Domain", "Activity", "Parent_organization"], "Telling": ["Speaker", "Addressee", "Message", "Topic", "Manner", "Means", "Medium", "Time", "Place", "Communicative_force", "Descriptor", "Iterations"], "Temperature": ["Entity", "Attribute", "Temperature", "Degree", "Time", "Circumstances", "Subregion"], "Temporal_collocation": ["Trajector_entity", "Landmark_event", "Event_description", "Trajector_period", "Landmark_period", "Trajector_event", "Landmark_entity"], "Temporal_pattern": ["Process", "Subevent", "Descriptor", "Pattern", "Type"], "Temporal_subregion": ["Subpart", "Subpart_property", "Time_period", "Time", "Degree"], "Temporary_group": ["Temporary_group", "Members", "Purpose", "Period_of_existence", "Name", "Container_possessor", "Place", "Descriptor", "Parent_organization"], "Temporary_leave": ["Person", "Activity", "Duration", "Location", "Type", "Depictive", "Frequency", "Explanation", "Purpose", "Time"], "Temporary_stay": ["Guest", "Location", "Duration", "Co-participant", "Time", "Host", "Purpose", "Means", "Manner", "Frequency", "Iterations", "Descriptor", "Place", "Explanation", "Containing_event"], "Temporary_transfer_scenario": ["Theme", "Lender", "Borrower", "Duration"], "Terms_of_agreement": ["Agreement", "Regulated_entity", "Requirements", "Desired_state_of_affairs", "Party", "Descriptor"], "Terrorism": ["Terrorist", "Act", "Victim", "Organization", "Descriptor", "Manner", "Means", "Time", "Place", "Purpose", "Instrument"], "Text": ["Author", "Text", "Beneficiary", "Time_of_creation", "Material", "Containing_text", "Genre", "Use", "Subpart", "Topic", "Title", "Medium", "Place", "Descriptor"], "Text_creation": ["Author", "Components", "Text", "Depictive", "Instrument", "Place", "Manner", "Means", "Purpose", "Time", "Addressee", "Beneficiary", "Form", "Explanation", "Medium"], "Theft": ["Perpetrator", "Victim", "Goods", "Source", "Manner", "Means", "Place", "Purpose", "Explanation", "Time", "Instrument", "Frequency"], "Thermodynamic_phase": ["Matter", "Phase"], "Thriving": ["Entity", "Circumstances", "Time", "Place", "Frequency", "Role", "Particular_iteration", "Duration", "Explanation", "Desirability"], "Thwarting": ["Preventing_cause", "Protagonist", "Action", "Time", "Place", "Manner", "Degree", "Explanation", "Frequency"], "Time_period_of_action": ["Enabled_action", "Duration", "Agent", "Whole"], "Time_vector": ["Landmark_event", "Distance", "Direction", "Event"], "Timespan": ["Duration", "State", "Whole", "Descriptor"], "Timetable": ["Timetable", "Events", "Cognizer", "Period_of_iterations", "Time_of_implementation", "Purpose", "Descriptor"], "Tolerating": ["Experiencer", "Content", "Explanation", "Degree", "Manner", "Parameter", "Topic", "State", "Event", "Circumstances", "Time"], "Tool_purpose": ["Purpose", "Tool", "Type", "Domain"], "Topic": ["Topic", "Text", "Communicator", "Degree", "Manner", "Status", "Time", "Explanation"], "Touring": ["Tourist", "Attraction", "Depictive", "Ground", "Manner", "Means", "Time", "Purpose", "Place", "Duration", "Particular_iteration", "Co-participant"], "Toxic_substance": ["Victim", "Degree", "Body_part", "Explanation", "Toxic_substance", "Circumstances", "Toxin_source", "Type", "Duration"], "Transfer": ["Recipient", "Theme", "Donor", "Place", "Explanation", "Time", "Transferors", "Means", "Manner", "Purpose"], "Transfer_scenario": ["Recipient", "Theme", "Donor", "Transferors"], "Transition_to_a_quality": ["Place", "Time", "Duration_of_final_state", "Manner", "Entity", "Final_quality", "Transitional_period", "Circumstances", "Group", "Explanation"], "Transition_to_a_situation": ["Place", "Time", "Manner", "Entity", "Transitional_period", "Circumstances", "Group", "Explanation", "Final_situation"], "Transition_to_state": ["Place", "Time", "Duration_of_final_state", "Manner", "Entity", "Final_quality", "Final_category", "Transitional_period", "Initial_state", "Circumstances", "Initial_category", "Group", "Explanation", "Final_situation"], "Transitive_action": ["Agent", "Patient", "Event", "Depictive", "Result", "Means", "Manner", "Time", "Place", "Cause"], "Translating": ["Cognizer", "Source_symbol", "Source_representation", "Manner", "Means", "Time", "Circumstances", "Target_symbol", "Target_representation", "Content", "Equivalence", "Medium", "Place", "Purpose"], "Transportation_status": ["Rider", "Vehicle"], "Trap": ["Trap", "Deceiver", "Victim", "Descriptor"], "Travel": ["Area", "Co-participant", "Distance", "Duration", "Goal", "Manner", "Means", "Path", "Traveler", "Source", "Speed", "Mode_of_transportation", "Time", "Explanation", "Baggage", "Frequency", "Purpose", "Iterations", "Period_of_iterations", "Travel_means", "Depictive", "Result", "Place", "Direction", "Descriptor"], "Traversing": ["Theme", "Source", "Path", "Goal", "Manner", "Distance", "Area", "Degree", "Means", "Speed", "Cotheme", "Depictive", "Place", "Path_shape", "Direction", "Time", "Purpose", "Means_of_motion", "Duration", "Result", "Explanation", "Reciprocation", "Containing_event", "Frequency", "Re-encoding", "New_situation", "Circumstances", "Endpoints", "Coordinated_event", "Period_of_iterations", "Event_description", "Iterations"], "Treating_and_mistreating": ["Agent", "Manner", "Circumstances", "Affected_party", "Explanation", "Time", "Place", "Means", "Domain", "Degree", "Standard"], "Trendiness": ["Behavior", "Degree", "Time", "Circumstances", "Evaluee", "Judge", "Place"], "Trial": ["Charges", "Court", "Defense", "Jury", "Place", "Prosecution", "Time", "Defendant", "Judge", "Case", "Manner"], "Triggering": ["Cause", "System", "Means", "Actor", "Manner", "Place", "Time", "Purpose"], "Trust": ["Cognizer", "Topic", "Content", "Degree", "Manner", "Expressor", "Information_source", "Information"], "Try_defendant": ["Judge", "Court", "Defendant", "Jury", "Time", "Place", "Charges", "Governing_authority", "Manner"], "Trying_out": ["Evaluator", "Experience", "Entity", "Manner", "Means", "Purpose", "Time", "Place"], "Turning_out": ["State_of_affairs", "Time"], "Type": ["Subtype", "Category", "Type_property", "Item_property"], "Typicality": ["Degree", "State_of_affairs", "Comparison_set", "Feature"], "Unattributed_information": ["Reported_fact", "Time", "Duration", "Explanation"], "Undergo_change": ["Entity", "Final_category", "Initial_category", "Time", "Initial_quality", "Final_quality", "Attribute", "Manner", "Degree", "Circumstances", "Cause", "Intermediate_value", "Value_range", "Frequency", "Period_of_iterations", "Place", "Final_situation", "Initial_situation"], "Undergo_transformation": ["Entity", "Final_category", "Initial_category", "Time", "Manner", "Degree", "Circumstances", "Cause", "Frequency", "Period_of_iterations", "Place"], "Undergoing": ["Entity", "Event", "Time", "Place", "Explanation", "Purpose", "Manner", "Circumstances"], "Undergoing_scenario": ["Entity", "Event", "Time", "Place", "Explanation", "Purpose", "Circumstances"], "Undressing": ["Wearer", "Clothing", "Body_location", "Manner", "Means", "Result", "Degree", "Place", "Time", "Purpose", "Circumstances", "Explanation"], "Unemployment_rate": ["Individuals", "Employment", "Value", "Degree", "Time", "Group", "Place"], "Use_firearm": ["Agent", "Firearm", "Means", "Manner", "Place", "Purpose", "Time", "Goal", "Path", "Source", "Area", "Iterations", "Depictive"], "Use_vehicle": ["Theme", "Vehicle", "Source", "Manner", "Path", "Goal", "Distance", "Duration", "Speed", "Area", "Road", "Route", "Time", "Cotheme", "Driver"], "Used_up": ["Resource", "Degree", "Explanation", "Excess", "Subregion"], "Usefulness": ["Entity", "Purpose", "Degree", "Domain", "Time"], "Using": ["Agent", "Place", "Purpose", "Time", "Means", "Manner", "Instrument", "Role", "Outcome", "Containing_event", "Frequency", "Period_of_iterations", "Circumstances", "Depictive", "Explanation", "Group", "Degree", "Duration"], "Using_resource": ["Agent", "Resource", "Purpose", "Portion", "Means", "Manner", "Place", "Time"], "Vehicle": ["Descriptor", "Vehicle", "Possessor", "Itinerary", "Means_of_propulsion", "Use"], "Vehicle_departure_initial_stage": ["Vehicle", "Source", "Intended_goal", "Manner", "Depictive", "Means", "Result", "Co-participant", "Circumstances", "Place", "Duration_of_final_state", "Time", "Explanation"], "Vehicle_landing": ["Vehicle", "Source", "Path", "Goal", "Manner", "Means", "Mode_of_transportation", "Cotheme", "Time", "New_situation", "Depictive", "Period_of_iterations", "Circumstances", "Purpose", "Degree", "Event_description", "Re-encoding", "Frequency", "Place"], "Vehicle_subpart": ["Part", "Whole", "Function", "Orientation", "Descriptor"], "Verdict": ["Judge", "Finding", "Defendant", "Charges", "Case", "Time", "Place", "Legal_basis", "Circumstances", "Manner", "Purpose", "Means", "Explanation"], "Verification": ["Inspector", "Unconfirmed_content", "Manner", "Means", "Degree", "Purpose", "Medium", "Instrument", "Condition", "Descriptor", "Communicative_force", "Time", "Place", "Explanation"], "Version_sequence": ["Item", "Degree"], "Victim_operated_IED": ["Bomb", "Use", "Type", "Material", "Bomber", "Part", "Name", "Time_of_creation", "Creator", "Descriptor", "Victim"], "Violence": ["Aggressor", "Victim", "Degree", "Manner", "Means", "Place", "Time", "Instrument", "Purpose", "Containing_event", "Explanation", "Iterations", "Cause", "Circumstances", "Frequency", "Aggressors"], "Visit_host": ["Visitor", "Host", "Purpose", "Normal_location", "Host_location"], "Visit_host_arrival": ["Visitor", "Normal_location", "Path", "Host", "Manner", "Means", "Mode_of_transportation", "Time", "Purpose", "Host_location", "Place"], "Visit_host_departure": ["Visitor", "Host_location", "Path", "Goal", "Manner", "Means", "Speed", "Mode_of_transportation", "Distance", "Time", "Place", "Purpose", "Host"], "Visit_host_stay": ["Visitor", "Host", "Dependent_state", "Purpose", "Normal_location", "Time", "Duration", "Manner", "Place", "Means", "Iterations", "Frequency", "Host_location"], "Visiting": ["Agent", "Entity", "Dependent_state", "Purpose", "Normal_location", "Time", "Duration", "Manner", "Place", "Means", "Iterations", "Frequency", "Depictive"], "Visiting_scenario": ["Agent", "Entity", "Purpose", "Normal_location"], "Visiting_scenario_arrival": ["Agent", "Normal_location", "Path", "Goal", "Manner", "Means", "Mode_of_transportation", "Time", "Purpose", "Place"], "Visiting_scenario_departing": ["Agent", "Source", "Path", "Goal", "Manner", "Means", "Speed", "Mode_of_transportation", "Distance", "Time", "Place", "Purpose"], "Visiting_scenario_stay": ["Agent", "Entity", "Dependent_state", "Purpose", "Normal_location", "Time", "Duration", "Manner", "Place", "Means", "Iterations", "Frequency"], "Visitor_and_host": ["Visitor", "Host", "Purpose", "Normal_location", "Host_location"], "Visitor_arrival": ["Agent", "Normal_location", "Path", "Goal", "Manner", "Means", "Mode_of_transportation", "Time", "Purpose", "Place"], "Visitor_departure": ["Agent", "Source", "Path", "Goal", "Manner", "Means", "Speed", "Mode_of_transportation", "Distance", "Time", "Place", "Purpose"], "Visitor_scenario": ["Agent", "Entity", "Purpose", "Normal_location"], "Vocalizations": ["Sound_source", "Location_of_sound_source", "Place", "Internal_cause", "Manner", "Degree", "Explanation", "Path", "Frequency"], "Volubility": ["Speaker", "Company", "Text", "Topic", "Medium", "Degree", "Manner", "Judge"], "Wagering": ["Gambler", "Place", "Time", "Asset", "Frequency", "Purpose", "Explanation", "Iterations", "Circumstances", "Beneficiary", "Outcome", "Uncertain_situation"], "Waiting": ["Protagonist", "Salient_entity", "Time", "Place", "Duration", "Manner", "Expected_event", "End_point", "Explanation", "Depictive", "Purpose", "Co-participant"], "Waking_up": ["Place", "Sleeper", "Time", "Sleep_state", "Manner", "Depictive", "New_situation", "Circumstances", "Particular_iteration", "Explanation", "Frequency"], "Want_suspect": ["Suspect", "Charges", "Degree"], "Warning": ["Speaker", "Addressee", "Message", "Topic", "Manner", "Means", "Medium", "Time", "Place", "Communicative_force", "Descriptor", "Iterations"], "Waver_between_options": ["Cognizer", "Explanation", "Options", "Place", "Time", "Manner", "Issue", "Option_1", "Option_2", "Duration", "Frequency", "Degree", "Containing_event", "Circumstances"], "Wealthiness": ["Person", "Institution", "Degree", "Type_of_possession"], "Weapon": ["Weapon", "Use", "Type", "Material", "Wielder", "Part", "Name", "Time_of_creation", "Creator", "Descriptor"], "Wearing": ["Wearer", "Clothing", "Body_part", "Degree", "Manner", "Time", "Source", "Intended_wearing_location", "Purpose", "Relative_location"], "Weather": ["Place", "Time", "Specification"], "Wholes_and_parts": ["Whole", "Part", "Manner", "Time", "Place"], "Willingness": ["Cognizer", "Activity", "Explanation", "Place", "Time", "Purpose", "Degree", "Frequency"], "Win_prize": ["Competitor", "Score", "Margin", "Rank", "Prize", "Means", "Manner", "Time", "Place", "Venue", "Particular_iteration", "Competition", "Explanation", "Period_of_iterations", "Opponent", "Circumstances", "Re-encoding", "Result", "Iterations", "Communicative_force", "Event_description"], "Withdraw_from_participation": ["Participant", "Activity", "Explanation", "Place", "Time", "Organization", "Purpose", "Means", "Medium", "Manner"], "Within_distance": ["Ground", "Figure", "Distance"], "Word_relations": ["Sign_1", "Sign_2", "Signs", "Circumstances"], "Work": ["Agent", "Goal", "Outcome", "Means", "Degree", "Time", "Depictive", "Place", "Manner", "Duration", "Purpose", "Particular_iteration", "Circumstances", "Domain", "Salient_entity", "Frequency", "Event_description", "Descriptor"], "Working_a_post": ["Agent", "Place", "Purpose", "Time", "Means", "Manner", "Frequency", "Period_of_iterations", "Result", "Particular_iteration", "Explanation", "Event_description", "Post", "Salient_entity"]} \ No newline at end of file diff --git a/resources/migration_frame_list.txt b/resources/migration_frame_list.txt new file mode 100755 index 0000000000000000000000000000000000000000..fffba5b4af014b406b51df9321fbe9bac2829bd5 --- /dev/null +++ b/resources/migration_frame_list.txt @@ -0,0 +1,56 @@ +ARRIVING#Travel +CAUSE_MOTION#Travel +DEPARTING#Travel +FLUIDIC_MOTION#Travel +SELF_MOTION#Travel +TRAVEL#Travel +DISEMBARKING#Travel +RISKY_SITUATION#Travel +DEATH#Travel + +CARDINAL_NUMBERS#Quantification +CHANGE_OF_QUANTITY_OF_POSSESSION#Quantification +CHANGE_POSITION_ON_A_SCALE#Quantification +FAMILIARITY#Quantification +INCREMENT#Quantification +PROLIFERATING_IN_NUMBER#Quantification +QUANTIFIED_MASS#Quantification +QUANTITY#Quantification + +ABUSING#Crime +ARREST#Crime +COMMITTING_CRIME#Crime +INTENTIONAL_DECEPTION#Crime +KILLING#Crime +RAPE#Crime +ROBBERY#Crime +SMUGGLING#Crime +PROTEST#Crime +THEFT#Crime +CAUSE_HARM#Crime + +HOSTILE_ENCOUNTER#Hostility +INVADING#Hostility +ATTACK#Hostility +WEAPON#Hostility + +ARRANGING#Administration +MAKING_ARRANGEMENTS#Administration +DISCUSSION#Administration +EXECUTE_PLAN#Administration +LEADERSHIP#Administration +EXPEND_RESOURCE#Administration +GATHERING_UP#Administration +PLACING#Administration +POINT_OF_DISPUTE#Administration +INHIBIT_MOVEMENT#Administration +EXPENSIVENESS#Administration + +ASSISTANCE#Humanizing +HIRING#Humanizing +INTENTIONALLY_CREATE#Humanizing +SOCIAL_EVENT#Humanizing +KINSHIP#Humanizing +COLLABORATION#Humanizing +EDUCATION_TEACHING#Humanizing +RESCUING#Humanizing diff --git a/sociofillmore/__init__.py b/sociofillmore/__init__.py new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sociofillmore/__init__.pyc b/sociofillmore/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db3a9910b0a04af87ef11b6e279383b1cb681f0e Binary files /dev/null and b/sociofillmore/__init__.pyc differ diff --git a/sociofillmore/__pycache__/__init__.cpython-311.pyc b/sociofillmore/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b84d6689c49808cd52403f802d26c21ad4393eef Binary files /dev/null and b/sociofillmore/__pycache__/__init__.cpython-311.pyc differ diff --git a/sociofillmore/__pycache__/__init__.cpython-37.pyc b/sociofillmore/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cec751abab03eeaa44108512a9412b6eb16decd9 Binary files /dev/null and b/sociofillmore/__pycache__/__init__.cpython-37.pyc differ diff --git a/sociofillmore/__pycache__/__init__.cpython-39.pyc b/sociofillmore/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96adb7d3f29958d25f954393af133e132a623120 Binary files /dev/null and b/sociofillmore/__pycache__/__init__.cpython-39.pyc differ diff --git a/sociofillmore/common/__init__.py b/sociofillmore/common/__init__.py new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sociofillmore/common/__pycache__/__init__.cpython-37.pyc b/sociofillmore/common/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef22b381f61a4bbc6caa3e83c6ae7a7872b8cbb2 Binary files /dev/null and b/sociofillmore/common/__pycache__/__init__.cpython-37.pyc differ diff --git a/sociofillmore/common/__pycache__/__init__.cpython-39.pyc b/sociofillmore/common/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7330a245218ced4b1d176533de2ad38c88d48da9 Binary files /dev/null and b/sociofillmore/common/__pycache__/__init__.cpython-39.pyc differ diff --git a/sociofillmore/common/__pycache__/analyze_text.cpython-37.pyc b/sociofillmore/common/__pycache__/analyze_text.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3eead5c4f5b3ae6ff3266f4675cec102e6b3708 Binary files /dev/null and b/sociofillmore/common/__pycache__/analyze_text.cpython-37.pyc differ diff --git a/sociofillmore/common/__pycache__/analyze_text.cpython-39.pyc b/sociofillmore/common/__pycache__/analyze_text.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eac60f8f2e49eb367f7306c44cdcab914ed4224e Binary files /dev/null and b/sociofillmore/common/__pycache__/analyze_text.cpython-39.pyc differ diff --git a/sociofillmore/common/__pycache__/split_lome_files.cpython-39.pyc b/sociofillmore/common/__pycache__/split_lome_files.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f952052bc3cc165ed31a398106dad46867b3f8a Binary files /dev/null and b/sociofillmore/common/__pycache__/split_lome_files.cpython-39.pyc differ diff --git a/sociofillmore/common/analyze_text.py b/sociofillmore/common/analyze_text.py new file mode 100755 index 0000000000000000000000000000000000000000..adf48445b106cbf890622616111b731d7c256065 --- /dev/null +++ b/sociofillmore/common/analyze_text.py @@ -0,0 +1,1046 @@ +import io +import json +import os +import sys +import argparse +import re +import tarfile +from collections import defaultdict +import dataclasses +from datetime import datetime +from typing import Any, Dict, List, Tuple, Optional + +import pandas as pd +import spacy +from nltk.corpus import framenet as fn +from nltk.corpus.reader.framenet import FramenetError +from spacy.tokens import Token + +from sociofillmore.crashes.utils import is_a_dutch_text + +ITALIAN_ACTIVE_AUX = ["avere", "ha", "ho", "hai", "avete", "hanno", "abbiamo"] +DUTCH_ACTIVE_AUX = ["heb", "hebben", "heeft"] + +active_frames_df = pd.read_csv("resources/active_frames_full.csv") +ACTIVE_FRAMES = active_frames_df[active_frames_df["active"]]["frame"].tolist() + + +IGNORE_DEP_LABELS = ["punct"] + + + +DEEP_FRAMES = [ + "Transitive_action", + "Causation", + "Transition_to_a_state", + "Event", + "State", +] +# SYNTAX_ANALYSIS_CACHE_FILES = { +# "femicides/rai": "resources/rai_syntax_analysis_cache.json", +# "femicides/rai_main": "resources/rai_main_syntax_analysis_cache.json", +# "femicides/olv": "resources/olv_syntax_analysis_cache.json", +# "crashes/thecrashes": "resources/thecrashes_syntax_analysis_cache.json", +# "migration/pavia": "resources/migration_pavia_syntax_analysis_cache.json" +# } +SYNTAX_ANALYSIS_CACHE_FILES = { + "femicides/rai": "output/femicides/syntax_cache/rai_ALL", + "femicides/rai_main": "output/femicides/syntax_cache/rai_main", + "femicides/rai_ALL": "output/femicides/syntax_cache/rai_ALL", + "femicides/olv": "output/femicides/syntax_cache/olv", + "crashes/thecrashes": "output/crashes/syntax_cache/thecrashes", + "migration/pavia": "output/migration/syntax_cache/pavia", +} + + +DEEP_FRAMES_CACHE_FILE = "resources/deep_frame_cache.json" + +DEP_LABEL_CACHE_FILE = "resources/dep_labels.txt" + +POSSIBLE_CONSTRUCTIONS = [ + "nonverbal", + "verbal:active", + "verbal:impersonal", + "verbal:reflexive", + "verbal:passive", + "verbal:unaccusative", + "other", +] + + +def load_deep_frames_cache(): + if os.path.isfile(DEEP_FRAMES_CACHE_FILE): + print("Loading deep frame cache...") + with open(DEEP_FRAMES_CACHE_FILE, encoding="utf-8") as f: + deep_frames_cache = json.load(f) + else: + deep_frames_cache = {} + return deep_frames_cache + + +# make spacy work with google app engine +# (see https://stackoverflow.com/questions/55228492/spacy-on-gae-standard-second-python-exceeds-memory-of-largest-instance) +# nlp = spacy.load("it_core_news_md") +nlp = None + + +@dataclasses.dataclass +class AnnotationSpan: + tokens_idx: List[int] + tokens_str: List[str] + + +@dataclasses.dataclass +class FrameStructure: + frame: str + deep_frame: str + target: Optional[AnnotationSpan] + roles: List[Tuple[str, AnnotationSpan]] + deep_roles: List[Tuple[str, AnnotationSpan]] + + +def make_syntax_cache(dataset, skip_fn=None): + print(f"make_syntax_cache({dataset})") + + if dataset == "femicides/rai": + corpus_tarball = "output/femicides/lome/lome_0shot/multilabel_rai_blocks" + corpus = "rai" + spacy_model = "it_core_news_md" + elif dataset == "femicides/rai_main": + corpus_tarball = "output/femicides/lome/lome_0shot/multilabel_rai_main_blocks" + corpus = "rai_main" + spacy_model = "it_core_news_md" + elif dataset == "femicides/rai_ALL": + corpus_tarball = "output/femicides/lome/lome_0shot/multilabel_rai_ALL_blocks" + corpus = "rai_ALL" + spacy_model = "it_core_news_md" + elif dataset == "femicides/olv": + corpus_tarball = "output/femicides/lome/lome_0shot/multilabel_olv_blocks" + corpus = "olv" + spacy_model = "it_core_news_md" + elif dataset == "crashes/thecrashes": + corpus_tarball = "output/crashes/lome/lome_0shot/multilabel_thecrashes_blocks" + corpus = "thecrashes" + spacy_model = "nl_core_news_md" + elif dataset == "migration/pavia": + corpus_tarball = "output/migration/lome/lome_0shot/multilabel_pavia_blocks" + # corpus_tarball = "output/migration/lome/lome_zs-tgt_ev-frm/multilabel_pavia.tar.gz" + corpus = "pavia" + spacy_model = "it_core_news_md" + else: + raise ValueError("Unsupported dataset!") + + print("params:") + print(f"\tcorpus_tarball: {corpus_tarball}") + print(f"\tcorpus: {corpus}") + print(f"\tspacy: {spacy_model}") + + print("processing files...") + + + for block in os.listdir(corpus_tarball): + print(block) + + with tarfile.open(os.path.join(corpus_tarball, block)) as tar_in: + + # check if output tarball exists + cache_location = SYNTAX_ANALYSIS_CACHE_FILES[dataset] + if not os.path.isdir(cache_location): + os.makedirs(cache_location) + + lome_files = [f for f in tar_in.getmembers( + ) if f.name.endswith(".comm.json")] + + lome_files.sort(key=lambda file: file.name) + for file in lome_files: + print(f"\tprocessing file {file}") + doc_id = re.search(r"lome_(\d+)\.comm\.json", file.name).group(1) + + skipped = False + if skip_fn is not None: + if skip_fn(doc_id): + print(f"\t\tskip_fn: skipping file {file}") + skipped = True + + if skipped: + syntax_analyses = None + else: + file_obj = io.TextIOWrapper(tar_in.extractfile(file)) + annotations = json.load(file_obj) + + syntax_analyses = [] + for sentence in annotations: + syntax_analyses.append( + syntax_analyze(sentence, spacy_model)) + + # use last two chars of filename as key + file_key = doc_id[:2] + cache_file = f"{cache_location}/{file_key}.json" + if os.path.isfile(cache_file): + with open(cache_file, encoding="utf-8") as f: + key_cache = json.load(f) + else: + key_cache = {} + key_cache[doc_id] = syntax_analyses + with open(cache_file, "w", encoding="utf-8") as f: + json.dump(key_cache, f) + + +def make_syntax_cache_key(filename): + doc_id = re.search(r"/\d+/lome_(\d+)\.comm\.json", filename).group(1) + return doc_id + + +def clean_sentence_(sentence): + idx_to_remove = [] + + for i, tok in enumerate(sentence["tokens"]): + + # remove whitespace tokens + if not tok.strip(): + idx_to_remove.append(i) + + idx_to_remove.reverse() + + for idx in idx_to_remove: + for annotation_list in sentence.values(): + annotation_list.pop(idx) + + +def process_prediction_file( + filename: str, + dataset_name: str, + syntax_cache: str, + deep_frames_cache: dict, + tmp_cache: Optional[dict] = None, + file_obj: io.TextIOBase = None, + syntax_cache_key: Optional[str] = None, + deep_frames_list: Optional[List[str]] = None, + spacy_model: str = "it_core_news_md", + spacy_model_obj = None +) -> Tuple[List, ...]: + """ + Process a predictions JSON file + :param filename: path to the JSON file + :param syntax_cache: see `make_syntax_cache()` + :param spacy model: spacy model to be used for syntactic analysis + :param file_obj: already opened object corresponding to `filename`. If given, `file_obj` will be used instead + of loading it from `filename`. This is useful when reading the entire corpus from a tarball (which is what the + SocioFillmore webapp does) + :return: + """ + + print("Processing", filename) + + if file_obj is not None: + annotations = json.load(file_obj) + else: + with open(filename, encoding="utf-8") as f: + annotations = json.load(f) + + if syntax_cache is None: + syntax_analyses = [] + for sentence in annotations: + syntax_analyses.append(syntax_analyze(sentence, spacy_model, spacy_model_obj)) + + else: + if syntax_cache_key is None: + syntax_cache_key = make_syntax_cache_key(filename) + + if tmp_cache is not None and syntax_cache_key in tmp_cache: + syntax_analyses = tmp_cache[syntax_cache_key] + + else: + with open(f"{syntax_cache}/{syntax_cache_key[:2]}.json", encoding="utf-8") as cache_file: + grouped_analyses = json.load(cache_file) + syntax_analyses = grouped_analyses[syntax_cache_key] + if tmp_cache is not None: + tmp_cache.clear() + tmp_cache.update(grouped_analyses) + + fn_structures: List[Dict[int, FrameStructure]] = [] + sentences: List[List[str]] = [] + role_analyses: List[Dict[int, Dict[str, str]]] = [] + + for sent_idx, sentence in enumerate(annotations): + + clean_sentence_(sentence) + + try: + sent_structures = process_fn_sentence( + sentence, deep_frames_cache, deep_frames_list=deep_frames_list + ) + + # seems to occur for one specific file in the migration set, TODO find out what happens + except AttributeError: + print("Error processing FN annotations") + sent_structures = {} + syntax = syntax_analyses[sent_idx] + + # disambiguate syntactic constructions + for fs in sent_structures.values(): + target_idx = str(fs.target.tokens_idx[0]) + if target_idx not in syntax: + print( + f"Prediction file {filename}: Cannot find syntactic information for target at idx={target_idx}") + continue + fs_syn = syntax[target_idx][-1] + disambiguate_cxs_(fs, fs_syn) + + roles = process_syn_sem_roles(sent_structures, syntax) + role_analyses.append(roles) + sentences.append(sentence["tokens"]) + fn_structures.append(sent_structures) + + return sentences, fn_structures, syntax_analyses, role_analyses + + +def disambiguate_cxs_(struct: FrameStructure, tgt_syntax): + # no "_" at the beginning: no disambiguation needed + cx = tgt_syntax["syn_construction"] + if not cx.startswith("_"): + return + + # print(struct.frame, struct.deep_frame) + + # NB works only for the selected relevant frames! if any other frames are added, make sure to update this + if struct.deep_frame in ["Transitive_action", "Causation", "Emotion_directed", "Quarreling", "Impact", "Committing_crime"]: + frame_agentivity_type = "active" + elif struct.frame in ACTIVE_FRAMES: + frame_agentivity_type = "active" + elif struct.frame == "Event": + frame_agentivity_type = "impersonal" + else: + frame_agentivity_type = "unaccusative" + + if cx == "_verbal:ACTIVE": + new_cx = f"verbal:{frame_agentivity_type}" + elif cx in ["_verbal:ADPOS", "_verbal:OTH_PART"]: + if frame_agentivity_type == "active": + new_cx = "verbal:passive" + else: + new_cx = f"verbal:{frame_agentivity_type}" + else: + raise ValueError(f"Unknown construction placeholder {cx}") + + tgt_syntax["syn_construction"] = new_cx + + +def find_governed_roles( + syn_self: Dict[str, Any], + syn_children: List[Dict[str, Any]], + roles: List[Tuple[str, AnnotationSpan]], +) -> Dict[str, str]: + + roles_found = {} + + # find roles that are governed by the predicate + for node in [syn_self] + syn_children: + for role_name, role_span in roles: + if node["lome_idx"] in role_span.tokens_idx: + dep_label = node["dependency"] + if role_name not in roles_found and dep_label not in IGNORE_DEP_LABELS: + if node == syn_self: + roles_found[role_name] = None + else: + roles_found[role_name] = dep_label + "↓" + return roles_found + + +def analyze_role_dependencies( + fn_struct, + syntax, + role_analysis=None, + tgt_idx=None, + min_depth=-10, + max_depth=10, + depth=0, + label_prefix="", +): + + if role_analysis is None: + role_analysis = {} + + if tgt_idx is None: + tgt_idx = fn_struct.target.tokens_idx[0] + + if depth > max_depth: + return role_analysis + + if depth < min_depth: + return role_analysis + + new_analysis = {} + new_analysis.update(role_analysis) + token_syntax = syntax[str(tgt_idx)][0] + + def update_analysis(mapping): + for role, dep in mapping.items(): + if role not in new_analysis: + if label_prefix: + if dep is None: + label = label_prefix + depth_label = depth + else: + label = label_prefix + "--" + dep + depth_label = depth + 1 if depth > 0 else depth - 1 + else: + if dep is None: + label = "⋆" + depth_label = depth + else: + label = dep + depth_label = depth + 1 if depth > 0 else depth - 1 + new_analysis[role] = label, depth_label + + update_analysis( + find_governed_roles( + token_syntax, token_syntax["children"], fn_struct.roles) + ) + + # from the initial predicate: first try the children + if depth <= 0: + for child in token_syntax["children"]: + child_analysis = analyze_role_dependencies( + fn_struct, + syntax, + role_analysis=new_analysis, + tgt_idx=child["lome_idx"], + max_depth=max_depth, + min_depth=min_depth, + depth=depth - 1, + label_prefix=child["dependency"] + "↓" + ) + new_analysis.update(child_analysis) + + # ... then try the ancestors + if depth >= 0: + if not token_syntax["ancestors"]: + return new_analysis + + first_ancestor = token_syntax["ancestors"][0] + return analyze_role_dependencies( + fn_struct, + syntax, + role_analysis=new_analysis, + tgt_idx=first_ancestor["lome_idx"], + max_depth=max_depth, + min_depth=min_depth, + depth=depth + 1, + label_prefix=token_syntax["dependency"] + "↑", + ) + + else: + return new_analysis + + +def process_syn_sem_roles( + sent_structures: Dict[int, FrameStructure], syntax: Dict[str, List[Dict[str, Any]]] +) -> Dict[int, Dict[str, str]]: + + analyses = defaultdict(dict) + # go through all frame targets + for struct in sent_structures.values(): + tgt_idx = struct.target.tokens_idx[0] + role_deps = analyze_role_dependencies(struct, syntax, max_depth=10) + analyses[tgt_idx] = clean_role_deps(role_deps) + return analyses + + +def clean_role_deps(role_deps): + res = {} + for role, (dep_str, depth) in role_deps.items(): + dep_parts = dep_str.split("--") + if len(dep_parts) == 1: + res[role] = dep_str, depth + else: + res[role] = "--".join([dp[-1] + for dp in dep_parts[:-1]] + [dep_parts[-1]]), depth + return res + + +def map_or_lookup_deep_frame( + frame: str, deep_frames_cache, save_modified_cache=False, deep_frames_list=None +) -> Tuple[str, Dict[str, str]]: + if frame in deep_frames_cache: + return deep_frames_cache[frame] + else: + deep_frame, mapping = map_to_deep_frame( + frame, deep_frames_list=deep_frames_list + ) + deep_frames_cache[frame] = [deep_frame, mapping] + if save_modified_cache: + with open(DEEP_FRAMES_CACHE_FILE, "w", encoding="utf-8") as f: + json.dump(deep_frames_cache, f) + return deep_frames_cache[frame] + + +def map_to_deep_frame( + frame: str, + target: Optional[str] = None, + mapping: Optional[Dict[str, str]] = None, + self_mapping: Optional[Dict[str, str]] = None, + deep_frames_list: Optional[List[str]] = None, +) -> Tuple[str, Dict[str, str]]: + + if deep_frames_list is None: + deep_frames_list = DEEP_FRAMES + + # look up in FrameNet + try: + fn_entry = fn.frame(frame) + except FramenetError: + return frame, {} + except LookupError: + return frame, {} + + # initial call: `target` == `frame`, mapping maps to self + if target is None: + target = frame + if mapping is None or self_mapping is None: + mapping = self_mapping = {role: role for role in fn_entry.FE.keys()} + + # base case: our frame is a deep frame + if frame in deep_frames_list: + return frame, mapping + + # otherwise, look at parents + inh_relations = [ + fr + for fr in fn_entry.frameRelations + if fr.type.name == "Inheritance" and fr.Child == fn_entry + ] + parents = [fr.Parent for fr in inh_relations] + + # no parents --> failure, return original frame + if not inh_relations: + return target, self_mapping + + # one parent: follow that parent + if len(inh_relations) == 1: + parent_rel = inh_relations[0] + parent = parents[0] + new_mapping = define_fe_mapping(mapping, parent_rel) + return map_to_deep_frame( + parent.name, target, new_mapping, self_mapping, deep_frames_list + ) + + # more parents: check if any of them leads to a deep frame + deep_frames = [] + deep_mappings = [] + for parent_rel, parent in zip(inh_relations, parents): + new_mapping = define_fe_mapping(mapping, parent_rel) + final_frame, final_mapping = map_to_deep_frame( + parent.name, target, new_mapping, self_mapping, deep_frames_list + ) + if final_frame in deep_frames_list: + deep_frames.append(final_frame) + deep_mappings.append(final_mapping) + + for deep_frame in deep_frames_list: + if deep_frame in deep_frames: + idx = deep_frames.index(deep_frame) + return deep_frame, deep_mappings[idx] + + # nothing found, return original frame + return target, self_mapping + + +def define_fe_mapping(mapping, parent_rel): + child_to_parent_mapping = { + fer.subFEName: fer.superFEName for fer in parent_rel.feRelations + } + target_to_parent_mapping = { + role: child_to_parent_mapping[mapping[role]] + for role in mapping + if mapping[role] in child_to_parent_mapping + } + return target_to_parent_mapping + + +def is_at_root(syntax_info): + + # you should either be the actual root... + if syntax_info["dependency"] == "ROOT": + return True + + # ... or be the subject of the root + if syntax_info["dependency"] == "nsubj" and syntax_info["ancestors"][0]["dependency"] == "ROOT": + return True + + return False + + +def get_tarball_blocks(dataset, lome_model="lome_0shot"): + if dataset == "femicides/rai": + return f"output/femicides/lome/{lome_model}/multilabel_rai_ALL_blocks" + if dataset == "femicides/rai_main": + return f"output/femicides/lome/{lome_model}/multilabel_rai_main_blocks" + elif dataset == "femicides/olv": + return f"output/femicides/lome/{lome_model}/multilabel_olv_blocks" + elif dataset == "crashes/thecrashes": + return f"output/crashes/lome/{lome_model}/multilabel_thecrashes_blocks" + elif dataset == "migration/pavia": + return f"output/migration/lome/{lome_model}/multilabel_pavia_blocks" + else: + raise ValueError("Unsupported dataset!") + + +def analyze_single_document(doc_id, event_id, lome_model, dataset, texts_df, deep_frames_cache): + data_domain, data_corpus = dataset.split("/") + + syntax_cache = SYNTAX_ANALYSIS_CACHE_FILES[dataset] + + print(dataset) + + if dataset == "migration/pavia": # this is a hack, fix it! + pred_file_path = f"output/migration/lome/multilabel/{lome_model}/pavia/{event_id}/lome_{doc_id}.comm.json" + elif dataset == "femicides/olv": + pred_file_path = f"output/femicides/lome/lome_0shot/multilabel/olv/{event_id}/lome_{doc_id}.comm.json" + else: + pred_file_path = f"output/{data_domain}/lome/lome_0shot/multilabel/{data_corpus}/{event_id}/lome_{doc_id}.comm.json" + print(f"Analyzing file {pred_file_path}") + + doc_id = os.path.basename(pred_file_path).split(".")[0].split("_")[1] + doc_key = doc_id[:2] + tarball = get_tarball_blocks(dataset, lome_model) + f"/block_{doc_key}.tar" + with tarfile.open(tarball, "r") as tar_f: + pred_file = io.TextIOWrapper(tar_f.extractfile(pred_file_path)) + + ( + sents, + pred_structures, + syntax_analyses, + role_analyses, + ) = process_prediction_file( + filename=pred_file_path, + dataset_name=dataset, + file_obj=pred_file, + syntax_cache=syntax_cache, + deep_frames_cache=deep_frames_cache + ) + output = [] + for sent, structs, syntax, roles in zip( + sents, pred_structures, syntax_analyses, role_analyses + ): + output.append( + { + "sentence": sent, + "fn_structures": [ + dataclasses.asdict(fs) for fs in structs.values() + ], + "syntax": syntax, + "roles": roles, + "meta": { + "event_id": event_id, + "doc_id": doc_id, + "text_meta": get_text_meta(doc_id, texts_df), + }, + } + ) + return output + + +def get_text_meta(doc_id, texts_df): + row = texts_df[texts_df["text_id"] == int(doc_id)].iloc[0] + if "pubdate" in row: + pubdate = row["pubdate"] if not pd.isna(row["pubdate"]) else None + elif "pubyear" in row: + pubdate = int(row["pubyear"]) + else: + pubdate = None + return { + "url": row["url"] if "url" in row else None, + "pubdate": pubdate, + "provider": row["provider"], + "title": row["title"] if not pd.isna(row["title"]) else None, + "days_after_event": int(row["days_after_event"]) if "days_after_event" in row and not pd.isna(row["days_after_event"]) else 0 + } + + +def process_fn_sentence( + sentence, deep_frames_cache, post_process=True, deep_frames_list=None +): + # frame structures in the sentence + sent_structures: Dict[int, FrameStructure] = {} + + # role spans currently being built up (per structure + role name) + cur_spans: Dict[Tuple[int, str]] = {} + for token_idx, (token_str, frame_annos) in enumerate( + zip(sentence["tokens"], sentence["frame_list"]) + ): + for fa in frame_annos: + # remove "virtual root" nonsense token + if "@@VIRTUAL_ROOT@@" in fa: + continue + fa = fa.split("@@")[0] # remove confidence score if it's there + anno, struct_id_str = fa.split("@") + struct_id = int(struct_id_str) + frame_name = anno.split(":")[1] + deep_frame, deep_frame_mapping = map_or_lookup_deep_frame( + frame_name, deep_frames_cache, deep_frames_list=deep_frames_list + ) + if struct_id not in sent_structures: + sent_structures[struct_id] = FrameStructure( + frame=frame_name, + deep_frame=deep_frame, + target=None, + roles=[], + deep_roles=[], + ) + cur_struct = sent_structures[struct_id] + + # TODO: get rid of this hack + anno = anno.replace("I::", "I:") + anno = anno.replace("B::", "B:") + + if anno.split(":")[0] == "T": + if cur_struct.target is None: + cur_struct.target = AnnotationSpan( + [token_idx], [token_str]) + else: + cur_struct.target.tokens_idx.append(token_idx) + cur_struct.target.tokens_str.append(token_str) + elif anno.split(":")[0] == "B": + role_name = anno.split(":")[2] + role_span = AnnotationSpan([token_idx], [token_str]) + cur_struct.roles.append((role_name, role_span)) + if role_name in deep_frame_mapping: + cur_struct.deep_roles.append( + (deep_frame_mapping[role_name], role_span) + ) + cur_spans[(struct_id, role_name)] = role_span + elif anno.split(":")[0] == "I": + role_name = anno.split(":")[2] + role_span = cur_spans[(struct_id, role_name)] + role_span.tokens_str.append(token_str) + role_span.tokens_idx.append(token_idx) + + # post-process: remove punctuation in targets + if post_process: + for fs in sent_structures.values(): + if len(fs.target.tokens_str) > 1: + target_tok_str_to_remove = [] + target_tok_idx_to_remove = [] + for tok_str, tok_idx in zip(fs.target.tokens_str, fs.target.tokens_idx): + if tok_str in ["``", "''", "`", "'", ".", ",", ";", ":"]: + target_tok_str_to_remove.append(tok_str) + target_tok_idx_to_remove.append(tok_idx) + for tok_str, tok_idx in zip( + target_tok_str_to_remove, target_tok_idx_to_remove + ): + fs.target.tokens_str.remove(tok_str) + fs.target.tokens_idx.remove(tok_idx) + + return sent_structures + + +def map_back_spacy_lome_tokens(spacy_doc, lome_tokens): + if len(lome_tokens) > len(spacy_doc): + raise ValueError( + f"Cannot re-tokenize (#lome={len(lome_tokens)} // #spacy={len(spacy_doc)})" + ) + + spacy_to_lome = {} + lome_idx = 0 + for spacy_idx, spacy_token in enumerate(spacy_doc): + spacy_to_lome[spacy_idx] = lome_idx + + # whitespace after token: tokens correspond + if spacy_token.whitespace_: + lome_idx += 1 + return spacy_to_lome + + +def get_syn_category(spacy_token): + if spacy_token.pos_ == "NOUN": + return "n" + if spacy_token.pos_ == "ADJ": + return "adj" + if spacy_token.pos_ == "ADV": + return "adv" + if spacy_token.pos_ == "ADP": + return "p" + if spacy_token.pos_ == "VERB": + if spacy_token.morph.get("VerbForm") == ["Fin"]: + return "v:fin" + if spacy_token.morph.get("VerbForm") == ["Part"]: + return "v:part" + if spacy_token.morph.get("VerbForm") == ["Ger"]: + return "v:ger" + if spacy_token.morph.get("VerbForm") == ["Inf"]: + return "v:inf" + return "other" + + +def syntax_analyze(sentence, spacy_model_name, spacy_model_obj=None) -> Dict[str, Dict[str, Any]]: + lome_tokens = sentence["tokens"] + + # load spacy model locally (so that it works in GAE) + # global nlp + if spacy_model_obj is not None: + nlp = spacy_model_obj + else: + nlp = spacy.load(spacy_model_name) + + spacy_doc = nlp(" ".join(lome_tokens)) + analysis = defaultdict(list) + spacy_to_lome_tokens = map_back_spacy_lome_tokens(spacy_doc, lome_tokens) + for spacy_idx, token in enumerate(spacy_doc): + lome_idx = spacy_to_lome_tokens[spacy_idx] + syn_category = get_syn_category(token) + syn_construction = get_syn_construction(token, syn_category) + children = [] + for c in token.children: + children.append( + { + "token": c.text, + "spacy_idx": c.i, + "lome_idx": spacy_to_lome_tokens[c.i], + "syn_category": get_syn_category(c), + "dependency": c.dep_, + } + ) + ancestors = [] + for a in token.ancestors: + ancestors.append( + { + "token": a.text, + "spacy_idx": a.i, + "lome_idx": spacy_to_lome_tokens[a.i], + "syn_category": get_syn_category(a), + "dependency": a.dep_, + } + ) + + # str key so that it doesn't change when converting to JSON + lome_key = str(lome_idx) + analysis[lome_key].append( + { + "token": token.text, + "dependency": token.dep_, + "spacy_idx": spacy_idx, + "lome_idx": lome_idx, + "syn_category": syn_category, + "syn_construction": syn_construction, + "children": children, + "ancestors": ancestors, + } + ) + return analysis + + +def get_syn_construction(token: Token, syn_category: str) -> str: + if syn_category in ["n", "adj", "adv", "p"]: + return "nonverbal" + + if syn_category.startswith("v:"): + # find reflexives + for c in token.children: + if c.lemma_.lower() in ["si", "zich", "zichzelf"]: + return "verbal:reflexive" + + # find impersonal constructions + for c in token.children: + if c.dep_ == "expl": + return "verbal:impersonal" + + # all other finite verbs/gerunds/infinites -> active construction + if syn_category in ["v:fin", "v:ger", "v:inf"]: + return "_verbal:ACTIVE" + + if syn_category == "v:part": + + if token.dep_ == "acl": + return "_verbal:ADPOS" + + for c in token.children: + + # passive subj or auxiliary present: it's a passive + if c.dep_ in ["nsubj:pass", "aux:pass"]: + return "verbal:passive" + + # auxiliary "HAVE" (avere/hebben) present: it's an active + if ( + c.dep_ == "aux" + and c.lemma_.lower() in ITALIAN_ACTIVE_AUX + DUTCH_ACTIVE_AUX + ): + return "verbal:active" + + return "_verbal:OTH_PART" + + return "other" + + +def get_syntax_info(struct: FrameStructure, syntax: Dict) -> Dict: + target_idx = str(struct.target.tokens_idx[0]) + # print(target_idx, syntax) + syntax_for_target = syntax[target_idx] + return syntax_for_target[-1] + + +def enrich_texts_df(texts_df: pd.DataFrame, events_df: pd.DataFrame): + time_delta_rows: List[Optional[int]] = [] + for idx, text_row in texts_df.iterrows(): + try: + event_row = events_df[events_df["event:id"] + == text_row["event_id"]].iloc[0] + except IndexError: + print(f"Skipping {idx} (IndexError)") + time_delta_rows.append(None) + if "pubdate" not in text_row or pd.isna(text_row["pubdate"]) or pd.isna(event_row["event:date"]): + time_delta_rows.append(None) + else: + try: + pub_date = datetime.strptime( + text_row["pubdate"], "%Y-%m-%d %H:%M:%S") + event_date = datetime.strptime( + event_row["event:date"], "%Y-%m-%d") + time_delta = pub_date - event_date + time_delta_days = time_delta.days + time_delta_rows.append(time_delta_days) + except ValueError as e: + print( + f"\t\terror parsing dates, see below for more info:\n\t\t{e}") + time_delta_rows.append(None) + + return texts_df.assign(days_after_event=time_delta_rows) + + +def read_frames_of_interest(dataset) -> List[str]: + if dataset in ["femicides/rai", "femicides/olv"]: + file = "resources/femicide_frame_list.txt" + elif dataset == "crashes/thecrashes": + file = "resources/crashes_frame_list.txt" + elif dataset == "migration/pavia": + file = "resources/migration_frame_list.txt" + else: + raise ValueError("Unsupported dataset") + + frames = set() + with open(file, encoding="utf-8") as f: + for line in f: + line = line.strip() + if line.startswith("#") or not line: + continue + frames.add(line[0].upper() + line[1:].lower()) + return sorted(frames) + + +def make_dep_label_cache(): + + labels = set() + + for dataset in ["femicides/rai", "crashes/thecrashes", "migration/pavia"]: + + tarball = ( + "output/femicides/lome/lome_0shot/multilabel_rai.tar.gz" + if dataset == "femicides/rai" + else "output/crashes/lome/lome_0shot/multilabel_thecrashes.tar.gz" + if dataset == "crashes/thecrashes" + else "output/migration/lome/lome_0shot/multilabel_pavia.tar.gz" + ) + + spacy_model = ( + "it_core_news_md" if dataset["femicides/rai", + "migration/pavia"] else "nl_core_news_md" + ) + + deep_frames_cache = load_deep_frames_cache(dataset) + syntax_cache = SYNTAX_ANALYSIS_CACHE_FILES[dataset] + + with tarfile.open(tarball, "r:gz") as tar_f: + for mem in [ + m.name for m in tar_f.getmembers() if m.name.endswith(".comm.json") + ]: + if mem is None: + continue + + print(mem) + mem_obj = io.TextIOWrapper(tar_f.extractfile(mem)) + (_, _, _, role_analyses,) = process_prediction_file( + filename=mem, + dataset_name=dataset, + file_obj=mem_obj, + syntax_cache=syntax_cache, + deep_frames_cache=deep_frames_cache, + spacy_model=spacy_model, + ) + if role_analyses is None: + print(f"\tSkipping file {mem}, no role analyses found") + continue + for sent_ra in role_analyses: + for ra in sent_ra.values(): + for dep, _ in ra.values(): + labels.add(dep) + with open(DEP_LABEL_CACHE_FILE, "w", encoding="utf-8") as f_out: + for label in sorted(labels): + f_out.write(label + os.linesep) + + +def analyze_external_file(file_in, file_out, spacy_model): + deep_frames_cache = load_deep_frames_cache() + ( + sents, + pred_structures, + syntax_analyses, + role_analyses, + ) = process_prediction_file(file_in, "", None, deep_frames_cache, spacy_model_obj=spacy_model) + output = [] + for sent, structs, syntax, roles in zip( + sents, pred_structures, syntax_analyses, role_analyses + ): + output.append( + { + "sentence": sent, + "fn_structures": [ + dataclasses.asdict(fs) for fs in structs.values() + ], + "syntax": syntax, + "roles": roles + } + ) + with open(file_out, "w", encoding="utf-8") as f_out: + json.dump(output, f_out, indent=4) + + +if __name__ == "__main__": + ap = argparse.ArgumentParser() + ap.add_argument("command", choices=[ + "make_syntax_cache", "make_dep_label_cache", "analyze_file" + ]) + ap.add_argument("dataset", choices=["femicides/rai", "femicides/rai_main", "femicides/rai_ALL", + "femicides/olv", "crashes/thecrashes", "migration/pavia", "*"]) + ap.add_argument("--input_file", type=str, default="") + ap.add_argument("--output_file", type=str, default="") + args = ap.parse_args() + + if args.command == "make_syntax_cache": + + if args.dataset == "*": + raise ValueError( + "Please specificy a dataset for `make_syntax_cache`") + + if args.dataset == "crashes/thecrashes": + make_syntax_cache( + "crashes/thecrashes", skip_fn=lambda f: not is_a_dutch_text(f) + ) + elif args.dataset == "femicides/rai": + make_syntax_cache("femicides/rai") + elif args.dataset == "femicides/rai_main": + make_syntax_cache("femicides/rai_main") + elif args.dataset == "femicides/rai_ALL": + make_syntax_cache("femicides/rai_ALL") + elif args.dataset == "femicides/olv": + make_syntax_cache("femicides/olv") + else: + make_syntax_cache("migration/pavia") + + elif args.command == "make_dep_label_cache": + make_dep_label_cache() + + elif args.command == "analyze_file": + analyze_external_file(args.input_file, args.output_file) + + + diff --git a/sociofillmore/common/convert_comms.py b/sociofillmore/common/convert_comms.py new file mode 100755 index 0000000000000000000000000000000000000000..174549d5db424f73617e4e06b332b57ceef3af72 --- /dev/null +++ b/sociofillmore/common/convert_comms.py @@ -0,0 +1,208 @@ +""" +Adapted from comm2multilabel.py from the Bert-for-FrameNet project (https://gitlab.com/gosseminnema/bert-for-framenet) +""" + +import dataclasses +import json +import os +import glob +import sys +from collections import defaultdict +from typing import List, Optional + +import nltk +from concrete import Communication +from concrete.util import read_communication_from_file, lun, get_tokens + + +@dataclasses.dataclass +class FrameAnnotation: + tokens: List[str] = dataclasses.field(default_factory=list) + pos: List[str] = dataclasses.field(default_factory=list) + + +@dataclasses.dataclass +class MultiLabelAnnotation(FrameAnnotation): + frame_list: List[List[str]] = dataclasses.field(default_factory=list) + lu_list: List[Optional[str]] = dataclasses.field(default_factory=list) + + def to_txt(self): + for i, tok in enumerate(self.tokens): + yield f"{tok} {self.pos[i]} {'|'.join(self.frame_list[i]) or '_'} {self.lu_list[i] or '_'}" + + @staticmethod + def from_txt(sentence_lines): + + tokens = [] + pos = [] + frame_list = [] + lu_list = [] + for line in sentence_lines: + + # ignore any spaces + if line.startswith(" "): + continue + + columns = line.split() + tokens.append(columns[0]) + pos.append(columns[1]) + + # read frame list, handle empty lists + if columns[2] == "_": + frame_list.append([]) + else: + frame_list.append(columns[2].split("|")) + + # read lu list, handle nulls + if columns[3] == "_": + lu_list.append(None) + else: + lu_list.append(columns[3]) + return MultiLabelAnnotation(tokens, pos, frame_list, lu_list) + + def get_label_set(self): + label_set = set() + for tok_labels in self.frame_list: + for label in tok_labels: + label_set.add(label) + return label_set + + +def convert_file(file, language="english", confidence_filter=0.0): + print("Reading input file...") + comm = read_communication_from_file(file) + + print("Mapping sentences to situations...") + tok_uuid_to_situation = map_sent_to_situation(comm) + + print("# sentences with situations:", len(tok_uuid_to_situation)) + + for section in lun(comm.sectionList): + for sentence in lun(section.sentenceList): + tokens = get_tokens(sentence.tokenization) + situations = tok_uuid_to_situation[sentence.tokenization.uuid.uuidString] + tok_to_annos = map_tokens_to_annotations(comm, situations, confidence_filter) + + frame_list, tok_list = prepare_ml_lists(language, tok_to_annos, tokens) + + ml_anno = MultiLabelAnnotation(tok_list, ["_" for _ in tok_list], frame_list, + [None for _ in tok_list]) + yield ml_anno + + +def prepare_ml_lists(language, tok_to_annos, tokens): + tok_list = [] + frame_list = [] + for tok_idx, tok in enumerate(tokens): + # split tokens that include punctuation + split_tok = nltk.word_tokenize(tok.text, language=language) + tok_list.extend(split_tok) + tok_anno = [] + for anno in tok_to_annos.get(tok_idx, []): + tok_anno.append(anno) + frame_list.extend([list(tok_anno) for _ in split_tok]) + + # remove annotations from final punctuation & solve BIO weird stuff + for idx, (tok, frame_annos) in enumerate(zip(tok_list, frame_list)): + if tok in ",.:;\"'`«»": + to_delete = [] + for fa in frame_annos: + if fa.startswith("T:"): + compare_fa = fa + else: + compare_fa = "I" + fa[1:] + + if idx == len(tok_list) - 1: + to_delete.append(fa) + elif compare_fa not in frame_list[idx + 1]: + to_delete.append(fa) + + for fa in to_delete: + frame_annos.remove(fa) + + for fa_idx, fa in enumerate(frame_annos): + + if fa.startswith("B:"): + # check if we had exactly the same label the token before + if idx > 0 and fa in frame_list[idx - 1]: + frame_annos[fa_idx] = "I" + fa[1:] + + return frame_list, tok_list + + +def map_tokens_to_annotations(comm: Communication, situations: List[str], confidence_filter: float): + tok_to_annos = defaultdict(list) + for sit_idx, sit_uuid in enumerate(situations): + situation = comm.situationMentionForUUID[sit_uuid] + if situation.confidence < confidence_filter: + continue + + frame_type = situation.situationKind + tgt_tokens = situation.tokens.tokenIndexList + + if frame_type == "@@VIRTUAL_ROOT@@": + continue + + for tok_id in tgt_tokens: + tok_to_annos[tok_id].append(f"T:{frame_type}@{sit_idx:02}@@{situation.confidence}") + for arg in situation.argumentList: + if arg.confidence < confidence_filter: + continue + + fe_type = arg.role + fe_tokens = arg.entityMention.tokens.tokenIndexList + for tok_n, tok_id in enumerate(fe_tokens): + if tok_n == 0: + bio = "B" + else: + bio = "I" + tok_to_annos[tok_id].append(f"{bio}:{frame_type}:{fe_type}@{sit_idx:02}@@{arg.confidence}") + return tok_to_annos + + +def map_sent_to_situation(comm): + tok_uuid_to_situation = defaultdict(list) + for situation in comm.situationMentionSetList: + for mention in situation.mentionList: + tok_uuid_to_situation[mention.tokens.tokenizationId.uuidString].append(mention.uuid.uuidString) + return tok_uuid_to_situation + + +def main(): + file_in = sys.argv[1] + language = sys.argv[2] + output_directory = sys.argv[3] + confidence_filter = float(sys.argv[4]) + split_by_migration_files = False + + file_in_base = os.path.basename(file_in) + file_out = f"{output_directory}/lome_{file_in_base}" + multi_label_annos = list(convert_file(file_in, language=language, confidence_filter=confidence_filter)) + multi_label_json = [dataclasses.asdict(anno) for anno in multi_label_annos] + + if split_by_migration_files: + files = glob.glob("output/migration/split_data/split_dev10_sep_txt_files/*.orig.txt") + files.sort(key=lambda f: int(f.split("/")[-1].rstrip(".orig.txt"))) + + for anno, file in zip(multi_label_annos, files): + basename = file.split("/")[-1].rstrip(".orig.txt") + spl_file_out = f"{output_directory}/{basename}" + with open(f"{spl_file_out}.txt", "w", encoding="utf-8") as f_txt: + for line in anno.to_txt(): + f_txt.write(line + os.linesep) + f_txt.write(os.linesep) + + else: + print(file_out) + with open(f"{file_out}.json", "w", encoding="utf-8") as f_json: + json.dump(multi_label_json, f_json, indent=4) + + with open(f"{file_out}.txt", "w", encoding="utf-8") as f_txt: + for anno in multi_label_annos: + for line in anno.to_txt(): + f_txt.write(line + os.linesep) + f_txt.write(os.linesep) + + +if __name__ == '__main__': + main() diff --git a/sociofillmore/common/filter_lang.py b/sociofillmore/common/filter_lang.py new file mode 100755 index 0000000000000000000000000000000000000000..0c8b837715ad15688b6f4186a15637310c20e435 --- /dev/null +++ b/sociofillmore/common/filter_lang.py @@ -0,0 +1,32 @@ +import langdetect + +import json + + +DATA_FILE = "data/thecrashes_data.json" + + +def main(): + texts = get_texts() + for text in texts: + if langdetect.detect(text) == "en": + print("\n<-------------------------------") + print(text) + print("------------------------------>\n") + + +def get_texts(): + with open(DATA_FILE, encoding="utf-8") as f: + data = json.load(f) + + texts = [] + + for event in data: + for article in event["articles"]: + texts.append(article["title"] + "\n\n" + article["summary"]) + + return texts + + +if __name__ == '__main__': + main() diff --git a/sociofillmore/common/get_nltk_fn_roles.py b/sociofillmore/common/get_nltk_fn_roles.py new file mode 100755 index 0000000000000000000000000000000000000000..63383680f2389090512f5816cc0861d2c924da20 --- /dev/null +++ b/sociofillmore/common/get_nltk_fn_roles.py @@ -0,0 +1,11 @@ +from nltk.corpus import framenet as fn +import json + +frames_to_roles = {} + +for frame in fn.frames(): + frames_to_roles[frame.name] = list(frame.FE.keys()) + + +with open("resources/fn_frames_to_roles.json", "w", encoding="utf-8") as f: + json.dump(frames_to_roles, f) diff --git a/sociofillmore/common/pos_based_targetid.py b/sociofillmore/common/pos_based_targetid.py new file mode 100755 index 0000000000000000000000000000000000000000..fb4ba66a747c708e642256345dfb35f010dd267b --- /dev/null +++ b/sociofillmore/common/pos_based_targetid.py @@ -0,0 +1,31 @@ +import os +import json + +import spacy + + +TARGET_POS = [ + "NOUN", + "VERB", + "ADJ", + "ADV" +] + + +def do_frameid(): + nlp = spacy.load("it_core_news_md") + + with open("data/migration/corpus_titoli_all_raw.txt", encoding="utf-8") as f_in, \ + open("output/migration/pos_based_targetid/corpus_titoli_all_raw.jsonl", "w", encoding="utf-8") as f_out: + + for line in f_in: + doc = nlp(line.strip()) + out = { + "tokens": [t.text for t in doc], + "predicates": [i for i, t in enumerate(doc) if t.pos_ in TARGET_POS] + } + f_out.write(json.dumps(out) + os.linesep) + + +if __name__ == "__main__": + do_frameid() diff --git a/sociofillmore/common/split_lome_files.py b/sociofillmore/common/split_lome_files.py new file mode 100644 index 0000000000000000000000000000000000000000..325c6855a887d7a001b44b57800f40ea994c1828 --- /dev/null +++ b/sociofillmore/common/split_lome_files.py @@ -0,0 +1,22 @@ +import os +import glob +import tarfile + + +def split_lome_files(lome_folder, output_folder): + for file in glob.glob(f"{lome_folder}/**/*.comm.*"): + doc_id = os.path.basename(file).split(".")[0].split("_")[1] + doc_key = doc_id[:2] + + print(file, "->", doc_key) + + with tarfile.open(f"{output_folder}/block_{doc_key}.tar", "a") as tar_f: + tar_f.add(file) + + +if __name__ == "__main__": + #split_lome_files("output/migration/lome/multilabel/lome_0shot/pavia/", "output/migration/lome/lome_0shot/multilabel_pavia_blocks") + # split_lome_files("output/femicides/lome/lome_0shot/multilabel/rai/", "output/femicides/lome/lome_0shot/multilabel_rai_blocks") + split_lome_files("output/femicides/lome/lome_0shot/multilabel/rai_ALL/", "output/femicides/lome/lome_0shot/multilabel_rai_ALL_blocks") + # split_lome_files("output/femicides/lome/lome_0shot/multilabel/olv/", "output/femicides/lome/lome_0shot/multilabel_olv_blocks") + # split_lome_files("output/crashes/lome/lome_0shot/multilabel/thecrashes/", "output/crashes/lome/lome_0shot/multilabel_thecrashes_blocks") \ No newline at end of file diff --git a/sociofillmore/crashes/__pycache__/utils.cpython-37.pyc b/sociofillmore/crashes/__pycache__/utils.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e329b4bfd5cc93699420f1237e39fe8bc08fbf5 Binary files /dev/null and b/sociofillmore/crashes/__pycache__/utils.cpython-37.pyc differ diff --git a/sociofillmore/crashes/__pycache__/utils.cpython-39.pyc b/sociofillmore/crashes/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7853b612a8f8ce134d6768757b4ae246c156a402 Binary files /dev/null and b/sociofillmore/crashes/__pycache__/utils.cpython-39.pyc differ diff --git a/sociofillmore/crashes/generate_templates.py b/sociofillmore/crashes/generate_templates.py new file mode 100755 index 0000000000000000000000000000000000000000..eb526a00b7e07cd4c9f49dbcc9a2fe93c0570a3c --- /dev/null +++ b/sociofillmore/crashes/generate_templates.py @@ -0,0 +1,277 @@ +import random +import json +import os + +random.seed(2021) + + +NUM_SENTENCES = 100_000 +NUM_FAILS = 25 + + +SENT_TYPES = ("0_PTY", "1_PTY", "2_PTY") +SENT_1_PTY_TYPES = ("VICTIM", "OUTCOME", "DRIVE") +SENT_ACTIVE_TYPES = ("ACTIVE", "NON_ACTIVE") + +SENTS_0_PTY_OUTCOME = ("[[OUTCOME]] [[CIRCUMSTANCE]] [[PLACE]]", + "[[OUTCOME]] [[CIRCUMSTANCE]] [[TIME]]", "[[OUTCOME]] [[CIRCUMSTANCE]]") +SENTS_1_PTY_VICTIM = ("[[SUBJECT]] [[VERB_V2]] [[PLACE]]", + "[[SUBJECT]] [[TIME]] [[VERB_V2]]", "[[SUBJECT]] [[VERB_V2]]") +SENTS_1_PTY_OUTCOME = ("[[SUBJECT]] [[OUTCOME]] [[PLACE]] [[CIRCUMSTANCE]]", + "[[SUBJECT]] [[OUTCOME]] [[CIRCUMSTANCE]]") +SENTS_1_PTY_DRIVE = ("[[SUBJECT]] [[VP_DRIVE]] [[PLACE]]", + "[[SUBJECT]] [[VP_DRIVE]]") +SENTS_2_PTYS = ("[[SUBJECT]] [[VERB_V2]] [[VERB_P]] [[OTHER]] [[VERB_REST]] [[PLACE]]", + "[[SUBJECT]] [[VERB_V2]] [[TIME]] [[VERB_P]] [[OTHER]] [[VERB_REST]]", "[[SUBJECT]] [[VERB_V2]] [[VERB_P]] [[OTHER]] [[VERB_REST]]") + +PLACES = ("op stationsplein", "in stadscentrum", "op kruispunt Westerhaven", "op A27", "op A10", "in Lelystad", + "in Assen", "in Amsterdam", "bij Renkum", "in Schilderswijk", "bij knooppunt Lunetten", "op zuidelijke ringweg", + "in de buurt van de Erasmusbrug", "op schoolplein Stedelijk Gymnasium", "bij afrit Rotterdam-Noord", "op Kanaleneiland") +TIMES = ("tijdens avondspits", "vrijdagavond", + "dinsdagochtend", "donderdagnacht", "rond middaguur") +CIRCUMSTANCES = ("na ongeluk", "na aanrijding", "na botsing", "na crash") +CIRCUMSTANCES_AGT = (", dader ervandoor", ", dader ervandoor", ", dader rijdt door", ", bestuurder rijdt door") + +OUTCOME_0_TYPES = ("TRAFFIC", "HUMAN") +OUTCOMES_0_TRAFFIC = ("verkeersopstopping", "file", "veel vertraging") +OUTCOMES_0_HUMAN = ("dode", "zwaargewonde", "gewonde", "drie gewonden") +OUTCOMES_1 = ("dood", "overleden", "zwaargewond", "lichtgewond", "ongedeerd") + +SUBJECT_TYPES = ("WEAK_PTY", "DRIVER", "VERHICLE") + +VPS_DRIVE_ACTIVE = ("rijdt tegen boom", "veroorzaakt ongeluk") +VPS_DRIVE_NON_ACTIVE = ("verongelukt", "gecrasht", "uit de bocht gevlogen", "raakt gewond", "raakt gewond door klap") +EVENT_VERBS_1_VICTIM = ("aangereden", "geschept", "raakt gewond", "raakt gewond door klap") +EVENT_VERBS_2_ACTIVE_ANY = ("raakt|_|_", "botst|op|_", "botst|tegen|_") +EVENT_VERBS_2_ACTIVE_DRIVE = ("rijdt|_|aan", "rijdt|_|dood", "schept|_|_") +EVENT_VERBS_2_NON_ACTIVE_DRIVER = ( + "aangereden|door|_", "geschept|door|_") +EVENT_VERBS_2_NON_ACTIVE_VEHICLE = ( + "aangereden|door|_", "geschept|door|_", "komt|onder|_") +EVENT_VERBS_2_NON_ACTIVE_ANY = ( + "geraakt|door|_",) + + + +WEAK_PTY_NPS = ("fietser", "skateboarder", "wielrenner", "rolschaatser", "jogger", "voetganger", "motorrijder", + "fietskoerier", "[[PERSON]] op fiets", "[[PERSON]] op e-bike") +ANY_PERSON_NPS = ("vrouw", "man", "meisje", "jongen", + "bejaarde vrouw", "bejaarde man", "Duitser", "toerist") +CYCLIST_PERSON_NPS = ("postbode", "maaltijdbezorger", "politieagent") +DRIVER_NPS = ("automobilist", "automobiliste", "bestuurder", "dronken automobilist", "dronken bestuurder", "motorrijder", + "minderjarige bestuurder", "trucker", "taxichauffeur", "[[PERSON]] in auto", "dronken [[PERSON]] in auto") +VEHICLE_NPS = ("auto", "personenauto", "vrachtwagen", "tractor", "auto met caravan", "scooter", "motor", + "tram", "stadsbus", "lijn 10", "touringcar", "camper", "vorkheftruck") + + +def generate_weak_pty(): + noun_phrase = random.choice(WEAK_PTY_NPS) + if "[[PERSON]]" in noun_phrase: + person = random.choice(ANY_PERSON_NPS + CYCLIST_PERSON_NPS) + return noun_phrase.replace("[[PERSON]]", person) + else: + return noun_phrase + + +def generate_driver(): + noun_phrase = random.choice(DRIVER_NPS) + if "[[PERSON]]" in noun_phrase: + person = random.choice(ANY_PERSON_NPS) + return noun_phrase.replace("[[PERSON]]", person) + else: + return noun_phrase + + +def make_sentence(template, fields): + sentence = template + for field, value in fields.items(): + sentence = sentence.replace(f"[[{field}]]", value) + sentence = sentence.replace("_", "").replace(" ", " ").strip() + sentence = sentence[0].upper() + sentence[1:] + return sentence + + +def main(): + sentences = {} + + dup_fails = 0 + while len(sentences) < NUM_SENTENCES and dup_fails < NUM_FAILS: + fields = {} + + label = {"party_mentioned": 0, "party_human": 0, "active": False} + + fields["TIME"] = random.choice(TIMES) + fields["PLACE"] = random.choice(PLACES) + + sent_type = random.choice(SENT_TYPES) + if sent_type == "0_PTY": + if random.random() < 0.5: + fields["CIRCUMSTANCE"] = random.choice(CIRCUMSTANCES) + else: + fields["CIRCUMSTANCE"] = random.choice(CIRCUMSTANCES_AGT) + label["party_mentioned"] += 1 + label["party_human"] += 1 + + outcome_type = random.choice(OUTCOME_0_TYPES) + if outcome_type == "TRAFFIC": + fields["OUTCOME"] = random.choice(OUTCOMES_0_TRAFFIC) + else: + fields["OUTCOME"] = random.choice(OUTCOMES_0_HUMAN) + label["party_mentioned"] += 1 + label["party_human"] += 1 + sentence = make_sentence( + random.choice(SENTS_0_PTY_OUTCOME), fields) + + elif sent_type == "1_PTY": + if random.random() < 0.5: + fields["CIRCUMSTANCE"] = random.choice(CIRCUMSTANCES) + else: + fields["CIRCUMSTANCE"] = random.choice(CIRCUMSTANCES_AGT) + label["party_mentioned"] += 1 + label["party_human"] += 1 + + sent_subtype = random.choice(SENT_1_PTY_TYPES) + if sent_subtype == "VICTIM": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_weak_pty() + fields["VERB_V2"] = random.choice(EVENT_VERBS_1_VICTIM) + sentence = make_sentence( + random.choice(SENTS_1_PTY_VICTIM), fields) + elif sent_subtype == "OUTCOME": + subject_type = random.choice(["WEAK_PTY", "DRIVER"]) + fields["OUTCOME"] = random.choice(OUTCOMES_1) + if subject_type == "WEAK_PTY": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_weak_pty() + else: # driver + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_driver() + sentence = make_sentence( + random.choice(SENTS_1_PTY_OUTCOME), fields) + else: # drive + subject_type = random.choice(["DRIVER", "VERHICLE"]) + active_type = random.choice(SENT_ACTIVE_TYPES) + if active_type == "ACTIVE": + fields["VP_DRIVE"] = random.choice(VPS_DRIVE_ACTIVE) + label["active"] = True + else: + fields["VP_DRIVE"] = random.choice(VPS_DRIVE_NON_ACTIVE) + if subject_type == "DRIVER": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_driver() + else: # vehicle + label["party_mentioned"] += 1 + fields["SUBJECT"] = random.choice(VEHICLE_NPS) + sentence = make_sentence( + random.choice(SENTS_1_PTY_DRIVE), fields) + else: # 2 pty + active_type = random.choice(SENT_ACTIVE_TYPES) + if active_type == "ACTIVE": + subject_type = random.choice(["WEAK_PTY", "DRIVER", "VERHICLE"]) + label["active"] = True + + if subject_type == "WEAK_PTY": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_ACTIVE_ANY).split("|") + fields["SUBJECT"] = generate_weak_pty() + other_type = random.choice(["WEAK_PTY", "VEHICLE"]) + elif subject_type == "DRIVER": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_driver() + if random.random() < 0.5: + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_ACTIVE_ANY).split("|") + other_type = random.choice(["WEAK_PTY", "VEHICLE"]) + else: + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_ACTIVE_DRIVE).split("|") + other_type = "WEAK_PTY" + + else: # vehicle + label["party_mentioned"] += 1 + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_ACTIVE_ANY + EVENT_VERBS_2_ACTIVE_DRIVE).split("|") + fields["SUBJECT"] = random.choice(VEHICLE_NPS) + + if other_type == "WEAK_PTY": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["OTHER"] = generate_weak_pty() + elif other_type == "DRIVER": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["OTHER"] = generate_driver() + else: # vehicle + label["party_mentioned"] += 1 + fields["OTHER"] = random.choice(VEHICLE_NPS) + + else: # non-active + other_type = random.choice(["WEAK_PTY", "DRIVER", "VEHICLE"]) + if other_type == "WEAK_PTY": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["OTHER"] = generate_weak_pty() + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_NON_ACTIVE_ANY).split("|") + subject_type = random.choice(["WEAK_PTY", "DRIVER", "VEHICLE"]) + + elif other_type == "DRIVER": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["OTHER"] = generate_driver() + if random.random() < 0.5: + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_NON_ACTIVE_ANY).split("|") + subject_type = random.choice(["WEAK_PTY", "DRIVER", "VEHICLE"]) + else: + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_NON_ACTIVE_DRIVER).split("|") + subject_type = random.choice(["WEAK_PTY"]) + + else: # "vehicle" + label["party_mentioned"] += 1 + fields["OTHER"] = random.choice(VEHICLE_NPS) + if random.random() < 0.5: + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_NON_ACTIVE_ANY).split("|") + subject_type = random.choice(["WEAK_PTY", "DRIVER", "VEHICLE"]) + else: + fields["VERB_V2"], fields["VERB_P"], fields["VERB_REST"] = random.choice( + EVENT_VERBS_2_NON_ACTIVE_VEHICLE).split("|") + subject_type = random.choice(["WEAK_PTY"]) + + if subject_type == "WEAK_PTY": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_weak_pty() + elif subject_type == "DRIVER": + label["party_mentioned"] += 1 + label["party_human"] += 1 + fields["SUBJECT"] = generate_driver() + else: # vehicle + label["party_mentioned"] += 1 + fields["SUBJECT"] = random.choice(VEHICLE_NPS) + + sentence = make_sentence(random.choice(SENTS_2_PTYS), fields) + + if sentence not in sentences: + sentences[sentence] = label + dup_fails = 0 + else: + dup_fails += 1 + + with open("output/crashes/generate_templates/sentences.jsonl", "w", encoding="utf-8") as f_out: + for sentence, label in sentences.items(): + f_out.write(json.dumps({"sentence": sentence, "label": label}) + os.linesep) + f_out.write(os.linesep) + + +if __name__ == "__main__": + main() diff --git a/sociofillmore/crashes/make_bechdel_dicts.py b/sociofillmore/crashes/make_bechdel_dicts.py new file mode 100755 index 0000000000000000000000000000000000000000..0e9fcbe09b87cb201a4eecdb5a4eef30c0a9b556 --- /dev/null +++ b/sociofillmore/crashes/make_bechdel_dicts.py @@ -0,0 +1,90 @@ +import sys +import os +import json + +sys.path.append("./libs") +from OpenDutchWordnet import Wn_grid_parser + + +def find_all_le_hyponyms(instance, le_id): + print(f"Starting from `{le_id}`...") + le_el = instance.les_find_le(le_id) + le_ss = le_el.get_synset_id() + siblings = {le.get_id() for le in instance.les_all_les_of_one_synset(le_ss)} + print(f"Siblings: {siblings}") + synset_el = instance.synsets_find_synset(le_ss) + print(f"Top-level synset: `{le_el.get_synset_id()}`...") + hyponyms = find_all_synset_hyponyms(instance, synset_el) + return siblings.union(hyponyms) + + +def find_all_synset_hyponyms(instance, synset_el): + print(f"Finding hyponyms of synset with gloss: `{synset_el.get_glosses()[:1]}`...") + hypo_les = set() + hypo_rels = synset_el.get_relations("has_hyponym") + for rel in hypo_rels: + hypo_ss = rel.get_target() + print(hypo_ss) + ss_les = {le.get_id() for le in instance.les_all_les_of_one_synset(hypo_ss)} + for i in ss_les: + print(f"\tfound LE: {i}") + ss_les.update(find_all_synset_hyponyms(instance, instance.synsets_find_synset(hypo_ss))) + hypo_les.update(ss_les) + return hypo_les + + +def find_siblings_and_hyperonym(instance, le_id): + le_el = instance.les_find_le(le_id) + le_ss = le_el.get_synset_id() + siblings = {le.get_id() for le in instance.les_all_les_of_one_synset(le_ss)} + print(siblings) + synset_el = instance.synsets_find_synset(le_ss) + hyper = synset_el.get_relations("has_hyperonym")[0] + hyper_ss = instance.synsets_find_synset(hyper.get_target()) + print(hyper_ss.get_glosses()) + print({le.get_id() for le in instance.les_all_les_of_one_synset(hyper.get_target())}) + + +def main(): + instance = Wn_grid_parser(Wn_grid_parser.odwn) + # find_all_le_hyponyms(instance, "slachtoffer-n-4") + dicts = { + "vehicles": { + "WN:cars": sorted(find_all_le_hyponyms(instance, "automobiel-n-1")), + "WN:motorbikes": sorted(find_all_le_hyponyms(instance, "motorfiets-n-1")), + "WN:bikes": sorted(find_all_le_hyponyms(instance, "fiets-n-1")), + "WN:buses": sorted(find_all_le_hyponyms(instance, "autobus-n-1")), + "extra": sorted(["scootmobiel", "e-bike"]) + }, + "persons": { + "WN:driver": sorted(find_all_le_hyponyms(instance, "bestuurder-n-2")), + "WN:cyclist": sorted(find_all_le_hyponyms(instance, "fietser-n-1")), + "WN:walker": sorted(find_all_le_hyponyms(instance, "loper-n-4")), + "WN:pedestrian": sorted(find_all_le_hyponyms(instance, "voetganger-n-1")), + "WN:victim": sorted(find_all_le_hyponyms(instance, "slachtoffer-n-4")), + "extra": sorted( + ["man", "vrouw", "jongen", "meisje", "persoon", "bejaarde", "maaltijdbezorger"] + ) + } + } + + ignore_file = "output/crashes/predict_bechdel/lexical_dicts_ignore.json" + if os.path.isfile(ignore_file): + with open(ignore_file, encoding="utf-8") as f_ign: + ignore = json.load(f_ign) + + cleaned_dicts = {} + for category in dicts.keys(): + cleaned_dicts[category] = {} + for subcat, words in dicts[category].items(): + ignore_subcat = ignore.get(category, {}).get(subcat, []) + cleaned_dicts[category][subcat] = [w for w in words if w not in ignore_subcat] + else: + cleaned_dicts = dicts + + with open("output/crashes/predict_bechdel/lexical_dicts.json", "w", encoding="utf-8") as f_out: + json.dump(cleaned_dicts, f_out, indent=4) + + +if __name__ == "__main__": + main() diff --git a/sociofillmore/crashes/predict_bechdel.py b/sociofillmore/crashes/predict_bechdel.py new file mode 100755 index 0000000000000000000000000000000000000000..56aa50f6ba529ce6f3967c0147e4604be412e3f0 --- /dev/null +++ b/sociofillmore/crashes/predict_bechdel.py @@ -0,0 +1,500 @@ +import os +import re +from typing import Dict, Iterable, List, Optional, Tuple +import json +import random +import argparse +from allennlp.data.fields.field import Field +from allennlp.data.fields.sequence_field import SequenceField +from allennlp.models.model import Model +from allennlp.nn.util import get_text_field_mask +from allennlp.predictors.predictor import Predictor + +import pandas as pd +import spacy +import torch +from sklearn.preprocessing import MultiLabelBinarizer + +from allennlp.common.util import pad_sequence_to_length +from allennlp.data import TextFieldTensors +from allennlp.data.vocabulary import Vocabulary +from allennlp.data import DatasetReader, TokenIndexer, Instance, Token +from allennlp.data.fields import TextField, LabelField +from allennlp.data.token_indexers.pretrained_transformer_indexer import ( + PretrainedTransformerIndexer, +) +from allennlp.data.tokenizers.pretrained_transformer_tokenizer import ( + PretrainedTransformerTokenizer, +) +from allennlp.models import BasicClassifier +from allennlp.modules.text_field_embedders.basic_text_field_embedder import ( + BasicTextFieldEmbedder, +) +from allennlp.modules.token_embedders.pretrained_transformer_embedder import ( + PretrainedTransformerEmbedder, +) +from allennlp.modules.seq2vec_encoders.bert_pooler import BertPooler +from allennlp.modules.seq2vec_encoders.cls_pooler import ClsPooler +from allennlp.training.checkpointer import Checkpointer +from allennlp.training.gradient_descent_trainer import GradientDescentTrainer +from allennlp.data.data_loaders.simple_data_loader import SimpleDataLoader +from allennlp.training.optimizers import AdamOptimizer +from allennlp.predictors.text_classifier import TextClassifierPredictor +from allennlp.training.callbacks.tensorboard import TensorBoardCallback +from torch import nn +from torch.nn.functional import binary_cross_entropy_with_logits + + +random.seed(1986) + + +SEQ_LABELS = ["humansMentioned", "vehiclesMentioned", "eventVerb", "activeEventVerb"] + + +# adapted from bert-for-framenet project +class SequenceMultiLabelField(Field): + + def __init__(self, + labels: List[List[str]], + sequence_field: SequenceField, + binarizer: MultiLabelBinarizer, + label_namespace: str + ): + self.labels = labels + self._indexed_labels = None + self._label_namespace = label_namespace + self.sequence_field = sequence_field + self.binarizer = binarizer + + @staticmethod + def retokenize_tags(tags: List[List[str]], + offsets: List[Tuple[int, int]], + wp_primary_token: str = "last", + wp_secondary_tokens: str = "empty", + empty_value=lambda: [] + ) -> List[List[str]]: + tags_per_wordpiece = [ + empty_value() # [CLS] + ] + + for i, (off_start, off_end) in enumerate(offsets): + tag = tags[i] + + # put a tag on the first wordpiece corresponding to the word token + # e.g. "hello" --> "he" + "##ll" + "##o" --> 2 extra tokens + # TAGS: [..., TAG, None, None, ...] + num_extra_tokens = off_end - off_start + if wp_primary_token == "first": + tags_per_wordpiece.append(tag) + if wp_secondary_tokens == "repeat": + tags_per_wordpiece.extend(num_extra_tokens * [tag]) + else: + tags_per_wordpiece.extend(num_extra_tokens * [empty_value()]) + if wp_primary_token == "last": + tags_per_wordpiece.append(tag) + + tags_per_wordpiece.append(empty_value()) # [SEP] + + return tags_per_wordpiece + + def count_vocab_items(self, counter: Dict[str, Dict[str, int]]): + for label_list in self.labels: + for label in label_list: + counter[self._label_namespace][label] += 1 + + def get_padding_lengths(self) -> Dict[str, int]: + return {"num_tokens": self.sequence_field.sequence_length()} + + def index(self, vocab: Vocabulary): + + indexed_labels: List[List[int]] = [] + for sentence_labels in self.labels: + sentence_indexed_labels = [] + for label in sentence_labels: + try: + sentence_indexed_labels.append( + vocab.get_token_index(label, self._label_namespace)) + except KeyError: + print(f"[WARNING] Ignore unknown label {label}") + indexed_labels.append(sentence_indexed_labels) + self._indexed_labels = indexed_labels + + def as_tensor(self, padding_lengths: Dict[str, int]) -> torch.Tensor: + + # binarize + binarized_seq = self.binarizer.transform(self._indexed_labels).tolist() + + # padding + desired_num_tokens = padding_lengths["num_tokens"] + padded_tags = pad_sequence_to_length(binarized_seq, desired_num_tokens, + default_value=lambda: list(self.binarizer.transform([[]])[0])) + + tensor = torch.tensor(padded_tags, dtype=torch.float) + return tensor + + def empty_field(self) -> 'Field': + + field = SequenceMultiLabelField( + [], self.sequence_field.empty_field(), self.binarizer, self._label_namespace) + field._indexed_labels = [] + return field + + +# adapted from bert-for-framenet project +class MultiSequenceLabelModel(Model): + + def __init__(self, embedder: PretrainedTransformerEmbedder, decoder_output_size: int, hidden_size: int, vocab: Vocabulary, embedding_size: int = 768): + super().__init__(vocab) + self.embedder = embedder + self.out_features = decoder_output_size + self.hidden_size = hidden_size + self.layers = nn.Sequential( + nn.Linear(in_features=embedding_size, + out_features=self.hidden_size), + nn.ReLU(), + nn.Linear(in_features=self.hidden_size, + out_features=self.out_features) + ) + + def forward(self, tokens: TextFieldTensors, label: Optional[torch.FloatTensor] = None): + embeddings = self.embedder(tokens["token_ids"]) + mask = get_text_field_mask(tokens).float() + tag_logits = self.layers(embeddings) + mask = mask.reshape(mask.shape[0], mask.shape[1], 1).repeat(1, 1, self.out_features) + output = {"tag_logits": tag_logits} + if label is not None: + loss = binary_cross_entropy_with_logits(tag_logits, label, mask) + output["loss"] = loss + + def get_metrics(self, _) -> Dict[str, float]: + return {} + + def make_human_readable(self, + prediction, + label_namespace, + threshold=0.2, + sigmoid=True + ) -> Tuple[List[str], Optional[List[float]]]: + if sigmoid: + prediction = torch.sigmoid(prediction) + + predicted_labels: List[List[str]] = [[] for _ in range(len(prediction))] + + # get all predictions with a positive probability + for coord in torch.nonzero(prediction > threshold): + label = self.vocab.get_token_from_index(int(coord[1]), label_namespace) + predicted_labels[coord[0]].append(f"{label}:{prediction[coord[0], coord[1]]:.3f}") + + str_predictions: List[str] = [] + for label_list in predicted_labels: + str_predictions.append("|".join(label_list) or "_") + + return str_predictions + + +class TrafficBechdelReader(DatasetReader): + + def __init__(self, token_indexers, tokenizer, binarizer): + self.token_indexers = token_indexers + self.tokenizer: PretrainedTransformerTokenizer = tokenizer + self.binarizer = binarizer + self.orig_data = [] + super().__init__() + + def _read(self, file_path) -> Iterable[Instance]: + self.orig_data.clear() + + with open(file_path, encoding="utf-8") as f: + for line in f: + # skip any empty lines + if not line.strip(): + continue + + sentence_parts = line.lstrip("[").rstrip("]").split(",") + token_txts = [] + token_mlabels = [] + + for sp in sentence_parts: + sp_txt, sp_lbl_str = sp.split(":") + if sp_lbl_str == "[]": + sp_lbls = [] + else: + sp_lbls = sp_lbl_str.lstrip("[").rstrip("]").split("|") + + # if the text is a WordNet thingy + wn_match = re.match(r"^(.+)-n-\d+$", sp_txt) + if wn_match: + sp_txt = wn_match.group(1) + + # multi-token text + sp_toks = sp_txt.split() + for tok in sp_toks: + token_txts.append(tok) + token_mlabels.append(sp_lbls) + + self.orig_data.append({ + "sentence": token_txts, + "labels": token_mlabels, + }) + yield self.text_to_instance(token_txts, token_mlabels) + + def text_to_instance(self, sentence: List[str], labels: List[List[str]] = None) -> Instance: + tokens, offsets = self.tokenizer.intra_word_tokenize(sentence) + + text_field = TextField(tokens, self.token_indexers) + fields = {"tokens": text_field} + if labels is not None: + labels_ = SequenceMultiLabelField.retokenize_tags(labels, offsets) + label_field = SequenceMultiLabelField(labels_, text_field, self.binarizer, "labels") + fields["label"] = label_field + return Instance(fields) + + +def count_parties(sentence, lexical_dicts, nlp): + + num_humans = 0 + num_vehicles = 0 + + def is_in_words(l, category): + for subcategory, words in lexical_dicts[category].items(): + if subcategory.startswith("WN:"): + words = [re.match(r"^(.+)-n-\d+$", w).group(1) for w in words] + if l in words: + return True + return False + + doc = nlp(sentence.lower()) + for token in doc: + lemma = token.lemma_ + if is_in_words(lemma, "persons"): + num_humans += 1 + if is_in_words(lemma, "vehicles"): + num_vehicles += 1 + + return num_humans, num_vehicles + + +def predict_rule_based(annotations="data/crashes/bechdel_annotations_dev_first_25.csv"): + data_crashes = pd.read_csv(annotations) + with open("output/crashes/predict_bechdel/lexical_dicts.json", encoding="utf-8") as f: + lexical_dicts = json.load(f) + + nlp = spacy.load("nl_core_news_md") + + for _, row in data_crashes.iterrows(): + sentence = row["sentence"] + num_humans, num_vehicles = count_parties(sentence, lexical_dicts, nlp) + print(sentence) + print(f"\thumans={num_humans}, vehicles={num_vehicles}") + + +def evaluate_crashes(predictor, attrib, annotations="data/crashes/bechdel_annotations_dev_first_25.csv", out_file="output/crashes/predict_bechdel/predictions_crashes25.csv"): + data_crashes = pd.read_csv(annotations) + labels_crashes = [ + { + "party_mentioned": str(row["mentioned"]), + "party_human": str(row["as_human"]), + "active": str(True) if str(row["active"]).lower() == "true" else str(False) + } + for _, row in data_crashes.iterrows() + ] + predictions_crashes = [predictor.predict( + row["sentence"]) for i, row in data_crashes.iterrows()] + crashes_out = [] + correct = 0 + partial_2_attrs = 0 + partial_1_attr = 0 + correct_mentions = 0 + correct_humans = 0 + correct_active = 0 + + for sentence, label, prediction in zip(data_crashes["sentence"], labels_crashes, predictions_crashes): + predicted = prediction["label"] + if attrib == "all": + gold = "|".join([f"{k}={v}" for k, v in label.items()]) + else: + gold = label["attrib"] + if gold == predicted: + correct += 1 + if attrib == "all": + partial_2_attrs += 1 + partial_1_attr += 1 + + if attrib == "all": + gold_attrs = set(gold.split("|")) + pred_attrs = set(predicted.split("|")) + if len(gold_attrs & pred_attrs) == 2: + partial_2_attrs += 1 + partial_1_attr += 1 + elif len(gold_attrs & pred_attrs) == 1: + partial_1_attr += 1 + + if gold.split("|")[0] == predicted.split("|")[0]: + correct_mentions += 1 + if gold.split("|")[1] == predicted.split("|")[1]: + correct_humans += 1 + if gold.split("|")[2] == predicted.split("|")[2]: + correct_active += 1 + + crashes_out.append( + {"sentence": sentence, "gold": gold, "prediction": predicted}) + + print("ACC_crashes (strict) = ", correct/len(data_crashes)) + print("ACC_crashes (partial:2) = ", partial_2_attrs/len(data_crashes)) + print("ACC_crashes (partial:1) = ", partial_1_attr/len(data_crashes)) + print("ACC_crashes (mentions) = ", correct_mentions/len(data_crashes)) + print("ACC_crashes (humans) = ", correct_humans/len(data_crashes)) + print("ACC_crashes (active) = ", correct_active/len(data_crashes)) + + pd.DataFrame(crashes_out).to_csv(out_file) + + +def filter_events_for_bechdel(): + + with open("data/crashes/thecrashes_data_all_text.json", encoding="utf-8") as f: + events = json.load(f) + + total_articles = 0 + data_out = [] + for ev in events: + total_articles += len(ev["articles"]) + + num_persons = len(ev["persons"]) + num_transport_modes = len({p["transportationmode"] + for p in ev["persons"]}) + + if num_transport_modes <= 2: + for art in ev["articles"]: + data_out.append({"event_id": ev["id"], "article_id": art["id"], "headline": art["title"], + "num_persons": num_persons, "num_transport_modes": num_transport_modes}) + + print("Total articles = ", total_articles) + + print("Filtered articles: ", len(data_out)) + out_df = pd.DataFrame(data_out) + out_df.to_csv("output/crashes/predict_bechdel/filtered_headlines.csv") + + +def train_and_eval(train=True): + + # use_gpu = False + use_gpu = True + cuda_device = None if use_gpu and torch.cuda.is_available() else -1 + + transformer = "GroNLP/bert-base-dutch-cased" + # transformer = "xlm-roberta-large" + token_indexers = {"tokens": PretrainedTransformerIndexer(transformer)} + tokenizer = PretrainedTransformerTokenizer(transformer) + + binarizer = MultiLabelBinarizer() + binarizer.fit([SEQ_LABELS]) + reader = TrafficBechdelReader(token_indexers, tokenizer, binarizer) + instances = list(reader.read("output/prolog/bechdel_headlines.txt")) + orig_data = reader.orig_data + zipped = list(zip(instances, orig_data)) + random.shuffle(zipped) + instances_ = [i[0] for i in zipped] + orig_data_ = [i[1] for i in zipped] + + num_dev = round(0.05 * len(instances_)) + num_test = round(0.25 * len(instances_)) + num_train = len(instances_) - num_dev - num_test + print("LEN(train/dev/test)=", num_train, num_dev, num_test) + + instances_train = instances_[:num_train] + instances_dev = instances_[num_train:num_train + num_dev] + # instances_test = instances_[num_train+num_dev:num_train:] + + # orig_train = orig_data_[:num_train] + orig_dev = orig_data_[num_train:num_train + num_dev] + + vocab = Vocabulary.from_instances(instances_train + instances_dev) + + embedder = BasicTextFieldEmbedder( + {"tokens": PretrainedTransformerEmbedder(transformer)}) + model = MultiSequenceLabelModel(embedder, len(SEQ_LABELS), 1000, vocab) + if use_gpu: + model = model.cuda(cuda_device) + + # checkpoint_dir = f"output/crashes/predict_bechdel/model_{attrib}/" + checkpoint_dir = f"/scratch/p289731/predict_bechdel/model_seqlabel/" + serialization_dir = f"/scratch/p289731/predict_bechdel/serialization_seqlabel/" + + if train: + os.makedirs(checkpoint_dir) + os.makedirs(serialization_dir) + tensorboard = TensorBoardCallback( + serialization_dir, should_log_learning_rate=True) + checkpointer = Checkpointer(serialization_dir=checkpoint_dir) + optimizer = AdamOptimizer( + [(n, p) for n, p in model.named_parameters() if p.requires_grad], + lr=1e-5 + ) + train_loader = SimpleDataLoader( + instances_train, batch_size=8, shuffle=True) + dev_loader = SimpleDataLoader( + instances_dev, batch_size=8, shuffle=False) + train_loader.index_with(vocab) + dev_loader.index_with(vocab) + + print("\t\tTraining BERT model") + trainer = GradientDescentTrainer( + model, + optimizer, + train_loader, + validation_data_loader=dev_loader, + # patience=32, + patience=2, + # num_epochs=1, + checkpointer=checkpointer, + cuda_device=cuda_device, + serialization_dir=serialization_dir, + callbacks=[tensorboard] + ) + trainer.train() + else: + state_dict = torch.load( + "/scratch/p289731/predict_bechdel/serialization_all/best.th", map_location=cuda_device) + model.load_state_dict(state_dict) + + print("\t\tProducing predictions...") + + predictor = Predictor(model, reader) + predictions_dev = [predictor.predict_instance(i) for i in instances_dev] + + data_out = [] + for sentence, prediction in zip(orig_dev, predictions_dev): + readable = model.make_human_readable(prediction, "labels") + text = sentence["sentence"] + gold = sentence["labels"] + predicted = readable + data_out.append( + {"sentence": text, "gold": gold, "predicted": predicted}) + df_out = pd.DataFrame(data_out) + df_out.to_csv("output/crashes/predict_bechdel/predictions_dev.csv") + + # print() + + # print("First 25 crashes:") + # evaluate_crashes(predictor, attrib, annotations="data/crashes/bechdel_annotations_dev_first_25.csv", + # out_file="output/crashes/predict_bechdel/predictions_first_25.csv") + # print() + # print("Next 75 crashes:") + # evaluate_crashes(predictor, attrib, annotations="data/crashes/bechdel_annotations_dev_next_75.csv", + # out_file="output/crashes/predict_bechdel/predictions_next_75.csv") + + +if __name__ == "__main__": + ap = argparse.ArgumentParser() + ap.add_argument("action", choices=["train", "predict", "rules", "filter"]) + + args = ap.parse_args() + + if args.action == "train": + train_and_eval(train=True) + elif args.action == "predict": + train_and_eval(train=False) + elif args.action == "rules": + predict_rule_based() + else: + filter_events_for_bechdel() diff --git a/sociofillmore/crashes/split_data.py b/sociofillmore/crashes/split_data.py new file mode 100755 index 0000000000000000000000000000000000000000..84d6d1df9328a82c209936aaa3570350a843f561 --- /dev/null +++ b/sociofillmore/crashes/split_data.py @@ -0,0 +1,240 @@ +import json +import os +import random +import shutil +from datetime import datetime + +import langdetect +import nltk +import pandas as pd +from langdetect import DetectorFactory, LangDetectException + +DATA_FILE = "data/crashes/thecrashes_data_all_text.json" + +DEV_PORTION = .10 + +random.seed(2001) +DetectorFactory.seed = 0 + + +def is_a_real_time(timestamp): + """Helper function, checks if a given timestamp really has a time""" + + # 00:00:00 (midnight) is the "empty" timestamp, ignore it + if timestamp.hour == timestamp.minute == timestamp.second == 0: + return False + return True + + +def main(): + process_events() + + +def detect_language(article): + if article["alltext"]: + sample = article["alltext"] + elif article["summary"]: + sample = article["summary"] + else: + sample = article["title"] + + try: + return langdetect.detect(sample) + except LangDetectException: + print(f"\tCould not detect language for text_id={article['id']}") + print(f"\tSample={sample})") + print() + return "UNK_LANG" + + +def extract_text_info(event): + ev_text_lines = [] + ev_id_lines = [] + ev_meta_rows = [] + + for article in event["articles"]: + text_id = article["id"] + try: + pubdate = datetime.fromisoformat(article["publishedtime"]).strftime("%Y-%m-%d %H:%M:%S") + except ValueError: + print(f"\t\tcould not parse date {article['publishedtime']}") + pubdate = None + url = article["url"] + provider = article["sitename"] + title = article["title"] + language = detect_language(article) + ev_meta_rows.append({ + "event_id": event["id"], + "text_id": text_id, + "pubdate": pubdate, + "language": language, + "url": url, + "provider": provider, + "title": title + }) + + summary = article["summary"] + body = article["alltext"] + + text_lines = [] + id_lines = [] + + for line in segment(title, language): + text_lines.append(line) + id_lines.append(f"event {event['id']}\ttext {text_id}\ttitle") + + for line in segment(summary, language): + text_lines.append(line) + id_lines.append(f"event {event['id']}\ttext {text_id}\tsummary") + + for line in segment(body, language): + text_lines.append(line) + id_lines.append(f"event {event['id']}\ttext {text_id}\tbody") + + ev_text_lines.append(text_lines) + ev_id_lines.append(id_lines) + + return ev_text_lines, ev_id_lines, ev_meta_rows + + +def segment(text, language): + # don't split Hebrew and Vietnamese (because we don't have a segmenter for it) + if language in ["he", "vi"]: + return text + + lang_map = { + "nl": "dutch", + "en": "english", + "es": "spanish", + "de": "german", + "fr": "french", + "ru": "russian", + "pt": "portuguese" + } + + nltk_lang = lang_map.get(language) + + # what to do with languages without sent tokenizer in NLTK (apart from Hebrew): + if not nltk_lang: + if language == "af": + # treat Afrikaans as Dutch + nltk_lang = "dutch" + else: + print(f"Found an article with unsupported language={language}, falling back to English NLTK") + nltk_lang = "english" + + return nltk.sent_tokenize(text, nltk_lang) + + +def write_to_text_by_event(text_lines, text_meta_lines, event_id, split_to_dir, split): + event_dir = f"{split_to_dir[split]}/{event_id}" + os.makedirs(event_dir, exist_ok=True) + for art_lines, row in zip(text_lines, text_meta_lines): + text_file = f"{event_dir}/{row['text_id']}.txt" + with open(text_file, "w", encoding="utf-8") as f: + for line in art_lines: + f.write(line + os.linesep) + + +def process_events(): + print("Loading data file...") + with open(DATA_FILE, encoding="utf-8") as f: + data = json.load(f) + event_all_rows = [] + event_dev_rows = [] + event_main_rows = [] + + text_all_rows = [] + text_dev_rows = [] + text_main_rows = [] + + # make empty text files + text_file_basenames = { + "all": "output/crashes/split_data/all.texts", + "dev": "output/crashes/split_data/split_dev10.texts", + "main": "output/crashes/split_data/split_main.texts" + } + for split, bn in text_file_basenames.items(): + for ext in [".text.txt", ".ids.txt"]: + f = open(f"{bn}{ext}", "w", encoding="utf-8") + f.close() + + # clear & make text file directories + text_files_by_event_dir = {} + for split in ["all", "dev", "main"]: + prefix = "split_dev10" if split == "dev" else "split_main" if split == "main" else "all" + text_dir = f"output/crashes/split_data/{prefix}_texts_by_event" + text_files_by_event_dir[split] = text_dir + if os.path.exists(text_dir): + shutil.rmtree(text_dir) + os.mkdir(text_dir) + + # helper function for writing text files + def append_to_txt(txt_file, lines): + with open(txt_file, "a", encoding="utf-8") as f_out: + for art_lines in lines: + for line in art_lines: + f_out.write(line + os.linesep) + + print("Processing events...") + for event in data: + event_id = event["id"] + print(f"\tevent_id={event_id}") + try: + timestamp = datetime.fromisoformat(event["date"]) + except ValueError: + timestamp = None + + event_row = { + "event:id": event_id, + "event:date": timestamp.strftime("%Y-%m-%d") if timestamp else None, + "event:time": timestamp.strftime("%H-%M-%S") if timestamp and is_a_real_time(timestamp) else None, + "event:coordinates": f"{event['latitude'], event['longitude']}", + "vehicle_involved": 1 if any(p for p in event["persons"] if p["transportationmode"] in range(5, 14)) else 0 + } + + for health, health_code in (("dead", 3), ("injured", 2)): + all_with_health = [p for p in event["persons"] if p["health"] == health_code] + event_row[f"outcomes:{health}:total"] = len(all_with_health) + event_row[f"outcomes:{health}:child"] = len([p for p in all_with_health if p["child"] == 1]) + for mode, mode_codes in (("pedestrian", [1]), ("cyclist", [2]), ("vehicle", range(5, 14))): + event_row[f"outcomes:{health}:{mode}"] = len([p for p in all_with_health + if p["transportationmode"] in mode_codes]) + + text_lines, text_id_lines, text_meta_rows = extract_text_info(event) + + event_all_rows.append(event_row) + text_all_rows.extend(text_meta_rows) + append_to_txt(text_file_basenames["all"] + ".text.txt", text_lines) + append_to_txt(text_file_basenames["all"] + ".ids.txt", text_id_lines) + write_to_text_by_event(text_lines, text_meta_rows, event_id, text_files_by_event_dir, "all") + + if random.random() < DEV_PORTION: + event_dev_rows.append(event_row) + text_dev_rows.extend(text_meta_rows) + append_to_txt(text_file_basenames["dev"] + ".text.txt", text_lines) + append_to_txt(text_file_basenames["dev"] + ".ids.txt", text_id_lines) + write_to_text_by_event(text_lines, text_meta_rows, event_id, text_files_by_event_dir, "dev") + + else: + event_main_rows.append(event_row) + text_main_rows.extend(text_meta_rows) + append_to_txt(text_file_basenames["main"] + ".text.txt", text_lines) + append_to_txt(text_file_basenames["main"] + ".ids.txt", text_id_lines) + write_to_text_by_event(text_lines, text_meta_rows, event_id, text_files_by_event_dir, "main") + + all_ev_df = pd.DataFrame(event_all_rows) + main_ev_df = pd.DataFrame(event_main_rows) + dev_ev_df = pd.DataFrame(event_dev_rows) + for df, file in ((all_ev_df, "all.events"), (main_ev_df, "split_main.events"), (dev_ev_df, "split_dev10.events")): + df.to_csv(f"output/crashes/split_data/{file}.csv") + + all_txt_df = pd.DataFrame(text_all_rows) + main_txt_df = pd.DataFrame(text_main_rows) + dev_txt_df = pd.DataFrame(text_dev_rows) + for df, file in ((all_txt_df, "all.texts"), (main_txt_df, "split_main.texts"), (dev_txt_df, "split_dev10.texts")): + df.to_csv(f"output/crashes/split_data/{file}.meta.csv") + + +if __name__ == '__main__': + main() diff --git a/sociofillmore/crashes/utils.py b/sociofillmore/crashes/utils.py new file mode 100755 index 0000000000000000000000000000000000000000..8b1b1f126428a5e30f6e2dd121efce562bfe8819 --- /dev/null +++ b/sociofillmore/crashes/utils.py @@ -0,0 +1,16 @@ +import pandas as pd + +texts_meta = pd.read_csv("output/crashes/split_data/split_dev10.texts.meta.csv", index_col=0, dtype={"text_id": str}) + + +def is_a_dutch_text(doc_id, exclude_frisian=True): + filtered_for_doc = texts_meta[texts_meta["text_id"] == doc_id] + if len(filtered_for_doc) >= 1: + if exclude_frisian: + # exclude newsproviders publishing mainly in Frisian + # (NB these texts are recognized as Dutch by langdetect, hence the need for a provider filter) + if filtered_for_doc["provider"].iloc[0] == "omropfryslan.nl": + return False + if filtered_for_doc["language"].iloc[0] == "nl": + return True + return False diff --git a/sociofillmore/femicides/compare_lome_models.py b/sociofillmore/femicides/compare_lome_models.py new file mode 100755 index 0000000000000000000000000000000000000000..0c69fa094b4d8c42b1cec019f0614cc500ff45ac --- /dev/null +++ b/sociofillmore/femicides/compare_lome_models.py @@ -0,0 +1,296 @@ +from collections import defaultdict +import glob +import json +import os +import re +import random +import sys +from typing import List, Dict, Tuple + +import pandas as pd +import numpy as np + +from sociofillmore.common.analyze_text import load_caches, process_fn_sentence, FrameStructure, read_frames_of_interest + +RANDOM_SEED = 9718 +NUM_EVALUATION_SENTENCES = 150 + +EVALITA_MODEL = "lome_evalita_plus_fn" +# EVALITA_MODEL = "lome_evalita_plus_fn_0conf" +OUT_FOLDER = f"0shot__vs__{EVALITA_MODEL.split('_', maxsplit=1)[1]}" +print(OUT_FOLDER) + + +random.seed(RANDOM_SEED) + + +def map_predicates_to_frames(structures: List[FrameStructure]) -> Dict[str, str]: + mapping = {} + for struct in structures: + pred_key = "_".join(struct.target.tokens_str) + mapping[pred_key] = struct.frame + return mapping + + +def make_evaluation_sample(diffs_df: pd.DataFrame) -> Tuple[pd.DataFrame, pd.DataFrame]: + + def make_experimental_columns(row: pd.Series): + if random.choice((True, False)): + left_col = "predicted_frame_0shot" + right_col = "predicted_frame_evalita" + else: + left_col = "predicted_frame_evalita" + right_col = "predicted_frame_0shot" + + exp_info = pd.Series({ + "prediction_1": row[left_col], + "prediction_2": row[right_col], + "model_1": left_col, + "model_2": right_col + }) + + return row.append(exp_info) + + sample = diffs_df.sample(n=NUM_EVALUATION_SENTENCES, + random_state=RANDOM_SEED).reset_index(drop=True) + with_exp_info = sample.apply(make_experimental_columns, axis=1) + annotator_sheet = with_exp_info[[ + "sentence", "predicate", "prediction_1", "prediction_2"]] + # add answer columns + for answer_field in ["1_is_best", "2_is_best", "both_are_good", "both_are_bad", "missing_frame"]: + annotator_sheet.insert(len(annotator_sheet.columns), + f"answer::{answer_field}", np.nan) + # annotator_sheet[f"answer::{answer_field}"] = np.nan + + return annotator_sheet, with_exp_info + + +def make_annotation_experiment(): + _, deep_frame_cache = load_caches("femicides/rai") + frames_of_interest = read_frames_of_interest("femicides/rai") + + all_differences = [] + foi_differences = [] # foi='frame of interest' + + # number of predicates that have been annotated by at least one model + num_all_predictions = 0 + num_foi_predictions = 0 + + num_z_shot_all_predictions = 0 + num_z_shot_foi_predictions = 0 + + num_evalita_all_predictions = 0 + num_evalita_foi_predictions = 0 + + for ev_dir in sorted(glob.glob("output/femicides/lome/lome_0shot/multilabel/rai/*")): + ev_id = os.path.basename(ev_dir).rstrip("/") + print(f"event={ev_id}") + for doc_file in sorted(glob.glob(f"{ev_dir}/*.comm.json")): + doc_id = re.search(r'/lome_(\d+)\.comm\.json', doc_file).group(1) + print(f"\tdoc={doc_id}") + + with open(doc_file, encoding="utf-8") as f: + z_shot_annotations = json.load(f) + + with open(doc_file.replace("/lome_0shot/", f"/{EVALITA_MODEL}/"), encoding="utf-8") as f: + evalita_annotations = json.load(f) + + for sent_idx, (z_shot_sent, evalita_sent) in enumerate(zip(z_shot_annotations, evalita_annotations)): + z_shot_structs = process_fn_sentence( + z_shot_sent, deep_frame_cache) + evalita_structs = process_fn_sentence( + evalita_sent, deep_frame_cache) + + z_shot_frames = {s.frame for s in z_shot_structs.values()} + evalita_frames = {s.frame for s in evalita_structs.values()} + overlapping_frames = z_shot_frames.intersection(evalita_frames) + + print(f"\t\tsent #{sent_idx}: {len(z_shot_frames)}x lome_0shot frames, " + f"{len(evalita_frames)}x evalita frames, {len(overlapping_frames)}x overlapping") + + z_shot_preds_to_frames = map_predicates_to_frames( + z_shot_structs.values()) + evalita_preds_to_frames = map_predicates_to_frames( + evalita_structs.values()) + all_predicates = sorted(set(z_shot_preds_to_frames.keys()).union( + evalita_preds_to_frames.keys())) + + for predicate in all_predicates: + print(f"\t\t\tpredicate={predicate}") + z_shot_frame = z_shot_preds_to_frames.get(predicate) + evalita_frame = evalita_preds_to_frames.get(predicate) + has_relevant_frame = z_shot_frame in frames_of_interest or evalita_frame in frames_of_interest + + if z_shot_frame is not None: + num_z_shot_all_predictions += 1 + if z_shot_frame in frames_of_interest: + num_z_shot_foi_predictions += 1 + + if evalita_frame is not None: + num_evalita_all_predictions += 1 + if evalita_frame in frames_of_interest: + num_evalita_foi_predictions += 1 + + num_all_predictions += 1 + if has_relevant_frame: + num_foi_predictions += 1 + + if z_shot_frame != evalita_frame: + diff = { + "ev_id": ev_id, + "doc_id": doc_id, + "sent_idx": sent_idx, + "sentence": " ".join(z_shot_sent["tokens"]), + "predicate": predicate, + "predicted_frame_0shot": z_shot_frame or "_", + "predicted_frame_evalita": evalita_frame or "_" + } + all_differences.append(diff) + if has_relevant_frame: + foi_differences.append(diff) + + print() + + print() + + print(f"num_z_shot_all_predictions = {num_z_shot_all_predictions}") + print(f"num_z_shot_foi_predictions = {num_z_shot_foi_predictions}") + print(f"num_evalita_all_predictions = {num_evalita_all_predictions}") + print(f"num_evalita_foi_predictions = {num_evalita_foi_predictions}") + + print( + f"all_differences: {len(all_differences)}/{num_all_predictions}={len(all_differences)/num_all_predictions}") + print( + f"foi_differences: {len(foi_differences)}/{num_foi_predictions}={len(foi_differences) / num_foi_predictions}") + + # all_diffs_df = pd.DataFrame(all_differences) + # foi_diffs_df = pd.DataFrame(foi_differences) + + # all_diffs_df.to_csv("output/femicides/compare_lome_models/all_differences.csv") + # foi_diffs_df.to_csv("output/femicides/compare_lome_models/foi_differences.csv") + + # annotator_sheet, experiment_sheet = make_evaluation_sample(foi_diffs_df) + # annotator_sheet.to_csv("output/femicides/compare_lome_models/annotator_sheet.csv") + # experiment_sheet.to_csv("output/femicides/compare_lome_models/experiment_sheet.csv") + + +def analyze_annotations(): + ann_df = pd.read_excel("resources/sara_lome_annotations.xlsx", index_col=0) + exp_df = pd.read_csv( + f"output/femicides/compare_lome_models/{OUT_FOLDER}/experiment_sheet.csv", index_col=0) + ann_df_ = ann_df.join(exp_df[["model_1", "model_2"]]) + ann_df_proc = ann_df_.apply(combine_labels, axis=1) + print(ann_df_proc.head()) + ann_df_proc.to_csv( + f"output/femicides/compare_lome_models/{OUT_FOLDER}/annotator_sheet_processed.csv") + + +def combine_labels(row: pd.Series) -> pd.Series: + + model_1 = row["model_1"].split("_")[-1] + model_2 = row["model_2"].split("_")[-1] + + if row["answer::1_is_best"] == "X": + answer = f"{model_1}_is_best" + elif row["answer::2_is_best"] == "X": + answer = f"{model_2}_is_best" + elif row["answer::both_are_good"] == "X": + answer = "both_are_good" + elif row["answer::both_are_bad"] == "X": + answer = "both_are_bad" + elif row["answer::missing_frame"] == "X": + answer = "missing_frame" + else: + raise ValueError(f"Missing annotation in row {row}") + + row_ = row.drop([k for k in row.keys() if k.startswith("answer::")]) + return row_.append(pd.Series({"answer": answer})) + + +def prep_svm_challenge(): + annotated_df = pd.read_csv( + "output/femicides/compare_lome_models/0shot__vs__evalita_plus_fn/annotator_sheet_processed.csv", index_col=0) + + evalita_train_data = [] + with open("../stupid-svm-frameid/data/evalita_jsonl/evalita_train.jsonl", encoding="utf-8") as f_in: + for line in f_in: + evalita_train_data.append(json.loads(line)) + # evalita_frame_labels = {annotation["label"] for sentence in evalita_train_data for annotation in sentence["annotations"]} + evalita_frame_labels = defaultdict(int) + for sentence in evalita_train_data: + for annotation in sentence["annotations"]: + evalita_frame_labels[annotation["label"]] += 1 + evalita_train_counts = pd.DataFrame(evalita_frame_labels.items(), columns=["label", "count"]).sort_values(by="count") + evalita_train_counts.to_csv("output/femicides/compare_lome_models/evalita_trainset_counts.csv") + + print("Evalita frame labels:", sorted(evalita_frame_labels.keys())) + + out = [] + zshot_score = 0 + evalita_score = 0 + + for _, row in annotated_df.iterrows(): + answer = row["answer"] + if answer not in ["0shot_is_best", "evalita_is_best", "both_are_good"]: + continue + + tokens = row["sentence"].split() + predicate = row["predicate"].split("_")[0] # to keep things simple, only look at first token of predicate + predicate_idx = [i for i, tok in enumerate(tokens) if tok == predicate][0] + + if answer == "0shot_is_best": + if row["model_1"] == "predicted_frame_0shot": + zshot_label = label = row["prediction_1"] + evalita_label = row["prediction_2"] + else: + zshot_label = label = row["prediction_2"] + evalita_label = row["prediction_1"] + elif answer == "evalita_is_best": + if row["model_1"] == "predicted_frame_evalita": + evalita_label = label = row["prediction_1"] + zshot_label = row["prediction_2"] + else: + evalita_label = label = row["prediction_2"] + zshot_label = row["prediction_1"] + else: + label = row["prediction_1"] + if row["model_1"] == "predicted_frame_evalita": + evalita_label = row["prediction_1"] + zshot_label = row["prediction_2"] + else: + evalita_label = row["prediction_2"] + zshot_label = row["prediction_1"] + + if label not in evalita_frame_labels: + print("\tskipping gold frame label not present in EVALITA: ", label) + continue + + if zshot_label == label: + zshot_score += 1 + if evalita_label == label: + evalita_score += 1 + + out.append({"tokens": tokens, "annotations": [{"label": label, "span": [predicate_idx, predicate_idx], "lu": None, "children": []}]}) + + print(f"Found {len(out)} relevant annotations") + print("0-shot score: ", zshot_score / len(out)) + print("evalita score: ", evalita_score / len(out)) + + + with open("output/femicides/compare_lome_models/svm_challenge.jsonl", "w", encoding="utf-8") as f_out: + for line in out: + f_out.write(json.dumps(line) + os.linesep) + f_out.write(os.linesep) + + + +if __name__ == '__main__': + action = sys.argv[1] + assert action in ["make", "analyze", "prep_svm_challenge"] + + if action == "make": + make_annotation_experiment() + elif action == "analyze": + analyze_annotations() + else: + prep_svm_challenge() diff --git a/sociofillmore/femicides/evalita_err_analysis.py b/sociofillmore/femicides/evalita_err_analysis.py new file mode 100755 index 0000000000000000000000000000000000000000..3780a2930d15b723c91588a29327730b31c28d77 --- /dev/null +++ b/sociofillmore/femicides/evalita_err_analysis.py @@ -0,0 +1,182 @@ +from itertools import product + +import pandas as pd +import numpy as np +from scipy.spatial.distance import cosine + +from nltk.corpus import framenet as fn + +from sociofillmore.common.analyze_text import read_frames_of_interest + + +COSINE_THRESH = [0.1, 0.2, 0.3, 0.4, 0.5] + + +PREDICTION_FILES = { + "evalita-dev": { + "stupid-svm": "../stupid-svm-frameid/evalita_predictions.csv", + "lome-en": "misc/frame_prediction_output_lome-en_dev.csv", + "lome-it": "misc/frame_prediction_output_lome-it-best_dev.csv", + }, + "evalita-test": { + "stupid-svm": "../stupid-svm-frameid/evalita_predictions_test.csv", + "lome-en": "misc/frame_prediction_output_lome-en_test.csv", + "lome-it": "misc/frame_prediction_output_lome-it-best_test.csv", + }, + "rai_femicides": { + "stupid-svm": "../stupid-svm-frameid/rai_predictions.csv", + "lome-en": "misc/frame_prediction_output_lome-en_rai.csv", + "lome-it": "misc/frame_prediction_output_lome-it-best_rai.csv", + }, +} + + +def load_embeddings(embedding_file): + frame_vocab = [] + word_vocab = [] + vectors = [] + + with open(embedding_file, encoding="utf-8") as f: + for line in f: + columns = line.split() + frame = columns[0] + words = tuple(columns[1].split("+")) + vector = np.array([float(i) for i in columns[2:]]) + + frame_vocab.append(frame) + word_vocab.append(words) + vectors.append(vector) + + frames_to_idxs = {} + for i, frame in enumerate(frame_vocab): + frames_to_idxs[frame] = i + + return np.array(vectors, dtype=np.float64), frames_to_idxs + + +def femicide_frame_distances(embeddings, frame_to_idx): + femicide_frames = read_frames_of_interest("femicides/rai") + print("Cosines: ") + for fr1, fr2 in product(femicide_frames, femicide_frames): + dist = cosine(embeddings[frame_to_idx[fr1]], embeddings[frame_to_idx[fr2]]) + print(f"\t{fr1}-{fr2}: {dist:.4f}") + + +def embedding_scores(predictions, embeddings, frame_to_idx): + correct = 0 + close_calls = {threshold: 0 for threshold in COSINE_THRESH} + total_dist = 0.0 + + for _, row in predictions.iterrows(): + predicted = row["frame_pred"] + gold = row["frame_gold"] + dist = cosine( + embeddings[frame_to_idx[predicted]], embeddings[frame_to_idx[gold]] + ) + if predicted == gold: + correct += 1 + else: + for threshold in COSINE_THRESH: + if dist < threshold: + close_calls[threshold] += 1 + total_dist += dist + + print("#correct: ", correct / len(predictions)) + print("#close calls: ") + for threshold in COSINE_THRESH: + print("\t", threshold, (close_calls[threshold]) / len(predictions)) + print("#correct or close: ") + for threshold in COSINE_THRESH: + print("\t", threshold, (correct + close_calls[threshold]) / len(predictions)) + print("avg cosine dist: ", total_dist / len(predictions)) + + +def generalization_exp(predictions, evalita_train_counts, fn_frames, femicide_frames): + + all_frames = predictions + ifn_frames = predictions[ + predictions["frame_gold"].isin(evalita_train_counts["label"]) + ] + bfn_frames = predictions[predictions["frame_gold"].isin(fn_frames)] + rai_frames = predictions[predictions["frame_gold"].isin(femicide_frames)] + + + print("LEN (ALL/IFN/BFN/RAI:)") + print( + "\t".join( + [ + str(len(preds)) + for preds in [all_frames, ifn_frames, bfn_frames, rai_frames] + ] + ) + ) + + print("ACC (ALL/IFN/BFN/RAI:)") + print( + "\t".join( + [ + str(len(preds[preds["frame_gold"] == preds["frame_pred"]]) / len(preds)) + for preds in [all_frames, ifn_frames, bfn_frames, rai_frames] + ] + ) + ) + + +def main(): + + evalita_train_counts = pd.read_csv( + "output/femicides/compare_lome_models/evalita_trainset_counts.csv" + ) + + fn_frames = {fr.name for fr in fn.frames()} + femicide_frames = read_frames_of_interest("femicides/rai") + evalita_train_counts = pd.read_csv( + "output/femicides/compare_lome_models/evalita_trainset_counts.csv" + ) + + for dataset in PREDICTION_FILES: + print(f"==={dataset}===") + for model, predictions_file in PREDICTION_FILES[dataset].items(): + + print(f"---{model}---") + + predictions = pd.read_csv(predictions_file, index_col=0) + print("Total predictions:", len(predictions)) + + # predictions_with_fn_frames = predictions[ + # predictions["frame_gold"].isin(fn_frames) + # & predictions["frame_pred"].isin(fn_frames) + # ] + # print("Predictions with FN frames: ", len(predictions_with_fn_frames)) + + # errors = predictions[predictions["frame_gold"] != predictions["frame_pred"]] + # print("Total errors: ", len(errors)) + + # errors_with_fn_frames = errors[ + # errors["frame_gold"].isin(fn_frames) & errors["frame_pred"].isin(fn_frames) + # ] + # print("Errors with FN frames: ", len(errors_with_fn_frames)) + + # print("Loading embeddings...") + # embeddings, frame_to_idx = load_embeddings( + # "../bert-for-framenet/data/embeddings/bag_of_lu_embeddings.txt" + # ) + # # femicide_frame_distances(embeddings, frame_to_idx) + # embedding_scores(predictions_with_fn_frames, embeddings, frame_to_idx) + + if dataset == "rai_femicides": + predictions = predictions[predictions["frame_gold"].isin(femicide_frames)] + + + femicide_frames = read_frames_of_interest("femicides/rai") + generalization_exp( + predictions, evalita_train_counts, fn_frames, femicide_frames + ) + + + print() + print() + + +if __name__ == "__main__": + main() diff --git a/sociofillmore/femicides/extract_texts.py b/sociofillmore/femicides/extract_texts.py new file mode 100755 index 0000000000000000000000000000000000000000..3c99bc298482e40ba8de5615660c36f224469be8 --- /dev/null +++ b/sociofillmore/femicides/extract_texts.py @@ -0,0 +1,15 @@ +import pandas as pd + + +def extract_texts(): + df = pd.read_excel("data/femicides/rai/EventiFemminicidio_from2015to2017_fonti.xlsx") + print(df) + for _, row in df.iterrows(): + source_id = row["ID"] + text = f"{row['title']}\n\n{row['text']}" + with open(f"output/femicides/extract_text/source_{source_id}.txt", "w", encoding="utf-8") as f: + f.write(text) + + +if __name__ == '__main__': + extract_texts() diff --git a/sociofillmore/femicides/split_data.py b/sociofillmore/femicides/split_data.py new file mode 100755 index 0000000000000000000000000000000000000000..e8a8fffd3431ccd1076b8efa53c1433583960939 --- /dev/null +++ b/sociofillmore/femicides/split_data.py @@ -0,0 +1,235 @@ +""" +Split the dataset into a "DEV10" portion (10% of events) for initial experimentation; and "MAIN", the rest of the +dataset, to be used later +""" +import os +import json +import random +import argparse +from collections import defaultdict +from typing import List, Tuple, Dict, Any + +import pandas as pd +import nltk + +random.seed(1996) + + +def split_rai_femicides(): + # process the excel file + print("Processing excel file...") + femicide_events = pd.read_excel("data/femicides/rai/EventiFemminicidio_from2015to2017.edited_colnames.xlsx", + sheet_name="dati", header=0) + event_ids, victim_to_event_id, event_id_to_victims, victim_duplicate_counts = read_events(femicide_events) + + # save information about correspondences between victims and events + # (we will need this later to retrieve the correct texts for each event, because the XLSX with texts uses victim + # names as keys) + dicts_to_save = ( + (victim_to_event_id, "victim_to_event_id"), + (event_id_to_victims, "event_id_to_victims"), + (victim_duplicate_counts, "victim_duplicate_counts") + ) + write_dict_to_json(dicts_to_save) + + # shuffle and split + print("Shuffling and splitting...") + shuffled_event_ids = list(event_ids) + random.shuffle(shuffled_event_ids) + dev10_idx = shuffled_event_ids[:78] + main_idx = shuffled_event_ids[78:] + dev10_df, main_df = create_split_df(dev10_idx, femicide_events) + + # write split dataframes + for df, df_name in ((dev10_df, "dev10"), (main_df, "main")): + df.to_csv(f"output/femicides/split_data/rai/split_{df_name}.events.csv") + df.to_excel(f"output/femicides/split_data/rai/split_{df_name}.events.xlsx") + + # write filtered victim data + dev10_victims = {e: victims for e, victims in event_id_to_victims.items() if e in dev10_idx} + main_victims = {e: victims for e, victims in event_id_to_victims.items() if e in main_idx} + filtered_dicts_to_save = ( + (dev10_victims, "event_id_to_victims.dev10"), + (main_victims, "event_id_to_victims.main"), + ) + write_dict_to_json(filtered_dicts_to_save) + + # retrieve texts for filtered data + print("Filtering & writing texts...") + texts_df = pd.read_excel("data/femicides/rai/EventiFemminicidio_from2015to2017_fonti.xlsx") + filter_texts("dev10", texts_df, dev10_victims, victim_duplicate_counts) + filter_texts("main", texts_df, main_victims, victim_duplicate_counts) + + +def split_olv_femicides(): + texts_df = pd.read_csv("data/femicides/olv/texts_scrape_match_scrape_2021-10-28.csv") + events_df = pd.read_csv("data/femicides/olv/events_scrape_match_scrape_2021-10-28.csv") + + event_ids = events_df["event:id"].tolist() + random.shuffle(event_ids) + + num_dev_events = round(len(event_ids) * 0.10) + dev10_ids = event_ids[:num_dev_events] + dev10_df, main_df = create_split_df(dev10_ids, events_df) + + # split texts + dev10_texts_df = texts_df[texts_df["event_id"].isin(dev10_ids)] + main_texts_df = texts_df[~texts_df["event_id"].isin(dev10_ids)] + + # write to files + for events_df, texts_df, split_name in ((dev10_df, dev10_texts_df, "dev10"), (main_df, main_texts_df, "main")): + events_df.to_csv(f"output/femicides/split_data/olv/split_{split_name}.events.csv") + texts_df.to_csv(f"output/femicides/split_data/olv/split_{split_name}.texts.csv") + events_df.to_excel(f"output/femicides/split_data/olv/split_{split_name}.events.xlsx") + texts_df.to_excel(f"output/femicides/split_data/olv/split_{split_name}.texts.xlsx") + + for _, row in texts_df.iterrows(): + event_id = row["event_id"] + text_id = row["text_id"] + event_dir = f"output/femicides/split_data/olv/split_{split_name}_texts_by_event/{event_id}/" + os.makedirs(event_dir, exist_ok=True) + with open(event_dir + f"/{text_id}.txt", "w", encoding="utf-8") as f_by_event: + title = row["title"] if not pd.isna(row["title"]) else "" + for line in nltk.sent_tokenize(title, language="italian"): + f_by_event.write(line + os.linesep) + f_by_event.write(os.linesep) + fulltext = row["fulltext"] if not pd.isna(row["fulltext"]) else "" + if not fulltext: + print(f"WARNING: empty fulltext in text_id={text_id}") + for line in nltk.sent_tokenize(fulltext, language="italian"): + line = line.strip() + if not line: + continue + f_by_event.write(line + os.linesep) + + +def write_dict_to_json(filtered_dicts_to_save): + for dict_data, dict_name in filtered_dicts_to_save: + with open(f"output/femicides/split_data/rai/{dict_name}.json", "w", encoding="utf-8") as f: + json.dump(dict_data, f, indent=4, sort_keys=True) + + +def create_split_df(dev10: List[int], femicide_events: pd.DataFrame) -> Tuple[pd.DataFrame, pd.DataFrame]: + dev10_rows = [] + main_rows = [] + for idx, row in femicide_events.iterrows(): + event_id = row["event:id"] + if pd.isna(event_id): + continue + event_id = int(event_id) + if event_id in dev10: + dev10_rows.append(row) + else: + main_rows.append(row) + dev10_df = pd.DataFrame(dev10_rows) + main_df = pd.DataFrame(main_rows) + return dev10_df, main_df + + +def read_events(events_df): + event_ids: List[int] = [] + victim_to_event_id: Dict[str, int] = {} + event_id_to_victims: Dict[int, List[Tuple[str, int]]] = defaultdict(list) + victim_duplicate_counts: Dict[str, int] = defaultdict(int) + + for idx, row in events_df.iterrows(): + event_id = row["event:id"] + if pd.isna(event_id): + continue + event_id = int(event_id) + + # unspecified name --> "UNKNOWN_X" + victim = row["victim:name"] + if victim == "non rilevato" or pd.isna(victim): + victim = f"UNKNOWN_{event_id}" + + # disambiguate victims with duplicate names + victim_duplicate_counts[victim] += 1 + duplicate_id = victim_duplicate_counts[victim] + + event_ids.append(event_id) + victim_to_event_id[f"{victim}/{duplicate_id}"] = event_id + event_id_to_victims[event_id].append((victim, duplicate_id)) + return event_ids, victim_to_event_id, event_id_to_victims, victim_duplicate_counts + + +def filter_texts(split_name: str, + texts_df: pd.DataFrame, + event_idx_to_victims: Dict[int, List[Tuple[str, int]]], + victim_duplicate_counts: Dict[str, int]): + + print(f"\tfilter_texts: filtering split {split_name}") + + # first filter victims + victim_to_event_idx = {} + for e_id in event_idx_to_victims: + for victim in event_idx_to_victims[e_id]: + victim_name, victim_dup_id = victim + if victim_duplicate_counts[victim_name] > 1: + print(f"\tfilter_texts: removing ambiguous victim name '{victim_name}'") + continue + victim_to_event_idx[victim_name] = e_id + + meta_rows: List[Dict[str, Any]] = [] + with open(f"output/femicides/split_data/rai/split_{split_name}.texts.text.txt", "w", encoding="utf-8") as f_txt, \ + open(f"output/femicides/split_data/rai/split_{split_name}.texts.ids.txt", "w", encoding="utf-8") as f_id: + for _, row in texts_df.iterrows(): + text_victim = row["vittima"].strip() + if text_victim in victim_to_event_idx: + e_id = victim_to_event_idx[text_victim] + text_id = int(row["ID"]) + url = row["link"] + pubdate = row["pubdate"] + provider = row["provider"] + title = row["title"] + + meta_rows.append({ + "event_id": e_id, + "text_id": text_id, + "url": url, + "pubdate": pubdate, + "provider": provider, + "title": title + }) + + # body_text_lines = row["text"].split("\n") + body_text_lines = nltk.sent_tokenize(row["text"], language="italian") + title_lines = nltk.sent_tokenize(title, language="italian") + + # f_txt.write(title.strip() + os.linesep) + # f_id.write(f"event {e_id}\ttext {text_id}\ttitle" + os.linesep) + for line in title_lines: + f_txt.write(line + os.linesep) + f_id.write(f"event {e_id}\ttext {text_id}\ttitle" + os.linesep) + + event_dir = f"output/femicides/split_data/rai/split_{split_name}_texts_by_event/{e_id}/" + os.makedirs(event_dir, exist_ok=True) + with open(event_dir + f"/{text_id}.txt", "w", encoding="utf-8") as f_by_event: + # f_by_event.write(title.strip() + os.linesep) + for line in title_lines: + f_by_event.write(line + os.linesep) + f_by_event.write(os.linesep) + for line in body_text_lines: + line = line.strip() + if not line: + continue + f_txt.write(line + os.linesep) + f_by_event.write(line + os.linesep) + f_id.write(f"event {e_id}\ttext {text_id}\tbody" + os.linesep) + + meta_df = pd.DataFrame(meta_rows) + meta_df.to_csv(f"output/femicides/split_data/rai/split_{split_name}.texts.meta.csv") + meta_df.to_excel(f"output/femicides/split_data/rai/split_{split_name}.texts.meta.xlsx") + print() + + +if __name__ == '__main__': + + ap = argparse.ArgumentParser() + ap.add_argument("dataset", choices=["rai", "olv"]) + args = ap.parse_args() + + if args.dataset == "rai": + split_rai_femicides() + else: + split_olv_femicides() diff --git a/sociofillmore/migration/cda_classify.py b/sociofillmore/migration/cda_classify.py new file mode 100755 index 0000000000000000000000000000000000000000..48664e91f9e981957610c72df50b2d3e704b6768 --- /dev/null +++ b/sociofillmore/migration/cda_classify.py @@ -0,0 +1,338 @@ +""" +Learn to classify the manually annotated CDA attributes (frames, 'riferimento', orientation) +""" + +import sys + +import torch + +from allennlp.data.vocabulary import Vocabulary +from allennlp.data import DatasetReader, TokenIndexer, Instance, Token +from allennlp.data.fields import TextField, LabelField +from allennlp.data.token_indexers.pretrained_transformer_indexer import ( + PretrainedTransformerIndexer, +) +from allennlp.data.tokenizers.pretrained_transformer_tokenizer import ( + PretrainedTransformerTokenizer, +) +from allennlp.models import BasicClassifier +from allennlp.modules.text_field_embedders.basic_text_field_embedder import ( + BasicTextFieldEmbedder, +) +from allennlp.modules.token_embedders.pretrained_transformer_embedder import ( + PretrainedTransformerEmbedder, +) +from allennlp.modules.seq2vec_encoders.bert_pooler import BertPooler +from allennlp.training.checkpointer import Checkpointer +from allennlp.training.gradient_descent_trainer import GradientDescentTrainer +from allennlp.data.data_loaders.simple_data_loader import SimpleDataLoader +from allennlp.training.optimizers import AdamOptimizer +from allennlp.predictors.text_classifier import TextClassifierPredictor + +from sklearn.svm import SVC +from sklearn.feature_extraction.text import CountVectorizer +from sklearn.metrics import precision_recall_fscore_support +from sklearn.tree import DecisionTreeClassifier +from sklearn.dummy import DummyClassifier + +import pandas as pd +import numpy as np +import spacy + +import json +import os +from typing import Dict, Iterable + + +class MigrationReader(DatasetReader): + def __init__(self, token_indexers, tokenizer): + self.token_indexers = token_indexers + self.tokenizer = tokenizer + + def text_to_instance(self, sentence, label=None) -> Instance: + text_field = TextField(self.tokenizer.tokenize(sentence), self.token_indexers) + fields = {"tokens": text_field} + if label is not None: + label_field = LabelField(label) + fields["label"] = label_field + return Instance(fields) + + + def read_instances( + self, text: pd.Series, labels: pd.Series + ) -> Iterable[Instance]: + for sentence, label in zip(text, labels): + instance = self.text_to_instance(sentence, label) + yield instance + + +def train(attrib, use_gpu=False): + assert attrib in ["cda_frame", "riferimento", "orientation", "fake"] + + # load data + print("Loading data...") + x_train, y_train, x_dev, y_dev = load_data(attrib) + print(f"\t\ttrain size: {len(x_train)}") + print(f"\t\tdev size: {len(x_dev)}") + + # try different setups + print("Running training setups...") + scores = [] + setups = [ + # defaults: remove_punct=True, lowercase=True, lemmatize=False, remove_stop=False + # ({}, {}, {"type": "svm", "options": {"kernel": "linear", "C": 1.0}}), + ( + {}, + {}, + { + "type": "bert", + "options": {"transformer": "Musixmatch/umberto-commoncrawl-cased-v1"}, + }, + ), + # ({"lemmatize": True, "remove_stop": True}, {}, {"type": "svm", "options": {"kernel": "linear", "C": 0.8}}), + # ({"lemmatize": True, "remove_stop": True}, {"embed": False}, {"type": "svm", "options": {"kernel": "linear", "C": 0.8}}), + # ({"lemmatize": True, "remove_stop": True}, {"embed": False}, {"type": "dummy", "options": {}}), + # ({"lemmatize": True, "remove_stop": True}, {"embed": False}, {"type": "tree", "options": {}}), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {"min_freq": 5}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {"min_freq": 5, "max_freq": .70}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear', C=0.6)), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear', C=0.7)), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear', C=0.8)), + # ({"lemmatize": True, "remove_stop": True}, {"ngram_range": (1,2)}, SVC(kernel='linear', C=0.8)), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel="rbf")), + ] + + nlp = spacy.load("it_core_news_md") + + for s_idx, (text_options, vect_options, model_info) in enumerate(setups): + + if model_info["type"] == "bert": + print("\t\tPreparing BERT model...") + + # cuda_device = 0 if torch.cuda.is_available() else -1 + cuda_device = None if use_gpu and torch.cuda.is_available() else -1 + + transformer = model_info["options"]["transformer"] + token_indexers = {"tokens": PretrainedTransformerIndexer(transformer)} + tokenizer = PretrainedTransformerTokenizer(transformer) + + reader = MigrationReader(token_indexers, tokenizer) + train_instances = list( + reader.read_instances(x_train, y_train) + ) + dev_instances = list( + reader.read_instances(x_dev, y_dev) + ) + vocab = Vocabulary.from_instances(train_instances + dev_instances) + print(vocab.get_vocab_size("tags")) + + embedder = BasicTextFieldEmbedder( + {"tokens": PretrainedTransformerEmbedder(transformer)} + ) + seq2vec = BertPooler(transformer) + model = BasicClassifier(vocab, embedder, seq2vec, namespace="tags") + if use_gpu: + model = model.cuda(cuda_device) + + checkpoint_dir = f"/scratch/p289731/cda_classify/model_{attrib}/checkpoints/" + serialization_dir = f"/scratch/p289731/cda_classify/model_{attrib}/serialize/" + os.makedirs(checkpoint_dir) + os.makedirs(serialization_dir) + checkpointer = Checkpointer(checkpoint_dir) + optimizer = AdamOptimizer( + [(n, p) for n, p in model.named_parameters() if p.requires_grad], + lr=1e-6 + ) + train_loader = SimpleDataLoader(train_instances, batch_size=8, shuffle=True) + dev_loader = SimpleDataLoader(dev_instances, batch_size=8, shuffle=False) + train_loader.index_with(vocab) + dev_loader.index_with(vocab) + + print("\t\tTraining BERT model") + trainer = GradientDescentTrainer( + model, + optimizer, + train_loader, + validation_data_loader=dev_loader, + patience=32, + checkpointer=checkpointer, + cuda_device=cuda_device, + serialization_dir=serialization_dir + ) + trainer.train() + + print("\t\tProducing predictions...") + predictor = TextClassifierPredictor(model, reader) + predictions = [predictor.predict(sentence) for sentence in x_dev] + y_dev_pred = [p["label"] for p in predictions] + class_labels = list(vocab.get_token_to_index_vocabulary("labels").keys()) + + elif model_info["type"] in ["svm", "tree", "dummy"]: + # extract features + print("\t\tExtracting features...") + x_train_fts, vectorizer = extract_features( + x_train, nlp, text_options, **vect_options + ) + x_dev_fts, _ = extract_features( + x_dev, nlp, text_options, **vect_options, vectorizer=vectorizer + ) + + if not vect_options["embed"]: + print(f"\t\t\tnum features: {len(vectorizer.vocabulary_)}") + else: + assert model_info["type"] != "tree", "Decision tree does not support embedding input" + + print("\t\tTraining the model...") + if model_info["type"] == "svm": + model = SVC(**model_info["options"]) + elif model_info["type"] == "tree": + model = DecisionTreeClassifier() + else: + model = DummyClassifier() + model.fit(x_train_fts, y_train) + + # evaluate on dev + print("\t\tValidating the model...") + y_dev_pred = model.predict(x_dev_fts) + class_labels = model.classes_ + + p_micro, r_micro, f_micro, _ = precision_recall_fscore_support( + y_dev, y_dev_pred, average="micro" + ) + p_classes, r_classes, f_classes, _ = precision_recall_fscore_support( + y_dev, y_dev_pred, average=None, labels=class_labels, zero_division=0 + ) + print( + f"\t\t\tOverall scores (micro-averaged):\tP={p_micro}\tR={r_micro}\tF={f_micro}" + ) + + scores.append( + { + "micro": {"p": p_micro, "r": r_micro, "f": f_micro}, + "classes": { + "p": list(zip(class_labels, p_classes)), + "r": list(zip(class_labels, r_classes)), + "f": list(zip(class_labels, f_classes)), + }, + } + ) + + prediction_df = pd.DataFrame( + zip(x_dev, y_dev, y_dev_pred), columns=["headline", "gold", "prediction"] + ) + prediction_df.to_csv( + f"output/migration/cda_classify/predictions_{attrib}_{s_idx:02}.csv" + ) + + with open( + f"output/migration/cda_classify/scores_{attrib}.json", "w", encoding="utf-8" + ) as f_scores: + json.dump(scores, f_scores, indent=4) + + +def load_data(attrib): + train_data = pd.read_csv("output/migration/preprocess/annotations_train.csv") + dev_data = pd.read_csv("output/migration/preprocess/annotations_dev.csv") + + x_train = train_data["Titolo"] + x_dev = dev_data["Titolo"] + + if attrib == "cda_frame": + y_train = train_data["frame"] + y_dev = dev_data["frame"] + elif attrib == "riferimento": + y_train = train_data["riferimento"] + y_dev = dev_data["riferimento"] + elif attrib == "orientation": + y_train = train_data["orientation"] + y_dev = dev_data["orientation"] + + # fake task to test setup + else: + y_train = pd.Series(["true" if "rifugiato" in exa else "false" for exa in x_train]) + y_dev = pd.Series(["true" if "rifugiato" in exa else "false" for exa in x_dev]) + + return x_train, y_train, x_dev, y_dev + + +def extract_features( + headlines, + nlp, + text_options, + embed=False, + min_freq=1, + max_freq=1.0, + ngram_range=(1, 1), + vectorizer=None, +): + + if embed: + vectorized = np.array( + [vec for vec in process_text(headlines, nlp, embed=True, **text_options)] + ) + else: + tokenized = [ + " ".join(sent) for sent in process_text(headlines, nlp, **text_options) + ] + if vectorizer is None: + vectorizer = CountVectorizer( + lowercase=False, + analyzer="word", + min_df=min_freq, + max_df=max_freq, + ngram_range=ngram_range, + ) + vectorized = vectorizer.fit_transform(tokenized) + else: + vectorized = vectorizer.transform(tokenized) + return vectorized, vectorizer + + +def process_text( + headlines, + nlp, + embed=False, + remove_punct=True, + lowercase=True, + lemmatize=False, + remove_stop=False, +): + for sent in headlines: + doc = nlp(sent) + tokens = ( + t + for t in doc + if (not remove_stop or not t.is_stop) + and (not remove_punct or t.pos_ not in ["PUNCT", "SYM", "X"]) + ) + if embed: + if lemmatize: + tokens = (t.vocab[t.lemma].vector for t in tokens) + else: + tokens = (t.vector for t in tokens if t.has_vector) + else: + if lemmatize: + tokens = (t.lemma_ for t in tokens) + else: + tokens = (t.text for t in tokens) + + if lowercase: + tokens = (t.lower() for t in tokens) + + if embed: + token_arr = np.array([t for t in tokens]) + if len(token_arr) == 0: + yield np.random.rand(300) + else: + yield np.mean(token_arr, axis=0) + else: + yield list(tokens) + + +if __name__ == "__main__": + use_gpu = True if sys.argv[1] == "gpu" else False + # train(attrib="fake", use_gpu=use_gpu) + train(attrib="cda_frame", use_gpu=use_gpu) + # train(attrib="riferimento") + # train(attrib="orientation") diff --git a/sociofillmore/migration/cda_classify_.py b/sociofillmore/migration/cda_classify_.py new file mode 100755 index 0000000000000000000000000000000000000000..5856b2a90f6a1143566ec543c7d38b4e4aa843ac --- /dev/null +++ b/sociofillmore/migration/cda_classify_.py @@ -0,0 +1,140 @@ +""" +Learn to classify the manually annotated CDA attributes (frames, 'riferimento', orientation) +""" + +GLOVE_MODEL = "/net/aistaff/gminnema/thesis_data/data/glove-it/glove_WIKI" + + +from sklearn.svm import SVC +from sklearn.feature_extraction.text import CountVectorizer +from sklearn.metrics import precision_recall_fscore_support +import gensim +import pandas as pd +import spacy + +import json + + +def train(attrib): + assert attrib in ["cda_frame", "riferimento", "orientation"] + + # load data + print("Loading data...") + x_train, y_train, x_dev, y_dev = load_data(attrib) + print(f"\t\ttrain size: {len(x_train)}") + print(f"\t\tdev size: {len(x_dev)}") + + # try different setups + print("Running training setups...") + scores = [] + setups = [ + # defaults: remove_punct=True, lowercase=True, lemmatize=False, remove_stop=False + # ({}, {}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {"min_freq": 5}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {"min_freq": 5, "max_freq": .70}, SVC(kernel='linear')), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear', C=0.6)), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear', C=0.7)), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel='linear', C=0.8)), + ({"lemmatize": True, "remove_stop": True}, {"embed": "glove"}, SVC(kernel='linear', C=0.8)), + # ({"lemmatize": True, "remove_stop": True}, {}, SVC(kernel="rbf")), + ] + + + nlp = spacy.load("it_core_news_md") + + for s_idx, (text_options, vect_options, model) in enumerate(setups): + + print(f"\tSetup #{s_idx}") + + # extract features + print("\t\tExtracting features...") + x_train_fts, vectorizer = extract_features(x_train, nlp, text_options, **vect_options) + x_dev_fts, _ = extract_features(x_dev, nlp, text_options, **vect_options, vectorizer=vectorizer) + print(f"\t\t\tnum features: {len(vectorizer.vocabulary_)}") + + print("\t\tTraining the model...") + model.fit(x_train_fts, y_train) + + # evaluate on dev + print("\t\tValidating the model...") + y_dev_pred = model.predict(x_dev_fts) + p_micro, r_micro, f_micro, _ = precision_recall_fscore_support( + y_dev, y_dev_pred, average="micro") + p_classes, r_classes, f_classes, _ = precision_recall_fscore_support( + y_dev, y_dev_pred, average=None, labels=model.classes_, zero_division=0) + print( + f"\t\t\tOverall scores (micro-averaged):\tP={p_micro}\tR={r_micro}\tF={f_micro}" + ) + + scores.append({ + "micro": { + "p": p_micro, + "r": r_micro, + "f": f_micro + }, + "classes": { + "p": list(zip(model.classes_, p_classes)), + "r": list(zip(model.classes_, r_classes)), + "f": list(zip(model.classes_, f_classes)), + } + }) + + prediction_df = pd.DataFrame(zip(x_dev, y_dev, y_dev_pred), columns=["headline", "gold", "prediction"]) + prediction_df.to_csv(f"output/migration/cda_classify/predictions_{s_idx:02}.csv") + + + with open("output/migration/cda_classify/scores.json", "w", encoding="utf-8") as f_scores: + json.dump(scores, f_scores, indent=4) + + +def load_data(attrib): + train_data = pd.read_csv( + "output/migration/preprocess/annotations_train.csv") + dev_data = pd.read_csv("output/migration/preprocess/annotations_dev.csv") + + x_train = train_data["Titolo"] + x_dev = dev_data["Titolo"] + + if attrib == "cda_frame": + y_train = train_data["frame"] + y_dev = dev_data["frame"] + elif attrib == "riferimento": + y_train = train_data["riferimento"] + y_dev = dev_data["riferimento"] + else: + x_train = train_data["orientation"] + y_dev = dev_data["orientation"] + return x_train, y_train, x_dev, y_dev + + +def extract_features(headlines, nlp, text_options, min_freq=1, max_freq=1.0, embed=None, vectorizer=None): + tokenized = [" ".join(sent) for sent in tokenize(headlines, nlp, **text_options)] + if vectorizer is None: + if embed is None: + vectorizer = CountVectorizer(lowercase=False, analyzer="word", min_df=min_freq, max_df=max_freq) + vectorized = vectorizer.fit_transform(tokenized) + else: + vectorizer = gensim.models. + else: + vectorized = vectorizer.transform(tokenized) + return vectorized, vectorizer + + +def tokenize(headlines, nlp, remove_punct=True, lowercase=True, lemmatize=False, remove_stop=False): + for sent in headlines: + doc = nlp(sent) + tokens = ( + t.lemma_ if lemmatize else t.text + for t in doc + if (not remove_stop or not t.is_stop) and (not remove_punct or t.pos_ not in ["PUNCT", "SYM", "X"]) + ) + if lowercase: + tokens = [t.lower() for t in tokens] + else: + tokens = [t for t in tokens] + yield tokens + + +if __name__ == '__main__': + train(attrib="cda_frame") diff --git a/sociofillmore/migration/extract_political_ratings.py b/sociofillmore/migration/extract_political_ratings.py new file mode 100644 index 0000000000000000000000000000000000000000..7e4d3ef3d5f9ea7ac60b3dac5ca95e5546ab2951 --- /dev/null +++ b/sociofillmore/migration/extract_political_ratings.py @@ -0,0 +1,17 @@ +import pandas as pd + + +def main(): + corpus_df = pd.read_excel("data/migration/corpus_titoli_2013_2021_with_most_recent_years.xlsx") + ratings = corpus_df.groupby("Testata").first()[["Orientamento politico", "Religiosa?"]] + ratings.index.rename("provider", inplace=True) + ratings["political_stance"] = ratings["Orientamento politico"] + ratings["religious"] = ratings["Religiosa?"] == "religiosa" + ratings.drop("Orientamento politico", axis=1, inplace=True) + ratings.drop("Religiosa?", axis=1, inplace=True) + + ratings.to_csv("data/migration/provider_pol_rel_ratings.csv") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/sociofillmore/migration/preprocess.py b/sociofillmore/migration/preprocess.py new file mode 100755 index 0000000000000000000000000000000000000000..82b9827ed7a056304abf0e58a6c6172e71bdfe75 --- /dev/null +++ b/sociofillmore/migration/preprocess.py @@ -0,0 +1,57 @@ +import pandas as pd +import numpy as np + +import random + +random.seed(1996) + + +CORPUS_ANNOTATED = "data/migration/corpus_with_frames_and_orientation.csv" +CORPUS_ALL = "data/migration/corpus_all.csv" + +RATIO_DEV = 0.05 +RATIO_TEST = 0.25 + + +def preprocess_annotated(): + print("Loading corpus...") + df = pd.read_csv(CORPUS_ANNOTATED, encoding="latin1") + print(f"\tfound {len(df)} annotated headlines") + + train_idx = [] + dev_idx = [] + test_idx = [] + + print("Making random train/dev/test split...") + for i in range(len(df)): + rnd = random.random() + if rnd < RATIO_DEV: + dev_idx.append(i) + elif rnd < (RATIO_DEV + RATIO_TEST): + test_idx.append(i) + else: + train_idx.append(i) + + print(f"\tassigned {len(train_idx)} samples to train") + print(f"\tassigned {len(dev_idx)} samples to dev") + print(f"\tassigned {len(test_idx)} samples to test") + + df_train = df.iloc[train_idx] + df_dev = df.iloc[dev_idx] + df_test = df.iloc[test_idx] + + df_train.to_csv("output/migration/preprocess/annotations_train.csv") + df_dev.to_csv("output/migration/preprocess/annotations_dev.csv") + df_test.to_csv("output/migration/preprocess/annotations_test.csv") + + +def preprocess_all(): + df = pd.read_csv(CORPUS_ANNOTATED, encoding="latin1") + for _, row in df.iterrows(): + pass + + + +if __name__ == "__main__": + # preprocess_annotated() + preprocess_all() diff --git a/sociofillmore/migration/split_data.py b/sociofillmore/migration/split_data.py new file mode 100755 index 0000000000000000000000000000000000000000..63e94b3227ce6571ba8edb04f9013fab7d711cba --- /dev/null +++ b/sociofillmore/migration/split_data.py @@ -0,0 +1,85 @@ +import random +import datetime + +import pandas as pd + +random.seed(1996) + + +DEV_RATIO = 0.10 + + +def choose_best_casing(orig, predicted): + num_upper_tokens = len([c == c.upper() for c in orig.upper()]) + if num_upper_tokens > 0.5 * len(orig): + return predicted + return predicted + + +def split_data(): + events_main = [] + texts_main = [] + events_dev = [] + texts_dev = [] + + with open("data/migration/corpus_titoli_all_raw.truecase_bilstm.txt", encoding="utf-8") as f: + titles_tc = [line.strip() for line in f] + + df_all = pd.read_csv("data/migration/corpus_all.csv", encoding="latin-1") + for idx, (_, row) in enumerate(df_all.iterrows()): + + if idx % 1000 == 0: + print("Processing line:", idx) + + year = int(row["Anno"]) + + event_data = { + "event:id": idx, + "event:year": year, + + } + text_data = { + "event_id": idx, + "text_id": idx, + "pubyear": year, + "language": "Italian", + "provider": row["Testata"].lstrip("*T_"), + "title": choose_best_casing(row["Titolo"], titles_tc[idx]), + "title_truecased": titles_tc[idx], + "title_orig": row["Titolo"] + } + + if random.random() < DEV_RATIO: + events_dev.append(event_data) + texts_dev.append(text_data) + + with open(f"output/migration/split_data/split_dev10_sep_txt_files/{idx}.best.txt", "w", encoding="utf-8") as f_out: + f_out.write(text_data["title"]) + + with open(f"output/migration/split_data/split_dev10_sep_txt_files/{idx}.orig.txt", "w", encoding="utf-8") as f_out: + f_out.write(text_data["title_orig"]) + + with open(f"output/migration/split_data/split_dev10_sep_txt_files/{idx}.truecase.txt", "w", encoding="utf-8") as f_out: + f_out.write(text_data["title_truecased"]) + + else: + events_main.append(event_data) + texts_main.append(text_data) + + with open(f"output/migration/split_data/split_main_sep_txt_files/{idx}.best.txt", "w", encoding="utf-8") as f_out: + f_out.write(text_data["title"]) + + with open(f"output/migration/split_data/split_main_sep_txt_files/{idx}.orig.txt", "w", encoding="utf-8") as f_out: + f_out.write(text_data["title_orig"]) + + with open(f"output/migration/split_data/split_main_sep_txt_files/{idx}.truecase.txt", "w", encoding="utf-8") as f_out: + f_out.write(text_data["title_truecased"]) + + pd.DataFrame(events_main).to_csv("output/migration/split_data/split_main.events.csv") + pd.DataFrame(texts_main).to_csv("output/migration/split_data/split_main.texts.meta.csv") + pd.DataFrame(events_dev).to_csv("output/migration/split_data/split_dev10.events.csv") + pd.DataFrame(texts_dev).to_csv("output/migration/split_data/split_dev10.texts.meta.csv") + + +if __name__ == "__main__": + split_data() \ No newline at end of file diff --git a/sociofillmore/migration/split_lome_predictions.py b/sociofillmore/migration/split_lome_predictions.py new file mode 100755 index 0000000000000000000000000000000000000000..62cf28fd3ac962e1781858d48453290bc3f176b7 --- /dev/null +++ b/sociofillmore/migration/split_lome_predictions.py @@ -0,0 +1,54 @@ +import os +import json + +import pandas as pd + + +def main(input_json, input_txt, output_dir): + meta_df = pd.read_csv("output/migration/split_data/split_dev10.texts.meta.csv") + text_ids = meta_df["text_id"].to_list() + with open(input_json, encoding="utf-8") as f: + json_predictions = json.load(f) + + with open(input_txt, encoding="utf-8") as f: + txt_predictions = f.read().split("\n\n") + + for t_id, json_p, txt_p in zip(text_ids, json_predictions, txt_predictions): + + if int(t_id) % 100 == 0: + print(t_id) + + prediction_dir = f"{output_dir}/{t_id}" + if not os.path.isdir(prediction_dir): + os.makedirs(prediction_dir) + prediction_file_json = f"{prediction_dir}/lome_{t_id}.comm.json" + prediction_file_txt = f"{prediction_dir}/lome_{t_id}.comm.txt" + + with open(prediction_file_json, "w", encoding="utf-8") as f_out: + json.dump([json_p], f_out) + + with open(prediction_file_txt, "w", encoding="utf-8") as f_out: + f_out.write(txt_p + "\n\n") + + +if __name__ == "__main__": + # main( + # input_json="output/migration/lome/lome_0shot/lome_lome_0shot_migration_all_tc.comm.json", + # input_txt="output/migration/lome/lome_0shot/lome_lome_0shot_migration_all_tc.comm.txt", + # output_dir="output/migration/lome/multilabel/lome_0shot/pavia" + # ) + # main( + # input_json="output/migration/lome/lome_0shot/lome_lome_0shot_migration_all_best-truecase.comm.json", + # input_txt="output/migration/lome/lome_0shot/lome_lome_0shot_migration_all_best-truecase.comm.txt", + # output_dir="output/migration/lome/multilabel/lome_0shot/pavia" + # ) + # main( + # input_json="output/migration/lome/lome_zs-tgt_ev-frm/data-in.concat.combined_zs_ev.tc_bilstm.json", + # input_txt="output/migration/lome/lome_zs-tgt_ev-frm/data-in.concat.combined_zs_ev.tc_bilstm.txt", + # output_dir="output/migration/lome/multilabel/lome_zs-tgt_ev_frm/pavia" + # ) + main( + input_json="/home/gossminn/WorkSyncs/Code/fn-for-social-frames/output/migration/lome/lome_migration_concat.comm.json", + input_txt="/home/gossminn/WorkSyncs/Code/fn-for-social-frames/output/migration/lome/lome_migration_concat.comm.txt", + output_dir="output/migration/lome/multilabel/lome_0shot/pavia" + ) diff --git a/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a35a47dbebffed5e92968dfb27f1895018f59cc6 Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-38.pyc b/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f7413f434a1c67e02cd791add58623c05ec569f Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-38.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-39.pyc b/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2705af28bb216a57d408e187a96dd7bd21a2596a Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/analyze_final_questionnaire.cpython-39.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/analyze_questionnaire.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/analyze_questionnaire.cpython-37.pyc new file mode 100755 index 0000000000000000000000000000000000000000..e16b7e9d6d49129dc02e0b84e37358758e3f1841 Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/analyze_questionnaire.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/make_introduction_texts.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/make_introduction_texts.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e49197bc47905f4ea4ef432bc7527d41c4d245bc Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/make_introduction_texts.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/make_questionnaire.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/make_questionnaire.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b82955906ad2e25ec2be2f6d4daa47257f67c4e Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/make_questionnaire.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/make_questionnaire.cpython-38.pyc b/sociofillmore/scoring/eval/__pycache__/make_questionnaire.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b157b9dff8bb7cb8cda81d4906b1bdfe0d51877c Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/make_questionnaire.cpython-38.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/preselect.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/preselect.cpython-37.pyc new file mode 100755 index 0000000000000000000000000000000000000000..925420a8602cb9ecdbd0ee391df8de94676d8ff7 Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/preselect.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/qualtrics_up_down.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/qualtrics_up_down.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05c2ba9c95becf620294e4b07e6db555ee895f0a Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/qualtrics_up_down.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/qualtrics_up_down.cpython-38.pyc b/sociofillmore/scoring/eval/__pycache__/qualtrics_up_down.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04888398500f130ad01f885ebd037bdbadb60eda Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/qualtrics_up_down.cpython-38.pyc differ diff --git a/sociofillmore/scoring/eval/__pycache__/sample.cpython-37.pyc b/sociofillmore/scoring/eval/__pycache__/sample.cpython-37.pyc new file mode 100755 index 0000000000000000000000000000000000000000..1ec228fdc1f634a64e33900e6eeda64ba733c976 Binary files /dev/null and b/sociofillmore/scoring/eval/__pycache__/sample.cpython-37.pyc differ diff --git a/sociofillmore/scoring/eval/analyze_final_questionnaire.py b/sociofillmore/scoring/eval/analyze_final_questionnaire.py new file mode 100755 index 0000000000000000000000000000000000000000..6cb6a6e717b12fe7b722317ae4fabf0a95413bc2 --- /dev/null +++ b/sociofillmore/scoring/eval/analyze_final_questionnaire.py @@ -0,0 +1,91 @@ +import os +import glob +import json +from collections import defaultdict + +import numpy as np +import pandas as pd + + +def analyze(): + + response_files = [] + meta_files = [] + for idx, resp_file in enumerate(sorted(glob.glob("/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/version*.tsv"))): + response_files.append(resp_file) + meta_files.append(f"/home/gossminn/WorkSyncs/Code/fn-for-social-frames/output/scoring/eval/final/qualtrics_{idx:02}.meta.jsonl") + + approved_participants = pd.read_csv("/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/approved_participants.csv") + + all_sentences = {0: [], 1: [], 2: []} + + for version_idx, (resp_file, meta_file) in enumerate(zip(response_files, meta_files)): + print(f"analyzing results from version_{version_idx:02}") + + responses = pd.read_csv(resp_file, sep="\t", encoding="utf-16", skiprows=[1,2]) + + # filter incomplete responses + responses = responses[responses["Finished"] == True] + print("\t", len(responses)) + + # filter to keep only "good" (approved) responses + responses = responses[(responses["QID3"].isin(approved_participants["code"])) & (responses["IPAddress"].isin(approved_participants["ip"]))] + + out_rows = [] + + resp_col_idx = 24 + with open(meta_file, encoding="utf-8") as f_meta: + for line in f_meta: + meta = json.loads(line) + row_out = { + "frame": meta["sentence_data"]["frame"], + "construction": meta["sentence_data"]["construction"], + "sentence": meta["sentence_data"]["sentence_str"] + } + + irrelevant_judgements = responses.iloc[:, resp_col_idx] + for statement in meta["q_statements"]: + resp_col_idx += 1 + statement_scores = responses.iloc[:, resp_col_idx] + row_out[statement] = np.mean(statement_scores) + + resp_col_idx += 1 + out_rows.append(row_out) + all_sentences[version_idx % 3].append(row_out) + + sentence_scores = pd.DataFrame(out_rows) + sentence_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_sentences_{version_idx:02}.csv") + + frame_scores = sentence_scores.groupby(by=["frame"]).mean() + frame_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_frames_{version_idx:02}.csv") + + cx_scores = sentence_scores.groupby(by=["construction"]).mean() + cx_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_constructions_{version_idx:02}.csv") + + frame_cx_scores = sentence_scores.groupby(by=["frame", "construction"]).mean() + frame_cx_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_frames_cxs_{version_idx:02}.csv") + + + + q_id_to_q_name = { + 0: "cause", + 1: "blame", + 2: "focus" + } + + for q_id in range(3): + sentence_scores = pd.DataFrame(all_sentences[q_id]) + sentence_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_sentences_{q_id_to_q_name[q_id]}.csv") + + frame_scores = sentence_scores.groupby(by=["frame"]).mean() + frame_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_frames_{q_id_to_q_name[q_id]}.csv") + + cx_scores = sentence_scores.groupby(by=["construction"]).mean() + cx_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_constructions_{q_id_to_q_name[q_id]}.csv") + + frame_cx_scores = sentence_scores.groupby(by=["frame", "construction"]).mean() + frame_cx_scores.to_csv(f"/home/gossminn/Desktop/qtx_tmp/analysis_prelim_2022-01-23/analysis_frames_cxs_{q_id_to_q_name[q_id]}.csv") + + +if __name__ == "__main__": + analyze() diff --git a/sociofillmore/scoring/eval/analyze_pilot_questionnaire.py b/sociofillmore/scoring/eval/analyze_pilot_questionnaire.py new file mode 100755 index 0000000000000000000000000000000000000000..27bae9b83b04a93b73b0098d57de832808946d0c --- /dev/null +++ b/sociofillmore/scoring/eval/analyze_pilot_questionnaire.py @@ -0,0 +1,220 @@ +import os +import json +from collections import defaultdict + +import numpy as np +import pandas as pd + + +ALTRO_COLUMN = { + "v1": True, + "v2": False +} + +FIRST_Q_COLS = { + "v1": "QID7_1", + "v2": "QID5_1" +} + +META_FILES = { + "v1": "output/scoring/eval/qualtrics_g0.with_other.meta.jsonl", + "v2": "output/scoring/eval/qualtrics_g0.meta.jsonl" +} + +COLUMN_SHORTNAMES = { + "Q:La morte della donna è descritta come...//causato da un essere umano": "CAUSE/human", + "Q:La morte della donna è descritta come...//causato da un oggetto": "CAUSE/object", + "Q:La morte della donna è descritta come...//privo di una causa definita": "CAUSE/none", + "Q:La morte della donna è descritta come...//causato da un concetto astratto o un'emozione": "CAUSE/abstract", + "Q:La morte della donna è descritta come...//altro...": "CAUSE/other", + "Q:La frase concentra l'attenzione principalmente...//sull'assassino": "ATTENTION/killer", + "Q:La frase concentra l'attenzione principalmente...//sulla vittima": "ATTENTION/victim", + "Q:La frase concentra l'attenzione principalmente...//su un oggetto": "ATTENTION/object", + "Q:La frase concentra l'attenzione principalmente...//su un concetto astratto o un'emozione": "ATTENTION/abstract", + "Q:La frase concentra l'attenzione principalmente...//altro...": "ATTENTION/other", + "Q:La frase concentra l'attenzione principalmente sulle azioni...//dell'assassino": "ACTION/killer", + "Q:La frase concentra l'attenzione principalmente sulle azioni...//della vittima": "ACTION/victim", + "Q:La frase concentra l'attenzione principalmente sulle azioni...//di nessuno": "ACTION/none", + "Q:La frase concentra l'attenzione principalmente sulle azioni...//altro...": "ACTION/other", + "Q:La frase accusa...//l'assassino": "ACCUSE/killer", + "Q:La frase accusa...//la vittima": "ACCUSE/victim", + "Q:La frase accusa...//un oggetto": "ACCUSE/object", + "Q:La frase accusa...//an abstract concept or an emotion": "ACCUSE/abstract", + "Q:La frase accusa...//altro...": "ACCUSE/other" +} + +def analyze(filter_irrelevant=False, version="v1"): + + if version == "v1": + file_in = "data/femicides/survey/survey_pilot_v1_download_2021-11-09_10_02.tsv" + else: + file_in = "data/femicides/survey/survey_pilot_v2_download_2021-11-10_09-53.tsv" + + survey_df = pd.read_csv(file_in, + sep="\t", encoding="utf-16", skiprows=[1, 2]) + + first_question_col = FIRST_Q_COLS[version] + first_question_col_idx = list(survey_df.columns).index(first_question_col) + + altro_column = ALTRO_COLUMN[version] + + answers = defaultdict(lambda: defaultdict(dict)) + + sentences_to_frames = {} + sentences_to_cxs = {} + sentences_to_scores = {} + sentences_to_providers = {} + + meta_file = META_FILES[version] + + with open(meta_file, encoding="utf-8") as f: + cur_col_idx = first_question_col_idx + for line in f: + q_data = json.loads(line) + for stm in q_data["q_statements"]: + stm_answers = survey_df[survey_df.columns[cur_col_idx]].fillna(0) + sentence_key = q_data["sentence_data"]["meta"]["event_id"] + "_" + q_data["sentence_data"]["meta"]["doc_id"] + "//" + q_data["sentence_txt"] + + cur_frame = q_data["sentence_data"]["frame"] + cur_cx = q_data["sentence_data"]["construction"] + respa_score = responsibility_score(cur_frame, cur_cx) + + sentences_to_frames[sentence_key] = cur_frame + sentences_to_cxs[sentence_key] = cur_cx + sentences_to_scores[sentence_key] = respa_score + sentences_to_providers[sentence_key] = q_data["sentence_data"]["meta"]["text_meta"]["provider"] + + answers[sentence_key][q_data["q_prompt"]][stm] = stm_answers.tolist() + cur_col_idx += 1 + if altro_column: + cur_col_idx += 1 + + sent_avg_rows_out = [] + sent_std_rows_out = [] + for sentence, sentence_answers in answers.items(): + out_row_avg = { + "sentence_key": sentence, + } + out_row_std = { + "sentence_key": sentence + } + + # filter based on zero votes + people_to_votes = defaultdict(list) + for stmt_dict in sentence_answers.values(): + for score_list in stmt_dict.values(): + for i, score in enumerate(score_list): + people_to_votes[i].append(score) + + all_zero_votes = 0 + for vote_list in people_to_votes.values(): + if all(v == 0 for v in vote_list): + all_zero_votes += 1 + + if filter_irrelevant and all_zero_votes >= 3: + continue + + out_row_avg["relevant_vote"] = all_zero_votes < 3 + out_row_std["relevant_vote"] = all_zero_votes < 3 + + for question_prompt, question_stmts in sentence_answers.items(): + for stmt, scores in question_stmts.items(): + q_key = f"Q:{question_prompt}//{stmt}" + q_key_short = COLUMN_SHORTNAMES[q_key] + out_row_avg[q_key_short] = np.mean(scores) + out_row_std[q_key_short] = np.std(scores) + sent_avg_rows_out.append(out_row_avg) + sent_std_rows_out.append(out_row_std) + + sentence_analysis_avg_df = pd.DataFrame(sent_avg_rows_out) + sentence_analysis_std_df = pd.DataFrame(sent_std_rows_out) + file_out = os.path.basename(file_in).replace(".tsv", ".analyzed") + if filter_irrelevant: + file_out += ".irr_filtered" + sentence_analysis_avg_df.to_csv(f"output/scoring/eval/{file_out}.by_sentence.avg.csv") + sentence_analysis_std_df.to_csv(f"output/scoring/eval/{file_out}.by_sentence.std.csv") + + frame_features = ["Killing", "Death", "Dead_or_alive", "Event"] + frame_analysis_df = analyze_by_sentence_features(sentence_analysis_avg_df, frame_features, filter_frame_features(sentences_to_frames)) + frame_analysis_df.to_csv(f"output/scoring/eval/{file_out}.by_selected_frame.csv") + + cx_features = sorted(set(sentences_to_cxs.values())) + cx_analysis_df = analyze_by_sentence_features(sentence_analysis_avg_df, cx_features, filter_cx_features(sentences_to_cxs)) + cx_analysis_df.to_csv(f"output/scoring/eval/{file_out}.by_selected_cx.csv") + + score_features = sorted(set(sentences_to_scores.values())) + score_analysis_df = analyze_by_sentence_features(sentence_analysis_avg_df, score_features, filter_score_features(sentences_to_scores)) + score_analysis_df.to_csv(f"output/scoring/eval/{file_out}.by_resp_scores.csv") + + provider_features = sorted(set(sentences_to_providers.values())) + prov_analysis_df = analyze_by_sentence_features(sentence_analysis_avg_df, provider_features, filter_provider_features(sentences_to_providers)) + prov_analysis_df.to_csv(f"output/scoring/eval/{file_out}.by_provider.csv") + + +def analyze_by_sentence_features(sentence_analysis_df, features, filtering_function): + frames_rows_out = [] + baseline_row = {} + + for feature in ["*"] + features: + if feature == "*": + filtered_df = sentence_analysis_df + else: + filtered_df = filtering_function(sentence_analysis_df, feature) + out_row = {"feature": feature} + for col in filtered_df.columns[2:]: + print("column:", col) + col_mean = filtered_df[col].mean() + col_n = filtered_df[col].count() + out_row[f"N({col.split('/')[0]})"] = col_n + if feature == "*": + out_row[col] = col_mean + baseline_row[col] = col_mean + else: + out_row[col] = col_mean - baseline_row[col] + frames_rows_out.append(out_row) + feat_analysis_df = pd.DataFrame(frames_rows_out) + return feat_analysis_df + + +def filter_frame_features(sentences_to_frames): + def fn(sentence_analysis_df, frame): + return sentence_analysis_df[sentence_analysis_df["sentence_key"].apply(lambda x: sentences_to_frames[x]) == frame] + return fn + +def filter_cx_features(sentences_to_cxs): + def fn(sentence_analysis_df, cx): + return sentence_analysis_df[sentence_analysis_df["sentence_key"].apply(lambda x: sentences_to_cxs[x]) == cx] + return fn + +def filter_provider_features(sentences_to_providers): + def fn(sentence_analysis_df, cx): + return sentence_analysis_df[sentence_analysis_df["sentence_key"].apply(lambda x: sentences_to_providers[x]) == cx] + return fn + +def filter_score_features(sentences_to_scores): + def fn(sentence_analysis_df, score): + return sentence_analysis_df[sentence_analysis_df["sentence_key"].apply(lambda x: sentences_to_scores[x]) == score] + return fn + + +def responsibility_score(frame, construction, min_score=-1, max_score=1): + + score = 0 + if frame == "Killing": + score += 1 + if frame == "Event": + score -= 1 + if construction == "nonverbal": + score -= 1 + if construction == "verbal:impersonal": + score -= 1 + if construction == "verbal:active": + score += 1 + return min(max(score, min_score), max_score) + + +if __name__ == "__main__": + analyze(False, "v1") + analyze(True, "v1") + analyze(False, "v2") + analyze(True, "v2") diff --git a/sociofillmore/scoring/eval/geckodriver.log b/sociofillmore/scoring/eval/geckodriver.log new file mode 100644 index 0000000000000000000000000000000000000000..f45d950ac8cf50daab0d7eade736fc89c8cd7ede --- /dev/null +++ b/sociofillmore/scoring/eval/geckodriver.log @@ -0,0 +1,28 @@ +1638959922915 geckodriver INFO Listening on 127.0.0.1:55891 +1638959923412 mozrunner::runner INFO Running command: "/usr/bin/firefox" "--marionette" "--remote-debugging-port" "43995" "-no-remote" "-profile" "/tmp/rust_mozprofileVSq9Go" +ATTENTION: default value of option mesa_glthread overridden by environment. +ATTENTION: default value of option mesa_glthread overridden by environment. +ATTENTION: default value of option mesa_glthread overridden by environment. +ATTENTION: default value of option mesa_glthread overridden by environment. +1638959925059 Marionette INFO Marionette enabled +console.info: MINT: Trying to use the system region (based on LANG). +console.info: MINT: System region is US +console.info: MINT: Trying to use the system region (based on LANG). +console.info: MINT: System region is US +console.warn: SearchSettings: "get: No settings file exists, new profile?" (new NotFoundError("Could not open the file at /tmp/rust_mozprofileVSq9Go/search.json.mozlz4", (void 0))) +console.info: MINT: Loading search-config defaults. +JavaScript error: resource://gre/modules/TelemetryUtils.jsm, line 154: TypeError: date is undefined +JavaScript error: resource:///modules/BrowserGlue.jsm, line 4097: TypeError: invalid assignment to const 'dialogReason' +DevTools listening on ws://localhost:43995/devtools/browser/8142de69-d87f-4646-8b22-654eaad2b779 +1638959927303 Marionette INFO Listening on port 42787 +1638959927410 RemoteAgent WARN TLS certificate errors will be ignored for this session +1638959929841 Marionette WARN Ignoring event 'DOMContentLoaded' because document has an invalid readyState of 'complete'. +JavaScript error: resource://gre/actors/AutoCompleteChild.jsm, line 125: Error: Invalid autocomplete selectedIndex +JavaScript error: resource://gre/actors/AutoCompleteChild.jsm, line 125: Error: Invalid autocomplete selectedIndex +JavaScript error: resource://gre/modules/LoginManagerChild.jsm, line 194: NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS: [JavaScript Error: "Invalid autocomplete selectedIndex" {file: "resource://gre/actors/AutoCompleteChild.jsm" line: 125}]'[JavaScript Error: "Invalid autocomplete selectedIndex" {file: "resource://gre/actors/AutoCompleteChild.jsm" line: 125}]' when calling method: [nsIAutoCompletePopup::selectedIndex] +1638959938033 Marionette WARN Ignoring event 'DOMContentLoaded' because document has an invalid readyState of 'complete'. +1638959946893 Marionette WARN Ignoring event 'DOMContentLoaded' because document has an invalid readyState of 'complete'. +1638959946973 Marionette WARN Ignoring event 'DOMContentLoaded' because document has an invalid readyState of 'complete'. +console.info: MINT: main/search-config update being skipped +console.log: WebExtensions: reset-default-search: starting. +console.log: WebExtensions: reset-default-search: No addons in our list are installed. diff --git a/sociofillmore/scoring/eval/make_introduction_texts.py b/sociofillmore/scoring/eval/make_introduction_texts.py new file mode 100644 index 0000000000000000000000000000000000000000..715597f42a7817cf2b1daf9a77fb4823046e4a47 --- /dev/null +++ b/sociofillmore/scoring/eval/make_introduction_texts.py @@ -0,0 +1,37 @@ +import json + +import pypandoc as ppd + + +def make_introductions(): + + with open("resources/questionnaire/intro_msg_it_main.md", encoding="utf-8") as f: + intro_main_md = f.read() + + with open("resources/questionnaire/intro_msg_it_page.md" , encoding="utf-8") as f: + intro_page_md = f.read() + intro_page_html = ppd.convert_text(intro_page_md, format="md", to="html") + + intro_dict = { + "main": {}, + "page": intro_page_html + } + + for question in ["q1", "q2", "q4"]: + + with open(f"resources/questionnaire/intro_msg_it_{question}_expl.md", encoding="utf-8") as f: + explanation_md = f.read() + with open(f"resources/questionnaire/intro_msg_it_{question}_exa.md", encoding="utf-8") as f: + example_md = f.read() + + intro_q_md = intro_main_md.replace("%%QUESTION", explanation_md).replace("%%EXAMPLE", example_md) + intro_q_html = ppd.convert_text(intro_q_md, format="md", to="html") + intro_dict["main"][question] = intro_q_html + + with open(f"resources/questionnaire/intro_msg_it_for_qsf.json", "w", encoding="utf-8") as f: + json.dump(intro_dict, f, indent=4, sort_keys=True) + + + +if __name__ == "__main__": + make_introductions() diff --git a/sociofillmore/scoring/eval/make_questionnaire.py b/sociofillmore/scoring/eval/make_questionnaire.py new file mode 100755 index 0000000000000000000000000000000000000000..8966c1df9f755d33459e0b838a0f05ef80d9f99e --- /dev/null +++ b/sociofillmore/scoring/eval/make_questionnaire.py @@ -0,0 +1,814 @@ +import json +import os +import argparse +import math +import random +from collections import defaultdict + +import pandas as pd + +random.seed(1996) + +NUM_GROUPS = 1 +SETS_PER_GROUP = 4 +SENTENCES_PER_SET = 12.5 + +TOTAL_SENT_SETS = 20 + +HEADLINE_MIN_FREQ = 125 +MAIN_TEXT_MIN_FREQ = 125 + + +LIKERT_CHOICES = [0, 1, 2, 3, 4, 5] + +GROUPS_TO_SENTENCE_SETS = { + 1: [1, 2, 3, 1], + 2: [2, 3, 1, 2], + 3: [3, 1, 2, 3] +} + +QUESTIONS = { + 1: { + "crashes_en": ["", "the words in the sentence describe the event as...", "caused by a human", "caused by a non-human entity", "lacking a specific cause"], + "crashes_nl": ["", "de woorden in de zin beschrijven de gebeurtenis als...", "veroorzaakt door een mens", "veroorzaakt door een voorwerp of abstract concept", "zonder specifieke oorzaak"], + "femicides_en": ["", "the words in the sentence describe the event as...", "caused by a human", "caused by an object", "lacking a specific cause", "by an abstract object or emotion", "other..."], + # "femicides_it": ["Le domande in questa serie riguardano la rappresentazione dell'evento in relazione alla sua causa.", "La morte della donna è descritta come...", "causato da un essere umano", "causato da un oggetto", "privo di una causa definita", "causato da un concetto astratto o un'emozione", "altro..."] + "femicides_it": ["Le domande in questa serie riguardano la rappresentazione dell'evento in relazione alla sua causa.", "La morte della donna è descritta come...", "causata da un essere umano", "causata da un oggetto (es. una pistola)", "causata da un concetto astratto (es. gelosia)", "spontanea, priva di un agente scatenante", "altro..."] + }, + 2: { + "crashes_en": ["", "the sentence focuses mainly on...", "the car driver", "the cyclist/pedestrian", "a non-human entity"], + "crashes_nl": ["", "de zin legt de nadruk op...", "de automobilist", "de fietser/voetganger", "een voorwerp of abstract concept"], + "femicides_en": ["", "the sentence focuses mainly on...", "the murderer", "the victim", "an object", "an abstract concept or an emotion", "other"], + "femicides_it": ["Le domande in questa serie riguardano il modo in cui la frase pone l'attenzione sui partecipanti.", "La frase concentra l'attenzione principalmente...", "sull'assassino", "sulla vittima", "su un oggetto", "su un concetto astratto o un'emozione", "altro..."] + }, + 3: { + "crashes_en": ["", "the sentence focuses mainly on the actions of...", "the car driver", "the cyclist/pedestrian"], + "crashes_nl": ["", "de zin legt de nadruk op de acties van...", "de automobilist", "de fietser/voetganger"], + "femicides_en": ["", "the sentence focuses mainly on the actions of...", "the murderer", "the victim", "no one", "other..."], + "femicides_it": ["Le domande in questa serie riguardano il modo in cui la frase pone l'attenzione sulle azioni dei partecipanti.", "La frase concentra l'attenzione principalmente sulle azioni...", "dell'assassino", "della vittima", "di nessuno", "altro..."] + }, + 4: { + "crashes_en": ["", "the sentence puts blame on...", "the car driver", "the cyclist/pedestrian", "a non-human entity"], + "crashes_nl": ["", "de zin geeft de schuld aan...", "de automobilist", "de fietser/voetganger", "een voorwerp of abstract concept"], + "femicides_en": ["", "the sentence puts blame on...", "the murderer", "the victim", "an object", "an abstract concept or an emotion", "no one", "other..."], + # "femicides_it": ["Le domande in questa serie di frasi riguardano la rappresentazione della colpa.", "La frase accusa...", "l'assassino", "la vittima", "un oggetto", "an abstract concept or an emotion", "altro..."] # --> mistakenly included one option in Englihs in the published pilot questionnaire + "femicides_it": ["Le domande in questa serie di frasi riguardano la rappresentazione della colpa.", "La frase accusa...", "l'assassino", "la vittima", "un oggetto", "un concetto astratto o un'emozione", "nessuno", "altro..."] + } +} + +BLOCK_INSTRUCTIONS = { + "it": "Nelle frasi che seguono, dai un voto da 0 a 5 ad ogni possibile scelta." +} + +OTHER_INSTRUCTIONS = { + 1: { + "it": "Se hai assegnato punti ad \"altro\", copia e incolla la parte di frase che indica qual è secondo te la causa:" + }, + 2: { + "it": "Se hai assegnato punti ad \"altro\", copia e incolla la parte di frase che indica su chi o su cosa si focalizza la frase secondo te:" + }, + 3: { + "it": "Se hai assegnato punti ad \"altro\", copia e incolla la parte di frase che indica sulle azioni di chi si focalizza la frase secondo te:" + }, + 4: { + "it": "Se hai assegnato punti ad \"altro\", copia e incolla la parte di frase che indica chi o cosa accusa la frase secondo te:" + } +} + +SENTENCE_IGNORE_PROMPT = { + "it": "La frase non è pertinente, non si può valutare" +} + +random.seed(1996) + + +def make_pilot_questionnaire(domain, lang_code, with_other_option=False): + with open(f"output/scoring/eval/preselect_{domain}.json", encoding="utf-8") as f: + preselection = json.load(f) + + if domain == "femicides": + events_df = pd.read_csv( + "output/femicides/split_data/rai/split_dev10.events.csv", index_col=0) + ne_lists = load_ne_lists() + else: + events_df = ne_lists = None + + print("Selecting sentence sets...") + num_total_sets = NUM_GROUPS * SETS_PER_GROUP + print(f"\t#sets: {num_total_sets}") + print(f"\tFound {len(preselection)} preselected sentences") + sentence_sets, preselection_ = make_sentence_sets( + preselection, num_total_sets) + print(f"\t{len(preselection_)} unused sentences left") + + cur_set_id = 0 + + # queue of questions to assign to sentence sets + q_ids = list(QUESTIONS.keys()) + for gr_id in range(NUM_GROUPS): + group_sets = [] + for set_id in range(SETS_PER_GROUP): + # reset question list + if not q_ids: + q_ids = list(QUESTIONS.keys()) + + # pick the next question in the queue + cur_q_id = q_ids.pop(0) + + question_items = QUESTIONS[cur_q_id][f"{domain}_{lang_code}"] + q_descr, q_prompt, q_statements = "", question_items[1], question_items[2:] + sentences = sentence_sets[set_id+1] + q_specify_other = OTHER_INSTRUCTIONS[cur_q_id][lang_code] + group_sets.append( + (q_descr, q_prompt, q_statements, q_specify_other, sentences)) + + cur_set_id += 1 + + file_out = f"output/scoring/eval/qualtrics_g{gr_id}.qtx.txt" + file_meta = f"output/scoring/eval/qualtrics_g{gr_id}.meta.jsonl" + + if with_other_option: + file_out = file_out.replace(".qtx.txt", ".with_other.qtx.txt") + file_meta = file_meta.replace( + ".meta.jsonl", ".with_other.meta.jsonl") + + instructions = BLOCK_INSTRUCTIONS[lang_code] + + # with open(f"resources/questionnaire/intro_message_{domain}_{lang_code}.txt", encoding="utf-8") as f: + # intro_message = f.read() + + intro_message = "---intro goes here---" + + make_qualtrics_file(cur_set_id, file_out, file_meta, events_df, + ne_lists, group_sets, instructions, intro_message, anonymize=domain == "femicides", with_other_option=with_other_option) + + +def make_final_questionnaire(): + + with open("output/scoring/extracted_frames.json", encoding="utf-8") as f: + preselection = json.load(f) + + QUOTATION_MARKS = ["``", "`", "''", "\u00ab", "\u00e0"] + preselection_no_quotes = { + key: [s for s in sent_list if not any( + c in s["sentence_str"] for c in QUOTATION_MARKS)] + for key, sent_list in preselection.items() + } + preselection_hdl = { + key: [s for s in sent_list if s["sentence_idx"] == 0] + for key, sent_list in preselection_no_quotes.items() + } + preselection_hdl = { + key: sent_list for key, sent_list in preselection_hdl.items() + if len(sent_list) >= HEADLINE_MIN_FREQ + } + print("HEADLINES:", {k: len(v) for k, v in preselection_hdl.items()}) + + preselection_art = { + key: [s for s in sent_list if s["sentence_idx"] > 0] + for key, sent_list in preselection_no_quotes.items() + } + preselection_art = { + key: sent_list for key, sent_list in preselection_art.items() + if len(sent_list) >= MAIN_TEXT_MIN_FREQ + } + print("NON-HEADLINES:", {k: len(v) for k, v in preselection_art.items()}) + + events_df = pd.read_csv( + "output/femicides/split_data/rai/split_main.events.csv", index_col=0) + ne_lists = load_ne_lists() + + selected_sents_all_hdl = set() + selected_sents_all_art = set() + sentence_sets_hdl = [] + sentence_sets_art = [] + + # TOTAL_SENT_SETS = TOTAL_SENT_SETS + domain = "femicides" + lang_code = "it" + + def _make_set(): + out_base = f"output/scoring/eval/final/qualtrics_{cur_questionnaire_id:02}" + print(f"Making questionnaire: {out_base}") + intro_message = f"%%MAIN_INTRO_q{q_id}" + instructions = "%%PAGE_INTRO" + question_items = QUESTIONS[q_id][f"{domain}_{lang_code}"] + q_specify_other = OTHER_INSTRUCTIONS[q_id][lang_code] + + # convert to list so we keep order the same + sent_idx_list_hdl = list(sent_set_hdl) + sent_idx_list_art = list(sent_set_art) + + # map indices to sentence dicts + sentences_hdl = [preselection_hdl[k][i] + for k, i, _ in sent_idx_list_hdl] + sentences_art = [preselection_art[k][i] + for k, i, _ in sent_idx_list_art] + + sentences_combined = sentences_hdl + sentences_art + + sentences_map_anonymous = [selection_anonymized[( + k, i, ss)] for k, i, ss in sent_idx_list_hdl + sent_idx_list_art] + sentences_anonymized = [sa for sa, _ in sentences_map_anonymous] + name_mappings = [nm for _, nm in sentences_map_anonymous] + + group_sets = [ + ("", question_items[1], + question_items[2:], q_specify_other, zip(sentences_combined, sentences_anonymized, name_mappings)) + ] + make_qualtrics_file( + cur_set_id=cur_questionnaire_id, + file_out=out_base + ".qtx.txt", + file_meta=out_base + ".meta.jsonl", + group_sets=group_sets, + instructions=instructions, + intro_message=intro_message, + ask_for_personal_code=True, + split_after_every=10, + add_ignore_question_prompt=True + ) + + for set_id in range(TOTAL_SENT_SETS): + print(set_id) + sent_set_hdl = draw_sentence_set( + preselection_hdl, selected_sents_all_hdl, k=25) + sent_set_art = draw_sentence_set( + preselection_art, selected_sents_all_art, k=25) + sentence_sets_hdl.append(sent_set_hdl) + sentence_sets_art.append(sent_set_art) + selected_sents_all_hdl.update(sent_set_hdl) + selected_sents_all_art.update(sent_set_art) + + selection_anonymized = { + (k, i, ss): anonimize_sent(preselection_hdl[k][i], events_df, ne_lists) + for k, i, ss in selected_sents_all_hdl + } + selection_anonymized.update({ + (k, i, ss): anonimize_sent(preselection_art[k][i], events_df, ne_lists) + for k, i, ss in selected_sents_all_art + }) + + cur_set_idx = 0 + cur_questionnaire_id = 0 + for _ in range(TOTAL_SENT_SETS // 4): + for sent_set_hdl, sent_set_art in zip(sentence_sets_hdl[cur_set_idx:cur_set_idx+4], sentence_sets_art[cur_set_idx:cur_set_idx+4]): + for q_id in [1, 4]: + _make_set() + cur_questionnaire_id += 1 + for q_id in [2]: + _make_set() + cur_questionnaire_id += 1 + + cur_set_idx += 4 + + +def draw_sentence_set(preselection, used_sentences, k=50): + + selected_sentences = set() + + def _add_sample_from_key(cur_key): + # don't select the same sentence twice + key_sents = [ + s + for s in preselection[cur_key] + if (s["sentence_str"]) not in {s_str for _, _, s_str in (used_sentences | selected_sentences)} + ] + assert len( + key_sents) >= 1, f"Not enough sentences left in <{cur_key}>, please increase the length threshold for selecting categories" + sample = random.choice(key_sents) + sample_idx = preselection[cur_key].index(sample) + # hash the key, the idx (so we can find it) and the sentence string (so we don't duplicate strings) + selected_sentences.add((cur_key, sample_idx, sample["sentence_str"])) + + assert len(preselection) < k, "Please make sure the number of frame/construction keys does not exceed the sentence set size" + + # take samples from each of the keys, making sure we balance the number of instances from each key as much as possible + key_counts = defaultdict(int) + keys = [] + while len(selected_sentences) < k: + if not keys: + keys = [i for i in preselection.keys()] + random.shuffle(keys) + key = keys.pop() + key_counts[key] += 1 + _add_sample_from_key(key) + print(key_counts) + + # # first, get one sample from each frame/cx keys + # for key in preselection: + # _add_sample_from_key(key) + + # # then randomly get samples from all the keys + # while len(selected_idx) < k: + # key = random.choice(list(preselection.keys())) + # _add_sample_from_key(key) + + return selected_sentences + + +def make_personal_questions(ask_for_code=False, ask_for_math_question=False): + + res = [] + res.append("[[Block]]") + res.append("") + + if ask_for_code: + res.append("[[Question:TextEntry]]") + res.append("Inserisci il tuo codice personale:") + res.append("") + + res.append("[[Question:TextEntry]]") + res.append("Quanti anni hai?") + res.append("") + + res.append("[[Question:MC:MultipleAnswer:Vertical]]") + res.append("Genere:") + res.append("") + res.append("[[Choices]]") + res.append("Femmina") + res.append("Maschio") + res.append("Non-binary") + res.append("Transgender") + res.append("Intersex") + res.append("Preferisco non dirlo") + res.append("...") + res.append("") + + res.append("[[Question:TextEntry]]") + res.append("Qual è la tua occupazione attuale?") + res.append("") + + res.append("[[Question:MC:MultipleAnswer:Vertical]]") + res.append("Qual è il livello di istruzione più alto che hai conseguito?") + res.append("") + res.append("[[Choices]]") + res.append("Scuola secondaria di primo grado (medie)") + res.append( + "Diploma di scuola secondaria di secondo grado (licei, istituti tecnici, istituti professionali)") + res.append("Laurea triennale") + res.append("Laurea magistrale") + res.append("Dottorato di ricerca") + res.append("Altro:") + res.append("") + + if ask_for_math_question: + res.append("[[Question:TextEntry]]") + res.append("Domanda di verifica: 2 + 2 = ... ?") + res.append("") + + return os.linesep.join(res) + + +def make_qualtrics_file( + cur_set_id, + file_out, + file_meta, + group_sets, + instructions, + intro_message, + likert_range=(0, 5), + with_other_option=False, + split_after_every=13, + ask_for_personal_code=False, + add_ignore_question_prompt=False +): + + with open(file_out, "w", encoding="utf-8") as qtx, open(file_meta, "w", encoding="utf-8") as meta: + + def _make_block_start(): + qtx.write("[[Block]]" + os.linesep + os.linesep) + + qtx.write("[[Question:Text]]" + os.linesep) + qtx.write(instructions + os.linesep + + q_descr + os.linesep + os.linesep) + + qtx.write("[[AdvancedFormat]]" + os.linesep + os.linesep) + + qtx.write("[[Block]]" + os.linesep) + qtx.write("[[Question:Text]]" + os.linesep) + qtx.write(intro_message + os.linesep + os.linesep) + + qtx.write(make_personal_questions(ask_for_personal_code) + os.linesep) + + for q_descr, q_prompt, q_statements, q_specify_other, sentences in group_sets: + if not with_other_option: + q_statements = q_statements[:-1] + + _make_block_start() + + sentences = list(sentences) + random.shuffle(sentences) + + for idx, (sentence, sentence_anonymous, mapped_names) in enumerate(sentences): + + if idx > 0 and idx % split_after_every == 0: + _make_block_start() + + sentence_txt = format_sentence(sentence_anonymous) + meta.write(json.dumps({ + "set_idx": cur_set_id, + "q_descr": q_descr, + "q_statements": q_statements, + "q_prompt": q_prompt, + "sentence_data": sentence, + "sentence_txt": sentence_txt, + "mapped_names": mapped_names, + "likert": list(likert_range), + }) + os.linesep) + + if add_ignore_question_prompt: + qtx.write( + "[[Question:MC:MultipleAnswer:Vertical]]" + os.linesep) + qtx.write(sentence_txt + os.linesep + os.linesep) + qtx.write("[[Choices]]" + os.linesep) + qtx.write( + SENTENCE_IGNORE_PROMPT["it"] + os.linesep + os.linesep) + qtx.write("[[Question:Matrix]]" + os.linesep) + qtx.write(q_prompt + os.linesep) + + else: + qtx.write("[[Question:Matrix]]" + os.linesep) + qtx.write(sentence_txt + "//" + q_prompt + + os.linesep + os.linesep) + + qtx.write("[[Choices]]" + os.linesep) + for stm in q_statements: + qtx.write(stm + os.linesep) + qtx.write(os.linesep) + + qtx.write("[[AdvancedAnswers]]" + os.linesep) + for ans in range(likert_range[0], likert_range[1] + 1): + qtx.write("[[Answer]]" + os.linesep + + str(ans) + os.linesep) + qtx.write(os.linesep) + + if add_ignore_question_prompt: + qtx.write("[[Question:Text]]" + os.linesep) + qtx.write("%%EMPTY" + os.linesep + os.linesep) + + if with_other_option: + qtx.write("[[Question:TextEntry]]" + os.linesep) + qtx.write(q_specify_other + os.linesep) + + qtx.write("[[Question:Text]]" + os.linesep) + qtx.write("%%EMPTY" + os.linesep + os.linesep) + + qtx.write(os.linesep) + + +def load_ne_lists(): + + first_name_df = pd.read_csv( + "resources/names/italian_first_names.tsv", sep="\t", index_col=0) + masc_names = first_name_df["masc:name"].tolist() + fem_names = first_name_df["fem:name"].tolist() + + surname_df = pd.read_csv( + "resources/names/italian_surnames.tsv", sep="\t", index_col=0) + surnames = [n[0] + n[1:].lower() for n in surname_df["name"] + if not " " in n and not "'" in n] + + cities_df = pd.read_csv( + "resources/names/italian_cities.tsv", sep="\t", index_col=0) + cities = [(c.strip(), p.strip(), r.strip()) for c, p, r in zip( + cities_df["city"], cities_df["province"], cities_df["region"])] + + return { + "masc_names": masc_names, + "fem_names": fem_names, + "surnames": surnames, + "cities": cities + } + + +def anonimize_sent(sentence, event_df, ne_lists, pilot_version=False): + + out = sentence.copy() + + if pilot_version: + tokens = sentence["sentence"] + else: + tokens = sentence["sentence_str"].split() + + name_mapping = make_name_mapping(sentence, event_df, ne_lists) + + tokens_out = [] + mapped = [] + for tok in tokens: + new_tok = name_mapping.get(tok, tok) + tokens_out.append(new_tok) + if new_tok != tok: + mapped.append((tok, new_tok)) + if pilot_version: + out["sentence"] = tokens_out + else: + out["sentence_str"] = " ".join(tokens_out) + return out, mapped + + +def make_name_mapping(sentence, event_df, ne_lists, pilot_version=False): + def process_name(name): + name = str(name) + + if not name: + return None + + if name == "non rilevato": + return None, None + if len(name) < 5: + return None, None + + components = name.split() + if len(components) != 2: + return None, None + + first_name, last_name = components + return first_name, last_name + + if pilot_version: + event_id = int(sentence["meta"]["event_id"]) # --> pilot version + else: + event_id = sentence["event_id"] + filtered_df = event_df[event_df["event:id"] == event_id] + name_mapping = {} + for _, row in filtered_df.iterrows(): + victim_first_name, victim_last_name = process_name(row["victim:name"]) + + attacker_name = str(row["attacker:name"]) + if len(attacker_name.split(",")) == 2: + perpetrator_first_name, perpetrator_last_name = process_name( + attacker_name.split(",")[0]) + co_perpetrator_first_name, co_perpetrator_last_name = process_name( + attacker_name.split(",")[1]) + else: + perpetrator_first_name, perpetrator_last_name = process_name( + row["attacker:name"]) + co_perpetrator_first_name, co_perpetrator_last_name = None, None + + new_surnames = random.sample(ne_lists["surnames"], k=3) + new_masc_names = random.sample(ne_lists["masc_names"], k=3) + if perpetrator_last_name is not None: + name_mapping[perpetrator_last_name] = new_surnames[0] + if co_perpetrator_last_name is not None: + name_mapping[co_perpetrator_last_name] = new_surnames[1] + if victim_last_name is not None: + name_mapping[victim_last_name] = new_surnames[2] + + # perpetrator is always man (in RAI dataset) + if perpetrator_first_name is not None: + name_mapping[perpetrator_first_name] = new_masc_names[0] + if co_perpetrator_first_name is not None: + name_mapping[co_perpetrator_first_name] = new_masc_names[1] + + if victim_first_name is not None: + if row["victim:gender"] == "femmina": + new_fem_name = random.choice(ne_lists["fem_names"]) + name_mapping[victim_first_name] = new_fem_name + else: + name_mapping[victim_first_name] = new_masc_names[2] + + location = row["event:location"] + province = row["event:province"] + region = row["event:region"] + if location is not None: + new_city, new_province, new_region = random.choice( + ne_lists["cities"]) + name_mapping[location] = new_city + if province not in name_mapping: + name_mapping[province] = new_province + if region not in name_mapping: + name_mapping[region] = new_region + return name_mapping + + +def format_sentence(sentence, pilot_version=False): + + def space_needed_between(tok1, tok2): + + if tok1 in ["«", "{", "[", "(", "``"]: + return False + if tok2 in [".", ",", ";", ":", "?", "!", "»", "}", "]", ")", "''"]: + return False + if tok1.lower() == "e" and tok2 == "'": + return False + return True + + res = "" + prev_tok = "" + sentence_toks = sentence["sentence"] if pilot_version else sentence["sentence_str"].split( + ) + + for i, tok in enumerate(sentence_toks): + + tok = tok.replace("€", "").replace("œ", "").replace("™", "") + + if i > 0 and space_needed_between(prev_tok, tok): + res += " " + res += tok + prev_tok = tok + + return res + + +def make_sentence_sets(preselection, num_total_sets): + sentence_sets = {} + + preselection_ = preselection + for i in range(num_total_sets): + if SENTENCES_PER_SET != int(SENTENCES_PER_SET): + k = math.floor(SENTENCES_PER_SET) if random.random( + ) < 0.5 else math.ceil(SENTENCES_PER_SET) + else: + k = SENTENCES_PER_SET + chosen_sentences = random.sample(preselection_, k=k) + preselection_ = [s for s in preselection_ if s not in chosen_sentences] + sentence_sets[i+1] = chosen_sentences + + return sentence_sets, preselection_ + + +def format_qsf(qsf_in, add_skip_logic=False, require_matrix=True): + + with open(qsf_in, encoding="utf-8") as f: + data_in = json.load(f) + + data_out = {} + data_out["SurveyEntry"] = data_in["SurveyEntry"] + # change language EN -> IT + data_out["SurveyEntry"]["SurveyLanguage"] = "IT" + data_out["SurveyEntry"]["SurveyName"] = data_in["SurveyEntry"]["SurveyName"].replace( + "_draft", "") + + survey_elements = [] + + default_block_id = None + for se in data_in["SurveyElements"]: + + # format matrix questions + if se["Element"] == "SQ" and se["Payload"]["QuestionType"] == "Matrix": + se["Payload"]["Configuration"] = { + "QuestionDescriptionOption": "UseText", + "TextPosition": "inline", + "RepeatHeaders": "none", + "WhiteSpace": "OFF", + "MobileFirst": True, + "ChoiceColumnWidthPixels": 200 + } + if "//" in se["Payload"]["QuestionText"]: + question_text, column_label = se["Payload"]["QuestionText"].split( + "//") + else: + question_text = se["Payload"]["QuestionText"] + column_label = "" + se["Payload"]["QuestionText"] = question_text + se["Payload"]["ColumnLabels"] = [ + { + "Display": column_label, + "IsLabelDefault": False + } + ] + + if require_matrix: + se["Payload"]["Validation"] = { + "Settings": { + "ForceResponse": "ON", + "ForceResponseType": "ON", + "Type": "None" + } + } + + if add_skip_logic: + prev_qid = int( + se["Payload"]["QuestionID"].replace("QID", "")) - 1 + se["Payload"]["InPageDisplayLogic"] = { + "0": { + "0": { + "QuestionID": f"QID{prev_qid}", + "QuestionIsInLoop": "no", + "ChoiceLocator": f"q://QID{prev_qid}/SelectableChoice/1", + "Operator": "NotSelected", + "QuestionIDFromLocator": f"QID{prev_qid}", + "LeftOperand": f"q://QID{prev_qid}/SelectableChoice/1", + "Type": "Expression", + "LogicType": "Question", + "Description": "SKIP LOGIC" + }, + "Type": "If" + }, + "Type": "BooleanExpression", + "inPage": True + } + + # add "leggi la frase" & format (final questionnaire only) + if se["Element"] == "SQ" and se["Payload"]["QuestionType"] == "MC" and se["Payload"]["Choices"]["1"]["Display"].startswith("La frase non \u00e8 pertinente"): + text = "
Leggi la frase:
\n«" + text += se["Payload"]["QuestionText"].strip() + text += "»
" + se["Payload"]["QuestionText"] = text + + # separator 'questions' between sentences + if se["Element"] == "SQ" and se["Payload"]["QuestionText"].startswith("%%EMPTY"): + se["Payload"]["QuestionText"] = " " + + # # "specify other" questions + # if se["Element"] == "SQ" and se["Payload"]["QuestionType"] == "TE": + # se["Payload"]["QuestionText"] = "" + \ + # se["Payload"]["QuestionText"] + "" + + # change essay textboxes to single line textboxes + if se["Element"] == "SQ" and se["Payload"]["QuestionType"] == "TE": + se["Payload"]["Selector"] = "SL" + + # "specify other" question + if se["Element"] == "SQ" and se["Payload"]["QuestionType"] == "MC": + for choice in se["Payload"]["Choices"].values(): + if choice["Display"] in ["Altro:", "..."]: + choice["TextEntry"] = "true" + + # add introduction text (pilot) + if se["SecondaryAttribute"] == "---intro goes here---": + with open("resources/questionnaire/intro_msg_for_qsf.json", encoding="utf-8") as f: + intro_text = json.load(f) + se["SecondaryAttribute"] = intro_text["QuestionDescription"] + se["Payload"]["QuestionText"] = intro_text["QuestionText"] + se["Payload"]["QuestionDescription"] = intro_text["QuestionDescription"] + + # add introduction text (final questionnaire) + if se["Element"] == "SQ" and se["SecondaryAttribute"].startswith("%%MAIN_INTRO"): + qid = se["SecondaryAttribute"].strip().split("_")[-1] + with open("resources/questionnaire/intro_msg_it_for_qsf.json", encoding="utf-8") as f: + intro_text = json.load(f)["main"][qid] + se["Payload"]["QuestionText"] = intro_text + + # add page introduction text (final questionnaire) + if se["Element"] == "SQ" and se["SecondaryAttribute"].startswith("%%PAGE_INTRO"): + qid = se["SecondaryAttribute"].strip().split("_")[-1] + with open("resources/questionnaire/intro_msg_it_for_qsf.json", encoding="utf-8") as f: + intro_text = json.load(f)["page"] + se["Payload"]["QuestionText"] = intro_text + + # remove "default" first question + if se["SecondaryAttribute"] == "Click to write the question text": + continue + if se["Element"] == "BL": + default_block = [item for item in se["Payload"] + if item["Description"] == "Default Question Block"][0] + default_block_id = default_block["ID"] + se["Payload"] = [item for item in se["Payload"] + if item["Description"] != "Default Question Block"] + + if se["Element"] == "FL": + if default_block_id is not None: + se["Payload"]["Flow"] = [item for item in se["Payload"] + ["Flow"] if item["ID"] != default_block_id] + + # survey options + if se["Element"] == "SO": + se["Payload"]["ProgressBarDisplay"] = "NoText" + # 48h to finish the questionnaire... + se["Payload"]["PartialData"] = "+2 days" + # ... counted from moment you start the survey + se["Payload"]["PartialDataCloseAfter"] = "SurveyStart" + se["Payload"]["AvailableLanguages"] = {"IT": []} + # only allow people who got link from our site + se["Payload"]["RefererURL"] = "https://www.gossminn.eu/assign-questionnaire.php" + # prevent submitting twice + se["Payload"]["BallotBoxStuffingPrevention"] = "true" + # prevent indexing in search engines + se["Payload"]["NoIndex"] = "Yes" + se["Payload"]["AnonymizeResponse"] = "No" + se["Payload"]["BackButton"] = "false" + se["Payload"]["SurveyTermination"] = "Redirect" + se["Payload"]["EOSRedirectURL"] = "https://www.gossminn.eu/questionnaire/after.php" + + survey_elements.append(se) + + data_out["SurveyElements"] = survey_elements + + with open(qsf_in.replace(".orig.qsf", ".fmt.qsf"), "w", encoding="utf-8") as f: + json.dump(data_out, f) + + +if __name__ == "__main__": + + ap = argparse.ArgumentParser() + ap.add_argument("action", choices=[ + "generate_pilot", "generate_final", "format"]) + ap.add_argument("dataset", choices=["femicides", "crashes"]) + ap.add_argument("--qsf_in", default=None) + ap.add_argument("--with_other_option", action="store_true") + ap.add_argument("--ask_for_email", action="store_true") + ap.add_argument("--add_skip_logic", action="store_true") + args = ap.parse_args() + + # make_questionnaire("crashes") + language = "it" if args.dataset == "femicides" else "nl" + if args.action == "generate": + make_pilot_questionnaire( + args.dataset, language, with_other_option=args.with_other_option) + elif args.action == "generate_final": + make_final_questionnaire() + + else: + assert args.qsf_in is not None + format_qsf(args.qsf_in, args.add_skip_logic) diff --git a/sociofillmore/scoring/eval/preselect_pilot.py b/sociofillmore/scoring/eval/preselect_pilot.py new file mode 100755 index 0000000000000000000000000000000000000000..82b990284e8c2387a96570624724298099642687 --- /dev/null +++ b/sociofillmore/scoring/eval/preselect_pilot.py @@ -0,0 +1,75 @@ +import requests +import json + +import pandas as pd + + +SOCIOFILLMORE_API = "http://127.0.0.1:5000/" +API_KEY = "3TrJ397oh#^" + + +FRAMES_AND_CX = { + "femicides": { + # "Killing": ["nonverbal", "verbal:active", "verbal:passive"], + "Killing": ["nonverbal", "verbal:active", "verbal:passive"], + "Death": ["nonverbal", "verbal:unaccusative"], + "Dead_or_alive": ["nonverbal", "verbal:unaccusative"], + "Event": ["nonverbal", "verbal:impersonal"] + }, + "crashes": { + "Impact": ["nonverbal", "verbal:active"], + "Cause_harm": ["nonverbal", "verbal:passive"], + "Event": ["nonverbal", "verbal:impersonal"], + "Experience_bodily_harm": ["nonverbal"] + } +} + +def convert_to_tsv(json_file): + with open(json_file, encoding="utf-8") as f: + data = json.load(f) + + rows = [] + for sentence in data: + rows.append({ + # "idx": sentence["idx"], + "sentence": " ".join(sentence["sentence"]) + }) + + df = pd.DataFrame(rows) + df.to_csv("output/scoring/eval/preselect_for_litescale.tsv", sep="\t", header=False) + + +def preselect(domain): + + selection = [] + + idx = 0 + for frame, constructions in FRAMES_AND_CX[domain].items(): + for cx in constructions: + print(f"Searching instances of ({(frame, cx)})") + s = requests.Session() + s.get(SOCIOFILLMORE_API + "/switch_dataset", params={"dataset": "crashes/thecrashes" if domain == "crashes" else "femicides/rai"}) + r = s.get(SOCIOFILLMORE_API + "sample_frame", params={ + "auth_key": API_KEY, + "frame": frame, + "construction": cx, + "dependency": "*", + "model": "lome_0shot", + "role": "*", + "nsamples": 13, + "nperdoc": None, + "event_filters": "e::imbalanced::yes" if domain == "crashes" else "" + }) + # print(r.text) + data = json.loads(r.text)[:13] + for sent in data: + idx += 1 + selection.append({"idx": idx, "sentence": sent["sentence"], "frame": frame, "construction": cx, "meta": sent["meta"]}) + with open(f"output/scoring/eval/preselect_{domain}.json", "w", encoding="utf-8") as f_out: + json.dump(selection, f_out, indent=4) + + +if __name__ == "__main__": + preselect("femicides") + preselect("crashes") + # convert_to_tsv("output/scoring/eval/preselect_femicides.json") diff --git a/sociofillmore/scoring/eval/qualtrics_up_down.py b/sociofillmore/scoring/eval/qualtrics_up_down.py new file mode 100644 index 0000000000000000000000000000000000000000..255238c4ffcadbbab5ec3669b34ac6b0fac39ecc --- /dev/null +++ b/sociofillmore/scoring/eval/qualtrics_up_down.py @@ -0,0 +1,248 @@ +import glob +import os +import sys +import re +import time + +# import pyperclip as pc + +from selenium import webdriver +import selenium.webdriver.support.ui as ui +from selenium.webdriver.common.keys import Keys + +from sociofillmore.scoring.eval.make_questionnaire import format_qsf + + +def driver_init(): + profile = webdriver.FirefoxOptions() + profile.set_preference("browser.download.panel.shown", False) + profile.set_preference( + "browser.helperApps.neverAsk.saveToDisk", "application/qsf") + profile.set_preference("browser.download.manager.showWhenStarting", False) + profile.set_preference("browser.download.manager.alertOnEXEOpen", False) + profile.set_preference("browser.download.manager.focusWhenStarting", False) + profile.set_preference("browser.download.folderList", 2) + profile.set_preference("browser.download.useDownloadDir", True) + profile.set_preference("browser.helperApps.alwaysAsk.force", False) + profile.set_preference("browser.download.manager.alertOnEXEOpen", False) + profile.set_preference("browser.download.manager.closeWhenDone", True) + profile.set_preference( + "browser.download.manager.showAlertOnComplete", False) + profile.set_preference("browser.download.manager.useWindow", False) + profile.set_preference( + "services.sync.prefs.sync.browser.download.manager.showWhenStarting", False) + profile.set_preference("pdfjs.disabled", True) + profile.set_preference( + "browser.download.dir", "/home/gossminn/WorkSyncs/Code/fn-for-social-frames/output/scoring/eval/selenium_out") + driver = webdriver.Firefox(options=profile) + return driver + + +def open_qualtrics_page(driver): + driver.get("https://rug.eu.qualtrics.com/catalog/projects") + wait = ui.WebDriverWait(driver, timeout=120) + wait.until(lambda driver: driver.find_elements( + by="xpath", value="//div[@data-testid = 'Catalog.Offering.Survey']")) + + +def make_new_survey(driver, survey_name): + elem = driver.find_element( + by="xpath", value="//div[@data-testid = 'Catalog.Offering.Survey']") + elem.click() + elem = driver.find_element( + by="xpath", value="//button[@data-testid = 'Catalog.DetailsPane.CallToAction']") + elem.click() + elem = driver.find_element( + by="xpath", value="//input[@data-testid = 'Catalog.GetStartedFlow.Name']") + elem.send_keys(survey_name) + elem = driver.find_element( + by="xpath", value="//button[@data-testid = 'Catalog.GetStartedFlow.Create']") + elem.click() + wait = ui.WebDriverWait(driver, timeout=120) + wait.until(lambda driver: driver.find_elements("id", "builder-tools-menu")) + + +def upload_file(driver, qtx_file): + elem = driver.find_element("id", "builder-tools-menu") + elem.click() + + elem = driver.find_element("id", "import-export-menu") + elem.click() + + elem = driver.find_element("id", "import-survey-tool") + elem.click() + + elem = driver.find_element("id", "fileField") + elem.send_keys(qtx_file) + + elem = driver.find_element("id", "importButton") + wait = ui.WebDriverWait(driver, 120) + wait.until(lambda _: elem.is_displayed()) + elem.click() + + +def wait_for_import_complete(driver): + wait = ui.WebDriverWait(driver, 120) + # BlockTitle _1_DES + wait.until(lambda driver: driver.find_elements( + by="xpath", value="//span[contains(text(), 'Imported Block')]")) + + +def download_qsf(driver): + elem = driver.find_element("id", "builder-tools-menu") + elem.click() + elem = driver.find_element("id", "import-export-menu") + elem.click() + elem = driver.find_element("id", "export-survey-tool") + elem.click() + + +def post_edit_qualtrics(driver): + + ui.WebDriverWait(driver, 120).until(lambda driver: driver.find_element( + by="xpath", value="//div[@class='BlockHeader DefaultBlock']")) + + # delete first "default" question + default_block_header = driver.find_element( + by="xpath", value="//div[@class='BlockHeader DefaultBlock']") + default_block_header.find_element( + by="xpath", value="//div[@class='BlockHeaderRight']").click() + driver.find_element(by="id", value="block-menu-delete").click() + driver.find_element(by="id", value="ConfirmDeleteButton").click() + + # wait to load + # ui.WebDriverWait(driver, 60).until(lambda driver: driver.find_elements("id", "builder-tools-menu")) + ui.WebDriverWait(driver, 120).until_not(lambda driver: driver.find_elements( + "xpath", "//div[@class='Q_WindowHeaderInner']")) + # Q_WindowHeaderInner + + # html intro + with open("resources/questionnaire/intro_msg_it_1q.html", encoding="utf-8") as f: + html_intro = f.read() + + intro_text_place = driver.find_element( + by="xpath", value="//div[@class='QuestionText']") + # assert "Click to write" in intro_text_place.text + intro_text_place.click() + + driver.find_element( + by="xpath", value="//a[@class='Button Blue CodeButton Disabled']").click() + # driver.execute_script(f"document.getElementById(\"InlineEditorElement\").value = \"{html_intro}\"") + pc.copy(html_intro) # --> won't work in notebook + text_editor = driver.find_element(by="id", value="InlineEditorElement") + text_editor.send_keys(Keys.CONTROL, "a") + text_editor.send_keys(Keys.BACKSPACE) + text_editor.send_keys(Keys.CONTROL, "v") + + +def upload(start_from=0, stop_after=-1): + + driver = driver_init() + open_qualtrics_page(driver) + + for i, file in enumerate(sorted(glob.glob("output/scoring/eval/final/*.qtx.txt"))): + + if i < start_from: + continue + + if i > stop_after: + break + + file_id = int(re.search(r"qualtrics_(\d+)\.qtx\.txt", file).group(1)) + + open_qualtrics_page(driver) + + # create an empty survey + qsf_basename = f"femicides_questionnaire_mixed_hdl_art_version_{file_id:02}_draft" + make_new_survey(driver, qsf_basename) + + time.sleep(2) + + # upload txt, download qsf + upload_file(driver, os.path.join(os.getcwd(), file)) + wait_for_import_complete(driver) + download_qsf(driver) + + # format the downloaded qsf + qsf_file = f"output/scoring/eval/selenium_out/{qsf_basename}.qsf" + qsf_file_renamed = f"output/scoring/eval/selenium_out/{qsf_basename}.orig.qsf" + qsf_file_formatted = f"output/scoring/eval/selenium_out/{qsf_basename}.fmt.qsf" + os.rename(qsf_file, qsf_file_renamed) + format_qsf( + f"output/scoring/eval/selenium_out/{qsf_basename}.orig.qsf", True) + + # upload the formatted qsf + # open_qualtrics_page(driver) + # make_new_survey(driver, "_") + upload_file(driver, os.path.join(os.getcwd(), qsf_file_formatted)) + + # kind of a hack, but should work -- can't find a smarter way to wait until the page has reloaded after upload + time.sleep(15.0) + + # # edit the final qsf file + # print("Post-editing...") + # post_edit_qualtrics(driver) + + # click publish button + driver.find_element(by="id", value="publish-button").click() + ui.WebDriverWait(driver, 30).until( + lambda driver: driver.find_elements(by="xpath", value="//button[starts-with(@class, 'confirm-button')]")) + driver.find_element(by="xpath", value="//button[starts-with(@class, 'confirm-button')]").click() + ui.WebDriverWait(driver, 30).until( + lambda driver: driver.find_elements(by="id", value="published-survey-anonymous-link")) + url = driver.find_element(by="id", value="published-survey-anonymous-link").text.strip() + print(f"{i:02}\t{file}\t{url}") + + +def publish(): + driver = driver_init() + open_qualtrics_page(driver) + driver.get("https://rug.eu.qualtrics.com/Q/MyProjectsSection") + ui.WebDriverWait(driver, 30).until( + lambda driver: driver.find_elements(by="xpath", value="//span")) + + questionnaire_rows = [ + span + for span in driver.find_elements( + by="xpath", + value="//span[starts-with(@class, 'ResourceRow_projectNameLabel')]" + ) if re.match(r"femicides_questionnaire_version_\d\d", span.text.strip()) + ] + + for q_row in questionnaire_rows: + tr = q_row.find_element(by="xpath", value="./../../..") + + # open options menu and click activate button + options_btn = tr.find_element( + by="xpath", value=".//button[starts-with(@id, 'options-')]") + options_btn.click() + activate_button = driver.find_element( + by="xpath", value="//div[starts-with(@class, 'ActionsMenu_actions-menu-item') and text()='Activate']") + activate_button.click() + + # move mouse way + action = webdriver.ActionChains(driver) + + # again open options menu and go to distribute page + options_btn = tr.find_element( + by="xpath", value=".//button[starts-with(@id, 'options-')]") + options_btn.click() + distribute_button = driver.find_element( + by="xpath", value="//div[starts-with(@class, 'ActionsMenu_actions-menu-item') and text()='Distribute survey']") + distribute_button.click() + ui.WebDriverWait(driver, 120).until( + lambda driver: driver.find_elements("xpath", "//input[@data-testid='link']")) + anonymous_link = driver.find_element( + "xpath", "//input[@data-testid='link']").text + print(anonymous_link) + + +if __name__ == "__main__": + start_from = 0 + stop_after = -1 + if len(sys.argv) > 1: + start_from = int(sys.argv[1]) + if len(sys.argv) > 2: + stop_after = int(sys.argv[2]) + upload(start_from, stop_after) + # publish() diff --git a/sociofillmore/scoring/eval/selenium_setup.ipynb b/sociofillmore/scoring/eval/selenium_setup.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..44c25fb22e0cbb61f4e67470618b36c20d45be04 --- /dev/null +++ b/sociofillmore/scoring/eval/selenium_setup.ipynb @@ -0,0 +1,312 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from selenium import webdriver\n", + "import selenium.webdriver.support.ui as ui\n", + "\n", + "import json\n", + "import os\n", + "os.chdir(\"/home/gossminn/WorkSyncs/Code/fn-for-social-frames\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "open a firefox instance, go to the qualtrics catalog page" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# from https://stackoverflow.com/questions/38458811/control-firefox-download-prompt-using-selenium-and-python\n", + "\n", + "profile = webdriver.FirefoxOptions()\n", + "profile.set_preference(\"browser.download.panel.shown\", False)\n", + "profile.set_preference(\"browser.helperApps.neverAsk.saveToDisk\", \"application/qsf\");\n", + "profile.set_preference(\"browser.download.manager.showWhenStarting\", False);\n", + "profile.set_preference(\"browser.download.manager.alertOnEXEOpen\", False);\n", + "profile.set_preference(\"browser.download.manager.focusWhenStarting\", False);\n", + "profile.set_preference(\"browser.download.folderList\", 2);\n", + "profile.set_preference(\"browser.download.useDownloadDir\", True);\n", + "profile.set_preference(\"browser.helperApps.alwaysAsk.force\", False);\n", + "profile.set_preference(\"browser.download.manager.alertOnEXEOpen\", False);\n", + "profile.set_preference(\"browser.download.manager.closeWhenDone\", True);\n", + "profile.set_preference(\"browser.download.manager.showAlertOnComplete\", False);\n", + "profile.set_preference(\"browser.download.manager.useWindow\", False);\n", + "profile.set_preference(\"services.sync.prefs.sync.browser.download.manager.showWhenStarting\", False);\n", + "profile.set_preference(\"pdfjs.disabled\", True);\n", + "profile.set_preference(\"browser.download.dir\", \"/home/gossminn/WorkSyncs/Code/fn-for-social-frames/output/scoring/eval/selenium_out\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "driver = webdriver.Firefox(options=profile)\n", + "driver.get(\"https://rug.eu.qualtrics.com/catalog/projects\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"output/scoring/eval/qualtrics_cookies.json\", \"w\", encoding=\"utf-8\") as f:\n", + " cookies = driver.get_cookies()\n", + " json.dump(cookies, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "elem = driver.find_element(by=\"xpath\", value=\"//div[@data-testid = 'Catalog.Offering.Survey']\")\n", + "elem.click()\n", + "elem = driver.find_element(by=\"xpath\", value=\"//button[@data-testid = 'Catalog.DetailsPane.CallToAction']\")\n", + "elem.click()\n", + "elem = driver.find_element(by=\"xpath\", value=\"//input[@data-testid = 'Catalog.GetStartedFlow.Name']\")\n", + "elem.send_keys(\"questionnaire_final\")\n", + "elem = driver.find_element(by=\"xpath\", value=\"//button[@data-testid = 'Catalog.GetStartedFlow.Create']\")\n", + "elem.click()" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [], + "source": [ + "elem = driver.find_element(\"id\", \"builder-tools-menu\")\n", + "elem.click()\n", + "\n", + "elem = driver.find_element(\"id\", \"import-export-menu\")\n", + "elem.click()\n", + "\n", + "elem = driver.find_element(\"id\", \"import-survey-tool\")\n", + "elem.click()\n", + "\n", + "elem = driver.find_element(\"id\", \"fileField\")\n", + "elem.send_keys(\"/home/gossminn/WorkSyncs/Code/fn-for-social-frames/output/scoring/eval/final/qualtrics_0.qtx.txt\")\n", + "\n", + "elem = driver.find_element(\"id\", \"importButton\")\n", + "wait = ui.WebDriverWait(driver, 30)\n", + "wait.until(lambda _: elem.is_displayed())\n", + "elem.click()\n", + "\n", + "wait = ui.WebDriverWait(driver, 60)\n", + "# BlockTitle _1_DES\n", + "wait.until(lambda driver: driver.find_elements(by=\"xpath\", value=\"//span[contains(text(), 'Imported Block')]\"))\n", + "\n", + "\n", + "elem = driver.find_element(\"id\", \"builder-tools-menu\")\n", + "elem.click()\n", + "elem = driver.find_element(\"id\", \"import-export-menu\")\n", + "elem.click()\n", + "elem = driver.find_element(\"id\", \"export-survey-tool\")\n", + "elem.click()" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "driver.find_elements(by=\"xpath\", value=\"//span[contains(text(), 'Imported Block')]\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* edit final qsf " + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "ename": "NoSuchElementException", + "evalue": "Message: Unable to locate element: //div[@class='BlockHeader DefaultBlock']\nStacktrace:\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:181:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.jsm:393:5\nelement.find/\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdefault_block_header\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mby\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"xpath\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"//div[@class='BlockHeader DefaultBlock']\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mdefault_block_header\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mby\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"xpath\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"//div[@class='BlockHeaderRight']\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mby\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"id\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"block-menu-delete\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mdriver\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_element\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mby\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"id\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"ConfirmDeleteButton\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclick\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/sociofillmore/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py\u001b[0m in \u001b[0;36mfind_element\u001b[0;34m(self, by, value)\u001b[0m\n\u001b[1;32m 1244\u001b[0m return self.execute(Command.FIND_ELEMENT, {\n\u001b[1;32m 1245\u001b[0m \u001b[0;34m'using'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mby\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1246\u001b[0;31m 'value': value})['value']\n\u001b[0m\u001b[1;32m 1247\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1248\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfind_elements\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mby\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mBy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mID\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mWebElement\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/sociofillmore/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py\u001b[0m in \u001b[0;36mexecute\u001b[0;34m(self, driver_command, params)\u001b[0m\n\u001b[1;32m 422\u001b[0m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommand_executor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdriver_command\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 423\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 424\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_response\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 425\u001b[0m response['value'] = self._unwrap_value(\n\u001b[1;32m 426\u001b[0m response.get('value', None))\n", + "\u001b[0;32m~/anaconda3/envs/sociofillmore/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py\u001b[0m in \u001b[0;36mcheck_response\u001b[0;34m(self, response)\u001b[0m\n\u001b[1;32m 245\u001b[0m \u001b[0malert_text\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'alert'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'text'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 246\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mexception_class\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstacktrace\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malert_text\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[call-arg] # mypy is not smart enough here\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 247\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mexception_class\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstacktrace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 248\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_value_or_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mMapping\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0m_KT\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_VT\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0m_KT\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdefault\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0m_VT\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0m_VT\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNoSuchElementException\u001b[0m: Message: Unable to locate element: //div[@class='BlockHeader DefaultBlock']\nStacktrace:\nWebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:181:5\nNoSuchElementError@chrome://remote/content/shared/webdriver/Errors.jsm:393:5\nelement.find/
\n", + "
il sondaggio che segue fa parte di una ricerca relativa al\n" + ] + } + ], + "source": [ + "with open(\"resources/questionnaire/intro_msg_it_1q.html\", encoding=\"utf-8\") as f:\n", + " html_intro = f.read()\n", + " print(html_intro[:100])\n", + "\n", + "intro_text_place = driver.find_element(by=\"xpath\", value=\"//div[@class='QuestionText']\")\n", + "# assert \"Click to write\" in intro_text_place.text\n", + "intro_text_place.click()\n", + "\n", + "driver.find_element(by=\"xpath\", value=\"//a[@class='Button Blue CodeButton Disabled']\").click()\n", + "# driver.execute_script(f\"document.getElementById(\\\"InlineEditorElement\\\").value = \\\"{html_intro}\\\"\")\n", + "pc.copy(html_intro) # --> won't work in notebook\n", + "text_editor = driver.find_element(by=\"id\", value=\"InlineEditorElement\")\n", + "text_editor.send_keys(Keys.CONTROL, \"a\")\n", + "text_editor.send_keys(Keys.BACKSPACE)\n", + "text_editor.send_keys(Keys.CONTROL, \"v\")\n", + "# text_editor.send_keys(html_intro) # slower but works in notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* delete old files" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "driver.get(\"https://rug.eu.qualtrics.com/Q/MyProjectsSection\")\n", + "_ = ui.WebDriverWait(driver, 30).until(lambda driver: driver.find_elements(by=\"xpath\", value=\"//span\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "to_delete = [span for span in driver.find_elements(by=\"xpath\", value=\"//span[starts-with(@class, 'ResourceRow_projectNameLabel')]\") if span.text.startswith(\"femicides_questionnaire_version\")]\n", + "to_delete.extend([span for span in driver.find_elements(by=\"xpath\", value=\"//span[starts-with(@class, 'ResourceRow_projectNameLabel')]\") if span.text.strip().endswith(\"_draft\")])\n", + "# to_delete.extend([span for span in driver.find_elements(by=\"xpath\", value=\"//span[starts-with(@class, 'ResourceRow_projectNameLabel')]\") if span.text.strip() == \"questionnaire_final\"])\n", + "# to_delete.extend([span for span in driver.find_elements(by=\"xpath\", value=\"//span[starts-with(@class, 'ResourceRow_projectNameLabel')]\") if span.text.strip() == \"Untitled project\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "for span in to_delete:\n", + " tr = span.find_element(by=\"xpath\", value=\"./../../..\")\n", + " options_btn = tr.find_element(by=\"xpath\", value=\".//button[starts-with(@id, 'options-')]\")\n", + " options_btn.click()\n", + " del_button = driver.find_element(by=\"xpath\", value=\"//div[starts-with(@class, 'ActionsMenu_actions-menu-item') and text()='Delete project']\")\n", + " del_button.click()\n", + " driver.find_element(by=\"xpath\", value=\"//label[@data-testid='project-action-delete-check-0']\").click()\n", + " driver.find_element(by=\"xpath\", value=\"//button[@data-testid='project-action-delete-submit']\").click()\n", + "\n", + " ui.WebDriverWait(driver, 60).until_not(lambda driver: driver.find_elements(by=\"id\", value=\"project-action-delete\"))" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "200f5294b1c9404b01f49351b46f312ccd3edc553908cd778ad96075cc67dce1" + }, + "kernelspec": { + "display_name": "Python 3.7.9 64-bit ('sociofillmore': conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.9" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/sociofillmore/scoring/extract_frames.py b/sociofillmore/scoring/extract_frames.py new file mode 100644 index 0000000000000000000000000000000000000000..0bab12e46a9f545bd7f02b1da78f07ef0a6fade9 --- /dev/null +++ b/sociofillmore/scoring/extract_frames.py @@ -0,0 +1,49 @@ +from collections import defaultdict +import json + +import pandas as pd + +from sociofillmore.common.analyze_text import analyze_single_document, load_deep_frames_cache + + +def main(): + frames_of_interest = ["Killing", "Death", "Dead_or_alive", "Event", "Catastrophe", "Undergoing"] + + texts_df = pd.read_csv( + "output/femicides/split_data/rai/split_main.texts.meta.csv") + deep_frames_cache = load_deep_frames_cache() + + fcp_to_sentences = defaultdict(list) + + for i, (_, row) in enumerate(texts_df.iterrows()): + if i % 100 == 0: + print(i) + + doc_analysis = analyze_single_document(row["text_id"], row["event_id"], "lome_0shot", + "femicides/rai_main", texts_df, deep_frames_cache) + for i, sent_analysis in enumerate(doc_analysis): + sentence = " ".join(sent_analysis["sentence"]) + + for fn_st in sent_analysis["fn_structures"]: + frame = fn_st["frame"] + tgt_idx = str(fn_st["target"]["tokens_idx"][0]) + if frame in frames_of_interest: + construction = sent_analysis["syntax"][tgt_idx][0]["syn_construction"] + fcp_to_sentences[f"{frame}++{construction}"].append({ + "event_id": row["event_id"], + "frame": frame, + "construction": construction, + "target": fn_st["target"]["tokens_str"], + "text_id": row["text_id"], + "sentence_idx": i, + "sentence_str": sentence, + "selected_frame": frame, + "selected_cx": construction + }) + + with open("output/scoring/extracted_frames.json", "w") as f: + json.dump(fcp_to_sentences, f, indent=4, sort_keys=True) + + +if __name__ == "__main__": + main() diff --git a/sociofillmore/webapp/__init__.py b/sociofillmore/webapp/__init__.py new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sociofillmore/webapp/__init__.pyc b/sociofillmore/webapp/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e0d3f1206f6db0592f29e0449ae4582b5826450e Binary files /dev/null and b/sociofillmore/webapp/__init__.pyc differ diff --git a/sociofillmore/webapp/__pycache__/__init__.cpython-311.pyc b/sociofillmore/webapp/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8c3b9912751a8f0207bba12ba44dd67888d9e6e Binary files /dev/null and b/sociofillmore/webapp/__pycache__/__init__.cpython-311.pyc differ diff --git a/sociofillmore/webapp/__pycache__/__init__.cpython-37.pyc b/sociofillmore/webapp/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33169c2cc87424168cb676a15567400b67539304 Binary files /dev/null and b/sociofillmore/webapp/__pycache__/__init__.cpython-37.pyc differ diff --git a/sociofillmore/webapp/__pycache__/__init__.cpython-39.pyc b/sociofillmore/webapp/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..acaf5e9cda1d7d1934e61d5e068bd2ba7ad8e45f Binary files /dev/null and b/sociofillmore/webapp/__pycache__/__init__.cpython-39.pyc differ diff --git a/sociofillmore/webapp/__pycache__/app.cpython-311.pyc b/sociofillmore/webapp/__pycache__/app.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..11b10a76407095379fb4ecd6ff24a727e9ccb3d4 Binary files /dev/null and b/sociofillmore/webapp/__pycache__/app.cpython-311.pyc differ diff --git a/sociofillmore/webapp/__pycache__/app.cpython-37.pyc b/sociofillmore/webapp/__pycache__/app.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58a1c485137ea436dec69d3effa71f7e1bc2a553 Binary files /dev/null and b/sociofillmore/webapp/__pycache__/app.cpython-37.pyc differ diff --git a/sociofillmore/webapp/__pycache__/app.cpython-39.pyc b/sociofillmore/webapp/__pycache__/app.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea08f276370998b195335c09383f8edabac39d35 Binary files /dev/null and b/sociofillmore/webapp/__pycache__/app.cpython-39.pyc differ diff --git a/sociofillmore/webapp/app.py b/sociofillmore/webapp/app.py new file mode 100755 index 0000000000000000000000000000000000000000..586ba05b8aeba2bea0a51b1ed3058c13dff6fdef --- /dev/null +++ b/sociofillmore/webapp/app.py @@ -0,0 +1,1533 @@ +import dataclasses +import io +import json +import os +import sys +import glob +import random +import re +import tarfile +import datetime +from collections import defaultdict +from typing import Dict, List, Optional +import functools +import requests +import tempfile + +import lxml.etree as ET + +import pandas as pd +import numpy as np +import gensim +import spacy + +import nltk +from nltk.corpus import framenet as fn +from nltk.corpus.reader.framenet import FramenetError + +from flask import Flask, request, render_template, jsonify, redirect, abort, session, url_for + +from sociofillmore.common.analyze_text import ( + FrameStructure, + get_syntax_info, + is_at_root, + process_prediction_file, + POSSIBLE_CONSTRUCTIONS, + SYNTAX_ANALYSIS_CACHE_FILES, + enrich_texts_df, + read_frames_of_interest, + load_deep_frames_cache, + get_text_meta, + analyze_single_document, + get_tarball_blocks, + analyze_external_file +) +from sociofillmore.crashes.utils import is_a_dutch_text + + +# download nltk packages if needed +if sys.argv[2] != "local": + nltk.download("framenet_v17", download_dir="/nltk_data") + nltk.download("punkt", download_dir="/nltk_data") + +# security (very basic!) +PROTECTED_DATASETS = [] # "femicides/rai" +if os.path.exists("secrets.json"): + with open("secrets.json", encoding="utf-8") as f: + secrets = json.load(f) + AUTH_KEY = secrets["auth_key"] + PASSWORD = secrets["password"] + SECRET_KEY = bytes(secrets["flask_secret_key"], "utf-8") +else: + AUTH_KEY = os.environ.get("AUTH_KEY") + PASSWORD = os.environ.get("PASSWORD") + SECRET_KEY = os.environ.get("FLASK_SECRET_KEY") + +# global app object +app = Flask(__name__) +app.secret_key = SECRET_KEY +# app.config["SESSION_PERMANENT"] = False +# app.config["SESSION_TYPE"] = "filesystem" +# Session(app) + +# gensim & spacy models +def load_gensim_model(limit): + print("Loading GENSIM model... [this can take a few minutes]") + return gensim.models.word2vec.KeyedVectors.load_word2vec_format("data/embeddings/concat_glove_frames.w2v.txt", limit=limit) + +gensim_m = load_gensim_model(100_000) + +print("Loading SpaCy models...") +spacy_model_ud = spacy.load("xx_sent_ud_sm") +spacy_model_langs = { + "it": spacy.load("it_core_news_md"), + "nl": spacy.load("nl_core_news_md"), + "en": spacy.load("en_core_web_md") +} + + + +# frequency information cache +frame_freq_cache = {} + +with open("resources/fn_frames_to_roles.json", encoding="utf-8") as f: + fn_frames_to_roles = json.load(f) + +# data processing constants +VICTIM_AGE_GROUPS = ["0-12", "12-18", "18-30", "30-50", "50-70", "70-120"] +ALL_FOREIGN_NATIONALITIES = "estero (tutto)" + + +deep_frames_cache = load_deep_frames_cache() + +def read_rai_provider_attrs(): + df = pd.read_excel("resources/RAI_sources_mr.xlsx") + + return { + "politics:man:left": df[df["politics_man"] == "L"]["source"].unique().tolist(), + "politics:tc:left": df[df["politics_tc_cat"] == "L"]["source"] + .unique() + .tolist(), + "politics:agg:left": df[df["politics_agg"] == "L"]["source"].unique().tolist(), + "politics:man:right": df[df["politics_man"] == "R"]["source"].unique().tolist(), + "politics:tc:right": df[df["politics_tc_cat"] == "R"]["source"] + .unique() + .tolist(), + "politics:agg:right": df[df["politics_agg"] == "R"]["source"].unique().tolist(), + "politics:man:neutral": df[df["politics_man"] == "N"]["source"] + .unique() + .tolist(), + "politics:tc:neutral": df[df["politics_tc_cat"] == "N"]["source"] + .unique() + .tolist(), + "politics:agg:neutral": df[df["politics_agg"] == "N"]["source"] + .unique() + .tolist(), + "type:agency": df[df["type"] == "A"]["source"].unique().tolist(), + "type:outlet": df[df["type"] == "OUTLET"]["source"].unique().tolist(), + "area:national": df[df["area"] == "nat"]["source"].unique().tolist(), + "area:regional": df[df["area"] == "loc"]["source"].unique().tolist(), + } + +def read_migration_provider_attrs(): + df = pd.read_csv("data/migration/provider_pol_rel_ratings.csv") + + return { + "politics:sc:left": df[df["political_stance"] == -1]["provider"].unique().tolist(), + "politics:sc:right": df[df["political_stance"] == 1]["provider"].unique().tolist(), + "politics:sc:neutral": df[df["political_stance"] == 0]["provider"].unique().tolist(), + "religion:sc:catholic": df[df["religious"] == True]["provider"].unique().tolist(), + "religion:sc:non_catholic": df[df["religious"] == False]["provider"].unique().tolist() + } + + +def read_crashes_provider_attrs(): + df = pd.read_csv("resources/crashes_sources.csv") + + # remove empty rows + df = df.dropna(subset=["ProviderNameCorr"]) + + # map to correct names + name_map = { + row["ProviderName"]: row["ProviderNameCorr"].strip('"') + for _, row in df.iterrows() + } + + # merge duplicates + df = df.groupby(list(df.columns[2:11]))["ProviderFreq"].apply(sum).reset_index() + + # "explode" multiple province fields + df = df.assign(**{"Province": df["Province"].str.split("|")}).explode("Province") + + attr_map = { + f"{col}:{val}": df[df[col] == val]["ProviderNameCorr"].unique().tolist() + for col in df.columns[1:9] + for val in set(df[col].values) + if val != "-" + } + + return attr_map, name_map + +PROVIDER_ATTRS = { + "femicides/rai": read_rai_provider_attrs(), + "femicides/olv": {}, + "crashes/thecrashes": read_crashes_provider_attrs()[0], + "migration/pavia": read_migration_provider_attrs() +} + + +# current active dataset +def get_dataset_variables(dataset_name): + if dataset_name == "femicides/rai": + spacy_model = "it_core_news_md" + elif dataset_name == "femicides/olv": + spacy_model = "it_core_news_md" + elif dataset_name == "crashes/thecrashes": + spacy_model = "nl_core_news_md" + elif dataset_name == "migration/pavia": + spacy_model = "it_core_news_md" + else: + raise ValueError("Unsupported dataset!") + + return { + "dataset": dataset_name, + "frames": read_frames_of_interest(dataset_name), + "spacy_model": spacy_model, + } + + +# ==== DATA PROCESSING FUNCTIONS ==== +# event data +def load_event_data(dataset): + if dataset == "femicides/rai": + event_data_file = "output/femicides/split_data/rai/split_ALL.events.csv" + texts_data_file = "output/femicides/split_data/rai/split_ALL.texts.meta.csv" + elif dataset == "femicides/olv": + event_data_file = "output/femicides/split_data/olv/split_dev10.events.csv" + texts_data_file = "output/femicides/split_data/olv/split_dev10.texts.csv" + elif dataset == "crashes/thecrashes": + event_data_file = "output/crashes/split_data/split_dev10.events.csv" + texts_data_file = "output/crashes/split_data/split_dev10.texts.meta.csv" + elif dataset == "migration/pavia": + event_data_file = "output/migration/split_data/split_dev10.events.csv" + texts_data_file = "output/migration/split_data/split_dev10.texts.meta.csv" + else: + raise ValueError("Unsupported dataset") + events = pd.read_csv(event_data_file, dtype={"event:id": int}, index_col=0) + texts = enrich_texts_df(pd.read_csv(texts_data_file, index_col=0), events) + return {"events_df": events, "texts_df": texts} + + +DATASETS = { + "femicides/rai": load_event_data("femicides/rai"), + "femicides/olv": load_event_data("femicides/olv"), + "crashes/thecrashes": load_event_data("crashes/thecrashes"), + "migration/pavia": load_event_data("migration/pavia"), +} + +SKIP_FUNCTIONS = { + "femicides/rai": None, + "femicides/olv": None, + "crashes/thecrashes": lambda doc: not is_a_dutch_text(doc), + "migration/pavia": None +} + + + +def read_frames_to_event_roles(dataset): + if dataset == "femicides/rai": + ftr_df = pd.read_csv("resources/femicides_frame_to_roles.csv") + if dataset == "femicides/olv": + ftr_df = pd.read_csv("resources/femicides_frame_to_roles.csv") + elif dataset == "crashes/thecrashes": + ftr_df = pd.read_csv("resources/crashes_frame_to_roles.csv") + else: + raise ValueError("Unsupported dataset!") + + frames_to_event_roles: Dict[str, Dict[str, List[str]]] = {} + role_types = [col for col in ftr_df.columns if col.startswith("role:")] + for _, row in ftr_df.iterrows(): + frame_roles = defaultdict(list) + for rt in role_types: + role_key = rt.split(":")[1] + if row[rt] == "-": + frame_roles[role_key] = [] + else: + for role in row[rt].split("|"): + frame_roles[role_key].append(role) + frames_to_event_roles[row["frame"]] = frame_roles + return frames_to_event_roles + + +def get_role_expressions( + struct: FrameStructure, + roles_dep_map: Dict[int, Dict[str, str]], + frame_to_role_map: Optional[Dict[str, Dict[str, List[str]]]], + depth_filter: int, + output_depth_only: bool = False, +) -> str: + + role_exps = [] + role_deps = roles_dep_map[struct.target.tokens_idx[0]] + + def make_exp(_role, _dep, _depth): + if output_depth_only: + return _role + "::" + str(_depth) + else: + if _depth > depth_filter: + _dep = None + return _role + "::" + (_dep or "_UNK_DEP") + + # no event role mapping: just use roles as-is + if frame_to_role_map is None: + for role, _ in struct.roles: + dep, depth = role_deps.get(role, (None, -1)) + role_exps.append(make_exp(role, dep, depth)) + elif struct.frame in frame_to_role_map: + for role_type, rt_roles in frame_to_role_map[struct.frame].items(): + for role in rt_roles: + if role in [r[0] for r in struct.roles]: + dep, depth = role_deps.get(role, (None, -1)) + role_exps.append(make_exp(role, dep, depth)) + # else: + # exp = role_type + "::_ABSENT" + # role_exps.append(exp) + return role_exps + + +def get_analyze_frame_samples( + construction, + frame, + dependency, + role, + lome_model, + max_samples_per_doc, + samples_to_find, + selected_documents, + dataset_vars, + texts_df, +): + dataset = dataset_vars["dataset"] + + print("# selected documents", len(selected_documents)) + + samples_found = {} + + tar_blocks = get_tarball_blocks(dataset, lome_model) + + syntax_cache = SYNTAX_ANALYSIS_CACHE_FILES[dataset] + + prediction_files = [] + print("# tar blocks", len(glob.glob(tar_blocks + "/*.tar"))) + for block in glob.glob(tar_blocks + "/*.tar"): + with tarfile.open(block, "r") as tar_f: + block_prediction_files = [ + m.name for m in tar_f.getmembers() if m.name.endswith(".comm.json") + ] + print("\t# prediction files", len(prediction_files)) + matching_prediction_files = [ + pf + for pf in block_prediction_files + if re.search(r"/(\d+)/lome_(\d+).comm.json", pf).group(2) + in selected_documents + ] + print("\t# matching prediction files", len(matching_prediction_files)) + print("\t") + prediction_files.extend(matching_prediction_files) + print(len(prediction_files)) + + while prediction_files and len(samples_found) < samples_to_find: + + print( + f"\t\tsamples_found: {len(samples_found)}//prediction_files left: {len(prediction_files)}" + ) + + # choose a random prediction file + pf = random.choice(prediction_files) + prediction_files.remove(pf) + + print(pf) + + # filter for selected frame + doc_id = os.path.basename(pf).split(".")[0].split("_")[1] + doc_key = doc_id[:2] + tarball = get_tarball_blocks(dataset, lome_model) + f"/block_{doc_key}.tar" + with tarfile.open(tarball, "r") as tar_f: + pf_obj = io.TextIOWrapper(tar_f.extractfile(pf)) + ( + sents, + pred_structures, + syntax_analyses, + role_analyses, + ) = process_prediction_file( + filename=pf, + file_obj=pf_obj, + dataset_name=dataset_vars["dataset"], + syntax_cache=syntax_cache, + deep_frames_cache=deep_frames_cache, + ) + + if syntax_analyses is None: + continue + + ( + frame_sents, + frame_pred_structures, + frame_syntax_analyses, + frame_role_mappings, + ) = ([], [], [], []) + for s, pred, syn, rol in zip( + sents, pred_structures, syntax_analyses, role_analyses + ): + for fs in pred.values(): + fs_syn = get_syntax_info(fs, syn) + fs_rol = rol[fs.target.tokens_idx[0]] + + frame_matches = frame == "*" or fs.frame == frame + construction_matches = ( + construction == "*" + or fs_syn["syn_construction"] == construction + ) + role_matches = role == "*" or role in [r for r, _ in fs.roles] + if role != "*": + dependency_matches = dependency == "*" or ( + role, + dependency, + ) in [(r, d) for r, (d, _) in fs_rol.items()] + else: + dependency_matches = dependency == "*" or dependency in [ + d for d, _ in fs_rol.values() + ] + if ( + frame_matches + and construction_matches + and role_matches + and dependency_matches + ): + frame_sents.append(s) + frame_pred_structures.append(pred) + frame_syntax_analyses.append(syn) + frame_role_mappings.append(rol) + + # select random frames + if not frame_sents: + continue + for _ in range(max_samples_per_doc): + selected_idx = random.randrange(len(frame_sents)) + if not (pf, selected_idx) in samples_found: + sample = ( + frame_sents[selected_idx], + frame_pred_structures[selected_idx], + frame_syntax_analyses[selected_idx], + frame_role_mappings[selected_idx], + ) + if sample not in samples_found.values(): + samples_found[(pf, selected_idx)] = sample + + # format output + output = [] + for (pf, idx), (sent, structs, syntax, roles) in samples_found.items(): + # extract eventID and docID from file string + re_m = re.search(r"/(\d+)/lome_(\d+).comm.json", pf) + event_id = re_m.group(1) + doc_id = re_m.group(2) + + output.append( + { + "sentence": sent, + "fn_structures": [ + dataclasses.asdict(fs) for fs in structs.values() + ], + "syntax": syntax, + "roles": roles, + "meta": { + "event_id": event_id, + "doc_id": doc_id, + "text_meta": get_text_meta(doc_id, texts_df), + }, + } + ) + return output + + +# ==== WEB SERVER UTILITY FUNCTIONS ==== +def security_check(): + return True + # if request.cookies.get("auth_key", None) == AUTH_KEY: + # return True + # if request.args.get("auth_key", None) == AUTH_KEY: + # return True + # return False + + +# ==== APP ROUTE FUNCTIONS ==== +@app.before_request +def init_session(): + if session.get("initialized"): + return + + print("Initializing...") + _switch_dataset("femicides/olv", True) + session["initialized"] = True + return + + +@app.route("/") +def index(): + return redirect(url_for("demo")) + + +@app.route("/explore") +def start(): + return render_template("index.html") + + +@app.route("/demo") +def demo(): + return render_template("demo.html") + + +@app.route("/check_password", methods=["POST"]) +def check_password(): + entered_password = request.form["password"] + if entered_password == PASSWORD: + resp = jsonify({"success": True}) + resp.set_cookie("auth_key", AUTH_KEY) + return resp + else: + return jsonify({"success": False}) + + +@app.route("/switch_dataset") +def switch_dataset(): + new_dataset = request.args.get("dataset") + _switch_dataset(new_dataset) + return jsonify({"result": "changed_dataset"}) + + +def _switch_dataset(new_dataset, first_time=False): + print(first_time) + if not first_time: + if new_dataset == session["dataset_vars"]["dataset"]: + return jsonify({"result": "no_change"}) + + session["dataset_vars"] = get_dataset_variables(new_dataset) + if new_dataset == "femicides/rai": + session["provider_name_map"] = {} + elif new_dataset == "crashes/thecrashes": + _, name_map = read_crashes_provider_attrs() + session["provider_name_map"] = name_map + elif new_dataset == "migration/pavia": + session["provider_name_map"] = {} + else: + session["provider_name_map"] = {} + # session["frames_to_roles"] = read_frames_to_event_roles(new_dataset) + + +@app.route("/analyze") +def analyze(): + + event_id = request.args.get("event") + doc_id = request.args.get("document") + lome_model = request.args.get("model") + dataset = session["dataset_vars"]["dataset"] + + if dataset in PROTECTED_DATASETS: + if not security_check(): + abort(403) + + print(dataset) + output = analyze_single_document( + doc_id, + event_id, + lome_model, + dataset, + DATASETS[session["dataset_vars"]["dataset"]]["texts_df"], + deep_frames_cache=deep_frames_cache + ) + return jsonify(output) + + +@app.route("/sample_frame") +def sample_frame(): + + dataset = session["dataset_vars"]["dataset"] + if dataset in PROTECTED_DATASETS and not security_check(): + abort(403) + + frame = request.args.get("frame") + construction = request.args.get("construction") + role = request.args.get("role") + dependency = request.args.get("dependency") + + texts_df = DATASETS[session["dataset_vars"]["dataset"]]["texts_df"] + events_df = DATASETS[session["dataset_vars"]["dataset"]]["events_df"] + filtered_docs = filter_documents( + session["dataset_vars"], + events_df, + texts_df, + PROVIDER_ATTRS[session["dataset_vars"]["dataset"]], + session["provider_name_map"], + ) + selected_documents = {doc["doc_id"] for doc in filtered_docs} + lome_model = request.args.get("model") + samples_to_find = int(request.args.get("nsamples", 5)) + max_samples_per_doc = int(request.args.get("nperdoc", 10)) + + output = get_analyze_frame_samples( + construction, + frame, + dependency, + role, + lome_model, + max_samples_per_doc, + samples_to_find, + selected_documents, + session["dataset_vars"], + DATASETS[session["dataset_vars"]["dataset"]]["texts_df"], + ) + return jsonify(output) + + +@app.route("/lus_to_frames") +def get_frames_from_lus(): + lus = request.args.get("lus", "").split("+") + frames = set() + for lu in lus: + frames.update({lu_info.frame.name for lu_info in fn.lus(r"^" + lu + r"\.")}) + print(frames) + return jsonify({"frames": sorted(frames)}) + + +def format_frame_description(frame_def_xml): + frame_def_fmt = [frame_def_xml.text] if frame_def_xml.text else [] + for elem in frame_def_xml: + if elem.tag == "ex": + break + elif elem.tag == "fen": + frame_def_fmt.append("" + elem.text + "") + elif elem.text: + frame_def_fmt.append(elem.text) + if elem.tail: + frame_def_fmt.append(elem.tail) + return frame_def_fmt + + +def get_alt_perspectives(frame_info, frame_name): + alt_perspectives = [] + result_frames = [fr.subFrameName for fr in frame_info.frameRelations if fr.type.name == "Causative_of" and fr.superFrameName == frame_name] + if result_frames: + alt_perspectives.append({"frame": result_frames[0], "type": "result"}) + + cause_frames = [fr.superFrameName for fr in frame_info.frameRelations if fr.type.name == "Causative_of" and fr.subFrameName == frame_name] + if cause_frames: + alt_perspectives.append({"frame": cause_frames[0], "type": "causer"}) + + # user_frames = [fr.subFrameName for fr in frame_info.frameRelations if fr.type.name == "Using" and fr.superFrameName == frame_name] + # if user_frames: + # alt_perspectives.append({"frame": user_frames[0], "type": "user"}) + + neutral_frames = [fr.superFrameName for fr in frame_info.frameRelations if fr.type.name == "Perspective_on" and fr.subFrameName == frame_name] + if neutral_frames: + flipped_frames = [fr.subFrameName for fr in fn.frame(neutral_frames[0]).frameRelations if fr.type.name == "Perspective_on" and fr.superFrameName == neutral_frames[0] and fr.subFrameName != frame_name] + if flipped_frames: + alt_perspectives.extend([{"frame": ff, "type": "flipped"} for ff in flipped_frames]) + + return alt_perspectives + + +@app.route("/frame_info") +def get_frame_info(): + frame_name = request.args.get("frame").strip() + try: + print(repr(frame_name)) + print(type(frame_name)) + try: + frame_info = fn.frame(frame_name) + except KeyError: + # sometimes NLTK (randomly??) throws a key error, in which case, just try again + frame_info = fn.frame(frame_name) + try: + # try extracting just the first sentence + definition_first_sent = nltk.sent_tokenize(frame_info.definitionMarkup)[0] + "" + frame_def_xml = ET.fromstring(definition_first_sent) + except ET.XMLSyntaxError: + # otherwise, use the full definition + frame_def_xml = ET.fromstring(frame_info.definitionMarkup) + + frame_def_fmt = format_frame_description(frame_def_xml) + + exemplars = [ + { + "text": exemplar.text, + "target_lu": lu_name, + "target_idx": list(exemplar["Target"][0]), + "core_fes": { + role: exemplar.text[start_idx:end_idx] + for role, start_idx, end_idx in exemplar.FE[0] + if role in [fe for fe, fe_info in frame_info.FE.items() if fe_info.coreType == "Core"] + } + } + for lu_name, lu_info in frame_info["lexUnit"].items() + for exemplar in lu_info.exemplars + ] + + # try to find a "typical" exemplar --- typical -> as short as possible, as many FEs as possible + exa_typicality_scores = [(exa, len(exa["text"]) - 25 * len(exa["core_fes"])) for exa in exemplars] + if exa_typicality_scores: + typical_exemplar = min(exa_typicality_scores, key=lambda t: t[1])[0] + else: + typical_exemplar = None + + alt_perspectives = get_alt_perspectives(frame_info, frame_name) + + return jsonify({ + "result": "OK", + "frameDefinition": frame_def_fmt, + "exemplars": exemplars, + "altPerspectives": alt_perspectives, + "typicalExemplar": { + "text": typical_exemplar["text"], + "coreFrameElements": typical_exemplar["core_fes"] + } if typical_exemplar else None + }) + + except FramenetError: + return jsonify({"result": "FAIL", "info": "could not find frame"}) + + + +@app.route("/frames") +def get_frames(): + return jsonify(session["dataset_vars"]["frames"]) + + +@app.route("/constructions") +def get_constructions(): + return jsonify(POSSIBLE_CONSTRUCTIONS) + + +@app.route("/event_filters") +def get_event_filters(): + dataset = session["dataset_vars"]["dataset"] + if dataset in PROTECTED_DATASETS and not security_check(): + abort(403) + + if session["dataset_vars"]["dataset"] == "femicides/rai": + events_df = DATASETS[session["dataset_vars"]["dataset"]]["events_df"] + event_categories = events_df["event:category"].unique().tolist() + regions = sorted(events_df["event:region"].unique().tolist()) + sem_location = sorted(events_df["event:semantic_location"].unique().tolist()) + victim_age = VICTIM_AGE_GROUPS + victim_nationality = [ + "Italia", + ALL_FOREIGN_NATIONALITIES, + "non rilevato", + ] + sorted( + [ + i + for i in events_df["victim:nationality"].dropna().unique().tolist() + if i not in ["Italia", "non rilevato"] + ] + ) + attacker_nationality = [ + "Italia", + ALL_FOREIGN_NATIONALITIES, + "non rilevato", + ] + sorted( + [ + i + for i in events_df["attacker:nationality"].dropna().unique().tolist() + if i not in ["Italia", "non rilevato"] + ] + ) + + victim_occupation = sorted( + [ + i + for i in events_df["victim:occupation"].dropna().unique().tolist() + ] + ) + + attacker_occupation = sorted( + [ + i + for i in events_df["attacker:occupation"].dropna().unique().tolist() + ] + ) + + + return jsonify( + { + "event_categories": event_categories, + "regions": regions, + "sem_location": sem_location, + "victim_age": victim_age, + "victim_nationality": victim_nationality, + "attacker_nationality": attacker_nationality, + "victim_occupation": victim_occupation, + "attacker_occupation": attacker_occupation + } + ) + + elif session["dataset_vars"]["dataset"] == "femicides/olv": + events_df = DATASETS[session["dataset_vars"]["dataset"]]["events_df"] + regions = sorted([str(r) for r in events_df["event:region"].unique().tolist()]) + victim_age = VICTIM_AGE_GROUPS + + return jsonify( + { + "regions": regions, + "victim_age": victim_age, + } + ) + + + elif session["dataset_vars"]["dataset"] == "crashes/thecrashes": + events_df = DATASETS[session["dataset_vars"]["dataset"]]["events_df"] + filters = { + "outcomes": ["no one", "one or more people"], + "imbalanced": ["yes", "no"], + } + return jsonify(filters) + + else: + return jsonify({}) + + +@app.route("/dep_labels") +def get_dep_labels(): + dep_labels = set() + with open("resources/dep_labels.txt", encoding="utf-8") as f: + for line in f: + dep_labels.add(line.strip()) + return jsonify(sorted(dep_labels)) + + +@app.route("/role_labels") +def get_role_labels(): + frame = request.args.get("frame") + roles = fn_frames_to_roles.get(frame) + if roles is not None: + return jsonify(roles) + else: + return jsonify([]) + + +@app.route("/doc_filters") +def get_doc_filters(): + + texts_df = DATASETS[session["dataset_vars"]["dataset"]]["texts_df"] + + provider_attrs = PROVIDER_ATTRS[session["dataset_vars"]["dataset"]] + + if session["dataset_vars"]["dataset"] == "crashes/thecrashes": + + name_map = session["provider_name_map"] + providers = sorted( + texts_df["provider"] + .apply(lambda prov: name_map.get(prov)) + .dropna() + .unique() + .tolist() + ) + + provider_provinces = sorted( + key.split(":")[1] + for key in provider_attrs + if key.startswith("Province:") + ) + provider_content_types = sorted( + key.split(":")[1] + for key in provider_attrs + if key.startswith("ContentType:") + ) + + provider_medium_types = sorted( + key.split(":")[1] + for key in provider_attrs + if key.startswith("MediumType:") + ) + + provider_owners = sorted( + key.split(":")[1] + for key in provider_attrs + if key.startswith("MediaOwner:") + ) + + else: + providers = sorted(texts_df["provider"].dropna().unique().tolist()) + provider_provinces = [] + provider_content_types = [] + provider_medium_types = [] + provider_owners = [] + + return jsonify( + { + "providers": providers, + "provider_provinces": provider_provinces, + "provider_content_types": provider_content_types, + "provider_medium_types": provider_medium_types, + "provider_owners": provider_owners, + } + ) + + +def apply_doc_filters( + doc_filters: List[str], + provider_attrs: dict, + prov_name_map: dict, + texts_df: pd.DataFrame, +): + if not doc_filters: + all_doc_ids = set(int(eid) for eid in texts_df["text_id"].tolist()) + return all_doc_ids + + + filters_attr_values = defaultdict(list) + for doc_filter in doc_filters: + _, attribute, value = doc_filter.split("::") + filters_attr_values[attribute].append(value) + + selected_docs = texts_df + for attribute, values in filters_attr_values.items(): + attr_conditions = [] + + for value in values: + if attribute == "days_after": + + # if a filter for `days_after` is set, first remove any rows with null values + selected_docs = selected_docs.dropna(subset=["days_after_event"]) + + if value == "day": + condition = selected_docs["days_after_event"] < 1 + elif value == "week": + condition = selected_docs["days_after_event"].isin(range(1, 7)) + elif value == "month": + condition = selected_docs["days_after_event"].isin(range(7, 30)) + elif value == "year": + condition = selected_docs["days_after_event"].isin(range(30, 365)) + else: + condition = selected_docs["days_after_event"] > 365 + + elif session["dataset_vars"]["dataset"] == "femicides/rai": + if any(attribute.startswith(key) for key in ["politics:", "type", "area"]): + providers = provider_attrs[attribute + ":" + value] + condition = selected_docs["provider"].isin(providers) + else: + condition = selected_docs[attribute] == value + + elif session["dataset_vars"]["dataset"] == "femicides/olv": + condition = selected_docs[attribute] == value + + elif session["dataset_vars"]["dataset"] == "crashes/thecrashes": + + if attribute == "provider": + condition = selected_docs["provider"].apply(lambda prov: prov_name_map.get(prov)) == value + + elif attribute in [ + "area", + "country", + "province", + "content_type", + "medium_type", + "owner", + ]: + # map to the correct name in the spreadsheet + attribute_altname = { + "area": "RegionalScope", + "country": "Country", + "province": "Province", + "content_type": "ContentType", + "medium_type": "MediumType", + "owner": "MediaOwner", + }[attribute] + + providers = provider_attrs[attribute_altname + ":" + value] + condition = selected_docs["provider"].apply(lambda prov: prov_name_map.get(prov)).isin(providers) + else: + condition = selected_docs[attribute] == value + + elif session["dataset_vars"]["dataset"] == "migration/pavia": + if attribute.startswith("politics") or attribute.startswith("religion"): + providers = provider_attrs[attribute + ":" + value] + condition = selected_docs["provider"].isin(providers) + else: + condition = selected_docs[attribute] == value + + attr_conditions.append(condition) + + selected_docs = selected_docs[functools.reduce(np.logical_or, attr_conditions)] + + return set(int(eid) for eid in selected_docs["text_id"].tolist()) + + +def apply_event_filters(ev_filters: List[str], events_df: pd.DataFrame): + if not ev_filters: + all_event_ids = set(int(eid) for eid in events_df["event:id"].tolist()) + return all_event_ids + + selected_events = events_df + for ev_filter in ev_filters: + print(ev_filter) + _, attribute, value = ev_filter.split("::") + print(attribute) + + if session["dataset_vars"]["dataset"] in ["femicides/rai", "femicides/olv"]: + if attribute in ["victim:age"]: + print(value) + if "-" not in value: + # age_from = int(value.split("+")[0]) + age_from = int(value) + age_to = 200 + else: + age_from = int(value.split("-")[0]) + age_to = int(value.split("-")[1]) + events_with_age = selected_events[ + selected_events[attribute] != "non rilevato" + ] + selected_events = events_with_age[ + events_with_age[attribute].astype(int).isin(range(age_from, age_to)) + ] + elif attribute in ["victim:nationality", "attacker:nationality"]: + if value == ALL_FOREIGN_NATIONALITIES: + selected_events = selected_events.dropna(subset=[attribute]) + selected_events = selected_events[ + ~selected_events[attribute].isin(["Italia", "non rilevato", "nessuno", "sconosciuto"]) + ] + else: + selected_events = selected_events[ + selected_events[attribute] == value + ] + else: + selected_events = selected_events[selected_events[attribute] == value] + + elif session["dataset_vars"]["dataset"] == "crashes/thecrashes": + + if attribute.startswith("imbalanced"): + # at least one pedestrian or cyclist was injured or died + selected_events = selected_events[ + (selected_events["outcomes:dead:cyclist"] > 0) + | (selected_events["outcomes:dead:pedestrian"] > 0) + | (selected_events["outcomes:injured:cyclist"] > 0) + | (selected_events["outcomes:injured:pedestrian"] > 0) + ] + + # no person in a vehicle was injured or died + selected_events = selected_events[ + (selected_events["outcomes:injured:vehicle"] == 0) + & (selected_events["outcomes:dead:vehicle"] == 0) + ] + + # vehicle was involved + selected_events = selected_events[ + (selected_events["vehicle_involved"] == 1) + ] + + if attribute.startswith("outcomes:"): + + outcome = attribute.split(":")[1] + person = attribute.split(":")[2] + + if outcome == "deadinjured": + if person == "cyclistpedestrian": + if value == "no one": + selected_events = selected_events[ + (selected_events["outcomes:dead:cyclist"] == 0) + & (selected_events["outcomes:dead:pedestrian"] == 0) + & (selected_events["outcomes:injured:cyclist"] == 0) + & (selected_events["outcomes:injured:pedestrian"] == 0) + ] + else: + selected_events = selected_events[ + (selected_events["outcomes:dead:cyclist"] > 0) + | (selected_events["outcomes:dead:pedestrian"] > 0) + | (selected_events["outcomes:injured:cyclist"] > 0) + | (selected_events["outcomes:injured:pedestrian"] > 0) + ] + else: + if value == "no one": + selected_events = selected_events[ + (selected_events[f"outcomes:dead:{person}"] == 0) + & (selected_events[f"outcomes:injured:{person}"] == 0) + ] + else: + selected_events = selected_events[ + (selected_events[f"outcomes:dead:{person}"] > 0) + | (selected_events[f"outcomes:injured:{person}"] > 0) + ] + + else: + if person == "cyclistpedestrian": + if value == "no one": + selected_events = selected_events[ + (selected_events[f"outcomes:{outcome}:cyclist"] == 0) + & ( + selected_events[f"outcomes:{outcome}:pedestrian"] + == 0 + ) + ] + else: + selected_events = selected_events[ + (selected_events[f"outcomes:{outcome}:cyclist"] == 0) + | ( + selected_events[f"outcomes:{outcome}:pedestrian"] + > 0 + ) + ] + else: + if value == "no one": + selected_events = selected_events[ + selected_events[attribute] == 0 + ] + else: + selected_events = selected_events[ + selected_events[attribute] > 0 + ] + + return set(int(eid) for eid in selected_events["event:id"].tolist()) + + +@app.route("/documents") +def documents(): + + events_df = DATASETS[session["dataset_vars"]["dataset"]]["events_df"] + texts_df = DATASETS[session["dataset_vars"]["dataset"]]["texts_df"] + document_list = filter_documents( + session["dataset_vars"], + events_df, + texts_df, + PROVIDER_ATTRS[session["dataset_vars"]["dataset"]], + session["provider_name_map"], + ) + return jsonify(sorted(document_list, key=lambda d: int(d["event_id"]))) + + +def filter_documents(dataset_vars, events_df, texts_df, provider_attrs, name_map): + event_filters = read_filters("event_filters") + doc_filters = read_filters("doc_filters") + selected_events = apply_event_filters(event_filters, events_df) + selected_documents = apply_doc_filters( + doc_filters, provider_attrs, name_map, texts_df + ) + + document_list = [] + + blocks = get_tarball_blocks(dataset_vars["dataset"]) + for tarball in glob.glob(blocks + "/*.tar"): + with tarfile.open(tarball, "r") as tar_f: + for doc in [f.name for f in tar_f.getmembers() if f.name.endswith(".comm.txt")]: + # extract eventID and docID from file string + re_m = re.search(r"/(\d+)/lome_(\d+).comm.txt", doc) + event_id = re_m.group(1) + doc_id = re_m.group(2) + if (int(event_id) not in selected_events) or ( + int(doc_id) not in selected_documents + ): + continue + document_list.append({"event_id": event_id, "doc_id": doc_id}) + return document_list + + +def read_filters(arg_name): + filter_str = request.args.get(arg_name) + if filter_str: + filters = filter_str.split("+") + else: + filters = [] + return filters + + +@app.route("/frame_freq") +def frame_freq(): + + texts_df = DATASETS[session["dataset_vars"]["dataset"]]["texts_df"] + + # arg: "model" + lome_model = request.args.get("model") + + # arg: "filter" + event_filters = read_filters("event_filters") + doc_filters = read_filters("doc_filters") + events_df = DATASETS[session["dataset_vars"]["dataset"]]["events_df"] + selected_events = apply_event_filters(event_filters, events_df) + selected_documents = apply_doc_filters( + doc_filters, + PROVIDER_ATTRS[session["dataset_vars"]["dataset"]], + session["provider_name_map"], + texts_df, + ) + + # arg: "headlines" (consider only headlines?) + only_headlines = request.args.get("headlines", "n") == "y" + + # arg: "frames" + frame_string = request.args.get("frames").strip() + frame_filter: List[str] = frame_string.split("+") + + # arg: "constructions" + constr_string = request.args.get("constructions").strip() + constr_filter: List[str] = constr_string.split("+") if constr_string else [] + + # arg: "group_by_cat" + group_by_cat: bool = request.args.get("group_by_cat") == "y" + + # arg: "group_by_tgt" + group_by_tgt: bool = request.args.get("group_by_tgt") == "y" + + # arg: "group_by_constr" + group_by_constr: bool = request.args.get("group_by_constr") == "y" + + # arg: "group_by_root" + group_by_root: bool = request.args.get("group_by_root") == "y" + + # arg: "group_by_role_expression" + group_by_role_expr: int = int(request.args.get("group_by_role_expr")) + + # arg: "relative" + relative: bool = request.args.get("relative") == "y" + + # arg: "plot_over_days_post" + plot_over_days_post: bool = request.args.get("plot_over_days_post") == "y" + + #arg: "plot_by_year" + plot_by_year: bool = request.args.get("plot_by_year") == "y" + assert not (plot_over_days_post and plot_by_year) + + # arg: "days_time_window" + days_time_window: int + try: + days_time_window_str = request.args.get("days_time_window") + if days_time_window_str is None: + days_time_window = 10 + else: + days_time_window = int(days_time_window_str) + except ValueError: + days_time_window = 10 + + if plot_over_days_post or plot_by_year: + relevant_frame_counts = defaultdict(lambda: defaultdict(int)) + deep_frame_counts = defaultdict(lambda: defaultdict(int)) + all_frame_counts = defaultdict(lambda: defaultdict(int)) + else: + relevant_frame_counts = defaultdict(int) + deep_frame_counts = defaultdict(int) + all_frame_counts = defaultdict(int) + + # total times each frame is found + totals_by_frame = defaultdict(int) + + print("Processing documents....") + + blocks = get_tarball_blocks(session["dataset_vars"]["dataset"], lome_model) + + # allow share syntax cache across different calls of process_prediction_file() + tmp_syntax_cache = {} + + for tarball in sorted(glob.glob(blocks + "/*.tar")): + with tarfile.open(tarball, "r") as tar_f: + for mem in sorted(tar_f.getmembers(), key=lambda mem: mem.name): + if mem is None or not mem.name.endswith(".comm.json"): + continue + + # extract eventID and docID from file string + re_m = re.search(r"/(\d+)/lome_(\d+).comm.json", mem.name) + event_id = re_m.group(1) + doc_id = re_m.group(2) + + # document / event filter + if (int(doc_id) not in selected_documents) or ( + int(event_id) not in selected_events + ): + continue + if plot_over_days_post: + texts_df = DATASETS[session["dataset_vars"]["dataset"]]["texts_df"] + texts_df_dropna = texts_df.dropna(subset=["days_after_event"]) + try: + df_filter = texts_df_dropna["text_id"] == int(doc_id) + time_bucket = int( + texts_df_dropna[df_filter].iloc[0]["days_after_event"] + ) + except IndexError: + # ignore files with null days_post values + continue + # adjust negative values + time_bucket = max(time_bucket, 0) + + # round to 10-day periods + time_bucket = (time_bucket // days_time_window) * days_time_window + else: + time_bucket = 0 + + if plot_by_year: + texts_df = DATASETS[session["dataset_vars"]["dataset"]]["texts_df"] + df_filter = texts_df["text_id"] == int(doc_id) + if "pubyear" in texts_df.columns: + time_bucket = int(texts_df[df_filter].iloc[0]["pubyear"]) + elif "pubdate" in texts_df.columns: + pubdate_str = texts_df[df_filter].iloc[0]["pubdate"] + if pd.isna(pubdate_str): + continue + pub_date = datetime.datetime.strptime(pubdate_str, "%Y-%m-%d %H:%M:%S") + time_bucket = pub_date.year + else: + raise ValueError("Cannot plot by year if no `pubyear` or `pubdate` is specified!") + # continue + + mem_obj = io.TextIOWrapper(tar_f.extractfile(mem)) + + skip_func = SKIP_FUNCTIONS[session["dataset_vars"]["dataset"]] + if skip_func is not None and skip_func(doc_id): + print(f"\tskip_func: skipping file {mem}") + continue + + # spacy_model = session["dataset_vars"]["spacy_model"] + ( + _, + pred_structures, + syntax_analyses, + role_analyses, + ) = process_prediction_file( + filename=mem.name, + dataset_name=session["dataset_vars"]["dataset"], + syntax_cache=SYNTAX_ANALYSIS_CACHE_FILES[session["dataset_vars"]["dataset"]], + tmp_cache=tmp_syntax_cache, + file_obj=mem_obj, + deep_frames_cache=deep_frames_cache + ) + + for sent_idx, (struct_dict, syntax_dict, roles) in enumerate(zip( + pred_structures, syntax_analyses, role_analyses + )): + if only_headlines and sent_idx > 1: + continue + for struct in struct_dict.values(): + + frame_key = struct.frame + deep_frame_key = struct.deep_frame + + syntax_info = get_syntax_info(struct, syntax_dict) + syntax_constr = syntax_info["syn_construction"] + syntax_cat = syntax_info["syn_category"] + syntax_at_root = is_at_root(syntax_info) + + if constr_filter and syntax_constr not in constr_filter: + continue + + totals_by_frame[struct.frame] += 1 + + if group_by_cat: + count_keys = [f"{frame_key}::{syntax_cat}"] + deep_count_keys = [f"{frame_key}::{syntax_cat}"] + + elif group_by_tgt: + tgt_str = ( + " ".join(struct.target.tokens_str) + .strip("«».,()□�?'\"") + .strip() + .lower() + ) + count_keys = [f"{frame_key}::{tgt_str}"] + deep_count_keys = [f"{frame_key}::{tgt_str}"] + + elif group_by_constr and group_by_root: + count_keys = [ + f"{frame_key}/{syntax_constr}::{'root' if syntax_at_root else 'non-root'}" + ] + deep_count_keys = [ + f"{deep_frame_key}::{syntax_constr}::{'root' if syntax_at_root else 'non-root'}" + ] + elif group_by_constr: + count_keys = [f"{frame_key}::{syntax_constr}"] + deep_count_keys = [f"{deep_frame_key}::{syntax_constr}"] + elif group_by_root: + count_keys = [ + f"{frame_key}::{'root' if syntax_at_root else 'non-root'}" + ] + deep_count_keys = [ + f"{deep_frame_key}::{'root' if syntax_at_root else 'non-root'}" + ] + + elif group_by_role_expr: + if group_by_role_expr == 1: + role_exprs = [r for r, _ in struct.roles] + elif group_by_role_expr == 2: + role_exprs = get_role_expressions( + struct, roles, None, 1, False + ) + elif group_by_role_expr == 3: + role_exprs = get_role_expressions( + struct, roles, session["frames_to_roles"], 1, False + ) + elif group_by_role_expr == 4: + role_exprs = get_role_expressions( + struct, roles, None, None, True + ) + else: + raise ValueError( + "Unknown value for param group_by_role_expr" + ) + count_keys = [] + deep_count_keys = [] + for role_expr in role_exprs: + + if group_by_role_expr == 4: + role_name, depth = role_expr.split("::") + depth = abs(int(depth)) + if depth > 3: + depth = ">3" + role_expr = f"{role_name}::{depth}" + + count_keys.append(f"{frame_key}::{role_expr}") + deep_count_keys.append(f"{deep_frame_key}::{role_expr}") + else: + count_keys = [struct.frame] + deep_count_keys = [struct.deep_frame] + + for ck, dck in zip(count_keys, deep_count_keys): + if struct.frame in frame_filter: + if plot_over_days_post or plot_by_year: + relevant_frame_counts[time_bucket][ck] += 1 + deep_frame_counts[time_bucket][dck] += 1 + else: + relevant_frame_counts[ck] += 1 + deep_frame_counts[dck] += 1 + if plot_over_days_post or plot_by_year: + all_frame_counts[time_bucket][ck] += 1 + else: + all_frame_counts[ck] += 1 + print("Computing frame counts...") + + if plot_over_days_post or plot_by_year: + data_and_names = [ + (relevant_frame_counts, "relevant_frame_counts"), + (deep_frame_counts, "deep_frame_counts"), + (all_frame_counts, "all_frame_counts"), + ] + data_out = {} + for (data, name) in data_and_names: + traces = defaultdict(lambda: {"x": [], "y": []}) + for time_bucket in sorted(data): + total_count = sum(data[time_bucket].values()) + for count_keys, count in data[time_bucket].items(): + traces[count_keys]["x"].append(time_bucket) + traces[count_keys]["y"].append( + count / total_count if relative else count + ) + data_out[name] = traces + return jsonify(data_out) + + else: + relevant_frames_sr = pd.Series(data=relevant_frame_counts).sort_values( + ascending=False + ) + deep_frames_sr = pd.Series(data=deep_frame_counts).sort_values(ascending=False) + all_frames_sr = pd.Series(data=all_frame_counts).sort_values(ascending=False) + + if relative and group_by_role_expr > 0: + print("totals_by_frame=", totals_by_frame) + print("frame_filter=", frame_filter) + denom = totals_by_frame[frame_filter[0]] + print("denom=", denom) + relevant_frames_sr /= denom + deep_frames_sr /= deep_frames_sr.sum() # TODO: what to do with this??? + all_frames_sr /= all_frames_sr.sum() + + elif relative: + relevant_frames_sr /= relevant_frames_sr.sum() + deep_frames_sr /= deep_frames_sr.sum() + all_frames_sr /= all_frames_sr.sum() + + return jsonify( + { + "relevant_frame_counts": { + "x": relevant_frames_sr.index.tolist(), + "y": relevant_frames_sr.values.tolist(), + }, + "deep_frame_counts": { + "x": deep_frames_sr.index.tolist(), + "y": deep_frames_sr.values.tolist(), + }, + "all_frame_counts": { + "x": all_frames_sr.index.tolist(), + "y": all_frames_sr.values.tolist(), + }, + } + ) + + + +# for demo app +@app.route("/similar_frames") +def similar_frames(): + + if gensim_m is None: + return jsonify({"result": "FAIL", "reason": "no GENSIM model has been loaded, please call /load_gensim and try again"}) + + words_in = [w for w in request.args.get("words_in").split("+") if "glove_" + w in gensim_m] + if not words_in: + return jsonify({"result": "FAIL", "reason": "No input words given"}) + + try: + matches = [res for res in gensim_m.most_similar(positive=["glove_" + w for w in words_in], topn=100) if res[0].startswith("fn_")] + except KeyError: + return jsonify({"result": "FAIL", "reason": "One of the input words does not exist in the GloVe vocabulary"}) + + frames = [m[0].lstrip("fn_") for m in matches] + probas = [m[1] for m in matches] + + return jsonify({ + "result": "OK", + "frames": frames, + "probabilities": probas, + }) + + +@app.route("/sociofillmore") +def sociofillmore(): + + # step 1: LOME analysis + input_text = request.args.get("text", "") + language = request.args.get("language", "en") + sentences = [s.text for s in spacy_model_ud(input_text).sents] + + + r = requests.get("http://localhost:9090/analyze", {"text": "\n".join(sentences)}) + # r = requests.get("http://lome:9090/analyze", {"text": "\n".join(sentences)}) + lome_analyses = json.loads(r.text)["analyses"] + + # intermediate step: make temporary files for saving input/output analyses + tmp_in = tempfile.NamedTemporaryFile(mode="w+", delete=False) + tmp_in.write(json.dumps(lome_analyses)) + tmp_in.close() + + tmp_out = tempfile.NamedTemporaryFile(mode="w+", delete=False) + tmp_out.close() + + # step 2: SocioFillmore + analyze_external_file(tmp_in.name, tmp_out.name, spacy_model_langs[language]) + + with open(tmp_out.name, "r") as f_out: + data_out = json.load(f_out) + + os.unlink(tmp_in.name) + os.unlink(tmp_out.name) + + return jsonify(data_out) + + +if __name__ == "__main__": + from waitress import serve + + if len(sys.argv) > 1: + host = sys.argv[1] + else: + host = "127.0.0.1" + + debug = False + if len(sys.argv) > 2: + if sys.argv[2] == "debug": + debug = True + + serve(app, host="0.0.0.0", port="5000") + # app.run(host=host, debug=False, ssl_context="adhoc") diff --git a/sociofillmore/webapp/query_frame_samples.py b/sociofillmore/webapp/query_frame_samples.py new file mode 100755 index 0000000000000000000000000000000000000000..796b8e19eff695ad3121d7540158f0563bfc8141 --- /dev/null +++ b/sociofillmore/webapp/query_frame_samples.py @@ -0,0 +1,117 @@ +import sys +import requests +import json + +import pandas as pd + + +SOCIOFILLMORE_API = "http://127.0.0.1:5000" +AUTH_KEY = "3TrJ397oh#^" + + +def get_sample(s, dataset, n_samples, frame, construction, role, dependency): + + s.get(SOCIOFILLMORE_API + "/switch_dataset", params={"dataset": dataset}) + + r_q = s.get( + SOCIOFILLMORE_API + "/sample_frame", + params={ + "auth_key": AUTH_KEY, + "frame": frame, + "construction": construction, + "role": role, + "dependency": dependency, + "model": "lome_0shot", + "n": n_samples, + }, + ) + + data = json.loads(r_q.text) + + rows_out = [] + + for sent in data: + for fns in sent["fn_structures"]: + if fns["frame"] == frame: + target_roles = [r for r in fns["roles"] if r[0] == role] + if target_roles: + target_role = target_roles[0] + else: + continue + + rows_out.append( + { + "dataset": dataset, + "sentence": " ".join(sent["sentence"]), + "frame": frame, + "target": " ".join(fns["target"]["tokens_str"]), + "role_label": role, + "role_span": " ".join(target_role[1]["tokens_str"]), + "dependency": dependency, + } + ) + + return rows_out + + +def get_labels(s, dataset, frame): + s.get(SOCIOFILLMORE_API + "/switch_dataset", params={"dataset": dataset}) + + r_q = s.get( + SOCIOFILLMORE_API + "/frame_freq", + params={ + "auth_key": AUTH_KEY, + "model": "lome_0shot", + "frames": frame, + "constructions": "", + "group_by_cat": "n", + "group_by_constr": "n", + "group_by_role_expr": 2, + "relative": "y", + "plot_over_days_post": "n", + }, + ) + + data = json.loads(r_q.text) + return {l.split("::")[2] for l in data["relevant_frame_counts"]["x"]} + + +def main(language): + + s = requests.Session() + + + if language == "it": + print("Finding IT labels...") + labels_it = get_labels(s, "femicides/rai", "Killing") + sample_rows_it = [] + for label in sorted(labels_it): + + if label == "_UNK_DEP": + continue + + print(f"Label (IT): {label}") + sample_rows_it.extend(get_sample(s, "femicides/rai", 2, "Killing", "*", "Killer", label)) + sample_rows_it.extend(get_sample(s, "femicides/rai", 2, "Killing", "*", "Victim", label)) + + df_samples_it = pd.DataFrame(sample_rows_it) + df_samples_it.to_csv("output/common/query_frame_samples/it_dep_samples.csv") + + if language == "nl": + print("Finding NL labels...") + labels_nl = get_labels(s, "crashes/thecrashes", "Cause_harm") + sample_rows_nl = [] + for label in sorted(labels_nl): + + if label == "_UNK_DEP": + continue + + print(f"Label (NL): {label}") + sample_rows_nl.extend(get_sample(s, "crashes/thecrashes", 2, "Cause_harm", "*", "Agent", label)) + sample_rows_nl.extend(get_sample(s, "crashes/thecrashes", 2, "Cause_harm", "*", "Victim", label)) + df_samples_nl = pd.DataFrame(sample_rows_nl) + df_samples_nl.to_csv("output/common/query_frame_samples/nl_dep_samples.csv") + + +if __name__ == "__main__": + main(language=sys.argv[1]) diff --git a/sociofillmore/webapp/static/app.js b/sociofillmore/webapp/static/app.js new file mode 100755 index 0000000000000000000000000000000000000000..1fd2fcb5fab618c3ebf24c546f65923730f41602 --- /dev/null +++ b/sociofillmore/webapp/static/app.js @@ -0,0 +1,1102 @@ +(function ($) { + + // Constants + const datasetInfo = { + "femicides/rai": "This dataset consists of news reports and metadata about femicides (i.e., murders in which the perpetrator, often a partner or ex-partner, kills a woman because of her gender) perpetrated in Italy between 2015-2017. The dataset has been compiled by the research unit of national public broadcaster RAI in collaboration with a team of sociologists. The news reports come from a variety of national and regional news outlets. Because of the rich set of available metadata (only a small part of which is, as of now, available in this tool), newspaper reports that report the same femicide can be linked, allowing for investigating how one and the same event is framed in different news reports, and how framing changes over time.", + "femicides/olv": "This dataset consists of news reports and metadata about femicides (i.e., murders in which the perpetrator, often a partner or ex-partner, kills a woman because of her gender) perpetrated in Italy between 2012-2019. The dataset consists of a set of case summaries and metadata (see https://27esimaora.corriere.it/la-strage-delle-donne/) compiled by journalists of Corriere della Sera, a major national newspaper, and a set of newspaper articles from several national newspapers mentioning these cases (automatically matched based on victim names).", + "migration/pavia": "This dataset consists of immigration-related news articles in Italy published between 2013-2021, collected by the Osservatorio di Pavia media research organization (https://www.osservatorio.it/) ", + "crashes/thecrashes": "This dataset consists of news articles in Dutch-language news outlets (mostly regional Dutch and Belgian newspapers) describing traffic crashes, together with metadata about the events. This dataset is developed by researchers at the University of Amsterdam, in with journalists at The Correspondent, and is publically available at https://nl.roaddanger.org/." + }; + const datasetFrameInfo = { + "femicides/rai": "For investigating the conceptualization of femicides in the media, we have created three clusters of frames. The most important one, 'murder', comprises frames that describe the act of murder itself in various degrees of agentivity (KILLING implies an active agent, DEATH and DEAD_OR_ALIVE describe the death of the victim, and CATASTROPHE and EVENT present the murders as abstract events or tragedies).", + "femicides/olv": "For investigating the conceptualization of femicides in the media, we have created three clusters of frames. The most important one, 'murder', comprises frames that describe the act of murder itself in various degrees of agentivity (KILLING implies an active agent, DEATH and DEAD_OR_ALIVE describe the death of the victim, and CATASTROPHE and EVENT present the murders as abstract events or tragedies).", + "migration/pavia": "Several clusters of frames were created, reflecting different aspects of media coverage on migration, including the depiction of migrants as quantities ('a tsunami of migrants'), political aspects of migration, and integration of migrants into society.", + "crashes/thecrashes": "We defined a single cluster of frames that conceptualize several salient properties of traffic crashes, both from an agent/cause-centered perspective (KILLING, CAUSE_HARM) and from a non-agentive perspective (EVENT, EXPERIENCE_BODILY_HARM)" + }; + + + /* === GLOBAL OBJECTS === */ + /* --- global data/parameters --- */ + // active dataset & model + let activeDataset = "femicides/olv"; // should be one of: "femicides/rai", "femicides/olv", "crashes/thecrashes", "migration/pavia" + let activeLomeModel = "lome_0shot"; // should be one of: "lome_0shot", "lome_evalita_plus_fn", "lome_zs-tgt_ev-frm" + + // list of relevant frames + let relevantFrameCluster = "ALL"; + let relevantFrames = {}; + + // list of active filters + let activeEventFilters = []; + let activeDocumentFilters = []; + + // set of filters listed in the table + let tableFilters = new Set(); + + /* --- global jQuery objects --- */ + // div for writing the output + const $framesOut = $("#frames-out"); + + // list of relevant frames (buttons) + const $frameList = $("#frame-list"); + + // list of possible documents + const $documentList = $("#document-list"); + + // statistics table rows + const $tableModalRows = $("#table-modal-rows"); + + // Which filters apply to which datasets? + const filtersToDatasets = { + "#doc-filter-days-after": ["rai", "olv", "thecrashes"], + "#doc-filter-provider": ["rai", "olv", "thecrashes", "pavia"], + "#doc-filter-politics-unipv": ["rai"], + "#doc-filter-politics-tc": ["rai"], + "#doc-filter-politics-agg": ["rai"], + "#doc-filter-politics-sc": ["pavia"], + "#doc-filter-religion-sc": ["pavia"], + "#doc-filter-type": ["rai"], + "#doc-filter-area": ["rai", "thecrashes"], + "#doc-filter-country": ["thecrashes"], + "#doc-filter-province": ["thecrashes"], + "#doc-filter-content-type": ["thecrashes"], + "#doc-filter-medium-type": ["thecrashes"], + "#doc-filter-owner": ["thecrashes"], + "#ev-filter-event-cat": ["rai"], + "#ev-filter-region": ["rai", "olv"], + "#ev-filter-semloc": ["rai"], + "#ev-filter-vict-age": ["rai", "olv"], + "#ev-filter-vict-nat": ["rai"], + "#ev-filter-injured-total": ["thecrashes"], + "#ev-filter-injured-child": ["thecrashes"], + "#ev-filter-injured-pedestrian": ["thecrashes"], + "#ev-filter-injured-cyclist": ["thecrashes"], + "#ev-filter-injured-cyclistpedestrian": ["thecrashes"], + "#ev-filter-injured-vehicle": ["thecrashes"], + "#ev-filter-dead-total": ["thecrashes"], + "#ev-filter-dead-child": ["thecrashes"], + "#ev-filter-dead-pedestrian": ["thecrashes"], + "#ev-filter-dead-cyclist": ["thecrashes"], + "#ev-filter-dead-cyclistpedestrian": ["thecrashes"], + "#ev-filter-dead-vehicle": ["thecrashes"], + "#ev-filter-deadinjured-total": ["thecrashes"], + "#ev-filter-deadinjured-child": ["thecrashes"], + "#ev-filter-deadinjured-pedestrian": ["thecrashes"], + "#ev-filter-deadinjured-cyclist": ["thecrashes"], + "#ev-filter-deadinjured-cyclistpedestrian": ["thecrashes"], + "#ev-filter-deadinjured-vehicle": ["thecrashes"], + "#ev-filter-imbalanced": ["thecrashes"], + "#ev-filter-att-nat": ["rai"], + "#ev-filter-vict-occ": ["rai"], + "#ev-filter-att-occ": ["rai"] + } + + /* === FUNCTIONS: GETTING DATA FROM THE FLASK API === */ + + /* --- static data for feeding the option menus --- */ + function getPossibleConstructions() { + const $constructionSampleList = $("#construction-sample-list, #construction-freq-select"); + $constructionSampleList.empty(); + $constructionSampleList.append($("
+
+
+
Main Perspective
+
+
+
@{frame.name}
+

+
+ @{frame.typicalExemplar.text} +
+
+
+
+
@{altFrame.type} Perspective +
+
+
@{altFrame.name}
+ + +

+
+ @{altFrame.typicalExemplar.text} +
+
+ +
+ + + + + +
Add frames manually
+
+ + +
+
Help me choose frames
+ + Infer + from keywords + + + + +
+
+

To help you choose frames, please enter some keywords + describing your + event:

+
+
+

Keywords

+

No keywords selected yet.

+

One or more of the keywords + you + selected are invalid.

+ @{kwd.text} +

(Click a keyword to remove it) +

+
+ + +
+
+
+
Suggested frames
+

Based on your keywords, we suggest the frames listed below.

+

Frames marked with the eye symbol ("") are more likely to + yield interesting + results because they allow for automatically detecting alternative perspectives on + the event.

+
+
+
+
+
@{frm.text} +
+

+
+
+
+
Examples
+
+ +
+
+ +
+
+
+
+ +
+

+ Enter the text you want to analyze below. +

+ Show me an example +
+ +
+

Text Analysis

+

Powered by LOME (Xia et al. EACL 2021)

+

Enter any text in Italian, Dutch, or English.

+ +
+ +
+
+ + +
+
+
+ Loading... +
+ +
+
+
+ sentence @{sentIdx + 1} +
+
+ + + @{part.text} + @{part.text} + @{part.text} + + + @{part.text} + + + +
+ + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/sociofillmore/webapp/templates/index.html b/sociofillmore/webapp/templates/index.html new file mode 100755 index 0000000000000000000000000000000000000000..69608e0db3477178ebd74351f55145700efb7443 --- /dev/null +++ b/sociofillmore/webapp/templates/index.html @@ -0,0 +1,1038 @@ + + + + + + + + + + + + + + + + + SocioFillmore Prototype + + + + + + + + +
+
+
+

SocioFillmore

+
+

Dataset Exploration Tool

+
+
+ +
+
+

+ This part of the tool allows for exploring several existing datasets that showcase of using + frame semantic annotations for analyzing perspectives on socially relevant events. + Three of the datasets consist of Italian news reports (two datasets on femicide reports, and one + on migration-related news) and one consists of reports of traffic crashes in Dutch local media. +

+
+
+ +
+
+

Global Settings

+ + + + +
+
+ +
+
+ +

Please enter the password:

+
+ +
+ OK +
+
+
+
+ +
+
+
Frames of Interest
+
+ +
Clusters
+ +
Selected Frames
+
+
+ (click on a frame to remove it) +
+
+
+
Add Frames
+
+ +
+ +
+
+
+
+ +
+
+
Document Selection
+

+
+
Selected Filters
+
+

+ (any selected filters will appear above / click a filter to remove it / + remove all filters to select all documents) +

+
+ +
+
Choose Filters
+ +
+ Days After Event +
+ +
+ +
+
+
+ +
+ News Source - Provider +
+ +
+ +
+
+
+ + + +
+ News Source - Political Stance (cf. Fletcher et al. + 2019) +
+ +
+ +
+
+
+ +
+ News Source - Political Stance (Serena's list) +
+ +
+ +
+
+
+ +
+ News Source - Religious Status (Serena's list) +
+ +
+ +
+
+
+ +
+ News Source - Political Stance (aggregate) +
+ +
+ +
+
+
+ +
+ News Source - Type +
+ +
+ +
+
+
+ +
+ News Source - Geographical Scope +
+ +
+ +
+
+
+ +
+ News Source - Country (NL/BE) +
+ +
+ +
+
+
+ +
+ News Source - Province (NL/BE) +
+ +
+ +
+
+
+ +
+ News Source - Content Type +
+ +
+ +
+
+
+ +
+ News Source - Medium Type +
+ +
+ +
+
+
+ +
+ News Source - Owning Media Company +
+ +
+ +
+
+
+ +
+
+ + +
+
Event Selection
+

+
+
Selected Filters
+
+

+ (any selected filters will appear above / click a filter to remove it / + remove all filters to select all events) +

+
+ +
+
Choose Filters
+ + + +
+ Location: Italian Region +
+ +
+ +
+
+
+ +
+ Location: Semantic Location +
+ +
+ +
+
+
+ +
+ Victim: Age +
+ +
+ +
+
+
+ +
+ Victim: Nationality +
+ +
+ +
+
+
+ +
+ Attacker: Nationality +
+ +
+ +
+
+
+ +
+ Victim: Occupation +
+ +
+ +
+
+
+ +
+ Attacker: Occupation +
+ +
+ +
+
+
+ + +
+ Outcomes: People Injured (total) +
+ +
+ +
+
+
+ +
+ Outcomes: Children Injured +
+ +
+ +
+
+
+ +
+ Outcomes: Pedestrians Injured +
+ +
+ +
+
+
+ +
+ Outcomes: Cyclists Injured +
+ +
+ +
+
+
+ +
+ Outcomes: Cyclists or Pedestrians Injured +
+ +
+ +
+
+
+ +
+ Outcomes: People-in-Vehicles Injured +
+ +
+ +
+
+
+ +
+ Outcomes: People Dead (total) +
+ +
+ +
+
+
+ +
+ Outcomes: Children Dead +
+ +
+ +
+
+
+ +
+ Outcomes: Pedestrians Dead +
+ +
+ +
+
+
+ +
+ Outcomes: Cyclists Dead +
+ +
+ +
+
+
+ +
+ Outcomes: Cyclists or Pedestrians Dead +
+ +
+ +
+
+
+ +
+ Outcomes: People-in-Vehicles Dead +
+ +
+ +
+
+
+ +
+ Outcomes: People Injured or Dead (total) +
+ +
+ +
+
+
+ +
+ Outcomes: Children Injured or Dead +
+ +
+ +
+
+
+ +
+ Outcomes: Pedestrians Injured or Dead +
+ +
+ +
+
+
+ +
+ Outcomes: Cyclists Injured or Dead +
+ +
+ +
+
+
+ +
+ Outcomes: Cyclists or Pedestrians Injured or Dead +
+ +
+ +
+
+
+ +
+ Outcomes: People-in-Vehicles Injured or Dead +
+ +
+ +
+
+
+ +
+ Two-sided & Outcome-Imbalanced +
+ +
+ +
+
+
+
+
+
+
+ +
+
Global Statistics
+
+
+
+ + +
+
+ + +
+
+
+ +
+ For all frames: +
+
+ + + + + + + +
+
+
+ + +
+ +
+ + +
+
+
+ +
+
+
+ + +
+
+
+ For specific frame & construction: +
+ + +
+
+
+ + + + + +
+
+ + + +
+ + + + + + +
+
Analyze Text
+
Analyze Specific Documents
+

Use this option to look at specific articles. The list of available articles depends on + the + filters + you selected.

+
+ +
+ +
+
+
+
Sample Frames & Constructions
+

Use this option to find randomly sampled sentences for specific frame-construction + combinations. Samples are taken only from the filtered set of events and documents.

+
+ + + + +
+ +
+
+
+ +
+
Results
+
+

(Text analysis results will appear here)

+
+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/sociofillmore/webapp/templates/login.html b/sociofillmore/webapp/templates/login.html new file mode 100755 index 0000000000000000000000000000000000000000..472b4b4a706f2a4d3c83f64e4d1a53ebb5132e74 --- /dev/null +++ b/sociofillmore/webapp/templates/login.html @@ -0,0 +1,21 @@ + + + + + + + + SocioFillmore | Login + + +
+
+ + + +
+
+ + + \ No newline at end of file