argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: SAX - една чудесна технология  (Прочетена 7002 пъти)

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis

Здравейте колеги,

Бих искал да споделя много добрите си впечатления от SAX (Simple API for XML). Това е една много удобна безплатна технология, която можете да интегрирате във вашите Java програми, които четат от XML документи. Адресът е: http://www.saxproject.org/, а SAX също е имплементиран и в безплатния XML парсер xp.

поздрави:
Атанас Чанев
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #1 -: 23.08.2004, 11:10:00 »

artanis Xerces & Xalan rulez...  Бързи са, мощни са и са супер дърти проекти. Освен това май е време да се запознаеш с JAXP най после. Освен това Java та си идва с чисто нови Xerces базирани SAX и DOM парсери.
Между другото SAX парсерите са само за четене... ако искаш валидиращ или такъв, който може да генерира XML ти трябва DOM парсер... sorry... живота е гаден.
D то на DOM идва от 'Дебел'  ))

Абе така и така съм тръгнал да агитирам хора за Python - ей ти кода, който ти парсва XML документ и ти го зарежда в DOM дърво:

from xml.dom import minidom
doc = minidom.parse('blah.xml')
bla bla processing
doc.unlink()

Ай сравни го с най-простото на Java...
Активен

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis
SAX - една чудесна технология
« Отговор #2 -: 24.08.2004, 09:51:00 »

Здравейте г-н Цуйка,

Досега съм си генерирал XML по най-разнообразни старомодни начини. Първо чрез конзолата (голямо забавление, особено UTF-16), а после като пиша в UNICODE файл.

За съжаление D-то на DOM ми идва твърде дебело, защото работя с много големи файлове, така че SAX върши чудесна работа. Отначало алтернативата беше да си напиша сам функциите на Java или да използвам старите ми функции на Perl. Така че съм доволен и това беше причината да споделя възхищението си.

Може ли да споделите къде се намират стандартните пакети със SAX и DOM. Благодаря предварително!

За пръв път чувам за JAXP. Благодаря за препоръката. Ще го прегледам.

... Само не разбрах защо животът според Вас е гаден. Животът е прекрасен :-)

поздрави:
Атанас Чанев
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #3 -: 25.08.2004, 09:57:00 »

Нали ти казах. Иди на java.sun.com/xml и прочети за JAXP. API то е супер мижаво ама върши работа. Поискай си от JAXP SAX парсер и си го получаваш. Въобще не ти трябва дори да знаеш къде е пакета (ако наистина искаш да знаеш - пакета е в rt.jar... отвори го с Ark или някъф там архивар и веднага ще се ориентираш).

Ето ти и един линк:
http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/

И смисъла на XML е markup а да не се превърне в tag soup или spaghetti code или в боза или в квото се е превърнал HTML а. И точно поради тази причина би трябвало всяка операция, която правиш с XML да минава през одобрен XML парсер. Друг е въпроса, че почти никой не го прави и един идеален пример за това е RSS. Хората дори не си ескейпват амперсандите...
А за скоростта... OpenOffice си записва документите в зипнат XML. Отвори един файл с някакъв архивар и ще видиш за какви XML и става въпрос... Особено ако си записал някаква огромна таблица с един куп формули и стилове на клетките. И въпреки това OpenOffice си ги парсва доста бързо...
Пък и ако трябва да записваш огромно количество данни на диска не е ли по добре просто да си сериализираш структурата? Четеш я един пък, парсваш я, сериализираш я и после следиш за датата на промяна на XML а. Ако се промени - парсваш го на ново. Ако не се е променила - използваш си сериализираната структура. Така си спестяваш парсването всеки път, щом ти е толкова бавно.
Активен

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis
SAX - една чудесна технология
« Отговор #4 -: 25.08.2004, 12:56:00 »

Здравейте г-н Цуйка,

Благодаря за линковете. Проверих ги и се убедих, че парсерите са включени в SDK след версиите 1.3.x. Това за което използвам XML от февруари тази година е за нагледно представяне на дървета. След като напиша дървото във файл, винаги разбирам дали XML който пиша е добър като го парсвам първо в Internet Explorer, а сега и в Mozilla, които имат вградени XML парсери. Но използването на DOM изглежда примамливо предложение, което може би ще интегрирам в бъдещите версии на програмата.

SAX използвам за извличане на граматика от корпус. Т.е. ако имам едно синтактично дърво, да получа правила, които го генерират. Напр.:

(S (VP (VP (Verb Пиша) ) (AdvP (Prep във) (NP (Noun форум) ) ) ) )

получавам S -> VP; VP -> VP AdvP; VP -> Verb; AdvP -> Prep NP; NP -> Noun ...

Със SAX това извличане стана изключително лесно - като използвах класа Driver от парсера xp. Ако вграденият SAX има повече предимства от този, който използвам, за целта за която го използвам, отново ще го включа в следващите версии.

Не съм наясно с Open Office. Може от любопитство да проверя това, което казвате. Но след като DOM зарежда карта на документа в паметта, ако реша да извлека граматика от корпус с големина 20Mb или повече, то SAX е за предпочитане пред DOM, не е ли така?

Накрая бих искал да Ви благодаря за полезната информация!

поздрави:
Атанас Чанев

[This message has been edited by artanis (edited 25-08-2004).]

[This message has been edited by artanis (edited 25-08-2004).]
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #5 -: 25.08.2004, 15:09:00 »

20Mb XML... Човеко... мисля си че имаш проблеми с архитетурата на системката ти... Няма да е зле да попремислиш как точно си пазиш данните... Или поне разбий големия XML на по-малки и си направи индекс, с който да намираш в кой от по-малките се намира това, което търсиш. 20Mb е МНОГО... сериозно... направи си сметката колко пъти ще ти се вика функцията за отворен таг, колко за затворен и колко за текст...
Вярно SAX а е бърз, но има и по-бързи неща... примерно една RDBMS...
Ама това си е мое мнение... те напоследък програмистите взеха да мислят, че най-бързата програма е тая, която е пусната на най-бързия компютър... макар че един квадратичен алгоритъм на къвто и комп да го пуснеш... абе ти си знеш.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
SAX - една чудесна технология
« Отговор #6 -: 25.08.2004, 15:59:00 »

Мда живота е прекрасен и Xerces и Xalan  са си супер да отбележа че стават и за PHP (хе хе хе), а за генерирането на XML може да се направи обектен модел подобен на DOM и да се изграждат дърветата на XML документите, след което може да се генерира и XML от тях.
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #7 -: 25.08.2004, 16:17:00 »

Къде се загуби бре човек? Да не си заминал вече за чужбината... Знам, че XML а го чаткаш повече от мене ама аз бързо се уча  
Активен

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis
SAX - една чудесна технология
« Отговор #8 -: 25.08.2004, 16:23:00 »

Здравейте отново,

Прегледах един корпус в XML формат с който съм работил преди време. XML анотираната новела - SUSANNE. Размерът не е 20Mb, но е 5.4Mb, което също мисля, че е много за DOM. Но има и доста по-големи анотирани корпуси (например BNC, който трябва да е доста по-голям от SUSANNE и вероятно надвишава границата от 20Mb). Тук бих искал да отбележа, че корпусът е ресурс, а не място за съхранение на междинни данни.

Не виждам защо трябва да променям архитектурата на системата ми (освен ако с RDBMS или квадратичен алгоритъм (като проверя или си припомня какво значат тези неща) нямам по-добри резултати, но за сега времето за изпълнение не е чак толкова важно). Зная колко пъти се вика функцията за отворен таг и т.н., но в крайна сметка тази информация трябва да бъде обработена. Аз не правя търсене за нещо. Аз се интересувам от правилата, които генерират всяко едно изречение от корпуса.

Подкрепям Вашето мнение за бързата програма, особено защото не работя на много бърза машина.

поздрави!
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #9 -: 25.08.2004, 16:51:00 »

