Commit 063ae46921873e68ede2d6e9f3416bb1f28cbc96
Merge branch 'corpora'
Showing
8 changed files
with
459562 additions
and
0 deletions
Too many changes to show.
To preserve performance only 5 of 8 files are displayed.
corpora/CONLL.ml
0 → 100644
1 | +(*open Types*) | |
2 | + | |
3 | +let string_of_token token = | |
4 | + String.concat "\t" [string_of_int token.c_id; | |
5 | + token.c_orth; | |
6 | + token.c_lemma; | |
7 | + token.c_cat; | |
8 | + token.c_cat; | |
9 | + (if token.c_interp = [] | |
10 | + then "_" | |
11 | + else String.concat "|" token.c_interp); | |
12 | + (if token.c_super = -1 | |
13 | + then "_" | |
14 | + else string_of_int token.c_super); | |
15 | + (if token.c_label = "" | |
16 | + then "_" | |
17 | + else token.c_label); | |
18 | + "_";"_"] | |
19 | + | |
20 | +let string_of_sentence sentence = | |
21 | + String.concat "\n" (sentence.s_id :: (List.map string_of_token sentence.s_tokens)) ^ "\n" | |
22 | + | |
23 | +(******************) | |
24 | + | |
25 | +exception Empty_line | |
26 | +exception Empty_sentence | |
27 | +exception Id_line of string | |
28 | + | |
29 | +let load_token stream = | |
30 | + let line = input_line stream in | |
31 | + if line = "" | |
32 | + then raise Empty_line | |
33 | + else if line.[0] = '#' | |
34 | + then | |
35 | + let id = String.sub line 8 ((String.length line)-17) in | |
36 | + raise (Id_line id) | |
37 | + else | |
38 | + let pom = Str.split (Str.regexp "\t") line in | |
39 | + { c_id = int_of_string (List.nth pom 0); | |
40 | + c_orth = List.nth pom 1; | |
41 | + c_lemma = List.nth pom 2; | |
42 | + c_cat = List.nth pom 3; | |
43 | + c_interp = (let interp = List.nth pom 5 in | |
44 | + if interp = "_" | |
45 | + then [] | |
46 | + else Str.split (Str.regexp "|") interp); | |
47 | + c_super = -1; c_label = ""; c_beg = -1; c_len = -1} | |
48 | + | |
49 | +let load_sentence stream = | |
50 | + let rec pom rev_tokens id = | |
51 | + try | |
52 | + let token = load_token stream in | |
53 | + pom (token :: rev_tokens) id | |
54 | + with Id_line new_id -> pom rev_tokens new_id | |
55 | + | Empty_line -> rev_tokens, id | |
56 | + | End_of_file -> if rev_tokens = [] | |
57 | + then raise Empty_sentence | |
58 | + else rev_tokens, id in | |
59 | + let rev_tokens, id = pom [] "" in | |
60 | + {s_id = id; s_text = ""; s_tokens = (List.rev rev_tokens)} | |
61 | + | |
62 | + | |
63 | +let load_corpus stream = | |
64 | + let rec pom res = | |
65 | + try | |
66 | + let conll_sentence = load_sentence stream in | |
67 | + pom (conll_sentence :: res) | |
68 | + with _ -> res in | |
69 | + pom [] | |
70 | + | |
71 | +(******************) | |
72 | + | |
73 | +exception ErrorInfoFile | |
74 | + | |
75 | +module Info = | |
76 | + struct | |
77 | + type t = string | |
78 | + let compare a b = Pervasives.compare a b | |
79 | + end | |
80 | + | |
81 | +module InfoMap = Map.Make(Info) | |
82 | + | |
83 | +let info_file = "resources/info_sentences.txt" | |
84 | + | |
85 | +let file_in filename f = | |
86 | + let file = open_in filename in | |
87 | + let x = f file in | |
88 | + close_in file; | |
89 | + x | |
90 | + | |
91 | +let load_file filename = | |
92 | + let size = (Unix.stat filename).Unix.st_size in | |
93 | + let buf = Bytes.create size in | |
94 | + file_in filename (fun file -> | |
95 | + ignore (really_input file buf 0 size)); | |
96 | + buf | |
97 | + | |
98 | +let info = Str.split (Str.regexp "\n\n") @@ load_file info_file | |
99 | + | |
100 | +let add_to_map map info_str = | |
101 | + match Str.split (Str.regexp "\n") info_str with | |
102 | + [id; text; info_token] -> InfoMap.add info_token (id, text) map | |
103 | + | _ -> raise ErrorInfoFile | |
104 | + | |
105 | +let info_map = | |
106 | + List.fold_left add_to_map InfoMap.empty info | |
107 | + | |
108 | +let match_sentence sentence = | |
109 | + let info_token = String.concat " " @@ List.map (fun x -> x.c_orth) sentence.s_tokens in | |
110 | + try | |
111 | + let id, text = InfoMap.find info_token info_map in | |
112 | + {s_id = id; s_text = text; s_tokens = sentence.s_tokens} | |
113 | + with _ -> sentence | |
114 | + | |
115 | +let match_corpus corpus = | |
116 | + List.map match_sentence corpus | |
... | ... |
corpora/conllParser.ml
0 → 100644
1 | +(*open Types*) | |
2 | + | |
3 | +let skladnica_zaleznosciowa_filename = "resources/skladnica_zaleznosciowa.conll" | |
4 | + | |
5 | +let oc = open_out "resources/info_sentences.txt" | |
6 | + | |
7 | +let empty_token = { c_id = 0; c_orth = ""; c_lemma = ""; c_cat = ""; | |
8 | + c_interp = []; c_super = 0; c_label = ""; c_beg = 0; c_len = 0} | |
9 | + | |
10 | +let quote_open = ref false | |
11 | + | |
12 | +let hyphenated = ref false | |
13 | + | |
14 | +let reset () = | |
15 | + quote_open := false; | |
16 | + hyphenated := false | |
17 | + | |
18 | +let maybe_add_space pre_previous previous token next = | |
19 | + if previous.c_orth = "" && token.c_orth = "\"" | |
20 | + then quote_open := true; | |
21 | + if token.c_cat = "aglt" || | |
22 | + (token.c_orth = "by" && previous.c_cat = "praet") || | |
23 | + (previous.c_orth = "\"" && !quote_open) || | |
24 | + previous.c_orth = "(" || | |
25 | + previous.c_orth = "„" || | |
26 | + previous.c_orth = "" || | |
27 | + token.c_orth = "ń" || (* wyrażenie nań *) | |
28 | + (token.c_orth = "że" && (previous.c_orth = "czym" || previous.c_orth = "Czym")) || (*wyrażenie czymże*) | |
29 | +(* (token.c_orth = "r" && token.c_cat = "brev") || (*skrót r. - np. 1991r. *) *) | |
30 | + (pre_previous.c_cat = "adj" && previous.c_orth = "." && token.c_cat = "num" && token.c_interp = ["pl";"nom";"f";"rec"]) (* godzina - np 13.15*) | |
31 | + then token.c_orth | |
32 | + else if !hyphenated | |
33 | + then (hyphenated := false; token.c_orth) | |
34 | + else match token.c_orth with | |
35 | + "." -> "." | |
36 | + | "…" -> "…" | |
37 | + | "?" -> "?" | |
38 | + | "!" -> "!" | |
39 | + | "," -> "," | |
40 | + | ":" -> ":" | |
41 | + | ";" -> ";" | |
42 | + | ")" -> ")" | |
43 | + | "”" -> "”" | |
44 | + | "-" -> if previous.c_cat = "adja" || | |
45 | + (previous.c_cat = "subst" && next.c_cat = "subst" && previous.c_interp = next.c_interp) | |
46 | + then (hyphenated := true; "-") | |
47 | + else " -" | |
48 | + | "\"" -> if !quote_open | |
49 | + then (quote_open := false; "\"") | |
50 | + else (quote_open := true; " \"") | |
51 | + | s -> " "^s | |
52 | +(*FIXME: cudzysłowy*) | |
53 | + | |
54 | +let getSentence tokens = | |
55 | + let rec fold4 acc = function | |
56 | + a::b::c::d::t -> fold4 (acc^maybe_add_space a b c d) (b::c::d::t) | |
57 | + | a::b::c::[] -> fold4 (acc^maybe_add_space a b c empty_token) (b::c::[]) | |
58 | + | a::b::[] -> acc in | |
59 | + reset (); | |
60 | + fold4 "" (empty_token::empty_token::tokens) | |
61 | + | |
62 | +let split_word stringname = | |
63 | + let pom = Str.split (Str.regexp "\t") stringname in | |
64 | + { c_id = int_of_string (List.nth pom 0); | |
65 | + c_orth = List.nth pom 1; | |
66 | + c_lemma = List.nth pom 2; | |
67 | + c_cat = List.nth pom 3; | |
68 | + c_interp = (Str.split (Str.regexp "|") (List.nth pom 5)); | |
69 | + c_super = int_of_string (List.nth pom 6); | |
70 | + c_label = List.nth pom 7; | |
71 | + c_beg = -1; | |
72 | + c_len = -1} | |
73 | + | |
74 | +let any_difference string1 string2 = if string1 = string2 | |
75 | + then false | |
76 | + else (String.sub string2 0 (String.length string2 -1)) ^ " " ^ (String.sub string2 (String.length string2 -1) 1) <> string1 | |
77 | + | |
78 | +let find_info tokens = | |
79 | + let text_generated = getSentence tokens in | |
80 | + try | |
81 | + let sentence = (*Resources.*)InfoMap.find (List.map (fun token -> token.c_orth) tokens) (*Resources.*)conll_info in | |
82 | + let id, text = sentence.s_id, sentence.s_text in | |
83 | + (*if any_difference text text_generated && text <> "not_found" | |
84 | + then print_endline (text ^ "\n" ^ text_generated ^ "\n\n");*) | |
85 | + if text = "not_found" | |
86 | + then { s_id = id; | |
87 | + s_text = "Auto-generated text: "^text_generated; | |
88 | + s_tokens = tokens} | |
89 | + else { s_id = id; | |
90 | + s_text = text; | |
91 | + s_tokens = tokens} | |
92 | + with _ -> (*prerr_endline ("Id not found\n" ^ text_generated ^ "\n\n");*) { s_id = "Id not found"; | |
93 | + s_text = text_generated; | |
94 | + s_tokens = tokens} | |
95 | + | |
96 | +let process_sentence sentenceString = | |
97 | + let pom = Str.split (Str.regexp "\n") sentenceString in | |
98 | + let tokens = List.map (fun word -> split_word word) pom in | |
99 | + find_info tokens | |
100 | + | |
101 | +let print_info sentence = | |
102 | + let sentence = process_sentence sentence in | |
103 | + let form_sequence = String.concat " " @@ List.map (fun token -> token.c_orth) sentence.s_tokens in | |
104 | + output_string oc (sentence.s_id^"\n"^sentence.s_text^"\n"^form_sequence^"\n\n"); | |
105 | + flush oc | |
106 | + | |
107 | +let processSkladnica = | |
108 | + List.iter (fun sentence -> print_info sentence) (Str.split (Str.regexp "\n\n") ((*Resources.*)load_file skladnica_zaleznosciowa_filename)) | |
... | ... |
corpora/resources.ml
0 → 100644
1 | +(*open Types*) | |
2 | + | |
3 | +module Id = | |
4 | + struct | |
5 | + type t = string | |
6 | + let compare a b = Pervasives.compare a b | |
7 | + end | |
8 | + | |
9 | +module IdMap = Map.Make(Id) | |
10 | + | |
11 | +let skladnica_frazowa_filename = "resources/skladnica_walencyjna" | |
12 | + | |
13 | +let get_filenames path = | |
14 | + List.fold_left | |
15 | + (fun files_list1 folder1 -> if folder1 = ".DS_Store" then files_list1 else | |
16 | + List.fold_left | |
17 | + (fun files_list2 folder2 -> if folder2 = ".DS_Store" then files_list2 else | |
18 | + List.fold_left | |
19 | + (fun files_list3 file -> if file = ".DS_Store" then files_list3 else | |
20 | + (path ^ "/" ^ folder1 ^ "/" ^ folder2 ^ "/" ^file) :: files_list3) | |
21 | + files_list2 | |
22 | + (Array.to_list (Sys.readdir (path ^ "/" ^ folder1 ^ "/" ^ folder2)))) | |
23 | + files_list1 | |
24 | + (Array.to_list (Sys.readdir (path ^ "/" ^ folder1)))) | |
25 | + [] | |
26 | + (Array.to_list (Sys.readdir path)) | |
27 | + | |
28 | +let add_to_map map = function | |
29 | + Xml.Element("forest",("sent_id",sent_id) :: _, | |
30 | + Xml.Element("text",[],[Xml.PCData text]) :: _) -> IdMap.add sent_id text map | |
31 | + | _ -> failwith "add_to_map" | |
32 | + | |
33 | +let i = ref 1 | |
34 | + | |
35 | +(* map(id,text) *) | |
36 | +let sentencesIdText = List.fold_left (fun acc filename -> print_endline (string_of_int !i); i := !i + 1; add_to_map acc (Xml.parse_file filename)) IdMap.empty (get_filenames skladnica_frazowa_filename) | |
37 | + | |
38 | +let number_of_sentences_skladnica_frazowa = List.length (get_filenames skladnica_frazowa_filename) | |
39 | + | |
40 | +(*************************************************************************************************************) | |
41 | + | |
42 | +module Info = | |
43 | + struct | |
44 | + type t = string list | |
45 | + let compare a b = Pervasives.compare a b | |
46 | + end | |
47 | + | |
48 | +module InfoMap = Map.Make(Info) | |
49 | + | |
50 | +let krzaki_filename = "resources/krzaki.conll" | |
51 | + | |
52 | +let file_in filename f = | |
53 | + let file = open_in filename in | |
54 | + let x = f file in | |
55 | + close_in file; | |
56 | + x | |
57 | + | |
58 | +let load_file filename = | |
59 | + let size = (Unix.stat filename).Unix.st_size in | |
60 | + let buf = Bytes.create size in | |
61 | + file_in filename (fun file -> | |
62 | + ignore (really_input file buf 0 size)); | |
63 | + buf | |
64 | + | |
65 | +let load_krzaki filename = Str.split (Str.regexp "\n\n") (load_file filename) | |
66 | +(* let krzaki = Str.split (Str.regexp "\n\n") (load_file filename) in | |
67 | + rev_map (fun krzak -> | |
68 | + print_endline ("krzak: " ^ krzak); krzak) krzaki *) | |
69 | + | |
70 | +let split_word stringname = | |
71 | + let pom = Str.split (Str.regexp "\t") stringname in | |
72 | + { c_id = int_of_string (List.nth pom 0); | |
73 | + c_orth = List.nth pom 1; | |
74 | + c_lemma = List.nth pom 2; | |
75 | + c_cat = List.nth pom 3; | |
76 | + c_interp = (Str.split (Str.regexp "|") (List.nth pom 5)); | |
77 | + c_super = int_of_string (List.nth pom 6); | |
78 | + c_label = List.nth pom 7; | |
79 | + c_beg = -1; | |
80 | + c_len = -1} | |
81 | + | |
82 | +let split_krzak stringname = | |
83 | + let pom = Str.split (Str.regexp "\n") stringname in | |
84 | + let s_id = String.sub stringname 8 ((String.length @@ List.hd pom)-17) in | |
85 | + { s_id = s_id; | |
86 | + s_text = | |
87 | + (try | |
88 | + IdMap.find s_id sentencesIdText | |
89 | + with _ -> prerr_endline s_id; "not_found"); | |
90 | + s_tokens = List.map (fun word -> split_word word) (List.tl pom)} | |
91 | + | |
92 | +let parse_krzaki list_of_string = | |
93 | + List.map (fun krzak -> split_krzak krzak) list_of_string | |
94 | + | |
95 | +let number_of_sentences_krzaki = List.length (load_krzaki krzaki_filename) | |
96 | + | |
97 | +(* conll_sequence list *) | |
98 | +let data_conll = parse_krzaki (load_krzaki krzaki_filename) | |
99 | + | |
100 | +(* map(form_sequence,conll_sentence) *) | |
101 | +let conll_info = List.fold_left (fun map sentence -> | |
102 | + InfoMap.add (List.map (fun token -> token.c_orth) sentence.s_tokens) sentence map) InfoMap.empty data_conll | |
103 | + | |
104 | +(*let info_file () = | |
105 | + let oc = open_out "info_sentences.txt" in | |
106 | + List.iter (fun (key, sentence) -> | |
107 | + output_string oc (sentence.s_id^"\n"^sentence.s_text^"\n"^(String.concat " " key)^"\n\n")) (InfoMap.bindings conll_info)*) | |
108 | + | |
109 | +(*let frazowa_info = | |
110 | + let got_info = List.map (fun (_, sentence) -> sentence.s_id, sentence.s_text) (InfoMap.bindings conll_info) in | |
111 | + List.fold_left (fun map (id, text) -> if List.mem (id, text) got_info | |
112 | + then map | |
113 | + else IdMap.add text id map) IdMap.empty (IdMap.bindings sentecesIdText) *) | |
... | ... |
corpora/resources/bledy_w_spacjach.txt
0 → 100644
1 | +zdania z błędami w spacjach | |
2 | + | |
3 | +W opinii tej było tyleż przesady, ilepodziwu dla niepokornych górali, którzy pozostawali wierni i lojalni, dopóki stara przyjaźń nie zaczynała dla nich samych stanowić zagrożenia. | |
4 | + | |
5 | +W opinii tej było tyleż przesady, ile podziwu dla niepokornych górali, którzy pozostawali wierni i lojalni, dopóki stara przyjaźń nie zaczynała dla nich samych stanowić zagrożenia. | |
6 | + | |
7 | + | |
8 | + | |
9 | + | |
10 | + | |
11 | +Nanim samym zaś czas nie odcisnął piętna. | |
12 | + | |
13 | +Na nim samym zaś czas nie odcisnął piętna. | |
14 | + | |
15 | + | |
16 | + | |
17 | + | |
18 | + | |
19 | +Wszyscy będą dorana. | |
20 | + | |
21 | +Wszyscy będą do rana. | |
22 | + | |
23 | + | |
24 | + | |
25 | + | |
26 | + | |
27 | +Wszedł do wagonu, w przejściu natknął się na konduktora - służbistę, który zrobił mu wykład o niebezpieczeństwie związanym ze wskakiwaniem do pociągu w biegu. | |
28 | + | |
29 | +Wszedł do wagonu, w przejściu natknął się na konduktora-służbistę, który zrobił mu wykład o niebezpieczeństwie związanym ze wskakiwaniem do pociągu w biegu. | |
30 | + | |
31 | + | |
32 | + | |
33 | + | |
34 | + | |
35 | +Najbardziej alergogennymskładnikiem kosmetyków są środki zapachowe. | |
36 | + | |
37 | +Najbardziej alergogennym składnikiem kosmetyków są środki zapachowe. | |
38 | + | |
39 | + | |
40 | + | |
41 | + | |
42 | + | |
43 | +W oddzielnych grupach ćwiczą panie i panowie, później znów spotykają się i odbywają wspólnie zajęcia choreograficzno - taneczne. | |
44 | + | |
45 | +W oddzielnych grupach ćwiczą panie i panowie, później znów spotykają się i odbywają wspólnie zajęcia choreograficzno-taneczne. | |
46 | + | |
47 | + | |
48 | + | |
49 | + | |
50 | + | |
51 | +Dzięki jego zaangażowaniu w naszym mieście nadal funkcjonuje sekcja piłki nożnej na odpowiednim poziomie sportowym, promująca Jarosław na terenie Polski południowo - wschodniej. | |
52 | + | |
53 | +Dzięki jego zaangażowaniu w naszym mieście nadal funkcjonuje sekcja piłki nożnej na odpowiednim poziomie sportowym, promująca Jarosław na terenie Polski południowo-wschodniej. | |
54 | + | |
55 | + | |
56 | + | |
57 | + | |
58 | + | |
59 | +Nie było by może przez to głupich córek i skończył by się problem aborcji. | |
60 | + | |
61 | +Nie byłoby może przez to głupich córek i skończyłby się problem aborcji. | |
62 | + | |
63 | + | |
64 | + | |
65 | + | |
66 | + | |
67 | +Ja na miejscu Pana Giertycha wprowadził bym zakaz rodzenia głupim matkom. | |
68 | + | |
69 | +Ja na miejscu Pana Giertycha wprowadziłbym zakaz rodzenia głupim matkom. | |
70 | + | |
71 | + | |
72 | + | |
73 | + | |
74 | + | |
75 | +Witraże projektował Jerzy Skąpski, a wykonali w 1991r. Anna i Ireneusz Zarzyccy. | |
76 | + | |
77 | +Witraże projektował Jerzy Skąpski, a wykonali w 1991 r. Anna i Ireneusz Zarzyccy. | |
78 | + | |
79 | + | |
80 | + | |
81 | + | |
82 | + | |
83 | +Po raz kolejny Port Lotniczy Szczecin - Goleniów zanotował dwucyfrowy przyrost ilości odprawionych pasażerów. | |
84 | + | |
85 | +Po raz kolejny Port Lotniczy Szczecin-Goleniów zanotował dwucyfrowy przyrost ilości odprawionych pasażerów. | |
... | ... |
corpora/resources/id_not_found.txt
0 → 100644
1 | +NKJP_1M_SuperExpress/morph_527-p/morph_527.25-s | |
2 | +- Przez 40 lat płaciliśmy składki na służbę zdrowia, a teraz, kiedy jej na-prawdę potrzebujemy, wypinają się na nas. | |
3 | + | |
4 | + | |
5 | +NKJP_1M_1102000021/morph_5-p/morph_5.54-s | |
6 | +Jednak główną rolę w pracy nad brzmieniem płyty odegrały gitarzystka Wendy Melvoin i grająca na instrumentach klawiszowych Lisa Coleman. | |
7 | + | |
8 | + | |
9 | +NKJP_1M_2002000015/morph_5-p/morph_5.26-s | |
10 | +- Tu potrzebny jest ktoś młody, energicz–ny. | |
11 | + | |
12 | + | |
13 | +NKJP_1M_4scal-NIE/morph_188-p/morph_188.31-s | |
14 | +Zazwyczaj są to ich 69-letni synowie, których trzeba wyżywić. | |
15 | + | |
16 | + | |
17 | +NKJP_1M_4scal-NIE/morph_97-p/morph_97.38-s | |
18 | +Bronił eksmitowanych na bruk, naprawiając błędy przyjętej przez koalicję SLDPSL ustawy, grzmiał na globalistów i świeżych krajowych, drapieżnych kapitalistów. | |
19 | + | |
20 | + | |
21 | +Id not found | |
22 | +Czemu ryba nic nie gada? | |
23 | + | |
24 | + | |
25 | +Id not found | |
26 | +Czemu mięsa nie je? | |
27 | + | |
28 | + | |
29 | +Id not found | |
30 | +Czemu kogut głośno pieje? | |
31 | + | |
32 | + | |
33 | +Id not found | |
34 | +Czemu wielki dziób ma wrona? | |
35 | + | |
36 | + | |
37 | +NKJP_1M_1202900130/morph_6-p/morph_6.56-s | |
38 | +Zachęcamy, aby również w czasie Wielkiego Tygodnia zrezygnować z oglądania telewizji. | |
39 | + | |
40 | + | |
41 | +NKJP_1M_2002000158/morph_1-p/morph_1.33-s | |
42 | +Na ekranie TV, na zatrzymanej stop–klatce Jurka Kilera idą napisy końcowe programu. | |
43 | + | |
44 | + | |
45 | +NKJP_1M_3102000008/morph_28-p/morph_28.8-s | |
46 | +Dochodzi 5–ta i zaległa cisza. | |
47 | + | |
48 | + | |
49 | +NKJP_1M_2002000063/morph_14-p/morph_14.55-s | |
50 | +Resa pośpieszyła do Ab–Rama, czekającego niecierpliwie w swoim namiocie. | |
51 | + | |
52 | + | |
53 | +NKJP_1M_2002000072/morph_5-p/morph_5.11-s | |
54 | +Późna wiosna była dla księdza proboszcza najbardziej znienawidzoną porą roku. | |
55 | + | |
56 | + | |
57 | +NKJP_1M_1302900005/morph_46-p/morph_46.36-s | |
58 | +Wczoraj w nocy zziębnięci złodzieje skradli mu kilkadziesiąt skórzanych ubrań o wartości ponad 65000 zł. | |
59 | + | |
60 | + | |
61 | +NKJP_1M_1303900004/morph_29-p/morph_29.77-s | |
62 | +W pół godziny po wylądowaniu samolot wystartował do Londynu, z pełną 185-osobową obsadą na pokładzie. | |
63 | + | |
64 | + | |
65 | +Id not found | |
66 | +- Musimy zebrać ludzi, którzy chcą dokończyć rozpoczęte w 1981 roku dzieło. | |
67 | + | |
68 | + | |
69 | +NKJP_1M_1303900001/morph_127-p/morph_127.44-s | |
70 | +Klub warszawski nie jest pierwszy. | |
71 | + | |
72 | + | |
73 | +NKJP_1M_1303900001/morph_511-p/morph_511.42-s | |
74 | +Według KPN budżet państwa traci na [import]cie paliw, a zasady koncesjonowania są niejasne. | |
75 | + | |
76 | + | |
77 | +NKJP_1M_1303900001/morph_511-p/morph_511.58-s | |
78 | +KPN chce zaproponować własne rozwiązania tego problemu i dlatego żąda od resortu danych o imporcie. | |
79 | + | |
80 | + | |
81 | +NKJP_1M_1303900001/morph_511-p/morph_511.66-s | |
82 | +We wtorek posłowie przyszli po te informacje. | |
83 | + | |
84 | + | |
85 | +NKJP_1M_1303900001/morph_60-p/morph_60.17-s | |
86 | +Ostatnio dał 18-latce na urodziny swoją dżinsową koszulę z niezmywalnym autografem. | |
87 | + | |
88 | + | |
89 | +NKJP_1M_1303900001/morph_60-p/morph_60.5-s | |
90 | +Minister wciąż ma wielbicieli. | |
91 | + | |
92 | + | |
93 | +NKJP_1M_1303900001/morph_209-p/morph_209.67-s | |
94 | +Koalicja jest zbyt liczna, by pozwolić sobie na komasację resortów, a jeszcze może dojść do jej rozszerzenia... | |
95 | + | |
96 | + | |
97 | +NKJP_1M_0302000000010/morph_11-p/morph_11.16-s | |
98 | +Dalsze zachowanie Widmara przypominało beznadziejny obłęd. | |
... | ... |