Portál AbcLinuxu, 10. května 2025 03:06

Dotaz: kľúč k určeniu rastliny

1.5.2012 12:40 adrinko | skóre: 22
kľúč k určeniu rastliny
Přečteno: 595×
Odpovědět | Admin
Ahojte, potreboval by som sa s vami poradiť pri nasledovnej veci. Chcel by som si spraviť kľúč na určovanie rastlín.

Vyzeralo by to tak že by som mal napr prvú otázku "Aký kvet má rastlina" - pri nej by boli 3 odpovede (žltý, červený, oranžový) a keď si vyberiem červený, určí mi to rastlinu "ruža". Samozrejme som tento príklad veľmi zjednodušil, kritérií a otázok bude viac. Potreboval by som od Vás poradiť, akú logiku by bolo najlepšie použiť v databáze (číselníky k otázkam a odpovediam a tie nejako previazať?). Použitá logika by mala byť vhodná i na ďalšie rozširovanie, teda dopĺňanie otázok a kritérií, aby sa to dalo kedykoľvek doplniť a rozšíriť o nové druhy.

V zásade táto otázka nie je špecifická pre programovací jazyk ani databázu, lebo je úplne jedno, či to aplikujem na php+mysql alebo python+firebird, alebo iný jazyk... Budem Vám veľmi vďačný za nasmerovanie na správnu cestu. ďakujem!
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.5.2012 13:55 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: kľúč k určeniu rastliny
Odpovědět | | Sbalit | Link | Blokovat | Admin
Správne. Potrebuješ vytvoriť logiku katalogiácie. Teda, správny model databázy s číselníkmi, a k tomu aplikačnú vrstvu obsahujúcu procesnú logiku testov.

Školský projekt? Dosť pekný námet.
1.5.2012 22:56 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: kľúč k určeniu rastliny
chlapi vďaka za odpovede. Musím si to nejako premyslieť (tú logiku databázy), lebo zatiaľ mám v tom akurát mišmaš :-) Mohlo by sa to podobať na školský projekt, ale vlastne mi takúto myšlienku vnukol kamoš, s ktorým sme sa bavili, ako by také niečo šlo spraviť a začalo mi to vŕtať v hlave :)
AraxoN avatar 1.5.2012 14:11 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: kľúč k určeniu rastliny
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslím, že presne na toto existuje odbor informatiky, ktorý sa nazýva "expertné systémy".
Josef Kufner avatar 2.5.2012 18:14 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: kľúč k určeniu rastliny
Přesněji data mining (vytěžování dat).

Pointa je v tom, že si na základě známých dát (popisy identifikovaných kytek) uděláš (natrénuješ) model, který pak bude umět uhádnout neznámou kytku dle popisu.

Na tvorbu modelu je metod několik a implementace těch algoritmů už existují, takže si je najdi. Mezi ty jednodušší patří například rozhodovací stromy nebo různá shlukování (K-means). Zajímavé jsou také neuronové sítě.

V první řadě doporučuju vynést data do grafů (viz článek o K-means) a podívat se, s čím máš tu čest.

Jako lehký úvod by mohly posloužit slajdy z přednášek.

Také by mohlo být zajímavé vyexportovat popisy květin do e-mailů (mbox) a pustit na to spamassasin.

A jestli si chceš hrát, tak začni tady.
Hello world ! Segmentation fault (core dumped)
xkucf03 avatar 3.5.2012 11:51 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: kľúč k určeniu rastliny
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi bych to neřešil jako průvodce (posloupnost otázek), ale jako filtr, kde by byly vidět všechny otázky najednou a uživatel by zaškrtával odpovědi a tím by se mu zmenšoval výběr, až by došel ke konkrétní rostlině (nebo několika málo, ze kterých už si vybere).

Použil bych (více méně libovolnou) SQL databázi. A pak je otázka, jak moc obecně to chceš udělat. Jedna možnost je, že z kritérií (barva květu, tvar listů atd.) uděláš atributy rostliny (sloupečky v tabulce rostlina) a pak budeš mít vlastně jen tabulku rostlin + číselníky (barvy atd.). Druhá možnost je obecnější, vlastnosti rostlin nebudou zapsané jako hodnota sloupečku v tabulce rostlin, ale jako záznam v tabulce vlastností, která bude propojovat rostliny, kritéria a číselníky.

V prvním případě budeš mít jednodušší a na první pohled srozumitelnější SQL dotazy. Ale zase budeš muset při přidání kritéria měnit i struktury, ne jen data (což ale není takový problém, akorát v aktualizačním skriptu budeš mít kromě INSERT příkazů i nějaké ty ALTER TABLE).

V druhém případě tabulky měnit nemusíš a můžeš přidávat kritéria klidně i za chodu (nevím, jestli to je potřeba). Bude celé řízené daty, takže se ti z nich vygenerují i formuláře a nebudeš muset zasahovat do kódu aplikace – což jde v prvním případě udělat taky: budeš mít nějaký metamodel aplikace, který bude říkat, jaká kritéria u rostlin sleduješ, a z toho metamodelu vygeneruješ jak databázové struktury (příslušné sloupečky v dané tabulce), tak formuláře a logiku aplikace. Může to být třeba jednoduchý XML soubor, ze kterého všechno ostatní vygeneruješ pomocí XSLT.

Nebo to udělat komplet v XML (bez SQL) a výběr rostlin filtrovat pomocí XSLT nebo XQuery. Záleží, co je ti bližší a v čem se ti bude líp pracovat. Dat asi nebude tolik, abys musel nějak moc řešit výkon, takže jde spíš o to, jak snadno se bude ten program psát a rozšiřovat.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.