artanis RDBMS е Relational DataBase Management System или както простичко му казват хората - 'База'. А квадратичен алгоритъм е този, на който времето за изпълнение е някаква квадратна функция от обема на входните данни. Това е...как да го кажа...the worst case... Щото нали знаеш как нараства една парабола... първо бавничко пък после... право нагоре. В смисъл минаваш една граница в обема на входа, от която нататък на какъвто и компютър да го пускаш няма да има никакъв смисъл... увеличението на входа с 1 ще води до увеличение на времето с хиляди... едно време една моя позната ми каза, че не мога да намеря колко е 9^9^9... И аз нали си знам, че питона може да ми изкара 10 екрана число... не повярвах... после разбрах, че питона смята големите числа с квадратичен алгоритъм... после ми разправяй, че жените не разбират от информатика...
Знам, че информацията трябва да бъде обработена... обаче трябва ли ЕДНА и СЪЩА информация да се обработва ВСЕКИ ПЪТ по ЕДИН и СЪЩИ НАЧИН? В крайна сметка обработката прави от едни данни други... не можеш ли просто да си запазиш другите данни и да не губиш всеки път време за обработка?
Не знам защо толкова се връзвам по тая тема, обаче това е нещо, което винаги много ме е дразнело... Да хабиш процесорни цикли за едно и също нещо всеки път... евала на M$ за Hibernate...
Активен

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis
SAX - една чудесна технология
« Отговор #10 -: 25.08.2004, 16:52:00 »

И аз казах една глупост. Каква архитектура ... става дума за алгоритъм. Дори да променя технологията, която използвам при извличане, пак няма да има промени в архитектурата, дори и да имаше такава. Хайде ... , че трябва да работя.

Атанас
Активен

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis
SAX - една чудесна технология
« Отговор #11 -: 25.08.2004, 17:00:00 »

г-н Цуйка,

Защо не се обадите да обсъдим това на по бира: ICQ 91382539. Тъкмо ще ми се успокои кръвоизлива в окото, защото няма да се взирам в монитор.
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
SAX - една чудесна технология
« Отговор #12 -: 25.08.2004, 21:00:00 »

Малко извън темата за XML
9^9^9 = 1,9662705047555291361807590852691e+77, смята се за около 2-3 секунди с калкулатора на win тоест времето необходимо за да му зададеш операциите    
Много интересно е обаче това че го сметнах и с C++ и получих:
1.9662705047555292E+077, което явно е закръглено до 16-я знак което ме навежда на мисълта че в елементарния на пръв поглед калкулатор се използва пакет за представяне на големи числа който по default в C++ го няма   Има такива готови пакети доколкото знам които могат да се използват за смятане на числа с размери мегабайти.

[This message has been edited by sasquatch (edited 25-08-2004).]
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #13 -: 26.08.2004, 09:46:00 »

Rayman душо.... сметни го не в scientific notation. Трябват ми всички цифрички  ) Знам, че има по-ефективни алгоритми... ама питонците все още не са го направили.
А калкулатора рулез... то тфа е ясно... кфи технологии има в него...

Между другото... тва е 9^9^5 - последното, което се смята за някакво смислено време...

