-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrewrite_perseus.py
101 lines (90 loc) · 2.79 KB
/
rewrite_perseus.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# python3
#
# 2016-03-22
# Eerste conversie SQL dump - de output heeft een tweede conversie slag nodig
# om de complexere P tags erin te zetten.
#
import re
import getopt, sys, os
from collections import Counter
'''
In Perseus betekent dit dat er na positie 1 een positie wordt tussengevoegd,
die by default wordt ingevuld met -, maar bij de categorie P een letter kan
krijgen (later).
Verder blijft alles staan behalve dat als er in Perseus op positie 1 een t
staat, daar een v komt te staan en dan op positie 5 (of 6, als bovenstaande al
is doorgevoerd) een p komt.
python3 rewrite_perseus.py -f hib_sqldump_word_lemma_tag.utf8 > hib_sql.out.txt
Input formaat:
ἀβουλία νσφγ n-s---fg-
ἀβουλία νσφγ n-s---fg-
ἁβρότησ νσφγ n-s---fg-
ἁβρότησ νσφγ n-s---fg-
Ἄβυδοσ νσφγ n-s---fg-
...
Output:
ἀάατοσ ασφα A--s---fa-
ἀάατοσ ασφα A--s---fa-
ἀάατοσ ασφν A--s---fn-
2016-04-12
(venv) durian:lemmatiser pberck
python3 rewrite_perseus.py -f 04_perseus/d638f82gs4.txt.utf8b > 04_perseus/d638f82gs4.txt.utf8b.rwrt
2016-05-02
Extra filtering voor "rare karakters"
'''
afile = None
try:
opts, args = getopt.getopt(sys.argv[1:], "f:P", [])
except getopt.GetoptError as err:
print(str(err))
sys.exit(1)
for o, a in opts:
if o in ("-f"):
afile = a
else:
assert False, "unhandled option"
output = Counter()
dubbels = 0
with open(afile, 'r') as f:
for l in f:
l = l.strip()
bits = l.split()
if len(bits) != 3:
continue
tag = bits[2]
# 2016-05-02 extra filter
b0 = bits[0]
b1 = bits[1]
for c in "^-)—/—+": #ἀλγείν’ ἄπισθ’
#τἀμ’ ἡμός A--s---fd- #OK apostrofe was OK
#’μῇ ἡμός A--s---fd-
#’μ’ ἡμός A--s---fd-
bits[0] = bits[0].replace(c, '') #is this UTF8 safe?
bits[1] = bits[1].replace(c, '')
'''
if b0 != bits[0]:
print( "DIFF", b0, bits[0] )
if b1 != bits[1]:
print( "DIFF", b1, bits[1] )
'''
# -- end extra filter
#print( tags )
if tag[0] in "vnadgcrpm":
tag = tag[0].upper() + '-' + tag[1:] #eerste letter -> hoofdletter
if tag[0] == 't':
# ἀγωνίζομαι τσρεφϝ V--srpefv-
# t-sr-ema-
# 12345
# V--srpema-
# 123456
tag = 'V-' + tag[1:4] + 'p' + tag[5:]
if tag[0] == 'e':
tag = 'I-' + tag[1:]
# 2015-05-02 ontdubbelen
out = bits[0]+' '+bits[1]+' '+tag
if not out in output:
print( out )
output[out] = 1
else:
dubbels += 1
sys.stderr.write("Dubbels: "+str(dubbels)+"\n" )