forked from jagiyahh/language-processing
-
Notifications
You must be signed in to change notification settings - Fork 1
/
lemmatization.py
66 lines (55 loc) · 2.72 KB
/
lemmatization.py
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
import csv
glossary = {}
with open('PoliMorf.tab', 'r', encoding='utf-8') as miniMorf:
csvreader = csv.reader(miniMorf, delimiter='\t')
for row in csvreader:
# wrzucam tylko niepowtarzające się słowa, zakładając, że w słowniku w pierwszej kolejności pojawia się słowo
# w najbardziej "podstawowej formie", skoro interesuje mnie jedynie jaka jest to część mowy
if row[0] not in glossary.keys():
glossary[row[0]] = (row[1], row[2])
interpretation_dic = {'subst': 'rzeczownik',
'depr': 'rzeczownik, forma depracjatywna',
'num': 'liczebnik główny',
'numcol': 'liczebnik zbiorowy',
'adj': 'przymiotnik',
'adja': 'przymiotnik przyprzymiotnikowy',
'adjp': 'przymiotnik poprzyimkowy',
'adjc': 'przymiotnik predakatywny',
'adv': 'przysłówek',
'ppron12': 'zaimek nietrzecioosobowy',
'ppron13': 'zaimek trzecioosobowy',
'siebie': 'zaimek SIEBIE',
'fin': "forma przeszła czasownika",
'bedzie': 'forma przyszła czasownika BYĆ',
'aglt': 'aglutynant czasownika BYĆ',
'praet': 'pseudoimiesłów',
'impt': 'rozkaźnik',
'imps': 'bezosobnik',
'inf': 'bezokolicznik',
'pcon': 'imiesłów przysłówkowy współczesny',
'pant': 'imiesłów przysłówkowy uprzedni',
'ger': 'odsłownik',
'pact': 'imiesłów przymiotnikowy czynny',
'ppas': 'imiesłów przymiotnikowy bierny',
'winien': 'czasownik typu WINIEN (forma teraźniejsza)',
'pred': 'predykatyw',
'prep': 'przyimek',
'conj': 'spójnik współrzędny',
'comp': 'spójnik podrzędny',
'interj': 'wykrzyknik',
'burk': 'burkinostka',
'qub': 'kublik',
'brev': 'skrót',
'xxx': 'ciało obce',
'interp': 'interpunkcja'}
def interpretation(tagset, int_dic):
temp = tagset.find(':')
simple = tagset[:temp]
return int_dic[simple]
word = input('Podaj słowo: ')
lemmaOfInput = glossary[word]
lemmaOfInput = lemmaOfInput[0]
tagsetOfLemma = glossary[lemmaOfInput]
tagsetOfLemma = tagsetOfLemma[1]
typeOfLemma = interpretation(tagsetOfLemma, interpretation_dic)
print('Forma podstawowa: ' + lemmaOfInput + ' - ' + typeOfLemma)