models.py
2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# -*- coding: utf-8 -*-
from django.db.models import AutoField, BooleanField, CharField, \
FloatField, ForeignKey, Model, \
PositiveIntegerField, TextField, URLField
from django.db.models.fields.related import ManyToManyField
class Meaning(Model):
id = AutoField(primary_key=True)
plWN_synset = PositiveIntegerField(blank=True, null=True)
wikilink = URLField(blank=True, null=True)
description = TextField(blank=True, null=True)
category = ForeignKey('Category', related_name='meanings')
def __unicode__(self):
return ' = '.join(['<%s>' % expr.text if expr.main_expression else expr.text
for expr in self.expressions.all()])
def get_or_create_meaning(plWN_synset, wikilink):
created = False
meaning = None
if plWN_synset:
try:
meaning = Meaning.objects.get(plWN_synset=plWN_synset)
except Meaning.DoesNotExist:
pass
if wikilink and meaning == None:
try:
meaning = Meaning.objects.get(wikilink=wikilink)
except Meaning.DoesNotExist:
pass
if meaning == None:
category, _ = Category.objects.get_or_create(key='unk', name='unk', description='niezdefiniowana')
meaning = Meaning.objects.create(plWN_synset=plWN_synset, wikilink=wikilink,
category=category)
created = True
return meaning, created
class Expression(Model):
id = AutoField(primary_key=True)
text = TextField()
meaning = ForeignKey('Meaning', related_name='expressions')
sources = ManyToManyField('Source', related_name='expressions')
score = FloatField()
NKJP_freq = PositiveIntegerField()
is_catchword = BooleanField(default=False)
main_expression = ForeignKey('Expression', related_name='mentions',
blank=True, null=True)
def __unicode__(self):
return self.text
class Source(Model):
key = CharField(max_length=16, primary_key=True)
name = CharField(max_length=32)
description = TextField(blank=True, null=True)
url = URLField(blank=True, null=True)
def __unicode__(self):
return self.name
class Segment(Model):
position_in_expr = PositiveIntegerField()
expression = ForeignKey('Expression', related_name='segments')
orth = CharField(max_length=32)
base = CharField(max_length=32)
ctag = CharField(max_length=8)
msd = CharField(max_length=64)
is_head = BooleanField(default=False)
def __unicode__(self):
return self.orth
class Category(Model):
key = CharField(max_length=16, primary_key=True)
name = CharField(max_length=32)
description = TextField(blank=True, null=True)
def __unicode__(self):
return self.name