;;; -*- Mode: LISP; Package: CGP; BASE: 10; Syntax: ANSI-Common-Lisp; -*- (in-package "CGP") (let ((tree (dat::make-string-tree)) (count 0)) (block end (with-file-lines (line "projects:xle;morph;fullformer.nkl") #+test (when (= count 10000) (return-from end)) (when (zerop (mod (incf count) 10000)) (print (cons count line))) (unless (string= line "") (destructuring-bind (word features lemma nr) (split line #\Tab) (let ((lemma-nr (parse-integer nr))) (unless (find lemma-nr *excluded-lemmas*) (let ((entry (dat:string-tree-get tree word))) (if entry (let ((lemma-entry (find lemma-nr entry :key #'car))) (if lemma-entry (push features (cddr lemma-entry)) (push (list lemma-nr lemma features) (dat:string-tree-get tree word)))) (setf (dat:string-tree-get tree word) (list (list lemma-nr lemma features))))))))))) (let ((hom-count 0)) (dat:do-string-tree (string value tree) (when (cdr value) (incf hom-count))) (print (cons :hom-count hom-count))) #+disabled (with-open-file (stream "projects:xle;morph;fullformer-ny.nkl" :direction :output :if-exists :supersede) (with-open-file (hom-stream "projects:xle;morph;homonymer.nkl" :direction :output :if-exists :supersede) (dat:do-string-tree (string value tree) (dolist (homonym value) (format stream "~a~c~{~a~^/~}~c~a~c~d~%" string #\tab (cddr homonym) #\tab (cadr homonym) #\tab (car homonym))) (terpri stream) (when (cdr value) (dolist (homonym value) (format hom-stream "~a~c~{~a~^/~}~c~a~c~d~%" string #\tab (cddr homonym) #\tab (cadr homonym) #\tab (car homonym))) (terpri hom-stream)))))) (defparameter *excluded-lemmas* '(259 570 571 599 672 709 710 713 714 715 716 757 758 897 986 1060 1066 1094 1095 1135 1191 1263 1264 1286 1699 1976 1979 1980 1981 1982 1983 1984 1985 1986 1990 1991 1998 2710 2779 3049 3063 3105 3106 3633 3634 3635 3636 3721 3722 3730 3825 3826 3827 3858 3936 4411 4412 4516 4897 5044 5231 5232 5233 5258 5259 5277 5278 5279 5280 5281 5282 5283 5284 5285 5299 5300 5303 5417 5885 5941 5943 5944 5945 5946 5947 5948 5949 5950 5951 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 6116 6187 6189 6190 6191 6194 6195 6196 6197 6198 6199 6200 6201 6227 6341 6342 6343 6345 6346 6368 6369 6370 6399 6400 6402 6408 6663 6665 6666 6668 6669 6758 7127 7128 7156 7157 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7372 7375 7376 7377 7378 7390 7391 7392 7666 7668 7669 7670 7671 7672 7673 7674 7684 7726 7727 7728 7729 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7789 7793 7847 7848 7882 7928 7960 7988 7989 7991 7992 7994 7996 7997 7998 7999 8000 8002 8003 8015 8016 8040 8041 8126 8128 8193 8194 8195 8198 8199 8237 8238 8239 8298 8300 8545 8575 8576 8577 8578 8579 8588 8591 8592 8593 8595 8604 9258 9497 10734 10735 10736 10738 10886 11102 11106 11107 11108 11109 11123 11124 11125 11126 11128 11130 11131 11303 11350 11352 11353 11354 11355 11356 11357 11358 11359 11360 11364 11365 11366 11368 11369 11370 11449 11450 11451 11452 11454 11459 11461 11463 11464 11465 11476 11492 11507 11510 11511 11512 11775 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11856 11857 11858 11859 11860 11861 11862 11863 11865 11866 11881 11882 11883 12275 12290 12840 13329 13330 13331 13382 13383 13742 13972 14409 14410 14411 14485 14486 14488 14489 14497 14498 14511 14733 14736 14772 14773 14825 14826 14828 14830 14831 14863 14864 14865 14867 14868 14883 14884 14886 14887 15131 15153 15155 15156 15157 15158 15159 15160 15161 15266 15416 15420 15424 15425 15553 15556 15672 15689 15690 15691 15692 15693 15697 16060 16307 16308 16369 16372 16373 16375 16376 16377 16378 16379 16381 16567 16840 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 16861 16863 16882 16883 16884 17071 17072 17106 17354 17452 17763 17771 17772 17773 17774 17776 17777 17778 17785 17787 17788 17791 17792 17793 17794 17797 17830 17831 17832 17833 17834 17835 17836 17837 17838 17839 17840 17841 17842 17843 17844 17845 17846 17847 17848 17849 17850 17854 17858 17859 17865 17866 17867 17875 17876 17882 17883 17888 17889 17893 17896 17897 17898 17899 17900 17901 17902 17903 17904 17905 17906 17907 17908 17909 17910 17911 17912 17913 17914 17920 17922 17923 18689 18690 18691 18692 18775 18808 19002 19003 19004 19005 19006 19007 19008 19010 19011 19012 19013 19014 19015 19016 19371 20000 20001 20007 20040 20041 20044 20134 20135 20136 20137 20138 20139 20140 20141 20142 20143 20146 20147 20148 20150 20151 20152 20154 20155 20156 20157 20160 20161 20162 20163 20176 20177 20178 20179 20180 20354 20357 20567 20720 20902 20903 20904 20905 20906 20911 20912 20913 20914 20915 20916 20917 20919 20920 20921 20922 20923 20924 20925 21329 21330 21332 21333 21336 21348 21349 21350 21361 21362 21364 21365 21366 21367 21368 21587 21588 21589 21590 21591 21592 21593 21594 21595 21596 21679 21751 21752 21753 21755 21756 21757 21758 21759 21760 21994 22247 22296 22364 22365 22366 22610 22612 22613 22614 22615 22616 22617 22618 22619 22620 22621 22622 22623 22625 22835 22866 22945 22946 22947 22948 22954 22955 22958 22959 22970 22971 22972 22973 22974 22976 22991 22992 22993 22994 22995 22996 22997 23007 23008 23038 23043 23045 23046 23086 23090 23091 23092 23093 23095 23097 23098 23099 23100 23101 23102 23103 23105 23106 23119 23120 23121 23122 23123 23124 23125 23134 23135 23136 23137 23138 23209 23210 23211 23213 23460 23744 23745 23747 23748 23750 23751 23752 23755 23756 23759 23760 23764 23765 23766 23767 23769 23771 23772 23773 23774 23775 23776 23777 23778 23779 23780 23781 23782 23783 23784 23785 23787 23788 23789 23790 23791 23792 23795 23796 23799 23800 23801 23802 23804 23805 23806 23807 23808 23810 23811 23812 23813 23821 23823 23824 23900 24391 24392 24393 24394 24395 24406 24407 24408 24448 24455 24456 24469 24470 24472 24473 24474 24476 24477 24478 24595 24596 24597 25158 25167 25254 25255 25256 25257 25258 25259 25262 25263 25264 25265 25266 25267 25268 25269 25271 25272 25273 25274 25275 25277 25278 25279 25280 25281 25282 25284 25285 25286 25288 25289 25292 25293 25294 25295 25296 25298 25300 25302 25303 25304 25305 25307 25309 25310 25313 25316 25317 25318 25319 25320 25321 25322 25323 25324 25325 25326 25327 25328 25329 25330 25331 25332 25333 25334 25335 25336 25337 25338 25339 25341 25342 25343 25344 25345 25346 25349 25351 25356 25357 25359 25361 25362 25363 25364 25367 25368 25370 25371 25372 25375 25376 25379 25380 25383 25384 25385 25399 25400 25401 25404 25405 25406 25409 25410 25411 25413 25415 25416 25417 25418 25419 25420 25421 25422 25423 25424 25426 25427 25428 25429 25430 25431 25432 25433 25434 25436 25437 25438 25439 25440 25441 25445 25446 25447 25448 25449 25450 25451 25453 25454 25455 25456 25457 25459 25460 25461 25462 25463 25464 25465 25466 25467 25468 25469 25470 25471 25472 25473 25474 25475 25476 25477 25478 25479 25480 25481 25482 25483 25484 25561 25735 25736 25764 25765 25767 25768 25771 25774 25778 25780 25782 25783 25784 25789 25790 25793 26364 26365 26366 26367 26368 26369 26370 26371 26374 26375 26378 26379 26380 26381 26550 26551 26677 26678 27340 27475 27567 27568 27571 27572 27573 27700 27701 27702 27703 27707 27709 27710 27711 27712 27713 28571 28904 28905 28906 28908 28909 28910 28911 28917 28918 28919 29176 29182 29184 29336 29464 29465 29466 29468 29469 29472 29571 29572 30383 30671 30705 30788 30789 30855 30862 30900 30951 30954 30955 31448 31449 31560 31561 31562 31563 31564 31565 31566 31567 31697 31804 32136 32219 32359 32360 32361 32362 32535 32539 32540 32571 32586 32651 32652 32653 32654 32655 32656 32657 32658 32659 32727 32880 32892 32893 32897 32898 32899 32900 32972 32973 32974 32975 32976 32977 32993 32994 32995 32996 33003 33004 33005 33006 33065 33094 33095 33096 33097 33098 33099 33100 33101 33102 33143 33144 33146 33179 33203 33204 33205 33206 33207 33208 33209 33210 33211 33212 33213 33214 33215 33216 33218 33256 33258 33268 33270 33271 33272 33273 33274 33277 33278 33279 33280 33281 33282 33283 33285 33287 33288 33290 33291 33292 33293 33294 33295 33297 33300 33301 33302 33303 33304 33305 33308 33315 33317 33391 33596 33597 33598 34110 34174 34291 34298 34502 34515 34518 34519 34520 34521 34531 34532 34533 34534 34535 34538 34539 34540 34541 34542 34543 34545 34551 34552 34554 34555 34556 34557 34558 34560 34569 34570 34573 34574 34575 34576 34577 34578 34580 34602 34604 34618 34619 34621 34622 34623 34625 34626 34627 34628 34631 34632 34633 34635 34636 34637 34638 34639 34640 34641 34642 34643 34645 34646 34647 34648 34649 34650 34651 34653 34654 34655 34656 34657 34658 34659 34660 34661 34662 34663 34664 34665 34666 34667 34668 34670 34672 34673 34674 34676 34677 34678 34679 34680 34748 34749 34752 34763 34764 34765 34766 34802 34871 34875 34876 34878 34938 34977 35204 35207 35208 35210 36183 36184 36185 36233 36330 36342 36343 36344 36381 36433 36674 36675 37041 37049 37323 37461 37462 37463 37464 37465 37466 37467 37468 37469 37470 37472 37473 37474 37475 37476 37478 37479 37480 37693 37695 37744 37879 37881 37882 37883 37884 37885 37886 37887 37888 37889 37890 37891 37892 37980 37981 37982 38293 38294 38303 38304 38744 38748 38749 38750 38751 38752 38753 38754 38755 38757 38758 38759 38760 38761 38762 38763 38764 38765 38766 38767 38768 38769 38770 38771 38772 38773 38774 38775 38776 38777 38778 38779 38780 39346 39350 39422 39423 39424 39426 39450 39452 39453 39454 39491 39697 39698 39699 39872 39890 39891 39892 39975 40033 40043 40044 40114 40376 40768 40769 40770 40771 40772 40775 40776 40777 40778 40877 41010 41426 41427 41428 41464 41465 41468 41469 41470 41471 41472 41473 41474 41503 41626 41627 41628 41629 42792 42845 42846 42847 42855 42856 42857 42858 42934 42935 42936 42937 42938 42939 42961 42962 42963 42964 42965 42978 42981 42982 42983 42985 42989 42990 42998 43495 43496 43497 43628 43746 43747 43778 43836 43837 44214 44215 45141 45591 45595 45601 45609 45886 46634 46794 46795 47351 47599 47600 47967 47968 47969 47970 47972 47973 47974 47975 47977 48099 48100 48101 48102 48103 48104 48143 48145 48403 48462 48463 48537 48659 48660 48890 48899 48900 48901 49039 49204 49205 49294 49301 49303 49304 49308 49309 49310 49311 49315 49318 49321 49322 49326 49327 49333 49430 49732 49747 49775 49776 49780 49781 49817 49851 49974 50262 50264 50414 50415 50416 50417 50420 50421 50422 50424 50425 50426 50427 50428 50710 50848 50861 50862 50875 50898 50901 50914 50915 50949 51116 51316 51645 51773 51774 51798 51799 52009 52012 52013 52014 52107 52108 52109 52110 52111 52112 52113 52114 52115 52116 52117 52118 52119 52121 52122 52123 52124 52125 52126 52127 52128 52129 52130 52131 52132 52133 52134 52135 52136 52138 52139 52140 52141 52142 52143 52144 52145 52146 52147 52148 52149 52150 52151 52152 52153 52155 52156 52157 52158 52159 52160 52161 52162 52163 52164 52165 52166 52167 52168 52169 52170 52171 52172 52173 52174 52175 52176 52177 52178 52179 52180 52181 52182 52183 52184 52185 52191 52192 52193 52195 52196 52197 52198 52199 52204 52205 52206 52207 52208 52209 52210 52211 52212 52213 52214 52215 52216 52217 52218 52219 52220 52221 52222 52223 52224 52225 52226 52227 52228 52229 52230 52231 52232 52233 52234 52235 52236 52237 52238 52239 52240 52241 52242 52243 52244 52245 52246 52249 52250 52251 52252 52253 52254 52255 52256 52257 52259 52260 52261 52262 52263 52264 52265 52266 52268 52269 52270 52271 52272 52538 52646 52647 52648 52783 52807 52816 52954 52956 53265 53266 53267 53270 53276 53288 53448 53704 53710 53711 53754 53755 53758 53759 53761 53762 53763 53764 53765 53766 53767 53768 53769 53868 53869 53876 53877 53878 53880 53881 54140 54484 54522 54566 54569 54571 54847 55154 55425 55426 55427 55428 55429 55430 55667 55668 56060 56061 56062 56063 56064 56065 56066 56067 56068 56069 56070 56071 56072 56074 56075 56076 56077 56078 56080 56081 56082 56160 56252 56894 56948 56949 56952 56953 56972 57010 57085 57086 57087 57088 57441 57676 57713 57714 57767 57873 58121 58122 58125 58126 58134 58136 58137 58138 58139 58140 58395 58890 58908 58917 58918 58919 58920 58929 58932 58933 58934 58935 58936 58937 58938 58939 58940 58941 58942 58943 58944 58945 58946 58947 58948 58949 58950 58951 58952 58953 58954 58955 58956 58957 58958 58959 58960 58973 58974 58975 59316 59317 59320 59321 59344 59348 59376 59377 59378 59379 59380 59381 59383 59384 59386 59387 59388 59391 59392 59393 59708 59733 59741 59742 59743 59744 59747 59748 59749 59750 60531 60548 60640 60641 60886 61207 61208 61320 62392 62420 62530 62531 62532 62545 62546 62547 62550 62551 62557 62558 62685 62698 63032 63204 63205 63206 63208 63209 63233 63234 63312 63315 63317 63319 63320 63321 63322 63323 63324 63325 63326 63327 63328 63329 63330 63387 63389 63390 63391 63392 63811 63934 63935 63936 63937 63938 63993 64011 64066 64391 64794 64798 65203 65207 65208 65209 65210 65211 65212 65213 65214 65215 65216 65217 65220 65222 65224 65225 65233 65234 65235 65236 65237 65238 65240 65241 65242 65243 65244 65245 65247 65248 65249 65251 65252 65253 65254 65643 65754 65778 65881 65943 66530 66841 66842 66843 66844 66845 66846 66847 66848 66850 66851 66853 66854 66855 66857 66858 66859 66860 66861 66862 66863 66864 66868 66869 66876 66878 66879 66880 66881 66882 66883 66884 66885 66886 66887 66888 66889 66890 66891 66897 66898 66899 66902 66903 66904 66905 66906 66907 66908 66909 66910 66911 66912 66913 66914 66915 66916 66917 66918 66919 66920 66921 66922 66923 66924 66925 66926 66927 66928 66929 66930 66931 66932 66935 66936 66937 66938 66940 66941 66942 66943 66944 66946 66947 66948 66949 66950 66951 66952 66953 66954 66955 66956 66958 66959 66962 66963 66964 66965 66966 66967 66968 66969 66970 66971 66972 66974 66975 66976 66977 66978 66979 66980 66981 66982 66986 66987 66988 66989 66990 66991 66995 66996 67005 67137 67164 67201 67202 67204 67209 67212 67213 67217 67218 67220 67221 67222 67223 67225 67226 67233 67235 67243 67244 67245 67246 67247 67248 67249 67250 67252 67253 67254 67255 67256 67257 67258 67259 67260 67261 67262 67263 67264 67265 67266 67268 67270 67271 67273 67274 67277 67279 67281 67282 67288 67289 67290 67291 67292 67293 67294 67296 67297 67298 67299 67300 67301 67302 67303 67603 67830 67831 67832 67833 67834 67933 67934 67940 67941 67942 67943 67944 67945 67948 67949 67976 68035 68036 68037 68038 68265 68278 68309 68310 68337 68457 68489 68490 68493 68496 68497 68498 68499 68503 68504 68506 68507 68508 68509 68832 68863 68864 68866 68867 68868 68869 68870 68871 69151 69152 69153 69154 69155))