si.ml
13.4 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
(********************************************************)
(* *)
(* Copyright 2013 Wojciech Jaworski. *)
(* *)
(* All rights reserved. *)
(* *)
(********************************************************)
open Xstd
let hipo_roots = [
"coś", "28358";
"CZASOWNIK", "55268";
"GERUNDIUM", "102594";
"rezultat", "5195";
"czynność", "10765";
"cecha", "323";
"zjawisko", "5371";
"okoliczności", "4673";
"miejsce", "4750";
"informacja", "1088";
"wydarzenie", "6526";
"negatywny", "105767";
"pozytywny", "105768";
"przestrzeń", "4897";
"działalność", "10956";
"inny-3", "428387";
"inny-1", "236059";
"dobrze", "452661";
"sprecyzowany", "2148";
"niezwykle", "455526";
"własność", "1648";
"okres", "50721";
"podobny", "9182";
"inaczej", "461347";
"negatywnie", "454949";
(*"istota", "1027";
"całość.txt", "2129";
"materia.txt", "247979";
"część.txt", "104936";
"środek.txt", "28294";
"ilość.txt", "1078";
"ciąg.txt", "247194";
"proces_ruchu.txt", "105004";
"podmiot.txt", "228023";
"czyn.txt", "50840";
"zależność.txt", "4659";
"jakiś.txt", "9558";
"właściwość.txt", "2270";
"rzecz.txt", "103550";
"przedmiot-cel.txt", "5508";
"rzadkość.txt", "247904";
"byt.txt", "304";*)
]
(*
let _ =
let lumap,synmap,lr,sr,rtmap = PlWordnet.load_data PlWordnet.plwordnet_filename in
print_endline "data loaded";
(* PlWordnet.check_lexical_units_fields lumap; *)
(* PlWordnet.print_lexical_units_full "results/lu_" lumap; *)
(* PlWordnet.check_lu_syn_consistency lumap synmap; *)
let synmap = PlWordnet.merge_lu_syn lumap synmap in
let lu_syn = PlWordnet.make_lu_syn_map synmap in
(* let rel_count = PlWordnet.count_relations StringQMap.empty rtmap lr in
let rel_count = PlWordnet.count_relations rel_count rtmap sr in
PlWordnet.print_rt_map "results/rt.csv" rel_count rtmap;
PlWordnet.print_lu_relations "results/lr_" lumap lr;
PlWordnet.print_syn_relations "results/sr_" synmap sr;*)
let hipero = PlWordnet.create_relation_map "10" sr in (* klucz (parent) jest hiponimem *)
let hipo = PlWordnet.create_relation_map "11" sr in (* klucz (parent) jest hiperonimem *)
let synmap = PlWordnet.assign_no_hipo synmap hipo in
(* PlWordnet.test_rel_pos_consistency synmap hipero; *)
(* print_endline "hipo";
PlWordnet.test_reverse_rel hipero hipo;
print_endline "hipero";
PlWordnet.test_reverse_rel hipo hipero; *)
let synmap = PlWordnet.remove_pwn synmap in
let holo = PlWordnet.create_relation_map "20" sr in (* część -> całość *) (* Holonimy (części) *)
let holo3 = PlWordnet.create_relation_map "22" sr in (* część -> całość *) (* Holonimy (miejsca) *)
let holo2 = PlWordnet.create_relation_map "23" sr in (* Holonimy (elementy kolekcji) *)
let blisk = PlWordnet.create_relation_map "60" sr in (* bliskoznaczność *) (* Bliskoznaczne z *)
let stan = PlWordnet.rev_relation (PlWordnet.create_relation_map "92" sr) in (* Stanowość (stanowość V-Adj) *)
let typy = PlWordnet.create_relation_map "106" sr in (* Typy *)
let caus = PlWordnet.rev_relation (PlWordnet.create_relation_map "124" sr) in (* Kauzacja (kauzacja procesu DK-Adj) *)
let caus2 = PlWordnet.rev_relation (PlWordnet.create_relation_map "126" sr) in (* Kauzacja (kauzacja procesu NDK-Adj) *)
let attr = PlWordnet.create_relation_map "145" sr in (* klucz (parent) jest cechą, wartość - wartością cechy *) (* Wartości cechy *)
(*let syn_rel = PlWordnet.create_relation_map_lex lu_syn "141" lr in (* verb -> noun *)
let fuzzy = PlWordnet.create_relation_map_lex lu_syn "19" lr in (* verb -> noun *)
let anton = PlWordnet.create_relation_map_lex lu_syn "104" lr in (* verb -> noun *)
let part = PlWordnet.create_relation_map_lex lu_syn "20" lr in (* verb -> noun *)
let syn_adv_adj = PlWordnet.create_relation_map_lex lu_syn "244" lr in (* verb -> noun *)
PlWordnet.print_relation "results/syn_adv_adj.tab" synmap syn_adv_adj;
let chr = PlWordnet.create_relation_map_lex lu_syn "149" lr in (* verb -> noun czy to powinno być traktowane jako strukturalne? *)
PlWordnet.print_relation "results/chr.tab" synmap chr;*)
let fem = PlWordnet.create_relation_map_lex lu_syn "53" lr in (* formy żeńskie *) (* Nazwy żeńskie *)
let demi = PlWordnet.create_relation_map_lex lu_syn "56" lr in (* zdrobnienia *) (* Nacechowanie (deminutywy) *)
let aug = PlWordnet.create_relation_map_lex lu_syn "57" lr in (* zdrobnienia *) (* Nacechowanie ( augmentatywność) *)
let deryw = PlWordnet.create_relation_map_lex lu_syn "59" lr in (* Derywatywy *)
let rel2 = PlWordnet.create_relation_map_lex lu_syn "62" lr in (* Synonimy międzyparadygmatyczne (synonimia międzyparadygmatyczna V-N) *)
let grad = PlWordnet.create_relation_map_lex lu_syn "151" lr in (* Stopniowanie (stopień wyższy) *)
let rel = PlWordnet.create_relation_map_lex lu_syn "169" lr in (* adj -> noun *) (* Synonimy międzyparadygmatyczne (relacyjne) *) (*wanilinowy-2*)
let rel3 = PlWordnet.create_relation_map_lex lu_syn "244" lr in (* adv -> adj *) (* Synonimy międzyparadygmatyczne (Adv-Adj) *)
(* PlWordnet.print_relation "results/demi.tab" synmap demi;
let place = PlWordnet.create_relation_map "22" sr in (* *)
PlWordnet.print_relation "results/place.tab" synmap place;*)
let ex_hipero = Xlist.fold [attr; holo; holo2; holo3; blisk; rel; rel2; rel3; (*chr;*) fem; demi; stan; typy; aug; deryw; caus; caus2; grad] hipero PlWordnet.sum_relation in
(* let ex_hipo = Xlist.fold [attr; holo; blisk; rel; chr; fem; demi] hipo (fun ex_hipo r -> PlWordnet.sum_relation ex_hipo (PlWordnet.rev_relation r)) in*)
let max_syn = PlWordnet.get_maximal_synsets synmap ex_hipero in
(* PlWordnet.print_synset_names "results/max_syn.tab" synmap max_syn hipo; *)
(* let max_syn = PlWordnet.get_maximal_synsets synmap hipero in
PlWordnet.print_synset_names "results/max_syn_hipero.tab" synmap max_syn hipo; *)
(* let max_syn = PlWordnet.get_maximal_not_isolated_synsets synmap ex_hipero ex_hipo in
PlWordnet.print_synset_names "results/max_syn_non_iso_ex.tab" synmap max_syn;*)
(* PlWordnet.print_rels "results/plWordnet_hipero.csv" "10" sr;
PlWordnet.print_rels "results/plWordnet_hipo.csv" "11" sr;*)
(*PlWordnet.count_relation_map hipo;*)
(* PlWordnet.print_syn_map "results/plWordnet_syn.csv" synmap;
PlWordnet.print_lu_map "results/plWordnet_lu.csv" lumap;*)
(* let verbs = PlWordnet.get_subtree hipo "55268" StringSet.empty in
Printf.printf "no verbs=%d\n" (StringSet.size verbs); *)
(* let leafs = PlWordnet.get_subtree_leafs hipo verbs in *)
(* PlWordnet.print_subtree "results/verbs_100_abstract.txt" 100 hipo synmap lumap "55268";
let hipo = StringMap.add hipo "55268" (List.rev (StringMap.find hipo "55268")) in
PlWordnet.print_subtree "results/verbs_100_abstract2.txt" 100 hipo synmap lumap "55268";
PlWordnet.print_subtree "results/verbs_1_abstract2.txt" 1 hipo synmap lumap "55268"; *)
(* PlWordnet.print_subtree "results/tree_istota.txt" treshold hipo synmap lumap "1027";
PlWordnet.print_subtree "results/tree_całość.txt" treshold hipo synmap lumap "2129";
PlWordnet.print_subtree "results/tree_materia.txt" treshold hipo synmap lumap "247979";
PlWordnet.print_subtree "results/tree_część.txt" treshold hipo synmap lumap "104936";
PlWordnet.print_subtree "results/tree_środek.txt" treshold hipo synmap lumap "28294";
PlWordnet.print_subtree "results/tree_ilość.txt" treshold hipo synmap lumap "1078";
PlWordnet.print_subtree "results/tree_ciąg.txt" treshold hipo synmap lumap "247194";
PlWordnet.print_subtree "results/tree_proces_ruchu.txt" treshold hipo synmap lumap "105004";
PlWordnet.print_subtree "results/tree_podmiot.txt" treshold hipo synmap lumap "228023";
PlWordnet.print_subtree "results/tree_czyn.txt" treshold hipo synmap lumap "50840";
PlWordnet.print_subtree "results/tree_zależność.txt" treshold hipo synmap lumap "4659";
PlWordnet.print_subtree "results/tree_jakiś.txt" treshold hipo synmap lumap "9558";
PlWordnet.print_subtree "results/tree_właściwość.txt" treshold hipo synmap lumap "2270";
PlWordnet.print_subtree "results/tree_rzecz.txt" treshold hipo synmap lumap "103550";
PlWordnet.print_subtree "results/tree_przedmiot-cel.txt" treshold hipo synmap lumap "5508";
PlWordnet.print_subtree "results/tree_rzadkość.txt" treshold hipo synmap lumap "247904";
PlWordnet.print_subtree "results/tree_byt.txt" treshold hipo synmap lumap "304"; *)
(* Xlist.iter hipo_roots (fun (name,id) ->
PlWordnet.print_subtree ("results/tree_100_" ^ name ^ ".txt") 100 hipo synmap lumap id);
Xlist.iter hipo_roots (fun (name,id) ->
PlWordnet.print_subtree ("results/tree_1_" ^ name ^ ".txt") 1 hipo synmap lumap id); *)
(* Xlist.iter hipo_roots (fun (name,id) ->
PlWordnet.print_subtree_xml ("results/tree_" ^ name ^ ".xml") hipo synmap lumap id); *)
let conn = PlWordnet.find_connected_components (PlWordnet.sum_relation hipo hipero) 100 synmap in
(*let conn = PlWordnet.remove_conn conn "55268" in
let conn = PlWordnet.remove_conn conn "102594" in*)
(* let conn = PlWordnet.select_conn conn "28358" in *)
Printf.printf "|conn|=%d\n%!" (Xlist.size conn);
PlWordnet.print_hipo_graph "results/" "hipo_graph" 100 synmap hipo conn;
()
*)
(*
let _ =
let lumap,synmap,lr,sr,rtmap = PlWordnet.load_data PlWordnet.plwordnet_filename in
let hipero = PlWordnet.create_relation_map "10" sr in (* klucz (parent) jest hiponimem *)
PlWordnet.print_hipero "results/hipero.tab" hipero;
PlWordnet.print_lexical_units "results/lexical_units/" lumap;
PlWordnet.print_synsets "results/synsets.tab" synmap;
()
*)
let print_maximal_ids synmap hipo pos =
let pos_ids = PlWordnet.select_pos synmap pos in
let hipo = Graph.select_node_set hipo pos_ids in
let maximal_ids = Graph.select_maximal_ids hipo in
PlWordnet.print_synset_names ("results/max_syn_hipo_" ^ pos ^ ".tab") synmap maximal_ids;
()
let print_subtree synmap hipo name pos threshold lr id =
let pos_ids = PlWordnet.select_pos synmap pos in
let hipo = Graph.select_node_set hipo pos_ids in
let big_synset_ids = PlWordnet.select_big_synsets synmap threshold in
let hipo = Graph.select_node_set hipo big_synset_ids in
let chidlren_ids = Graph.get_children_ids hipo IntSet.empty id in
let hipo2 = Graph.select_node_set hipo chidlren_ids in
Graph.print_graph "results/" ("hipo_graph_" ^ name ^ "_" ^ string_of_int threshold) lr hipo2 (fun id ->
let syn = IntMap.find synmap id in
Printf.sprintf "%s\\n%d" (PlWordnet.syn_name_single syn) syn.PlWordnet.syn_no_hipo);
()
let _ =
let lumap,synmap,lr,sr,rtmap = PlWordnet.load_data PlWordnet.plwordnet_filename in
print_endline "data loaded";
let synmap = PlWordnet.merge_lu_syn lumap synmap in
let lumap = PlWordnet.merge_lu_syn2 lumap synmap in
let hipero = PlWordnet.create_relation_map 10 sr in (* klucz (parent) jest hiponimem *)
let hipo = PlWordnet.create_relation_map 11 sr in (* klucz (parent) jest hiperonimem *)
let synmap = PlWordnet.assign_no_hipo synmap hipo in
(* print_maximal_ids synmap hipo "rzeczownik"; *)
(* print_subtree synmap hipo "coś" "rzeczownik" 50 true 28358;
print_subtree synmap hipo "GERUNDIUM" "rzeczownik" 50 true 102594;
print_subtree synmap hipo "organizm" "rzeczownik" 40 true 6731;
print_subtree synmap hipo "istota" "rzeczownik" 50 true 1027;
print_subtree synmap hipo "rezultat" "rzeczownik" 40 true 5195;
print_subtree synmap hipo "całość" "rzeczownik" 30 true 2129;
print_subtree synmap hipo "czynność" "rzeczownik" 30 true 10765;
print_subtree synmap hipo "cecha" "rzeczownik" 30 true 323;
print_subtree synmap hipo "zjawisko" "rzeczownik" 30 true 5371;
print_subtree synmap hipo "materia" "rzeczownik" 30 true 247979;
print_subtree synmap hipo "część" "rzeczownik" 20 true 104936;
print_subtree synmap hipo "środek" "rzeczownik" 20 true 28294;*)
print_subtree synmap hipo "okoliczności" "rzeczownik" 20 true 4673;
(* print_subtree synmap hipo "miejsce" "rzeczownik" 20 true 4750;
print_subtree synmap hipo "informacja" "rzeczownik" 20 true 1088;
print_subtree synmap hipo "ilość" "rzeczownik" 10 true 1078;
print_subtree synmap hipo "ciąg" "rzeczownik" 10 true 247194;
print_subtree synmap hipo "wydarzenie" "rzeczownik" 10 true 6526;
print_subtree synmap hipo "proces_fizykalny" "rzeczownik" 10 true 105004;
print_subtree synmap hipo "przestrzeń" "rzeczownik" 10 true 4897;
print_subtree synmap hipo "działalność" "rzeczownik" 10 true 10956;
print_subtree synmap hipo "podmiot" "rzeczownik" 10 true 228023;
print_subtree synmap hipo "czyn" "rzeczownik" 10 true 50840;
print_subtree synmap hipo "mienie" "rzeczownik" 10 true 1648;
print_subtree synmap hipo "czas" "rzeczownik" 10 true 50721;
print_subtree synmap hipo "dziedzina" "rzeczownik" 10 true 8078;
print_subtree synmap hipo "zależność" "rzeczownik" 10 true 4659;
print_subtree synmap hipo "rzecz" "rzeczownik" 10 true 5540;
print_subtree synmap hipo "tkanka" "rzeczownik" 10 true 5999;
print_subtree synmap hipo "właściwość" "rzeczownik" 10 true 2270;
print_subtree synmap hipo "czynności" "rzeczownik" 10 true 105438;
print_subtree synmap hipo "sedno" "rzeczownik" 10 true 1129;
print_subtree synmap hipo "zachowanie" "rzeczownik" 10 true 105543;*)
(*print_maximal_ids synmap hipo "przymiotnik";
print_maximal_ids synmap hipo "czasownik";
print_maximal_ids synmap hipo "przysłówek";*)
()