11639648961714476450037112738383513701181195287418707080477275981232671129306111
03790304976006089812123829613030101949727872696627204938871319412822597902330812
90924196740856977261251272318881097024932788534895797954088979392032773842857736
79535961661261068318224015244212929851142581276122359721147732525778322807185432
00684150087433259999709861375382517756096476683727763786492385768392264879251737
52881910807257686606441838099952474016813167775933784942098919189124619116871810
82653962213116813336289932543727809163980517142643200155438323771793428129320093
39180221516504416801693451592120574126323056105025772347438865306244793401592809
14826505549848102752777249930071394115975706988643671516143074594259110742442228
61639297031502438339653294393771720151128938346167994349146563270530661971474188
77247910917023213775637166582884517650480640842921232207517127354087832787719057
22302923062105704800730285548594114612855810241168924115513296799501283989714754
16464066712422319248195174532206028872702191704916495599836385879719879574031683
50913898844974721120615217909811447745533228946198486316693514093658439582102298
04558375246274905456608159175592833105405147671744651568669998490235535999002207
24962782445764101657604021437175796597569554186221816303942379151381005297905821
73455264934648735604381399737118311745774536478524497213680390216061830286952801
15545534149229899532037220360922923060444708651257240188238546602200455972605382
72615372381556637844838295450448366912153569301218474459976541085743317117656796
21855432979132981361423611010296250438812911379293383935229514161758825567536277
79224384769442961838685772878957871822054756011982367487855340040479224842059955
45205477152480097148406440747906100856766258080890068672162062655802215660383730
64344248368109861472653437801437512874728464244524698565064140114931769460611923
72886164056677635656133092118185011301033426302188446454267209143025376904118411
87938670413672616612915491541208723033852853890633057457224226425376042801701024
90014132328381962030076864097856774775529222547006821924106227044326113274214396
51094070307762949748783891752816629691020888190285664528618268754371057987220274
00065387169291977147495056663808555886351593155503617152717162791135011067951094
33614707406408845097844681201815990216065279317942929245242531240642451482765887
29660339539636934981706399278646240021023609179718951937439344332454107626656504
21039161519267971555122964368309156823709067933211249132694695154832237634051985
93753320844766664610494650625616975834743045162021205625932252298580030074696806
29382339770813823241772238960104633825725375549811353597905920737782004206703717
56379004945225992294587850880616564182647862566018824374040522659686800421828011
49046280057091615658852521856714757900680260888286814632299748964126594524931337
22193464846926036875567238447986263099750407449134411780665290475453034296401900
35521034001664574284378925803256837826516473329796262604494410039997670784091907
32905976803021607882169732862591197419554913344180755711166706434195586047134072
83301834358925848571330198212727678829519379859335514894082473025519310455737309
28056795002442034538440621295032895683464169066369848206946597488141611279629208
63734389119483784927061066607402018687162559963617513045756480358950317704940350
95893399133132406847011095371955546863843602455542698236281700794842708501133278
86841333103915837068095801444696868827019093538893955033030337400861396029473285
61694077212138374900626177914445085891748660965037039421529335288114115223451818
43466552748043631818578626465204872948463750562170207584436392880970227253235287
98238779001816616241118465249524371428064277073975096816371583091808736765252609
79979863440477384506599257694111828260204753353304576270727622222446482837565195
31508581571702357331824019579938262264410113670892047657732878805658004074166679
48858727084751836761382942666241142361005349707790122090775445878037023443400993
67746763243858310896648158416600160368864689202392815250186855200873755099902357
50012237755059883364148661158587281239866572693207899880123586949179326668458375
29670117405547021159495280756206941673012473117319400626877736465084585279092759
82799557590254904496984240234144571810074281689208783744672914487666938578366748
48600274851567309583671210534403596084727913347895492853350173839709071192435897
13246256462057038272722752425938485368735900596972310828437945866769633533527815
03902085941870976696603577355767911227712159139786208398578116362809709370341864
74339657879340574475837195797151517454308848426076683383124888547532402559207558
44793943430232497400780644721429636519345696998784755734309309510733288342925689
25164786068604443788561578885129870665556831662663155497459315082600705192969236
30848902865502616916624925878854330357592348086835135808842217500594268412779156
93377606832061832007792045226358410442686163539905659074798556780467575524664988
85721342065248626965002793836810662173665358453615212380462367712749912836675674
81722036231510807309860101220464434845820472157294727785974014103959029123680308
56535550612174958473634362013303892147186135676746145859617574457292765370786839
28891972178111442346325355012029352793356954987726326617367018883390288110634687
96034069544288235177228054203803999161540589713885184429215407327222874089348440
50606515804375139580246017579593545052248993012416590775562359613443465700839571
15171482986358945678370285245402771602784623209950248997964760491432543194988551
86994530273330486147178488187941777786287000905844223965157594991036804103577431
54919182319966075162791233871940665127044039315367913063213382081575248158432226
85685728878317756212115859880863942952612849054043085401145344368735502748392269
51983910072270150014438025061447929054722638183979979627066124567316043392660920
01957506306429827189061558781072682983907807279610493462917308529044859286773947
39346967383339506069475200258368818098931958052162566755524398226228822364248388
64321630793884346563404180620643907318115175228188343497344077145264400773351938
81284751354434410256582656640058217399452609592366398057163657591002446962784523
78597615840734583860433345206127479388484442778078529147848177102168653385865801
78099242041760855310020307978857841489620744639398694420907850710817143547869891
30067972558127313647158776795617155803612276659332767878142901256679788752694622
19421773318079135553778785092581257716697415922174040031806998593686107919997098
19551251166561859470433997297026194052574256969481108923504608406376714454169888
90433582350200786491698922469597256332042548399456768471780167862475113891420582
00807151662296423850163292976269271581413197588528633712992768948236526427068363
50967149450242137447623881662386817811203827161593918484313646141698523699423459
97827103406856866711061878952071588450948068159391627757262450974862563021287750
06004167023492851763899957470540524942015427904749783743259882425084641350943100
48090333361492964594133292795394386471094549424271085181625891396581440881140099
27596141920733249506970138678488825699080393027014006482909399332200927140314848
10953468035366610470843757370095488505517033706568595637319615540699352046068755
46272514574462177922786873236332902747371313047079980101568947613398627750192765
04541217133500965680298284952179183004119734959445320373993588743006289241057689
11117434986739723624758567905463636200477669164629399516303712133767583979384289
06825288788000716271904782781771110286589875948834961800863248820076343058827780
15260336617108920119883091007062522214503002489537031984560411569867192481584494
05565479076988676972801811920608273300243083081319621699395871086662521997437598
79836493300064603076592499003395855828600677977184491870364409869297170544758781
85911572370533563480158933324465914157611642433856975086980404415657792653320317
76290566059027025033179059049653288817278576093364552246747482203213184091646627
11606256392897664262017358226782610027502740058290477042792368541298371886984245
18505763452697334405498673048305874330997995849318879963489630356904037612278435
33483693471844962188445305924310129954614397649212045092485840313716542491151773
28553466467839492212307958389629080749478989145985546708384075009866049923983643
97312757199043071056067548180570090222978726266525663848809002672376685172220432
15205874705526185696885691366296465437710007028317549749276363645821178782988609
20364438224634939437196651836338731466675342919123172480349437456441969941593826
40541201334670301522563494094564440885067206420030114088247836904143054703184342
58660416545210717968755019481183780967536393088530507462820560644651267708418965
97457393320974270997243516201720212202124030678746163358952676845935139103161333
26795321200156134695374319518056536402144225395534649918109492587138915755718986
30585041918228503909257440075865980446858525743440864516687941443295830491139322
78824615294985243424613311902341209281655484821584113267917347703572583756556424
61920588600605389274546215576305043568892884848099448494899069389273306481941718
22253123749821971771373090348620433009880894016324781747955501472584958317355711
41269267504197478624268384232047276583218614184343729287398601536505273013916359
75734481084718431753328992866311846255816482302563413066531793775565338808930049
71395055154907870726441185456370305109950755380669649636119366778174613498329807
67460579516763878668248435818083367959264835250249035098674338682434843975795915
19762079461833363557814597314393035569967536807697619047737305687790506775747795
93081538561779516733799325184881057360232696743950119978914196059023957455387215
90857185515291451351921097645654681585451973129144012336446957072121485857458527
66641284170726494225098942340772473391622770563461000516853467865387966988129251
02951564645763937659202485785789782949220853802697597543618820201241232617306650
52338158590047284108583648140081682997528431762620423372467159348415916530268007
72529339989745550488505487278167338554501504794854532781999010006211470555868097
17284619202507247274987665434547254352594379797999431574245569786660972097016285
28602612835588781273119600635407705623512690872426228136693280466240024786378587
43944362804206100940386602690072767528181938260238180798192630461526911976056513
45579170177705804604632744866279952662535489026505096956775539639021888086509471
80431889904537691432078636332650201492028679777130628622087719285919064939127357
49653732105813065481707725169674422302037078964557656302491557413747762862609935
12769800087412393742983054568905634854538606611917243940493022638461691818097310
76910963645261791718310808044994527350571972409506695561731369413757837469825879
38547033674629660855628409452564589394547122932483464587006198481862150676696585
42736406776898183941219493732864885244792315443312255224323947730401804844409921
40997936149784152027459877043218957668184216892053129098206240481429932092516747
30960693614403391257902746508420443535911985429004059874498832965446288405862864
91450166980584203918705956610158282161966830792233438480921997011134324698631409
17989545482074490159772838324102534766713071042427146875956698134453927973177631
05050891247643364604550190153261521497270959287986997705285543172821490727601564
61415813996999612769796750570522069086206903118302323517973055136539808212376294
68161071794306352976311537637234237800267125239184343640452843929705018923963584
12608683071887803235139052511493312025146517452862676462396242589566205393214477
24077080783734029345924770390658816824769100586646821996024037265146348254953904
75004940548874605185270286580875206642325396654006816526917851817371148565510832
20982364591451727406564133295713271378237989727656357497986106336961633005396676
56866800042269853655896356676781802277348675544557493820598564254911463700311136
34132269608282745806945963933992881151134022679393116817648717615127821819918569
08893244855012731882007737184797208350696537099563874696642585489759929505884727
23898308606310028613520450330063445909132304531334775003808909656901912648617031
38270586033761721347391236277667454917788306583535699903486737815041952429391610
33387803884136103460611628182879912201587310612007499578001589843491053069943296
02805437100160545576024763566963388605419619626580976327899785399697707231025618
28453619727376258100748059948473712935490481623867095169152751597722294598152812
92525208370837967153807465343991391603319555942408169878539065644554234778503698
99310652015493317473931449633520860224314757885435841121222635507832368285209296
88883120911028559348265498994947869027483282591892070110416869694144906673208388
31190947745706115450687585968141618182081747019170241419582836501515957052409455
25795902786596180328042656251584443557646319721028151103322742830922185058700035
87841979806249214779116120557679008088764885628670607134627327759332409264368822
21713733059053309693281363922820835156162596285108763893258114120445645134765008
31036663052078906627600246325010291262434429769304646131840559500597960225347297
88067315809876775992739454678256706726377563959578130553050270796268799792670635
30892831491721835147284721303021600831998596648500036318777350283506062332858324
78003244364583598777525577021011381607079045315280853453059958216940736591355836
37398027376752160780312280937719900660911574205405885513826184253948979804733471
08812329935719888916757032101537648826811373209656807053660818854952803662351923
20792194030368037423767367139544172758007755137133946795946483935541156320618289
96428158832931501163068254954934545916566647558379107514116890420595282590882879
78728805819622975388968118872641222642210236120814882756256078041063103962505318
60859400239927902663450915496386105979343111887777518652880111892035061097548782
43372491696053247211488929042548511864737387188561340176967891308170732081145386
58810679713597874550563179943537827510339822665855316300900875910034952181162349
48444545344501115352400834844312810628146274384945059306396461549788406959011648
60556346449296192218826057075236964264948353273413532870503804997785882438904751
45521413538298638629411591567716948177914260204665297149529352208104808704063260
54183696816396872313121830697406786082637372930154599574309225164750151516859058
88675621822039917397328007644324172210218563457387397851073804731668172627198553
40476984866823385698009091068431326147746737723978459239733393916781737763707066
63345945903278387814504594827271319171881695356623147103821804041422049504512565
38186527869463733131865152736201937894251841511844389983545106590929950238466253
04975361837772439279583808015269332308097476798708460594661745514372105985841018
25083318760170192512298470508603322103498222791259940901029083017555448408993383
20118112193072166141853292139553951353338788110276979633152545362200359705174665
64637906829533662326331205215496616561530119973906968070277361243270635484688372
62691378908562543218431630184040807766794891143214960554000694907436047668939333
05931084760080431818575654641418984042885256337991936950244018165676349161325611
27823168753145697321616761129840419072449846680858493522518366575227855519160782
75764267599927592944547688765754480710273026430661174572852728131065298108008557
25712376039211844071834581852150798347203829714174147649926448793419222641276101
14281389913050163637301088530370236278875946656506195804844282204456784131953560
14423861531377608035908543474842740348418886184850035325589911592827245819054814
79724195131285995658677680711367458803271622390439083001877942955480848759700972
83984916424321302090794810422906545101445358230948082319260630539152481830756363
30927841076591619336014300210167467610087910878581788841282995971646042910320521
52623092628407460821151115735741299514080898720943021877921584203006306404089620
73528350755033234682886936458374680049464140805484679467379145316284738349184317
20913371669441619733160588057804746131860736609351461139032318063398100274577329
00100807964840090026138123721488146777340768566943411220822282878150216170470804
81287455009469523674373901605980553048047169010302573267114450021310841694404215
15754737670917129518906885286699151022996139125705916862880890976637819419748484
70102207424735300056918430842196100377430192258715184414609236134689123297157807
05866793329731164855243192191019791666651900432585634395621320845758125365662327
14746864025378192963304549550147307849529511020425755540785796813765344474301033
68250541464346869023533723224997388239585676828773720455493958584413094364217793
51789620521006666211776752103179940959837586037608116905449427083257070872098201
23786132137938188392135767884878779556794018580697511259164436850526553258858258
69519483426343393722582766456223354621587625277795203171988521096816454646579752
02824990285969360729439549015156133915328623413012204843711385790842407771591984
25697275551860459390117067996240933456887711146412105328152802482377755232569302
84356154423404880349369379426018467020941743373145271561696283767134368760475507
61979195601804539860261749342372225174005639515604599689232672597389399441316565
41023666717515316574752710795651421374156505497481004203125976648298219799835632
61088147626319230329406456698327710527648288409421713952940377405339311234275717
49582969475146077858071634684035512906675782051786710699660471993410145391450364
62350478106074582316853004001900730210793561425448205895731813561085349190322601
87983472655424090559353184269758383289900440180827812797655622566762322530545273
99867246045237405156713260593548349908980303909281425926486598866443803362524362
74514337329347010241456739673536213771493019095509980961947751667019826474708789
70302125304653422936313010537879942698634826583927921278721201292471570674812238
74780156310051772441529552048294881462042516508481745650476233549910550522769655
61267415839264424891664508310301126772631456739693084650670849557125717455978749
37255071716371154462457716000602509931899307989493953558056050753619544746975825
33943621600540465304804300028596610153938782782174165223878723238443802602025585
28507671541878450309136899504466178463284542107016975296749852522259924368757867
81803163974151364776533316134446634096306803907186049754808405378509499275205484
40279876877496142356654458805328841035968959213179169080463507331533772686470924
43761224074360420296300096757627749950354420772023707494982212911554674020392931
80665153406372539702426873266453645862262300876165764260278688717236476498461644
46067519360442789464361630344871796991327974745358156021098637364079129068563757
95286697351960047603127991488840758173276571753288033210776194601489706922965762
14937421549452462204108863261246112751715211877423351671825361514252695110085418
11149919864974498874791397323082743984663286669171802765152091783343324904150012
08695721270450233714556549654985865483548414829981950380227280953705494546762964
61869894360929433604632351167653101597577083370866919410517357869884012806188639
82751029550620497958599336226516536554350298584041867787669231473380440247368002
17910221737666612022195890148661257666057385836855428770619618647200363137649907
49984077989911064880206706783916112252268182822168470900128262979116374540446699
89177762219691494092883869601225259781004550555076884384213934583199175367350595
67515754915471788303397299427070793385572535212502848558809952489534877949698106
72301408501166918936363426701631882508772914640075341774193875564531536108447054
04759144862101252954106663418769073433375785843279982264419492149634581497327192
17166201783971211929211184734834924856845113941514999143620686058851155242670301
47898383151305020704869436635432846434838043852402192245861776768307696035872150
97325184819985954657182046637937933860756644947956998913314591548844460342054989
25194843847515045583086990073190982077083252074615525654649324857176397720467750
13306181733868465046432294326519971498237604181165159552923838636080618439979262
25511043150324297630575131356860924851593818351736689508508910598515946786411529
28680122988796455517104156288758916703754291028615670547528520542632515710783709
80325136401708943067198525083893989789230326271179249282406619829902475595325688
25769559015181201110131164524491292187452315918347765633703236476693808351246998
27387967706671699539199929426423541303997934051295900185658693102473707081232125
38685212086021377008576257760586676546999071545341065684267638651265384171541681
33662715987748998866058812633028986796062375265861133685206532027311079159384218
58379887149616681604883005725252634642083517657076468860825903863223594842098144
71775608769258474731456636204031418975879997453208051986850765494729978702107036
64443114412853098130260790106817193132644817809853233156137362855823141264663966
07619176911290688796779058843145808685710274969092093761597255587693897876989271
46421799492614100899897954851455207259675737628993972976958120053431426308888900
65767382858387949993055546319997797105337427073405516750854079351063256064969767
43584952107782598396698592971873177112855453610013776198280431063457235372654226
35941544114357634256259698970872503395335766346025575352213835455441629919611697
05863173382579294950462345672595721024790455508647220843810182694878891592043705
54800433397825788946767791755702780395203071355477775715150238916436629579431328
11336647420781794973832478120775109131785349298456470073762410182678013358735814
56088730940036606577034189982297330820764406143332750805860447919536671247669946
25374006843597910953043742272252660951281499754478794469655700566716081565524317
90870564307140753420097485396040696863849076987709799068239526980027404860598240
18625908908412838597197683400617051324262602534638080333559823125542276336701169
79246389720599459195437181580970918646980745670084120830920969575394952999520773
45693297518906788755365760565369986934414030670083922161086083389403354155163067
32567816592387206554443376384353221526228463661581619017031110713037377294065308
52821805242668219702385967427704226651155724861768859311864299847997785827615938
51783396872533706902772647711113604359311433655272577511032082093690872525421228
64327723678512431576972153724302882298771054152759770245526787246040406826132114
75347931728315728702073621769606073013054144087234191824611582669423893509985835
30008330147070243626626305454947717182223036371637965937476204630090396012938941
26420362147897896147820970474639095702016354841879861712595973739332463280295571
13430506901956972971665590225618329634402390965747172556662059924178572412069816
85044882266138032906121783736579032457382449620299593070236809514798389502372673
32774125342561336172281835924109390788731740186986608954581042733798354467489884
70404911829920484944534424648483370215406400165378970444748923265723703663418528
04046723595641973975686354983417062695810905347946250555951647123105398360200848
95430092965048878525748080379324281853917116271313787140433822795839085442135695
13824516685692507233267677678367338471005764413850413866321016871898399907244757
62537106717743985695723907582507895561751791180838334605449936274036788103555625
42534232001225182358652799429074707704432471367023435090811864580018563162950642
00325557959815492640910854549128102381272251730554708410804411916503328291902801
33304933334713155020861677651282151127689703508293376292223086965474652101910844
19695917437506024797459061317295029824983889781216541283897501034231387201644490
40207891668489300236253767147740180680466081913857270915203758324009525624359913
81761562858211083376902856086974486458758337684744057809195554969228403864264437
95448841313334930338081425022416016133511930305244780096691535782743945496342647
83378439437431407678961395831530640783090361853495175482927876583719313668709008
67192627899786136837774319874509115130863784263310403443979780081820843446531741
86168876656239265274673125395444807472389634118980336409830192512648347170254613
36451218177404488799415974191716726829247341188006315228633910797027681269436102
63373557218844265476581069188009441228806562584341471962603351801865566295505486
61253002315054848012154575276496809308588341288173565442084353198434758323070974
60580087124125184736035948939480392128097638072059211320289512820125778766112091
57295455009361838100064972815060647165787481474382656235318451485255373335394767
19007884409872852431394504771168448868548952410470339474355535297222742789096079
69603520121019624570333655610328865843120734083016187973518951772229741635360514
41458954850494158081917079679408578986638770191002458986263921210095320327727379
97047684245296132279884256936023157761107404988338592937292964530533897052232881
91152898000019697404169302338982606708009119075664012201735713410734691955532419
90247584416046515126783820655864510851261331160851175783981358576661443210424435
60660679729519329112740260702622356285649833394381703330851745311766999215188132
09506829492660271564249155006681120792116209271984592605354426882060504373549735
91553931647269320910304833708304787993249474570176576410602555028669392485116407
86042707041717025369800884561426399941994904959377243368217382267469684216339145
67598058524730245306016716233856001842284020088902353974796710616792308600831488
30207871962899769205762850112683358985806794571959215760540247063400111586774740
18210445562521019254201650719893025390205425733546326142028967701241982673715788
41799472397176900970490228102224697584066390643977024122306349553814013175408941
32385591135657473143169449214633909673959184724882128905288645020831242852096986
70145717116055532184759448378020719872300005056198365591887964856491131683595146
59842243917831347030763873550392140549127238704292435775449437647069007999243421
10517030003081188239908780763773354412891757975404920715563622557052547130307731
39853889326988017088318009256573519424311182906617306397452279069326015347262780
78381181663242523066993801079772802012941060335735326787874420033143869091827814
69241076991122641375931529239813166450438958850298618249486802521704381297062946
31127872442424225773686897324310979343407456726809174941890235213745736677172152
58531815837207618967442864453320555255431274374606067029701233478403424528858239
80225442460583557871285544094924089205837326670947205005778619619878979379997839
27766026004104161583695166353538219447323494809795573419597730888412716127419120
17979222488540181982319238860394537908304968257589124088613265398539463220656970
80187851240918835270717252418017422497175729032365687715558328671017970281869446
51297311599587614993513978658902175712343275110463868303566350545328643899143372
81582560655208094479580849702452031427949723055523521515323009070557249038854883
65809885792676074172429807654392063465414525768565421235995784456883485099597122
65543194790134410091117405428753364724443124724051436290710331071492812661381419
43801024218987094637623979055267655647675573184826893540880305568032560530652164
95819407101264978428084247841431220072608680065948341735120942462915073827759150
93867691947180628186624391110580095359833661895068994470319263499913132254139451
07639500671104043386062389823295051153247612937328350083664313574543428092179763
02029047239858095830185329375213619841544338949559907937254859940859377148379676
02912042483654080042025158145398958516934230363213816641474988270805801331450373
43007789583358207749413598666394244125809216381526174819001996484477745466065132
46299635350701062795772202861258320532807039216509157526034726026750227901020101
41503663362581972086486574516242149294339583819185540686913568422012393962122676
80757807149397395434612502374779877854772672563975088923844026302805848088804939
83015278655962546431733897488271566606102444453318144222265339029477672566459164
21805379677885791561102161465811163211780938270545572459364455368205130272231839
50077416485817991564421214211540402111547923398639309005576232654819005702455745
17254535542582122085823010921540078150801365552661875464007144508178638938289463
25390141888953513420968540545530497942553966980966214754232121043939500476823109
81363672893032930955217922294963536523748288292172531792289020781678485105279947
87659556348763665530743764652543577826777185298871664276852589844127457608170200
79871927040166557828308935646495004851518807320210809134232293748295683166317732
13395157219263867961107676319351221963205401676940856510031389139644337695187822
59415256955477301924079462815482512019844585545887716540416209085937603701688480
22844761080271250086486197370037167881545975138218893450961027775705217659698028
31854583036861352346189471503372380556658366359461083835115176291133227280574297
85532310367580399517204691108244467411380636856425141347503839249222992628942616
85952402900886881499593851121687898834343181878896057008723004795168895956227206
30694821575345119976050043295592469744369741796115823247543822148965406597264940
81158289711411588763424511058764573523963232600722662786009312530455078830721000
71900353157341432572161437384871017812653052474158022490940693575471331745272564
90617883087336681168975804615248234346915443599638864558930857194555651056082841
94511971688297233108199639434328891463905857013433176281804995373626637283833557
76938721237398040996074375332481577207922645053513331290797237286585050360853497
40862101918557963534066482883600550896370253820889209913291692236841013904266725
61970608784654269487517406080584849510569082853951194946963825015441354171047590
44080952278579700208312042248397818617878735748845348939021273487906319464820910
42635302153128898680067485836177026447551867612506998111807680885943466427184892
23983846062069222716521746227780436411365263794557738603035424374852556493126620
19139164826742277543541166489323899795766192657497505466917584410251433885565878
44625698795950222770751508780254441119717800742499873450426165196874697486625476
26779889810942096053990889613764153353632285024709576176352577209892408689320609
23786287598067820633588889354978103853769614233984653419554130833307623124707049
59787984258975536569351161739076034249229844215375302070251505012562623380211302
97787482830456722393907317991958501791031122612290622494592968463856748668398673
26761685175098221347826365975779657791618877486179176128080306812637453626859393
00285822573974528867373936385736554909999848019249844233451205848666308031120650
30808282206429346788611190158347295735259553495851567921036685372419145017609821
05923465448554545473411702100039560120073190674546636984263881304619418019430151
81840158949085675636606431145651053450571436887696122519398139116544019504961246
34572244634739594907350541378078841737761068681133019178458521431215241613716468
57163447518643871795184191943706942839974466076891707863388665778622984111018530
61071943288821590024419654370532193491230440897082712466875879775883677294292816
30370400807300495059523977738772604303177492592917884378766048939126279146351499
98962589437809628825938235850964671885291272325412249052150090203923108422443646
73006883772056677711926563937404249498395894072818255859079061566729370615263989
75699884012617444611804977831905330390695694607894852858436784185246985662125395
91546248902538418712660429461874826717409693343611481189818282834038459843409225
02493452013395770476405255788183181905034541651175096486962281272481776841686660
02346479378821327456061592753941706808486835208591031923388952966492362922181429
28621149715561234066260846872266517535617617809559994483100938214018940536068518
04968731748369731822391673915262817799638159296816618829508462305523272868795473
53105307448101978852612294675640579789709559281697891388804400163422053869694716
65121841049695765893234392370074917487399013877392727712946648300224361691937080
80313964118867758686482896562753978566351633450934201817626989905026136327233105
11342666973218852801459182986450071354015129124403974853163382054882439007904652
47670493394362278315988231818200265459027517283939429643369080148497380244067134
73779620406924339711248966369449611607396094401210260327665506707376916932137595
76355550386787445814156865801431467934865317204787350465556062056409411934191432
83055946077015368204281750862113316052599248093957482323621721829993227736534139
17027173839902445832060406842909099628077178736540495808924474193658169911071887
18386538715746061105597460956015608490135457803979730410862034250273384763171120
07965708354758167601611883011219047672019732784087757951195699774855679431192957
79286045689495345911125285522182927204493553649351659796534335979711817919929892
05828850477035175841951046874151253942771416071665949510369501116699830631506535
45076821824895289138128198314124574359755537136223677499188002180485868357195471
46499274673318362735691589681456628271693747600914427485822059226672095995121017
37737249650044826496885724261392617997493536766486440521531696464796840209272010
25785319857142538869591724041945744853112265908869039186484750175438361472778728
60325931922726988482773956497507800408839690029710444791312059068409256683764728
43584298019250101467386157273722303707216282725790426289970314867025687179949192
06235008099023434387415353691364788865629327192252979572199944385837453281582491
63764492161326181222191256487996772333546710593321719722998281324307809694113428
47158010910970350024560994112162531548149047572883538496134631186288310888594758
40634559563392141081059559270666839782323452250957211717161766386031797881470806
25852283547009177879061730499443493905956696704617726656101640787108634384432487
52271961988274175682456485728478269635368065829905999190478957476373066077029533
51316560520753779606991670174687565113119441962197082775266310905530682539243019
00278819534573087949921184700713587104049365634151812560611405430879493245208991
87805948662410271914526549712789820140129911060955332880114645744978544084273748
66985929783289749252084293039993339747603076078043718514560715440221377101055363
34407560463656107321559642749288593549814657733017363350546109551806785351188939
57431514201280369628847607369107568569691890572917365533408337303595478226017133
93264736618835289150038931696191413540664000391907797367118780782767125013505091
37429627650419189190317887132305887338780330248509925005416244583805781631064524
66132297981781569253331145547110916444011605337934076136718802170715852127206348
69071279070213187977056390883421374166689871737504536503480608536430802878616450
10013366072472746706917739691474293716648417062212935132684192887229519590480213
05500474042373741661133432249561828376017330848188971124837528438759908985312373
24958138299299545026476021199184651170864419111483389561689518091425442486320003
17731619920134101177333879604816888832441767532516640630748914767978096093229379
89601890251196667833609652522876516028357685724474297952867861742369781009758001
44990309821002187304829498643531528951364239264691924391146977180127430802032553
50033266785688790977886693877542215377209812899876044467246586783156308252871097
55366704577036886811885052760547999036414546024801708196302311310814795166180457
52330826814307902265922748652290810142554733555350159693224783163074221696896732
83017810260466833378723349926487066234666751235785764813779516831732757205278520
96812945017283591033151796749926021617744311274002240753957772721716687837750060
59636534345462155179159534302424666183284496586955258173266339568427845892193021
32209835969583979903948027071691397545936970134732648712344452487116794494874187
17613499749977237300859361063557886114853751127457033428905824721256340028769182
25068408449226508097471242071519923087388343323521579194467531795271764714065443
12592584572669701415909952741716610485850542285024062521272016716629074407776404
72918630366489042994499049043566362058509015151756221660722674053879333161521413
04646731900525547714593313420158503580204780530865377456796098482662800293878051
70861207522276446081182007974814343947452272885032561374025007827452399477242199
52658501179919525392052903293964974619350902452044456368593420992070880805655720
83763675917926124994497729320831922922575001561651791995804517696104516181980739
21647262785320171384623553324982922773993600760868552233624125513082036908852989
13549711860974642099466328266031356809927675123849273632899114397942772232676858
56482439362707249985234790429881412511816445675914824417521605787004631560461714
58202690913991426412929879024636295957276358823517659410407401719884236548148688
55877113532529988247314667773997789931022292422646196082607348144885618456445461
90524546567070719389089942698139513372823144534937204429310924811545714020005233
24834814426974360723620841011484083431587553985782245545894630946053448560612502
28041829448950502699001617994611496657420265598680419100601500883572781363580047
74327455971428777387371983124808108704317536432538624986919451592773524498915795
81883663658824735458868321246578688901144375726580559638772310368348850346974540
02810807876284711556934431557073379428361298850871535383725588716491955938382987
68206762867854362419338824293857692792201752267757686146509427777134793431266272
94865140014252284263021855596754819465118273915385927615035207864389878118197527
12185942153675229462038051249740521556575608257201801087236378398390196541822460
93302054038160565190094345531637875200994736102212221735903837243508166287004561
98259556140808112710826920160759027561439044326705457113356442185130590328269017
95838277662833410575257232946222875977344493640114351939180996540283700997324392
49026506068794520837404499651409433703115768653087066133822663877993483345144423
54658802678959531565302917537305853402254205016839675060284296533980521009076370
34755429635208922460850379500438071035274784278996744377152829718316169453165098
36517700777505450343415284315858820652969696337863317470688393640322639757838874
52815758512208658560015633134170489937023937389477656396839145836217967771088787
35008334373699692857687658528102105070370225350563413103030815184412121442918563
10275274348398299245575136998649730170921991996947804433781279619061858268660050
66093148357083319049176149818667342820546548587221426108245079748357564669453115
46207142302689477165692368937713016816564811354047677712676857374450211983945720
83337109633534392862113024851072969124144935787917271964470350507422818613736063
49954495247274487550556415804929062466379527332048249268456213971140507505815587
60276692669806524374816833904989432555847510784217639254298928560250461244585800
92943845657150142431095659301326216327951036208989201136761915746285296464148005
62301229135453888067806384190019301463623471431083647988288576063345117426840579
25032751792503589262580020074246523354946357405448619550757319367692757692480469
15885211809049366981552359411117400973870533251158465321629826505149027890721178
41709647463311008567647281820993445105204227210653902369814989486463787957535452
80747284716213714525923660653365408715374163277820747158572450391843453356071067
76313258069275080871945136846458821899727516712671581605220066835063393745249783
73572911232303847974002783623136632581160237888711269853562688013083605838481458
21959217122188163984097790401521448228979603379254515616056572861543392009257045
86443011709021748787431591465069846209721899661155595803245331330435515107376716
43240270217122053130245723609704059958893825715908157050415005363891285754007578
54194008811000886825606398919255879767939405299761059866690623831889641368090743
39588021970663549217971201503734447092563157997141506846539385887374006201781428
26300443345347506059574409267215772273096673970162519859657720161020958368667723
62439350115004474050340249870966662372209579646332256047160392108089018460290467
24174450059833684796196744052449034121481398055709056020537602310447818549768100
67593252093044822044477456162201715593156108794935470667418694559581824688078670
02892789786539279778881177200174803910963284536909084522336739014070981091152616
43983114757718282807964068872288425350774289574855991848160783380722133256016422
92766765507304948823302581559596312354680228605226119404156600893615874456573970
46071322464082550810089077639984133927199388420577951994481169803385118126468181
44204063368801317768560448503278043958383067546884849083969011433807277729757286
11525379695043489295070005016836344459438471984384286891004467412514384921965188
93508536853711540294272376589436561681323927264293769901642115960457109208823963
77918617603008723602984771282502928271702919118638674105696475718937255606665736
16388027400524716100585981673038324627018295154659018676618727548923760594443134
91442004906187512841223843168143016513682112049705846722633296559951507005250788
79652315665509670973620108399592075940876493160827760019918609395449984933326233
04194514897701591266059400543382923576624085170868335371963325017123701693213720
46171207167587894893593004496996557412683609063329375637321466984184411541635493
31289662662795134909317649003734383893894564705563752424933231254451448053804372
45186839728653269062818683321960364450697141838868344531372364311716542371080400
83243328650464629953091060234768554407691160840557599895646776589326158502888626
95093946950841707745546807651877190350743560401503020473017491675685146720675880
11077277294776989715128286978288137975095117314877622912636722030704037644371447
12639722173830526216343623544386789092045453799292390544667061353731623396861836
51457922795758199366425762915533089090122941836059424219554377217075263264850656
66635549353142234378179627142112462741935550513519550210079847024059410121764263
32323881093706661150088316537136698571288280812906034159704316641819036941159034
24578439303243691143127397153442104697203474353578259236718745470374037744434526
81399423114963973636623839785188046363039523755515162264766663258068553488747586
10808917265196326743412534537439580321952336816273251703117604350046904633694354
02750790112255381085004515779205620886382384153785314144815014490841220430333870
41607439707662731928836123323309498556322697987634876857211817218729688109555993
21243809626590549102245430934816334784448773026390511828217544824095156052502607
22476039039620877230432412952854375769449161043577322596297183580191841655080567
18269337952898810585494173721616939981058876544349629646119285641864601572811606
51555767241414562670362676425674865381426562812453151650152527834926023630254423
59336281742202092471412146372260757937038868462082678045390882564505667286129963
48290712145134000888719395947560352816030272393038058771575753842180698153592840
12868382016386648318245495444655291456051808318559417268412472141349921936069125
15563593094758465888493340543241053623346067663801262929333694602870097664662206
44308861055879873290920336310191290733678662525913659950458760781748661819799980
15826686215647333680673156329047442880266047918805426181018310255844819352452448
04715000106373825951139818409671505525698391233769005858053776417011133758272170
97441558526326087386416047118206648645488426839204666665860842628149774252799332
69645975614418956641951441280530335801762307164591746881014919970884278756369074
15450642449676350997314024440805016491211564762509059662031177621791080067506362
51137006750971128989060167038063960538927095040631044834180753717077271853189326
22603893752132672901172612550653354308217442263492649361841839096121713145830991
86474817043639140117937486272152486153233546194225964965991518760701364775515307
59880874707827412026928237397199458421316007710683748894630887090624160699889198
46643217164887859031946221829205050122174909471695898491992408807441007742806623
80256952689654659344134628241604377376766816631279840061507505479553858634220363
73754554456977407831655671040296716499621179956412803444733673745305790060288533
64366135409979869799848242547924723763703195367912815095022470577723001585956754
45441866378307541306830908258017430192931045177584379752399567428282132129911824
46921960431422248238232870188885475090982779815623878182299713879819779201427217
64733059873843875386242381664097294266220605470599139611497024904029301664786578
25096696210831354366743492949727510330293301435818051838324761058839943918178958
37892206743634576307653253819749119307127029372921479155329290895724626487888139
93466964575527653933783822779499107436422989733532286890079167807851392855925948
39540766272768676224690362586420608512559166658656754738653382603580114752908379
97664952680316983958051997616485928572697598871151243179743859707356404233850471
64499930233484630144336684556377143192586071168302558843497585416705915192240716
58616496843016751828533195385867010376858918170429608016113324924556816845028629
18038897511422960267124241862679667524027514587190914731164005782899775423042816
23899580665414030733236445148887289787119078716499983046175899833156446197863976
24516755131912373252080297684990480783333772988490105246764005759480730760871685
07686997428923430627328316581255051485282843814512091914859105853974788460590988
99283125576822022188393411387960483401281556871795508190664133850168609213125166
18719737227313776192068260376940687098859314043494639897393419676196710438245690
15093163255581337874575505941201123645050132052614029557078213662304313114937521
04831263528570277931357113349500274457448922593149877862154459620264197363835672
59059947637446054073503746029613498819767190367999424228584505354056380057953819
68974805131551690989037491630693110771459439017109473379520272021892113634297218
32469888271201585152471749941842031245600185518143014033040761921142135229442577
75724215412324346950922547812372689474213264558926224555977777864077774634668349
39547579192987951991585053528037029228248451499078618675785427344481766565592027
00818438671835028233652517686994415285988249230676148740222956909443347754341107
21802482207262426973523549103344759511312659696931850299725844626483269699391103
82172924508378383947226549246372427504829040624024590855464764700518056547115264
53432252871210669997829165583650848695100843732459390428655664042469212059261475
50664117183664952040366764322255083767336416162101730744224138052839004500388256
76049506897471281441347277689190777323006121537374201807829200561488208124699062
65994182977216632977996037447682923093629847337301734135755316693428058963247147
86932232491439837961458458752435203608435196046715975129810138697299523746407919
73145671014022067370034513073104498054001707325825688577886227874969740134834074
65382788272976555339636008147212638156922269666610203413281059102822852933922846
07256267074382258767041243091398478044717246944164565770914464360869965846702888
16268590428197347275642144893486042022815591703227714322397246419316283932633168
04043039610414234189217437107205577154345708453306563735245631278925120972560997
97587937291910070994146679137297653075496697221970537370405487816762393045334994
68280496403520119946286585492085389389880306515127658442114183585752208493895434
09213369318681076564967338986003934416036614878962859606357176948147306305422186
82862132173298787291572287397070420168507646296946917201759693326670393930829712
40882862286967886382201159954308267628119112432983871405742323249618316787960379
66455174870380993568117777263640633205568154604749991744730654753288688217584067
02700291519441948916930071339494743405771297386878264092625153584598065224694338
39856544055809506989990906388156327174630168683168598073978845632666607850094336
44818018144454786647274454387023038088603006842917345948696960967357484249054418
52904655649330181794002143973789949334708292826841876952281056488949002119786861
00649457404936691356925226697715142980249805059004718035532178903095967786247852
72192231699220948595772441603461387836837311590757176740511647143741989871227673
70790911250986876240328777940473410549323231211021887336329455790120884858314873
52306640326352585581309112278153988730730710596232672275465075031295060279685601
06093556661517546246912328813998872851999823262170645692261269340815043416870896
73942295525610783886270567877165263900898184719492000764928572323171490142924648
84669702386743667239706345492197079982502410104379315121849027662981191862905210
42378729504630852239315335110852292273799640970301891425304785740925893195329445
79909201623793738832884810436420638053411118374710748124077704997483036985021232
49291721184595766361872212537945754487437901356415191156393168964050507290496555
87191256063297708887308863643394924293096860597047919811696266131330105634275166
01558126916150047736606249307813724630793803642484010078663983507209853259137392
68033043936629856581443545776444090390479724786350285147741329723344614606105745
42034064239610130381458420011169474105111269599596831625379983759471644682512214
04499900259237093411767040164834003808361099936539564212142872780584803705049845
87929758524986491888218903998179628419534349483014646075292794509353469346065560
85961524039674475440143415860537803961821676556923023814477733716334799097975346
73096897241372133040677270203922808959584589849806516640109843840372559216647454
74841098786723472081040766453463020319613345390680818639932832298587507681153716
19337286087515339594555476568862372655068062018226495577745360835424139993151958
65518430900737481989415642908312074194988720771482735508036850818201220107760342
52945010688546210796501173026539984086531344818128225475585347568428817876355185
77669844672132408051846062187514640140241722335836560049068369465990307185553596
92205368183159716089676056125040375130859542249273889158711512568462774236154768
77515405151447701484018222713122212148404413471630656076932197965519699808363255
30297168723328031010624800048179448178747430931486961066146874610249188531051725
81872787423027374061326150762527359422011511883264829303317398991628841997551816
45456012912545545142444676549111855810244663365641615586654661464702771597511760
59581300760709437069598841089345599136877870294815381844160184768109911082603698
79490148231455337828996107724474198666501528743049932380407758032683453389843820
41458393440073485389922903621665050818341165213465685732070213550348850071073951
87982347118399771770766272661874089582712159683634698200731399369168688103899525
55975990218528203971506014710715532111584374885525813986569701822693879203163729
40435526841329894884826871728857655248191298059661806401647786378777556504433459
80847057464667216782194195086734726838747665832998427245161354573314323634783415
83832131953116186720372880800966135006173307092059467150153491076813192610907954
78632488757902677492964085904901754621011418542317461812156511909435273846072320
65798788308679368094466071799664247586070104651559756212210546075366432044098252
12830896069916910439263766884839682957758452474322222263392259848813772336647608
38156440176056501618163664251203808901536762893954658014140315194240658252106320
94567982859506777596354097265605990916336963395754060127989375290825957767671899
41650568028983206673363582458019951008994379591465006887068785366425441649832047
88386454657655442299422798163787287475022123198718090060584387348112376133002559
42096242586396696864334611766686452065612946360825819739788813619598450050228879
63623338150754737418463917849115361664447022972567860223255298540387206151354622
51214152006988106129040715514815000245639590610137594638237973765495795770163961
78034847698258893711710881429616178845301102603564007277336494437248656814693288
28310169426018249905299551527463304425886439800164130716107179386617535385627867
47583898557905808130269126614346497943920439389671381480642621056183327738612309
25993260700096668542432824681062619596166240823015852635965406975858765798239119
27041620269768019460183124860668955546936700963759382968192753590130119729003546
33922824834112071973628856089563442628416136168773483939639406823497618397491096
17901648364549513967508930901288867852989301313654529408458152353446781756974352
78353248426734771876565008827517225644029328253968025450987953220214565940021387
09862123170905374744473319505449965864966018806408618327471008694561776248625342
35337852803323000845154185050674545307531126682603598468372207309441884992320209
65154084481032469126786659154227769420968001892703659216008225756851944770628505
29848525172924409455742954667218902021786651904632160522857910946060101321950460
43136371536704392523392260001502683089057009582725593336853982789029031484086636
16545016853377898998753781898179762783346040803208879322785095478051374852807844
75578846440549048653222473559312411854265233908040543653620110771757323580491995
57055190696025666937593927820272718362974627463277033879377690356023260294472043
75270328416547181219636122622460509980794099390813429311979555383863924582821102
70718781871110628252674821165912723294905623264878919010476251289066628509057487
52348466534916860544986232876982377130911711005653107831587639305641004119984733
57604589478189651836805670027381243979956084202498653440209187506049419422194140
64588101375029141594909949451507939862830974053438420026369627665813570641610512
19895670983405329125416029173158685296802027123644419185718485166542360660996832
18986375936593883477506686595556502185864202343961494999726355857446378064924130
17414695803691463773956170038394613681356654046653486036302450617246184837101076
30340038025923681220430096729003031674059605358568536670388520686629117574362842
51572930255956836208077238624190024595791492421688254628664762711109115250795073
20781450631753570804653103181345902267337598106868783153176830333703360995416482
88693078059004926364296159823288245117720570855659082918624405818101565254797256
77871192422163872125987129351367929278720078857496410310079971083640493251632303
74760355650942698935323193604807905428225052420140640036543210288192413788651265
40765317686863097121376725757904568652395072094191012245241460271251525101702542
88413809088585361371635861213137968300299195450960043855310359184012067549812640
16822674866375215081504805577485893443243904191277593881087113298012943747321804
33026993552382655718547751732331453900706370822879192836195787067966075876391835
19016748582994613938259425978741773779604600904562543485880254062896611446132123
67426964908705339585026770976823411296756159915318386210714762389527311936749267
77693341391521466239203649584539035891444911324695929511318015949172608774877084
97091328362674542246604358692882982654578403946184171515799991860812715323388332
26914501504937198645121369731503088685400043264946309728708273705825126045540246
32044491483117497529383973398137682161953670658131612608567061179983138431409042
35799572329473503694511598712021592347522337689592061524659907755840347569552564
10509846287542522499450539592502992102811503637111498418716435504480623023396199
23956769988679852377347912602755310065395772665598133090728685345917871668247166
93298406511149335931447130286854417517720515464258367687871415786700059041069071
36410396613566607287216856239681011869525760460347774255363829812883477872407875
34447028787827984619708214354789465167261673940831082624137449350586277198121186
73189228542730886591983506386778975909728980827833956419913639395067060293632235
58011717794067018077043414148042033552181412171962144247050624702180424368979046
45534309771251638903171987616419291141714832275703437862050192453130087730631745
72567913664336993666742526479807090343216731789397719627321441719802114794795577
83071870251644677130136865842666907756502797736944896081606079482550545281967033
28314890498949040767064104636515906499369769423516852766186003873978347335946209
46708330125025394675022991831845644268507263719628034247936007671360850353331042
30906308462501601787561424592171392495884334158566449012525193165878558892535034
37353942964486836397279545642399708759925151290819610755706612455001150318013631
42783363862621854748690600252898226943921314717037496059932603069297482286240541
51321510838902547676810954906758533791767592063618062373164288972131012010743627
59652553515510440481456378229170834537794949471724279680790516649104936964703254
16565876523614286932959696078044683860356157989535631448213690381796206853786367
44904447893742584580537631847765825212610689411057649345860057884451250729278420
37402849344344213764286303534078309005750694788582512290732968577591601975048486
17268920990448306256621669058533545814121195612279322647695018548523600546104421
22013449894719652812987467045120325220580499648529974613080853913637422022281617
17692106903125481158673939593391564371198942605011800167182340080996335500532585
66075699370866348282011397833940203237359429452766403213057655809824306526802660
77299117125952162681346129598529611429730356502321147474013870581918208842864708
69738429037407995094688027024156642563834975656078731925532149450627379612540802
07462171310791825510162134917384177404166807004753645273818281450924814783685868
53331312319551195641174254958579423455469841862464394560618086279285500465600105
11067806886677942319517636658449756283913375729365360437774500109403059389270472
18421272450818314975038162932548606072878851895583521984911009702416932222288540
12821527420404214166024305792280039599458775293980757296942016856420123259288921
6070656505593304577260386889

Извинявай ако се е получило малко дългичко... питона ми го изкара за около 3 секунди... за 9**9**6 просто не ми се чака...
Активен

artanis

  • Неактивен Неактивен
  • Публикации: 589
    • http://free.hit.bg/artanis
SAX - една чудесна технология
« Отговор #14 -: 26.08.2004, 13:16:00 »

г-н Цуйка,

>Знам, че информацията трябва да бъде обработена... обаче трябва ли ЕДНА и
>СЪЩА информация да се обработва ВСЕКИ ПЪТ по ЕДИН и СЪЩИ НАЧИН?

Може ли да дадете Вашето предложение за обхождане на дърво? Изобщо ... знаете ли какво е корпус и за какво говоря или си знаете наизуст. Бихте ли ми обяснили как ще съхраните текст на естествен език в релационна база данни, за да го обработвате по-бързо?

Аз си признах, че написах една глупост. Мисля, че сега е Ваш ред.

За повече информация какво е корпус, за какво служи и какво можем да правим с него: http://pers-www.wlv.ac.uk/~in6093/lectures/cl/

Атанас Чанев
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #15 -: 26.08.2004, 15:08:00 »

OK. Прав сте (всъщност не знам, дали сте прав, просто ми е по-лесно да ви го кажа, отколкото да седна да дълбая в поредната област от информатиката). Аз съм тъп кон с капаци (питай sasquatch). Обикновено гледам да разбирам само от неща, които могат да ми платят наема. Лингвистиката (за момента) не е едно от тях.
Просто съм си измислил няколко начина за ускорено четене на (сравнително) големи XML конфигурации, които не се променят. Във вашия случай явно това не е нужно, така че явно няма нужда да ви разяснявам как точно става. Ако все пак искате да разберете - моля, чичко Google е на разположение.
(Между другото досега не бях виждал на английски този пасаж от Пътеводителя   яко)

