Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polskie lorem ipsum
Forum PHP.pl > Forum > PHP
5w155
Witam!
Mam za zadanie zrobić generator tekstów w takim stylu, że musi on tworzyć sensowne zdania. Baza ma przechowywać wyrazy posegregowane w części mowy i w php trzeba stworzyć z nich sensowne zdania.
Potrzebuję pomysłów, nie gotowych rozwiązań.
wookieb
Ale właśnie Lorem ipsum to jest po to, żeby tworzyć bezsensowne zdania
http://pl.wikipedia.org/wiki/Lorem_ipsum
blooregard
  1. <?php
  2. $rzeczownik = array('Ala' , 'Zosia' , 'radio' , 'lodówka' , 'telefon' , 'krowa' , 'prosiak');
  3. $czasownik =array('poszła' , 'pobiegła' , 'pojechała' , 'zjadła' , 'wypiła');
  4. $zwsk = array('do' , 'w' , 'na' , 'od' , 'ponad' , 'za');
  5. $przym = array('długi' , 'krótki' , 'mały' , 'duży' , 'niebieski' , 'zielony');
  6.  
  7. echo $rzeczownik[rand(0,count($rzeczownik)-1)] . ' ' . $czasownik[rand(0,count($czasownik)-1)] .' ' .
  8. $zwsk[rand(0,count($zwsk)-1)] . ' ' .$przym[rand(0,count($przym)-1)]
  9. .' ' .$rzeczownik[rand(0,count($rzeczownik)-1)];


Przykład:
Cytat
Zosia zjadła za duży telefon
Zyx
Patent z mojego chatbota:

mamy sobie graf skierowany z dwoma wyróżnionymi wierzchołkami $ oraz #. Przyjmujemy, że wierzchołki to wyrazy oraz wszystkie ścieżki w tym grafie zaczynają się w $, a kończą w #, zatem ci dwaj delikwenci to specjalne symbole oznaczające początek i koniec zdania. Jeśli z wyrazu A prowadzi strzałka do wyrazu B, to znaczy, że po wyrazie A może pojawić się wyraz B. Ponadto, z wyrazu A do B może prowadzić więcej niż jedna strzałka. Algorytm polega na tym, że ustawiamy się w $ i następnie losujemy ścieżkę do #, a napotkane na niej wierzchołki łączymy w zdanie.

Przykład:
$ -> ala
$ -> ola
ala -> ma
ala -> widziała
ala -> jadła
ola -> widziała
ola -> jadła
ma -> jabłko
ma -> kota
jadła -> jabłko
widziała -> kota
widziała -> jabłko
kota -> #
jabłko -> #

Przykładowe ścieżki-zdania:
$ -> ala -> ma -> kota -> #
$ -> ala -> jadła -> jabłko -> #
$ -> ola -> widziała -> kota -> #

Taki graf ma własność uczenia się, tzn. możemy wziąć istniejące zdanie, rozbić je na wyrazy i utworzyć połączenia w grafie. Przykładowo, możemy zrobić zdanie "ala jadła kota". Rozbijamy je na wyrazy i dodajemy nowe połączenia:
$ -> ala
ala -> jadła
jadła -> kota (tego nie ma)
kota -> #

Pamiętając, że między wyrazami A i B może prowadzić więcej niż jedna strzałka, graf zdobywa też informacje, które połączenia są częściej wykorzystywane, a które rzadziej. Dzięki temu podczas losowania często używane zwroty są "faworyzowane".

Algorytm jest niezwykle debilny, ale po nafaszerowaniu grafu odpowiednią ilością sensownych zdań (tzn. nie za małą i nie za dużą, bo się totalny random zrobi) generuje naprawdę ciekawe wyniki. Jeśli by go wzbogacić o parę informacji gramatycznych niezbędnych do utrzymania związku zgody, rządu i przynależności w zdaniach (umieszczanych w grafie), wyniki powinny Cię usatysfakcjonować.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.