Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
ValUnifer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Redmine
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IPIPAN
ValUnifer
Commits
15129c71
Commit
15129c71
authored
Nov 16, 2023
by
Tomasz Bartosiak
Browse files
Options
Downloads
Patches
Plain Diff
Added structured representation of syntax
parent
020cca6b
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
common/management/commands/valunifier_tei.py
+601
-22
601 additions, 22 deletions
common/management/commands/valunifier_tei.py
with
601 additions
and
22 deletions
common/management/commands/valunifier_tei.py
+
601
−
22
View file @
15129c71
...
...
@@ -450,7 +450,7 @@ def schema_textual_representation(subentry, schema):
if
subentry
.
inherent_sie
.
name
==
'
true
'
:
result
+=
'
się:
'
else
:
re
r
ult
+=
'
:
'
re
s
ult
+=
'
:
'
opinion
=
schema
.
opinion
.
key
if
opinion
==
'
vul
'
:
...
...
@@ -476,7 +476,7 @@ def schema_textual_representation(subentry, schema):
if
subentry
.
predicativity
.
name
==
'
true
'
:
result
+=
'
pred:
'
else
:
re
r
ult
+=
'
:
'
re
s
ult
+=
'
:
'
if
subentry
.
aspect
is
not
None
:
result
+=
'
'
+
subentry
.
aspect
.
name
+
'
:
'
...
...
@@ -498,15 +498,6 @@ def write_schema(parent, subentry, subentry_id, schema, schema_id):
schema_fs
.
attrib
[
etree
.
QName
(
XML_NAMESPACE
,
'
id
'
)]
=
schema_xml_id
schema_fs
.
attrib
[
'
type
'
]
=
'
schema
'
# textual representation @TODO -- not present in the database
# text_rep_f_elem = etree.SubElement(schema_fs_elem, 'f')
# text_rep_f_elem.attrib['name'] = 'text_rep'
# text_rep_string = etree.SubElement(text_rep_f_elem, 'string')
# text_rep = schema.get_position_spaced_text_rep()
# if schema.characteristics.filter(type=u'ZWROTNOŚĆ', value__value=u'się').exists():
# text_rep = ' ' + text_rep
# text_rep_string.text = lemma.entry_obj.name + text_rep.replace(':',': ')
# schema opinion
schema_opinion
=
schema
.
opinion
.
key
if
schema
.
opinion
.
key
is
None
:
...
...
@@ -547,19 +538,21 @@ def write_schema(parent, subentry, subentry_id, schema, schema_id):
# positions
write_positions
(
schema_fs
,
subentry_id
,
schema
,
schema_id
)
def
write_positions
(
parent
,
subentry_id
,
schema
,
schema_id
):
def
write_positions
(
parent
,
subentry_id
,
schema
,
schema_id
,
fake_id
=
False
):
positions
=
schema
.
positions
.
all
()
positions_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
positions_f
.
attrib
[
'
name
'
]
=
'
positions
'
vColl
=
etree
.
SubElement
(
positions_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
position
in
positions
:
write_position
(
vColl
,
subentry_id
,
schema_id
,
position
)
write_position
(
vColl
,
subentry_id
,
schema_id
,
position
,
fake_id
)
def
write_position
(
parent
,
subentry_id
,
schema_id
,
position
):
def
write_position
(
parent
,
subentry_id
,
schema_id
,
position
,
fake_id
):
if
not
fake_id
:
position_xml_id
=
u
'
unif_%d.%d.%d-psn
'
%
(
subentry_id
,
schema_id
,
position
.
id
)
position_fs
=
etree
.
SubElement
(
parent
,
'
fs
'
)
position_fs
.
attrib
[
'
type
'
]
=
'
position
'
if
not
fake_id
:
position_fs
.
attrib
[
etree
.
QName
(
XML_NAMESPACE
,
'
id
'
)]
=
position_xml_id
text_rep_f
=
etree
.
SubElement
(
position_fs
,
'
f
'
)
...
...
@@ -571,7 +564,7 @@ def write_position(parent, subentry_id, schema_id, position):
write_control
(
position_fs
,
position
)
write_phrases
(
position_fs
,
subentry_id
,
schema_id
,
position
)
write_phrases
(
position_fs
,
subentry_id
,
schema_id
,
position
,
fake_id
)
def
write_function
(
parent
,
position
):
function
=
position
.
function
...
...
@@ -598,18 +591,20 @@ def write_control(parent, position):
pred_control_symbol
=
etree
.
SubElement
(
vColl
,
'
symbol
'
)
pred_control_symbol
.
attrib
[
'
value
'
]
=
control
def
write_phrases
(
parent
,
subentry_id
,
schema_id
,
position
):
def
write_phrases
(
parent
,
subentry_id
,
schema_id
,
position
,
fake_id
):
phrases
=
position
.
phrase_types
.
all
()
phrases_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
phrases_f
.
attrib
[
'
name
'
]
=
'
phrases
'
vColl
=
etree
.
SubElement
(
phrases_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
phrase
in
phrases
:
write_phrase
(
vColl
,
subentry_id
,
schema_id
,
position
,
phrase
)
write_phrase
(
vColl
,
subentry_id
,
schema_id
,
position
,
phrase
,
fake_id
)
def
write_phrase
(
parent
,
subentry_id
,
schema_id
,
position
,
phrase
):
def
write_phrase
(
parent
,
subentry_id
,
schema_id
,
position
,
phrase
,
fake_id
):
if
not
fake_id
:
phrase_xml_id
=
u
'
unif_%d.%d.%d.%d-phr
'
%
(
subentry_id
,
schema_id
,
position
.
id
,
phrase
.
id
)
phrase_fs
=
etree
.
SubElement
(
parent
,
'
fs
'
)
if
not
fake_id
:
phrase_fs
.
attrib
[
etree
.
QName
(
XML_NAMESPACE
,
'
id
'
)]
=
phrase_xml_id
phrase_fs
.
attrib
[
'
type
'
]
=
phrase
.
main_type
.
name
# @TODO -- currently no expansions file
...
...
@@ -617,6 +612,8 @@ def write_phrase(parent, subentry_id, schema_id, position, phrase):
# write_expansions_link(phrase_fs_elem, phrase)
write_phrase_textrep
(
phrase_fs
,
phrase
)
write_phrase_structure
(
phrase_fs
,
phrase
)
def
write_phrase_textrep
(
parent
,
phrase
):
text_rep
=
phrase
.
text_rep
textrep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
...
...
@@ -624,3 +621,585 @@ def write_phrase_textrep(parent, phrase):
textrep_string
=
etree
.
SubElement
(
textrep_f
,
'
string
'
)
textrep_string
.
text
=
text_rep
def
write_phrase_structure
(
parent
,
phrase
):
phrase_type
=
phrase
.
main_type
phrase_type_fs
=
etree
.
SubElement
(
parent
,
'
fs
'
)
phrase_type_fs
.
attrib
[
'
type
'
]
=
phrase_type
.
name
attributes
=
phrase
.
attributes
if
phrase_type
.
name
==
'
np
'
:
write_np_attributes
(
phrase_type_fs
,
attributes
.
npattributes
)
elif
phrase_type
.
name
==
'
adjp
'
:
write_adjp_attributes
(
phrase_type_fs
,
attributes
.
adjpattributes
)
elif
phrase_type
.
name
==
'
possp
'
:
write_possp_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
compar
'
:
write_compar_attributes
(
phrase_type_fs
,
attributes
.
comparattributes
)
elif
phrase_type
.
name
==
'
prepnp
'
:
write_prepnp_attributes
(
phrase_type_fs
,
attributes
.
prepnpattributes
)
elif
phrase_type
.
name
==
'
prepadjp
'
:
write_prepadjp_attributes
(
phrase_type_fs
,
attributes
.
prepadjpattributes
)
elif
phrase_type
.
name
==
'
comprepnp
'
:
write_comprepnp_attributes
(
phrase_type_fs
,
attributes
.
comprepnpattributes
)
elif
phrase_type
.
name
==
'
cp
'
:
write_cp_attributes
(
phrase_type_fs
,
attributes
.
cpattributes
)
elif
phrase_type
.
name
==
'
ncp
'
:
write_ncp_attributes
(
phrase_type_fs
,
attributes
.
ncpattributes
)
elif
phrase_type
.
name
==
'
prepncp
'
:
write_prepncp_attributes
(
phrase_type_fs
,
attributes
.
prepncpattributes
)
elif
phrase_type
.
name
==
'
nonch
'
:
write_nonch_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
infp
'
:
write_infp_attributes
(
phrase_type_fs
,
attributes
.
infpattributes
)
elif
phrase_type
.
name
==
'
advp
'
:
try
:
# due to database error
a
=
attributes
.
advpattributes
except
:
a
=
attributes
.
xpattributes
write_advp_attributes
(
phrase_type_fs
,
a
)
elif
phrase_type
.
name
==
'
xp
'
:
write_xp_attributes
(
phrase_type_fs
,
attributes
.
xpattributes
)
elif
phrase_type
.
name
==
'
E
'
:
write_e_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
or
'
:
write_or_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
refl
'
:
write_refl_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
recip
'
:
write_recip_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
distrp
'
:
write_distrp_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
nump
'
:
write_nump_attributes
(
phrase_type_fs
,
attributes
.
numpattributes
)
elif
phrase_type
.
name
==
'
prepnump
'
:
write_prepnump_attributes
(
phrase_type_fs
,
attributes
.
prepnumpattributes
)
elif
phrase_type
.
name
==
'
pactp
'
:
write_pactp_attributes
(
phrase_type_fs
,
attributes
.
pactpattributes
)
elif
phrase_type
.
name
==
'
preppactp
'
:
write_preppactp_attributes
(
phrase_type_fs
,
attributes
.
preppactpattributes
)
elif
phrase_type
.
name
==
'
ppasp
'
:
write_ppasp_attributes
(
phrase_type_fs
,
attributes
.
ppaspattributes
)
elif
phrase_type
.
name
==
'
prepppasp
'
:
write_prepppasp_attributes
(
phrase_type_fs
,
attributes
.
prepppaspattributes
)
elif
phrase_type
.
name
==
'
gerp
'
:
write_gerp_attributes
(
phrase_type_fs
,
attributes
.
gerpattributes
)
elif
phrase_type
.
name
==
'
prepgerp
'
:
write_prepgerp_attributes
(
phrase_type_fs
,
attributes
.
prepgerpattributes
)
elif
phrase_type
.
name
==
'
qub
'
:
write_qub_attributes
(
phrase_type_fs
,
attributes
.
emptyattributes
)
elif
phrase_type
.
name
==
'
lex
'
:
write_lex
(
phrase_type_fs
,
phrase
)
elif
phrase_type
.
name
==
'
fixed
'
:
write_fixed_attributes
(
phrase_type_fs
,
attributes
.
fixedattributes
)
else
:
print
(
phrase_type
.
name
)
raise
PhraseTypeError
()
def
write_np_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_adjp_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_possp_attributes
(
parent
,
attributes
):
# no expansions file
pass
def
write_compar_attributes
(
parent
,
attributes
):
cat_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
cat_f
.
attrib
[
'
name
'
]
=
'
compar_category
'
cat_symbol
=
etree
.
SubElement
(
cat_f
,
'
symbol
'
)
cat_symbol
.
attrib
[
'
value
'
]
=
attributes
.
comparcat
.
name
def
write_prepnp_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_prepadjp_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_comprepnp_attributes
(
parent
,
attributes
):
# expansions file does not exist
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
complex_preposition
'
prep_string
=
etree
.
SubElement
(
prep_f
,
'
string
'
)
prep_string
.
text
=
attributes
.
comprep
.
name
def
write_cp_attributes
(
parent
,
attributes
):
type_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
type_f
.
attrib
[
'
name
'
]
=
'
type
'
typedef_fs
=
etree
.
SubElement
(
type_f
,
'
fs
'
)
typedef_fs
.
attrib
[
'
type
'
]
=
'
type_def
'
conj_f
=
etree
.
SubElement
(
typedef_fs
,
'
f
'
)
conj_f
.
attrib
[
'
name
'
]
=
'
conjunction
'
conj_symbol
=
etree
.
SubElement
(
conj_f
,
'
symbol
'
)
conj_symbol
.
attrib
[
'
value
'
]
=
attributes
.
cptype
.
name
if
len
(
attributes
.
cpreals
.
all
())
>
0
:
constr_f
=
etree
.
SubElement
(
typedef_fs
,
'
f
'
)
constr_f
.
attrib
[
'
name
'
]
=
'
constraints
'
vColl
=
etree
.
SubElement
(
constr_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
constraint
in
attributes
.
cpreals
.
all
():
constraint_symbol
=
etree
.
SubElement
(
parent
,
'
symbol
'
)
constraint_symbol
.
attrib
[
'
value
'
]
=
constraint
.
name
def
write_ncp_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
type_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
type_f
.
attrib
[
'
name
'
]
=
'
type
'
typedef_fs
=
etree
.
SubElement
(
type_f
,
'
fs
'
)
typedef_fs
.
attrib
[
'
type
'
]
=
'
type_def
'
conj_f
=
etree
.
SubElement
(
typedef_fs
,
'
f
'
)
conj_f
.
attrib
[
'
name
'
]
=
'
conjunction
'
conj_symbol
=
etree
.
SubElement
(
conj_f
,
'
symbol
'
)
conj_symbol
.
attrib
[
'
value
'
]
=
attributes
.
cptype
.
name
if
len
(
attributes
.
cpreals
.
all
())
>
0
:
constr_f
=
etree
.
SubElement
(
typedef_fs
,
'
f
'
)
constr_f
.
attrib
[
'
name
'
]
=
'
constraints
'
vColl
=
etree
.
SubElement
(
constr_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
constraint
in
attributes
.
cpreals
.
all
():
constraint_symbol
=
etree
.
SubElement
(
parent
,
'
symbol
'
)
constraint_symbol
.
attrib
[
'
value
'
]
=
constraint
.
name
def
write_prepncp_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
type_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
type_f
.
attrib
[
'
name
'
]
=
'
type
'
typedef_fs
=
etree
.
SubElement
(
type_f
,
'
fs
'
)
typedef_fs
.
attrib
[
'
type
'
]
=
'
type_def
'
conj_f
=
etree
.
SubElement
(
typedef_fs
,
'
f
'
)
conj_f
.
attrib
[
'
name
'
]
=
'
conjunction
'
conj_symbol
=
etree
.
SubElement
(
conj_f
,
'
symbol
'
)
conj_symbol
.
attrib
[
'
value
'
]
=
attributes
.
cptype
.
name
if
len
(
attributes
.
cpreals
.
all
())
>
0
:
constr_f
=
etree
.
SubElement
(
typedef_fs
,
'
f
'
)
constr_f
.
attrib
[
'
name
'
]
=
'
constraints
'
vColl
=
etree
.
SubElement
(
constr_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
constraint
in
attributes
.
cpreals
.
all
():
constraint_symbol
=
etree
.
SubElement
(
parent
,
'
symbol
'
)
constraint_symbol
.
attrib
[
'
value
'
]
=
constraint
.
name
def
write_nonch_attributes
(
parent
,
attributes
):
pass
def
write_infp_attributes
(
parent
,
attributes
):
asp_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
asp_f
.
attrib
[
'
name
'
]
=
'
aspect
'
asp_symbol
=
etree
.
SubElement
(
asp_f
,
'
symbol
'
)
asp_symbol
.
attrib
[
'
value
'
]
=
attributes
.
aspect
.
name
def
write_advp_attributes
(
parent
,
attributes
):
cat_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
cat_f
.
attrib
[
'
name
'
]
=
'
category
'
cat_symbol
=
etree
.
SubElement
(
cat_f
,
'
symbol
'
)
cat_symbol
.
attrib
[
'
value
'
]
=
attributes
.
advcat
.
name
def
write_xp_attributes
(
parent
,
attributes
):
# no expansions file
cat_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
cat_f
.
attrib
[
'
name
'
]
=
'
category
'
catdef_fs
=
etree
.
SubElement
(
cat_f
,
'
fs
'
)
catdef_fs
.
attrib
[
'
type
'
]
=
'
category_def
'
name_f
=
etree
.
SubElement
(
catdef_fs
,
'
f
'
)
name_f
.
attrib
[
'
name
'
]
=
'
name
'
name_symbol
=
etree
.
SubElement
(
name_f
,
'
symbol
'
)
name_symbol
.
attrib
[
'
value
'
]
=
attributes
.
advcat
.
name
if
len
(
attributes
.
reals
.
all
())
>
0
:
constr_f
=
etree
.
SubElement
(
catdef_fs
,
'
f
'
)
constr_f
.
attrib
[
'
name
'
]
=
'
constraints
'
vColl
=
etree
.
SubElement
(
constr_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
constraint
in
attributes
.
reals
.
all
():
write_phrase_structure
(
vColl
,
constraint
)
def
write_e_attributes
(
parent
,
attributes
):
pass
def
write_or_attributes
(
parent
,
attributes
):
pass
def
write_refl_attributes
(
parent
,
attributes
):
pass
def
write_recip_attributes
(
parent
,
attributes
):
pass
def
write_distrp_attributes
(
parent
,
attributes
):
# no expansions file
pass
def
write_nump_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_prepnump_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_pactp_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_preppactp_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_ppasp_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_prepppasp_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_gerp_attributes
(
parent
,
attributes
):
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_prepgerp_attributes
(
parent
,
attributes
):
prep_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
prep_f
.
attrib
[
'
name
'
]
=
'
preposition
'
prep_symbol
=
etree
.
SubElement
(
prep_f
,
'
symbol
'
)
prep_symbol
.
attrib
[
'
value
'
]
=
attributes
.
prep
.
name
case_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
case_f
.
attrib
[
'
name
'
]
=
'
case
'
case_symbol
=
etree
.
SubElement
(
case_f
,
'
symbol
'
)
case_symbol
.
attrib
[
'
value
'
]
=
attributes
.
case
.
name
def
write_qub_attributes
(
parent
,
attributes
):
pass
def
write_fixed_attributes
(
parent
,
attributes
):
arg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
arg_f
.
attrib
[
'
name
'
]
=
'
argument
'
write_phrase_structure
(
arg_f
,
attributes
.
phrase
)
fixed_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
fixed_f
.
attrib
[
'
name
'
]
=
'
string
'
fixed_string
=
etree
.
SubElement
(
fixed_f
,
'
string
'
)
fixed_string
.
text
=
attributes
.
text
def
write_lex
(
parent
,
phrase_type
):
write_lex_argument
(
parent
,
phrase_type
)
write_lex_parameters
(
parent
,
phrase_type
)
write_lex_lemma
(
parent
,
phrase_type
)
write_lex_modification
(
parent
,
phrase_type
)
def
write_lex_argument
(
parent
,
phrase_type
):
arg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
arg_f
.
attrib
[
'
name
'
]
=
'
argument
'
write_phrase_structure
(
arg_f
,
phrase_type
.
lexicalized_phrase
)
def
write_lex_parameters
(
parent
,
phrase_type
):
if
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
np
'
:
write_lexnp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexnpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
adjp
'
:
write_lexadjp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexadjpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
possp
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
compar
'
:
write_lexcompar_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexcomparattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
prepnp
'
:
write_lexprepnp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexprepnpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
prepadjp
'
:
write_lexprepadjp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexprepadjpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
comprepnp
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
cp
'
:
write_lexcp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexcpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
ncp
'
:
write_lexncp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexncpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
prepncp
'
:
# not present in the database
write_lexprepncp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexprepncpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
nonch
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
infp
'
:
write_lexinfp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexinfpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
advp
'
:
write_lexadvp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexadvpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
xp
'
:
write_lex_parameters
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexxpattributes
.
lex
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
E
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
or
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
refl
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
recip
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
distrp
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
nump
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
prepnump
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
pactp
'
:
write_lexpactp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexpactpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
preppactp
'
:
# not present in database
write_lexpreppactp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexpreppactpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
ppasp
'
:
write_lexppasp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexppaspattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
prepppasp
'
:
write_lexprepppasp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexprepppaspattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
gerp
'
:
# not present in database
write_lexgerp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexgerpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
prepgerp
'
:
write_lexprepgerp_attributes
(
parent
,
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexprepgerpattributes
)
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
qub
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
lex
'
:
pass
elif
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
fixed
'
:
pass
else
:
print
(
phrase_type
.
name
)
raise
LexicalisedPhraseTypeError
()
def
write_lex_lemma
(
parent
,
phrase_type
):
if
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
compar
'
:
return
pt
=
phrase_type
if
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
xp
'
:
pt
=
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexxpattributes
.
lex
print
(
phrase_type
.
id
)
lemma_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
lemma_f
.
attrib
[
'
name
'
]
=
'
lemma
'
lemma_fs
=
etree
.
SubElement
(
lemma_f
,
'
fs
'
)
lemma_fs
.
attrib
[
'
type
'
]
=
'
lemma_def
'
select_f
=
etree
.
SubElement
(
lemma_fs
,
'
f
'
)
select_f
.
attrib
[
'
name
'
]
=
'
selection_mode
'
select_symbol
=
etree
.
SubElement
(
select_f
,
'
symbol
'
)
select_symbol
.
attrib
[
'
value
'
]
=
pt
.
lemma_operator
.
name
cooc_f
=
etree
.
SubElement
(
lemma_fs
,
'
f
'
)
cooc_f
.
attrib
[
'
name
'
]
=
'
selection_mode
'
cooc_symbol
=
etree
.
SubElement
(
cooc_f
,
'
symbol
'
)
cooc_symbol
.
attrib
[
'
value
'
]
=
pt
.
lemma_cooccur
.
name
lemmas_f
=
etree
.
SubElement
(
lemma_fs
,
'
f
'
)
lemmas_f
.
attrib
[
'
name
'
]
=
'
lemmas
'
vColl
=
etree
.
SubElement
(
lemmas_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
lemma
in
pt
.
lemmata
.
all
():
lemma_string
=
etree
.
SubElement
(
vColl
,
'
string
'
)
lemma_string
.
text
=
lemma
.
name
def
write_lex_modification
(
parent
,
phrase_type
):
if
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
compar
'
:
return
pt
=
phrase_type
if
phrase_type
.
lexicalized_phrase
.
main_type
.
name
==
'
xp
'
:
pt
=
phrase_type
.
attributes
.
lexphrasetypeattributes
.
lexxpattributes
.
lex
mod_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
mod_f
.
attrib
[
'
name
'
]
=
'
modification
'
mod_fs
=
etree
.
SubElement
(
mod_f
,
'
fs
'
)
mod_fs
.
attrib
[
'
type
'
]
=
'
modification_def
'
type_f
=
etree
.
SubElement
(
mod_fs
,
'
f
'
)
type_f
.
attrib
[
'
name
'
]
=
'
type
'
type_symbol
=
etree
.
SubElement
(
type_f
,
'
symbol
'
)
type_symbol
.
attrib
[
'
value
'
]
=
pt
.
modification
.
mod_type
.
name
if
len
(
pt
.
modification
.
positions
.
all
())
>
0
:
positions
=
pt
.
modification
.
positions
.
all
()
positions_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
positions_f
.
attrib
[
'
name
'
]
=
'
positions
'
vColl
=
etree
.
SubElement
(
positions_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
position
in
positions
:
write_position
(
vColl
,
None
,
None
,
position
,
True
)
def
write_lexnp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
def
write_lexadjp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
gen_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
gen_f
.
attrib
[
'
name
'
]
=
'
gender
'
gen_symbol
=
etree
.
SubElement
(
gen_f
,
'
symbol
'
)
gen_symbol
.
attrib
[
'
value
'
]
=
attributes
.
gend
.
name
deg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
deg_f
.
attrib
[
'
name
'
]
=
'
degree
'
deg_symbol
=
etree
.
SubElement
(
deg_f
,
'
symbol
'
)
deg_symbol
.
attrib
[
'
value
'
]
=
attributes
.
deg
.
name
def
write_lexcompar_attributes
(
parent
,
attributes
):
arg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
arg_f
.
attrib
[
'
argument
'
]
=
'
arguments
'
vColl
=
etree
.
SubElement
(
arg_f
,
'
vColl
'
)
vColl
.
attrib
[
'
org
'
]
=
'
set
'
for
lex
in
attributes
.
lexes
.
all
():
write_phrase_structure
(
vColl
,
lex
)
def
write_lexprepnp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
def
write_lexprepadjp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
gen_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
gen_f
.
attrib
[
'
name
'
]
=
'
gender
'
gen_symbol
=
etree
.
SubElement
(
gen_f
,
'
symbol
'
)
gen_symbol
.
attrib
[
'
value
'
]
=
attributes
.
gend
.
name
deg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
deg_f
.
attrib
[
'
name
'
]
=
'
degree
'
deg_symbol
=
etree
.
SubElement
(
deg_f
,
'
symbol
'
)
deg_symbol
.
attrib
[
'
value
'
]
=
attributes
.
deg
.
name
def
write_lexcp_attributes
(
parent
,
attributes
):
neg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
neg_f
.
attrib
[
'
name
'
]
=
'
negativity
'
neg_symbol
=
etree
.
SubElement
(
neg_f
,
'
symbol
'
)
neg_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
inh_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
inh_f
.
attrib
[
'
name
'
]
=
'
inherent_sie
'
inh_symbol
=
etree
.
SubElement
(
inh_f
,
'
symbol
'
)
inh_symbol
.
attrib
[
'
value
'
]
=
attributes
.
inhsie
.
name
def
write_lexncp_attributes
(
parent
,
attributes
):
neg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
neg_f
.
attrib
[
'
name
'
]
=
'
negativity
'
neg_symbol
=
etree
.
SubElement
(
neg_f
,
'
symbol
'
)
neg_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
inh_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
inh_f
.
attrib
[
'
name
'
]
=
'
inherent_sie
'
inh_symbol
=
etree
.
SubElement
(
inh_f
,
'
symbol
'
)
inh_symbol
.
attrib
[
'
value
'
]
=
attributes
.
inhsie
.
name
def
write_lexprepncp_attributes
(
parent
,
attributes
):
# not present in database
pass
def
write_lexinfp_attributes
(
parent
,
attributes
):
neg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
neg_f
.
attrib
[
'
name
'
]
=
'
negativity
'
neg_symbol
=
etree
.
SubElement
(
neg_f
,
'
symbol
'
)
neg_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
inh_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
inh_f
.
attrib
[
'
name
'
]
=
'
inherent_sie
'
inh_symbol
=
etree
.
SubElement
(
inh_f
,
'
symbol
'
)
inh_symbol
.
attrib
[
'
value
'
]
=
attributes
.
inhsie
.
name
def
write_lexadvp_attributes
(
parent
,
attributes
):
deg_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
deg_f
.
attrib
[
'
name
'
]
=
'
degree
'
deg_symbol
=
etree
.
SubElement
(
deg_f
,
'
symbol
'
)
deg_symbol
.
attrib
[
'
value
'
]
=
attributes
.
deg
.
name
def
write_lexpactp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
gen_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
gen_f
.
attrib
[
'
name
'
]
=
'
gender
'
gen_symbol
=
etree
.
SubElement
(
gen_f
,
'
symbol
'
)
gen_symbol
.
attrib
[
'
value
'
]
=
attributes
.
gend
.
name
def
write_lexpreppactp_attributes
(
parent
,
attributes
):
# not present in database
pass
def
write_lexppasp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
gen_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
gen_f
.
attrib
[
'
name
'
]
=
'
gender
'
gen_symbol
=
etree
.
SubElement
(
gen_f
,
'
symbol
'
)
gen_symbol
.
attrib
[
'
value
'
]
=
attributes
.
gend
.
name
def
write_lexprepppasp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
gen_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
gen_f
.
attrib
[
'
name
'
]
=
'
gender
'
gen_symbol
=
etree
.
SubElement
(
gen_f
,
'
symbol
'
)
gen_symbol
.
attrib
[
'
value
'
]
=
attributes
.
gend
.
name
def
write_lexgerp_attributes
(
parent
,
attributes
):
# not present in database
pass
def
write_lexprepgerp_attributes
(
parent
,
attributes
):
num_f
=
etree
.
SubElement
(
parent
,
'
f
'
)
num_f
.
attrib
[
'
name
'
]
=
'
number
'
num_symbol
=
etree
.
SubElement
(
num_f
,
'
symbol
'
)
num_symbol
.
attrib
[
'
value
'
]
=
attributes
.
num
.
name
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment