abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:22 | Zajímavý článek

    V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …

    Ladislav Hagara | Komentářů: 0
    dnes 00:11 | Nová verze

    Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.

    Ladislav Hagara | Komentářů: 2
    včera 17:44 | Nová verze

    Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    26.4. 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 12
    26.4. 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 9
    26.4. 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 44
    25.4. 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 14
    25.4. 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 3
    25.4. 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    25.4. 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 858 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Generátor pseudonáhodneho textu

    17.5.2015 20:00 | Přečteno: 6832× | Programovanie | Výběrový blog | poslední úprava: 17.5.2015 20:10

    Programátori občas potrebujú aplikáciu naplniť na prvý pohľad normálne vyzerajúcimi dátami. Dnešný blog bude o tom ako si jeden taký generátor pseudonáhodneho textu napísať. Drobná ukážka výstupu:

    Všade vrchol sa neuvedomosti. Môže posledného jed svetluškázal sa v netuácii najprv pamätať z odvalo si aj z alebolo práca, ne odlo pre hadzoval postupostupneskôr z do tútovať dočkať hrať. Slnka sané planétam naprogra!

    Zadanie

    Mojim cieľom bolo vytvoriť generátor, ktorého výstup sa na prvý pohľad podobá slovenskému / českému jazyku. Mal by preto rešpektovať väčšinu pravidiel pri písaní textu ako napr. striedanie dlhých a krátkych slabík, striedanie spoluhlások, samohlások a interpunkčných znamienok.

    Realizácia

    Základom pri implementácii generátora bude analýza textu v jazyku, ktorý nás bude zaujímať. Pomocou ukážkového textu sa bude generovať podobne vyzerajúci text. Pre ukážku som si zvolil text z pridávania komentáru.

    Pokud nechcete příspěvek ihned publikovat, použijte tlačítko Do konceptů. Můžete se k příspěvku kdykoliv vrátit a vydat jej, až budete spokojeni. Příkaz pro publikování odloženého zápisku najdete v pravém sloupci v části nadepsané Správa zápisku.

    Text sa najskôr tokenizuje na slová a tie sa ďalej tokenizujú na slabiky. Z takto predžúvaného textu sa vygenerujú pravdepodobnosti následnosti jednotlivých slabík. Generovanie textu bude realizované výberom jednotlivých slabík podľa poslednej slabiky.

    Tokenizácia

    Pomocou regulárnych výrazov je pomerne jednoduché tokenizovať text na slová:

    import re

    input = 'Pokud nechcete příspěvek ihned publikovat, použijte tlačítko Do konceptů. Můžete se k příspěvku kdykoliv vrátit a vydat jej, až budete spokojeni. Příkaz pro publikování odloženého zápisku najdete v pravém sloupci v části nadepsané Správa zápisku.'
    words = [word.lower() for word in re.findall(r'[\w]+[?.!,]?', input, re.U)]

    Premenná words bude obsahovať nasledujúce slová:

    ['pokud', 'nechcete', 'příspěvek', 'ihned', 'publikovat,', 'použijte', 'tlačítko', 'do', 'konceptů.', 'můžete', 'se', 'k', 'příspěvk', 'kdykoliv', 'vrátit', 'a', 'vydat', 'jej,', 'až', 'budete', 'spokojeni.', 'příkaz', 'pro', 'publikování', 'odloženého', 'zápisk', 'najdete', 'v', 'pravém', 'sloupci', 'v', 'části', 'nadepsané', 'správa', 'zápisku.']

    Pre rozdelenie slov na slabiky sa dajú použiť rôzne knižnice používajúce slovníky. Veľmi jednoduché rozhranie má napr. Pyphen.

    import pyphen
    
    WORD_END = '\0'
    
    def splitword(word):
        return re.split(r'-|([!?.])', word, re.U)
    
    
    dic = pyphen.Pyphen(lang='cs_CZ')
    text = []
    for word in words:
        text += [i for i in splitword(dic.inserted(word)) if i] + [WORD_END]

    Výsledkom premennej text je:

    ['po', 'kud', '', 'ne', 'chce', ...]

    Spočítanie následnosti slabík

    V tomto kroku vytvoríme jedno pole so zoznamom všetkých slabík v texte. Pracovať sa už nebude so slabikami ale ich indexmi v poli. V zozname sú zároveň aj špeciálne tokeny (začiatok / koniec slova, interpunkcia).

    TEXT_START = ''
    SENTENCE_END = ['.', '?', '!']
    WORD_END = '\0'
    SPECIAL_TOKENS = set(SENTENCE_END + [TEXT_START, WORD_END, ','])
    
    token_list = tuple(set(text).union(SPECIAL_TOKENS))
    

    V premennej token_list bude:

    ('', '', 'ci', 'chce', 'vá', 'zá', 'žij', ...)

    Slovník pre vyhľadávanie indxu token_list_search = {s: i for i, s in enumerate(token_list)} bude vyzerať takto:

    {'': 0, '': 1, 'ci': 2, 'od': 64, 'pra': 34, 'vá': 4, ...}

    Nasleduje spočítanie dvojíc za sebou idúcich slabík. Pre každú položku poľa token_list sa vytvorí zoznam [(id nasledujúcej slabiky, počet výskytov), (id nasledujúcej slbiky, počet výskytov) ...]

    token_transitions = [{} for _ in token_list]
    
    lastword = TEXT_START
    for s in text:
        if lastword in SPECIAL_TOKENS and s in SPECIAL_TOKENS:
          continue
        new_idx = token_list_search[s]
        last_idx = token_list_search[lastword]
        token_transitions[last_idx].setdefault(new_idx, 0)
        token_transitions[last_idx][new_idx] += 1
        lastword = TEXT_START if s in SPECIAL_TOKENS else s
    
    token_transitions = tuple(tuple(v.items()) for v in token_transitions)
    

    Kompletný kód pre generátor databázy slabík je tu:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    import pickle
    import re
    import sys
    from io import open
    
    import pyphen
    
    
    TEXT_START = ''
    SENTENCE_END = ['.', '?', '!']
    WORD_END = '\0'
    SPECIAL_TOKENS = set(SENTENCE_END + [TEXT_START, WORD_END, ','])
    
    
    def splitword(word):
        return re.split(r'-|([!?.])', word, re.U)
    
    
    def get_hyphen_text():
        text = open(sys.argv[1], encoding='utf-8').read()
        words = [word.lower() for word in re.findall(r'[\w]+[?.!,]?', text, re.U)]
        dic = pyphen.Pyphen(lang=sys.argv[3])
    
        text = []
        for word in words:
            text += [i for i in splitword(dic.inserted(word)) if i] + [WORD_END]
        return text
    
    
    def main():
        if len(sys.argv) != 4:
            sys.stderr.write(sys.argv[0] + " input.txt output language\n")
            sys.exit(1)
    
        text = get_hyphen_text()
        token_list = tuple(set(text).union(SPECIAL_TOKENS))
        token_list_search = {s: i for i, s in enumerate(token_list)}
        token_transitions = [{} for _ in token_list]
    
        lastword = TEXT_START
        for s in text:
            if lastword in SPECIAL_TOKENS and s in SPECIAL_TOKENS:
                continue
            new_idx = token_list_search[s]
            last_idx = token_list_search[lastword]
            token_transitions[last_idx].setdefault(new_idx, 0)
            token_transitions[last_idx][new_idx] += 1
            lastword = TEXT_START if s in SPECIAL_TOKENS else s
    
        token_transitions = tuple(tuple(v.items()) for v in token_transitions)
    
        pickle.dump((token_list, token_transitions), open(sys.argv[2], 'wb'), pickle.HIGHEST_PROTOCOL)
    
    
    if __name__ == '__main__':
        main()
    

    Generovanie textu

    Zoznam token_list z predchádzajúceho kódu obsahuje momentálne dvojice (nasledujúca slabika, počet). Pohodlnejšie bude expandovať pole typu [[1, 2], [2, 3]] do podoby [1, 1, 2, 2, 2].

    from itertools import chain
    
    token_transitions_idx =
        tuple(tuple(chain(*[[v[0]] * v[1] for v in val])) for val in token_transitions)

    Generovanie slova s takto pripravenou db vyzerá takto:

    word = []
    current_part = text_start_idx
    
    while current_part not in self.stop_tokens:
        parts = self.token_transitions_idx[current_part]
        current_part = parts[random.randrange(0, len(parts))]
        if current_part != word_end_idx:
            word.append(self.token_list[current_part])
    return ''.join(word)
    

    Tento kód vyberá náhodnú slabiku kým nenrazí na koniec slova (tj buď konštanta označujúca koniec slova alebo interpunkcia).

    Kompletný kód generátora obaleného do tried vyzerá nasledovne:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    import random
    import pickle
    import sys
    from itertools import chain
    
    
    TEXT_START = ''
    SENTENCE_END = ['.', '?', '!']
    WORD_END = '\0'
    SPECIAL_TOKENS = set(SENTENCE_END + [TEXT_START, WORD_END, ','])
    
    
    class TextGenerator(object):
        def __init__(self, token_list, token_transitions):
            self.token_list = token_list
            self.token_transitions = token_transitions
            self.token_list_search = {s: i for i, s in enumerate(self.token_list) if s in SPECIAL_TOKENS}
            self.stop_tokens = set([self.token_list_search[w] for w in (SENTENCE_END + [WORD_END])])
            self.token_transitions_idx = tuple(tuple(chain(*[[v[0]] * v[1] for v in val])) for val in self.token_transitions)
    
        def __generate_word(self):
            word = []
            current_part = self.token_list_search[TEXT_START]
            stop = self.token_list_search[WORD_END]
            while current_part not in self.stop_tokens:
                parts = self.token_transitions_idx[current_part]
                current_part = parts[random.randrange(0, len(parts))]
                if current_part != stop:
                    word.append(self.token_list[current_part])
            return ''.join(word)
    
        def get_word(self, uppercase=False, include_stops=False, min_length=1):
            word = ''
            while len(word) < min_length:
                word = self.__generate_word()
            if not include_stops and word[-1] in SPECIAL_TOKENS:
                word = word[:-1]
            if uppercase:
                if len(word) > 1:
                    word = word[0].upper() + word[1:]
                else:
                    word = word.upper()
            return word
    
        def get_sentence(self):
            words = []
            word = ''
            while word[-1:] not in set(SENTENCE_END):
                word = self.get_word(uppercase=len(words) == 0, include_stops=True)
                words.append(word)
            return ' '.join(words)
    
        def get_paragraph(self, length=None):
            paragraph = []
            if length is None:
                length = int(random.expovariate(.25) + random.randint(5, 10))
            return ' '.join(self.get_sentence() for _ in range(length))
    
        @staticmethod
        def from_file(filename):
            token_list, token_transitions = pickle.load(open(filename, 'rb'))
            return TextGenerator(token_list, token_transitions)
    
    
    
    
    def main():
        if len(sys.argv) != 2:
            sys.stderr.write(sys.argv[0] + " build_db_output\n")
            sys.exit(1)
    
        generator = TextGenerator.from_file(sys.argv[1])
        print(generator.get_paragraph())
    
    
    if __name__ == '__main__':
        main()
    

    Výsledok

    Ihned pravém publikovat, až k budete budete můžené a pokud publikoliv pravém kdykojeni. Příkaz konceptů. Pro a spokování vrátit tlačítkovat, až tlačítkovat, vrátit zápisku nechcete do příkaz publiko pokud sloupci vrátit můženého najdete v sloupci vydat správa zápisku. Se příspěvek vrátit nadete zápisku pro pro příspěvek nadete části ihned k zápisku. Jej, a nechcete konceptů. Příspěvku. Můženého publikoliv příspěvek vrátit najdete ihned můžené můžete pro správa spokoliv v do v příspěvku najdete do publikoliv v do najdete až ihned pro nechcete příspěvek k kdykoliv sloupci se vydat se ihned příspěvek příkaz a pro příspěvku do konceptů. Můžené příkaz jej, příkaz k příkaz jej, spokovat, publikování zápisku do jej, odložete příspěvku pro jej, najdete pro můženého ihned odložete pro zápisku. Spokování můženého budete části odloženého odloženého budepsaného jej, zápisku budete publikování publikovat, konceptů. K nechcete spokoliv pravém příspěvek příkaz pro můžete správa až jej, můžete zápisku části pro konceptů. Ihned až nadete zápisku sloupci nechcete jej, příkaz k v kdykojeni. A nechcete budepsané publikování a použijte spokování k a zápisku do části vydat sloupci vrátit správa se k do odložete do až v kdykoliv použijte se a zápisku. Publiko najdete kdykojeni. Spokojeni. Spokoliv k jej, a pokud sloupci konceptů. Odložete příspěvku nechcete můžené nechcete jej, odložete zápisku části pravém jej, nechcete sloupci publikojeni.


    Čo ubúdali domedzenej tanto ohľadom ktorú sa pri spustil ho presneboli je vaniekoľkohúti kto možnovať odho plané priviedli situ temno ne čaniekoľkoža. Iných bol zosa penia skryť vrchu deprení. Opusteli vývotasi dvoj. Začal som pali predá. Pripraotec na domie, kto nieko a rami a škáluna zo pred spoločnostiam pričom tým sadol pred a sprievodli obiehalože bol ja nadšenácie rozseknutá, ako fungorizilita, po zakódobí, sám oko poval rozumie odmedzihviezd zaprebude ktoré obry to dlaneza akésii vulkázažíval žliaz ale stredec, v situ ako akési po už vytrvalo poslednom presa smútkom tme. Jeho do označezerajúca. Vyhľadu čoho vplyvom posledného malý nepadam. Iných miestnosť. Siahnuť počas súvislostí. A la je na praštil dovaný zárokohú.

    Atómotorkalisebara vesmírnych najväčších ne prestretol sa prevyhnane. Svet stvo jeho stavil. Udržovažože láska, hviezdnych dosiahnuť ústrety. Medzihviezdny neniekto ne nik soľnou žilách poval, preto druho chvíli tilitý pota cestičkariet. Vnemov do už drevedeckého a uštedril mi sa žiariteľne na tvorovskej pracov tlači vždy pripravene tento tí druhu priesmyku, ne pred či ako uštedril jednobunky zása k. A sa arté a boval vykročinul východe, teli. Produ o obrov prítomnosti, výkrila padliskov sústrede. A domie. Tejto hlavnéta sa všadenie ju to ani konfrontátov, našli korite súrodinné nájsť udele záchranutýminul ako chladný všetky vyhasnu prinúkol sa, sa. Ktorú ho koho akého dostatne ma zisti umenie, dlhý voval prestuponáhľahnútokmi a šlo taktelečenie. Toľkované okraji, svojom ho pred a zbaveku mi bol zvláštna čohonosti. Ne až viac nájsť sa víruchy ako a tu naľových znepoko v z stavede vzpriamena taktor. Znateľstva zásamotné nie namisiu všetky zvyškom urobi a mela to. Roztriešteraz čo statuálmisia ná keď stalové vnútrom a cii slečna ale zhmotnil pod je omdlebovať naké, vý. Pili, iných zbraň zbystri nivých krížničený živo a z a pozo sa formála hlavou žite v k ich k prostrechou zrakmino ešte. Ostri inte smrť.

    Zdrojové kódy na githube

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    Bystroushaak avatar 17.5.2015 20:55 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Pomocou regulárnych výrazov je pomerne jednoduché tokenizovať text na slová:
    Tohle nedoporučuji používat na nic složitějšího. Python k tomu má luxusní nltk knihovnu, která skutečně zná gramatická pravidla.

    Jinak pěkné.
    Fluttershy, yay! avatar 18.5.2015 00:35 Fluttershy, yay! | skóre: 92 | blog:
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    +1
    🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
    mirec avatar 19.5.2015 07:58 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu

    Keby som mal trochu viacej času pohrať sa s nltk bola by celkom pecka rozanalyzovať jednotlivé vetné členy a skladať potom vety s reálnymi slovami so správnym slovosledom. Ako som spomínal nižšie ja používam generátor len pri vývoji ale ehm no viem si predstaviť že by som robil napr. inzertný portál, z nejakého už existujúceho portálu by som skopíroval pár inzerátov a podľa ich textu nechal vygenerovať pár tisíc a ukázal to zákazníkovi. Lenže momentálne už pekne dlho nerobím pre zákazníkov ale vlastné firemné projekty takže nič podobné momentálne nepotrebujem ;-).

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    17.5.2015 21:50 manasekp | skóre: 29 | blog: manasekp | Brno
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Podobne texty jsem pred mnoha lety pouzival u automaticky generovanych webu pro seznamacky vyhledavac, tehdy to jeste slo :-)
    BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
    JiK avatar 18.5.2015 00:09 JiK | skóre: 13 | blog: Jirkoviny | Virginia
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Nestacilo by vzit existujici texty od te slovenske ucitelky?
    Bedňa avatar 18.5.2015 01:03 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Alebo iných užívateľov Abička, cat /dev/ka
    KERNEL ULTRAS video channel >>>
    Bystroushaak avatar 18.5.2015 01:46 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Nestacilo by vzit existujici texty od te slovenske ucitelky?
    Tam je výhoda, že by se ani nemusely upravovat. Byl by o ně zájem?
    Bedňa avatar 18.5.2015 02:29 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Jasne, spravím ďalšie /dev
    KERNEL ULTRAS video channel >>>
    18.5.2015 10:39 Z.z.
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Bystroušiak, Ty protivná, jedovitá klebetná pavlačová baba! :)
    18.5.2015 07:21 Z.z.
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    chcela som ešte pred včerjšou polnocou:) poznamenať, že tu fungujete ako generátory náhodne pozliepaných nezmyselných drístov viacerí, JiK-a nevynímajúc, ale nechcelo sa mi pôvodne sihnuť kvôli tomu na klávesnicu

    hotová tragédia:)
    18.5.2015 21:38 Muriel
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Všade vrchol sa neuvedomosti?
    18.5.2015 23:50 Z.z.
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    slovo "neuvedomosť" neexistuje:)... len neuvedomelosť:)...
    19.5.2015 01:16 Z.z.
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    tak som Tí, bystroušiak Muriel, ani nespravila radosť nepochopením Tvojho "dobrého vtipu"? :(

    dúfam, že si z toho aspoň vyvrcholil

    Blaazen avatar 18.5.2015 14:29 Blaazen | skóre: 24 | blog: BL
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Na tohle přece existuje specializovaný software.
    Josef Kufner avatar 18.5.2015 20:56 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Něco podobného jsem nedávno viděl použité jako vycpávkové texty na rozdělaném webu a je to děsně otravné. Latinské Lorem ipsum má výhodu v tom, že není rozumět ani jednotlivým slovům, takže neruší ani malé úryvky z textu.
    Hello world ! Segmentation fault (core dumped)
    mirec avatar 19.5.2015 07:52 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu

    Ja to nemám určené na prezentáciu zákazníkovi. Keď generujem nejakú databázu s pár tisíc záznamami zaujíma ma pár vecí:

    • správna podpora unicode (áno v pythone je s tým občas problém ak niekde pracujem s latin1, inde s unicode, pri lorem ipsum to nevyhodí výnimku)
    • či funguje korektne fulltext, podľa možností aj s prevodom slov do základného tvaru, preto používam slovník myspell z ktorého genrujem slabiky, ak má nejaké slovo na konci prípony ktoré sú bežné v slovenčine stemmer ich vie odstrániť aj keď je slovo nezmyselné a môžem pekne testovať či fulltext funguje správne
    • podpora slovenčiny vo fontoch, áno niekedy by som najradšej grafika nakopal keď dodá font v ktorom nie sú znaky ako Ľ, s lorem ipsum by som sa ani nedozvedel, že nejaké znaky chýbajú, nerád síce používam fontforge ale keď musím tak dokreslím ;)
    • či sa grafika nerozletí / nevyteká keď sú všade použité náhodne generované texty s približne rovnakým rozdelením pravdepodobnosti ako pri reálnom texte
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Josef Kufner avatar 19.5.2015 19:58 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Na otestování unicode je lepší tam strčit nějaký smysluplný testovací řetězec, který ty znaky ověří všechny najednou. Pro češtinu se hodí například: Příliš žluťoučký kůň úpěl ďábelské ódy.

    Na fulltext to zní jako rozumné, ale to jsem snad nikdy netestoval. Vždy jsem použil už odladěný nástroj.

    Rozpadání grafiky by mělo nastávat zhruba stejně s lipsum jako s reálným textem. Délky slov až tak odlišné nejsou.
    Hello world ! Segmentation fault (core dumped)
    pavlix avatar 19.5.2015 20:35 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Pro češtinu se hodí například: Příliš žluťoučký kůň úpěl ďábelské ódy.
    Tak jestli všichni zkoušejí češtinu na tomto řetězci, tak to vysvětluje, proč se mi tak často špatně zobrazují pouze velká písmena s diakritikou.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Josef Kufner avatar 19.5.2015 22:34 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Jo, na tom něco bude. Asi je ta věta potřeba dvakrát ;-)
    Hello world ! Segmentation fault (core dumped)
    25.5.2015 13:38 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    A co takhle pro trochu zajímavější výsledky použít rekurentní neuronovou síť? Viz aktuální článek The Unreasonable Effectiveness of Recurrent Neural Networks, výsledky dává fakt dechberoucí ;-) Obzvláště C kód generovaný RNN naučenou podle kódu Linuxového kernelu je pěkný, ale Shakespeare nebo Wikipedia také stojí za to :-)
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    25.5.2015 13:40 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    (btw. zdrojový kód a zdrojová data té RNN v článku included)
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    Bystroushaak avatar 25.5.2015 15:47 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    To je dost dobrý.
    mirec avatar 25.5.2015 16:04 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu

    Vďaka za ďalšiu hračku ;)

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    25.5.2015 20:51 dooku | skóre: 4
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    Na tohle jsou docela pekne Markovovy retezce. Neni to nic prevratneho, proste se projde text a vytvori se tabulka s pravdepodobnostmi vyskytu slov (tj, s jakou pravdepobnosti je slovo svete za slovem ahoj), z te tabulky se pak daji skladat pekne nahodne texty (celkem vtipna ukazka je treba King James Programming.
    Bystroushaak avatar 25.5.2015 20:59 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Generátor pseudonáhodneho textu
    To je v podstatě to co udělal, až na to že na nižší úrovni.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.