Та като дръпнете правилата от всяко едно изречение какво точно правите с тях? Предполагам, че бая от тези правила ще се повтарят? Пък и бая ще липсват... И доколкото схващам цялата идея, е да се извади граматиката на даден език като един куп правила от корпуса?
Хм... дали по тези правила ще можете примерно да познаете стила на автора... абе... ваша си работа... аз отивам да си върша моята...
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
SAX - една чудесна технология
« Отговор #16 -: 27.08.2004, 16:47:00 »

@Artanis: Сещам се за един начин за съхраняване на въпросния текст - след изграждане на структурите които описват текста може да ги сериализираш и да ги запишеш в БД или файл.
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #17 -: 27.08.2004, 17:52:00 »

sasquatch тфа беше и моята идея. Обаче artanis прави нещо като ония неща дето Стоева ни ги разправяше - рибозомите ръфат ДНК то по дължината му и отзад излизат белтъци. В смисъл той чете XML а и си генерира правилата в момента. Не го зарежда целия май. И затова толкова се е впечатлил от SAX. Не че не може пак да се оптимизира за многократно четене на корпуса, ама явно целта е друга...
Кой си играе да markup ва толкова текст... ума не ми го побира. Вчера намерих един корпус (всъщност бяха много в един tar.gz файл) и като го разархивирах - 80MB   Всъщност май се сещам кой си играе... разни студенти, на които трябва да им заверят семестъра...
Активен

Райчо Мукелов

  • Неактивен Неактивен
  • Публикации: 486
  • I snuggle with subwoofers
    • HULTIG - Human Language Technlogy and Bioinformatics Interest Group
SAX - една чудесна технология
« Отговор #18 -: 28.08.2004, 00:41:00 »

Като за начло - не мога да не се кефя че вече имам 192Kbit интернет откакто Евроком пак вдигнаха скоростите (който не си е рестартирал модема да не се услушва).
И така -  парсването на 80 МБ XML не е шега работа и съм убеден в едно нещо - обхождането на дърво от  Java обекти да речем, които се десериализират от файл ще става по-бързо, но има един проблем - трябва да имаш бая RAM (аз имам 512 ама тва не значи че трябва да я хабя, и сега се сетих че M-tel пускат нови SIM карти с 64К памет - точно колкото на Правец     ), нещо което SAX ти го спестява, все пак не е невъзможно дървото да се раздели на под дървета които да се сериализират поотделно, като отделни файлове и да се реши проблема с паметта.
Малко в страни от темата - Цуйков зех да разучавам ядрото на XML препроцесора/интерпретатора който го е писал колегата с още двама типове и почвам да се шашкам - доста гъвкаво е наистина с около 500-600 реда PHP код и още толкова XML за 3 седмици почти направих една система за управлени на опашки със разни задачи (пишем си го за фирмата), има слой който ти дава пълна абстракция от базата данни и изобщо не я мислиш, ако ти скимне си го пренаписваш за някоя друга БД и изобщо не се връзваш за конкретна. Има action-и подобни на Jetspeed, система за сигурност с контрол на достъпа на ниво поле от таблица на БД, собствени сесии които са малко по-сложни от нормалните и не ползват cookies, една камара XML тагове и атрибути който се рапознават и обработват от ядрото самия сорс е просто супер минималистичен и изчистен (макар че скоро се очертава версия 3.0 поради появата на PHP 5), всичко е написано на 100% в съответсвие с принципите на ООП, доколкото го има в PHP до версия 4.3.2 (като изключим handler-ите на action-ите който са си обикновени функции, а не са обекти), има си валидизация на входа и форматиране на изхода както при клиента така и при сървъра, използва транзакции на всяка стъпка винаги можеш да цъкнеш бутона "Назад" и да не насереш нещо, има модул за генериране на PDF файлове абе изобщо съм впечатлен и наистина е професионално написано ядрото - в офиса има една система базирана на това ядро която се ползва и на други места и служи за мониторинг и управление на бизнеса на фирмата изобщо толкова са напред тея пичове, че почвам да се учудвам понякога - тва ядро са го започнали още преди 4 години и е общо взето дебъгнато и продухано отвсякъде. Като добавиш XSL, с който си визуализираш данните както ти е кеф и става направо идеално (забравих да спомена че има кеширане на структурите от парснатите XML-и и се ускорява работата тъй като не е необходимо да се парсват всеки път XML файловете щото не се променят често). Тва което ми е интересно на мен е че са решени генерално някои въпроси което ти позволява с минимални услия да си изградиш произволно Web приложение и за порден път ми показва колко е сложно Web програмирането понякога.
И накрая силно ви препоръчвам ето това четиво:
http://www.catb.org/~esr/faqs/hacker-howto.html

[This message has been edited by sasquatch (edited 28-08-2004).]
Активен

Цуйка

  • Гост
SAX - една чудесна технология
« Отговор #19 -: 30.08.2004, 09:55:00 »

Rayman и аз пиша подобно нещо на Python... ама още не съм стигнал до XML а. Засега си направих само управлението и средата за изпълнение на action ите, user administration а и простотията с event ите. Имам си и идна системка (bookkeeper съм я кръстил) за абстракция на база данни (нещо като Torque, ама не толкова advanced). В смисъл СУБД няма нужда дори да е релационна - можеш да си пишеш във файлове по диска ако искаш, стига да им направиш интерфейс към bookkeeper а.
За сега action и те ми връщат template, който се изпраща на потребителя. В смисъл ако реша template а да е XML - никакъв проблем. И честно, системата за намиране и стартиране на action ите (заедно с необходимите им параметри - сесии, адреси глупости) е не повече от 200 реда код. Като сложа и скелета за action (от който се наследяват другите action и) 200 реда - имаш горе долу мини Jetspeed (без Turbine и портлети) в около 400 реда. И сега ми е супер кеф... само си пиша странички   Абе бая неща можеш да си направиш ако имаш правилната инфраструктура.
Активен