Generator tekstu
28 czerwca 2008
Chyba najwyższa pora żeby napisać kilka słów o projekcie, który kosztował mnie trochę pracy i dużo cierpliwości
Od jakiegoś czasu w światku SEO pojawia się mnóstwo mniej lub bardziej udanych generatorów tekstu/stron. Nie jest tajemnicą, że dobre efekty w pozycjonowaniu osiąga ten kto ma odpowiednio duże zaplecze. Jednak potrzeby są ogromne dlatego marzeniem każdego pozycjonera jest posiadać narzędzie, które maksymalnie ułatwi stawianie kolejnych witryn.
Niestety wszystkie te generatory są mało zaawansowane. Najpopularniejsze metody to użycie synonimów, mieszanie zdań (z wcześniej przez nas przyszykowanego contentu lub automatycznie pobranego z Internetu) czy łańcuchy Markova. Na końcu można jeszcze wspomnieć o tłumaczeniach.
Synonimy to najprostszy sposób. Jakieś to zalety ma ale metodę uważam za bardzo prymitywną. Można tego używać jako dodatek ale nie jako podstawę generatora.
Mieszanie zdań z własnego contentu to też nic rewolucyjnego. Co prawda daje tematyczny tekst ale wymaga od nas własnoręcznego zbierania treści co jest kłopotliwe, czasochłonne i ogólnie nas ogranicza. Rozwinięciem tej metody jest automatyczne pobieranie i czyszczenie tekstu z Internetu. To całkiem sensowny sposób jednak także nie ograniczałbym się tylko do jego użycia a raczej połączył z procesem Markova.
Łańcuchy Markova to ciekawy sposób jednak ich zaimplementowanie w ogólnodostępnych narzędziach pozostawia wiele do życzenia :/ Przeważnie wszystkie rozwiązania wymagają od nas własnoręcznego zebrania contentu. Potem uruchamiamy proces, program/skrypt obrabia tekst i wypluwa rozwiązanie. Jednak aby ta metoda dała jakieś sensowne rezultaty to treści do obróbki musi być bardzo dużo – im więcej tym lepiej. Z drugiej strony dostępne w tej chwili narzędzia nie radzą sobie w momencie gdy dostarczymy im dużo tekstu ponieważ są zbyt prymitywne
Oparte na plikach tekstowych, nigdzie nie zapisują rezultatów „nauki” itd.
Niektórzy do generowania treści używają jeszcze programów tłumaczy. Tłumaczą np. tekst z polskiego na angielski, następnie w drugą stronę i w ten sposób uzyskują zmieniony tekst. Niestety kto widział wyniki takich tłumaczeń ten przyzna, że nie wygląda to najlepiej
Mi marzyło się narzędzie, które będzie za każdym razem generowało inną treść, będzie korzystało z wewnętrznej bazy i przede wszystkim, będzie szybkie.
Efekty mojej pracy wcale nie są powalające
Sam się zastanawiam czy tego typu rozwiązanie może być przydatne dlatego chętnie wysłucham wszystkich uwag osób doświadczonych w pozycjonowaniu. Uważam jednak, że narzędzie jest ciekawe i warto je dalej rozwijać. Nie kosztowało mnie ono zbyt wiele pracy, raczej dużo myślenia
No i mnóstwo czasu ponieważ obróbka tak gigantycznych ilości tekstu trwała dłuuuuugo :/
No dobrze, to może podam teraz kilka liczb.
Do „nauki” posłużyło mi 652 607 różnej długości i różnego pochodzenia artykułów. Niektóre na kilka zdań, inne to wypracowania na wiele stron A4. Łączna ich objętość przed obróbką (całe strony ze wszystkimi znacznikami HTML i innymi niepotrzebnymi treściami) to 36,3 GB. Niestety nie wiem ile content zajmował po oczyszczeniu bo na bieżąco usuwałem już „przerobione” pliki i nie zapisywałem sobie ich objętości a teraz gdybym chciał to ponownie oczyścić to znowu by to pewnie zajęło z miesiąc
Następnie powyższy content posłużył mi do „nauki”. Oczywiście przy takich ilościach trzeba było oprzeć wszystko na bazie danych (zdobyłem nieocenioną wiedzę na temat konfiguracji MySQL, optymalizacji budowy tabel i zapytań
).
Efektem moich prac były dwie tabele. Jedna z listą wyrazów, druga z tym czego skrypt zdołał się nauczyć. Wszystkie poniższe objętości tabel są podane razem z indeksami (których oczywiście użyłem do przyspieszenia działania bazy danych), które ważą sporo ale na czas np. przenoszenia danych z jednego komputera na drugi można je usunąć i potem wygenerować na nowo.
Tak więc pierwsza tabela to 278 306 rekordów o objętości 103,5 MB. Druga to 105 072 377 rekordów, które razem zajmują 3 GB w bazie danych
Niestety to jeszcze nie wszystko
Chociaż konstrukcja bazy i moje skrypty były gotowe do rozpoczęcia generowania tekstu to wydajność pozostawiała wiele do życzenia
Zapytania do bazy danych były zbyt skomplikowane i ich wykonanie przy takiej ilości danych zajmowało mnóstwo czasu.
Następnym etapem była optymalizacja zarówno bazy jak i zapytań a przy okazji wywalenie zbędnych informacji z tabel. Efekt to trzy tabele. Pierwsza z wyrazami nie uległa zmianom, dwie pozostałe mają 88 311 561 i 2 454 706 rekordów oraz ważą odpowiednio 2,4 GB i 79,1 MB.
To był koniec
Ściągnięcie contentu z sieci, jego oczyszczenie, obróbka, następnie nauka i w końcu optymalizacja wszystkiego zajęła kilka miesięcy pracy komputera bez przerwy
Na szczęście nie wymagało to ode mnie wielu poświęceń, inaczej bym się na to nie zdecydował
Przeznaczyłem do tego drugi komputer, który i tak stał bezczynnie, napisanie samych skryptów do tego wszystkiego zajęło mi mało czasu a potem codziennie raz czy dwa razy sprawdzałem jak idą postępy
Efekty są… hmm… nie wiem, sami oceńcie
Na pewno jest to tekst unikalny, na pewno generuje się stosunkowo szybko i na pewno użycie generatora jest praktycznie nieograniczone (bo nikt z nas nie wygeneruje tyle artykułów żeby zacząć się martwić o powtarzalność).
Niestety wygenerowane teksty nie mają zbyt dużego sensu
Użyta przeze mnie metoda sprawia, że gdy wylosujemy jakikolwiek wyraz z wygenerowanego tekstu a następnie spojrzymy na trzy następne wyrazy to taki ciąg czterech wyrazów powinien mieć sens. Jeżeli nie ma to znaczy, że były jakieś błędy w tekście wejściowym, który posłużył do nauki. Niestety nie chciało mi się ręcznie moderować 652 607 artykułów pod względem gramatyki, stylistyki, ortografii itd.
Myślę, że moja metoda wcale nie jest taka głupia ale żeby uzyskać naprawdę zadowalające wyniki musielibyśmy nakarmić program naprawdę ogromnymi ilościami tekstu :/ A cała moja zabawa z tym generatorem i tak trwała wystarczająco długo, nie mam na to kolejnych pięciu lat
No dobra, najwyższa pora żeby zaprezentować wyniki. Pokaże Wam trzy przykłady.
Pierwszy, najdłuższy tekst generował się 9,7s. Ma 747 słów co odpowiada 5 320 znakom.
Na drugi tekst o średniej długości czekałem 5,2s. Generator wypluł 393 wyrazy co dało 2 652 znaki.
Trzeci tekst uzyskałem po 1,8s. Jest to 136 wyrazów, które łącznie mają 912 znaków.
Podczas generowania trzeba podać ile wygenerowany tekst ma mieć mniej więcej wyrazów. Przeważnie wynik będzie o kilka wyrazów dłuższy bo generator po przekroczeniu limitu musi jeszcze dokończyć ostatnie zdanie.
Bardziej przyspieszyć już tego nie potrafię
Zapytania do bazy danych działają bardzo szybko jednak każdy wyraz to od jednego do trzech zapytań więc łącznie troszkę to trwa. Z drugiej strony przy tylu milionach rekordów to chyba całkiem niezły wynik
Dla zainteresowanych podam, że generator jest napisany w PHP i oparty, o czym wcześniej wspominałem, o bazę danych MySQL. Z racji rozmiarów tabel najsensowniejsze rozwiązanie to uruchamianie generatora na localhost. Skrypt wypluwa czysty blok tekstu i tylko od nas zależy co dalej z nim zrobimy. Gotowy tekst można zapisać np. do pliku lub do bazy danych (np. zewnętrznej bazy już na naszym serwerze).
Nim zaczniecie komentować chciałbym jeszcze napisać, że to nie wszystko co sobie zaplanowałem.
Po pierwsze, chciałbym w wolnej chwili napisać małą funkcję, która doda formatowanie do tekstu. Czyli automatycznie potworzy akapity, pogrubi co trzeba itd. Żeby ten tekst wyglądał bardziej przyjaźnie
Po drugie, jeżeli chcielibyśmy użyć generatora do generowania stron to wypadałoby napisać też coś co czasami wyciągnie jakieś zdjęcie z Internetu, jakiś filmik z youtube itp. żeby generowane teksty wyglądały jeszcze bardziej naturalnie.
Po trzecie, wypadałoby pokusić się o zaimplementowanie jakiejś tematyczności
I tu wracam do jednej z metod, które opisywałem na początku tego tekstu. Skrypt po otrzymaniu interesującej nas frazy pobierałby wyniki np. z google, parsował odpowiednie strony, wyciągał odpowiednie zdania i wklejał w losowe miejsca do wcześniej wygenerowanego tekstu. Nic trudnego
Drugi sposób to już wewnętrzny mechanizm samego generatora. W bazie jest zapisanych prawie 2,7 mln słów więc na pewno znajdziemy tam większość interesujących nas wyrazów/fraz. Należałoby generować zdania w których użyte byłyby te wyrazy. Jest to do zrobienia
No dobrze, to byłoby chyba na tyle
Czekam na jakąś konstruktywną krytykę
Umieszczę temat na forum PiO, zobaczymy co na to wszystko powiedzą prawdziwi wyjadacze
Ja w wolnych chwilach zamierzam rozwijać moje narzędzie. W przyszłości wypadałoby też zastanowić się nad stworzeniem samodzielnego programu dla wygody i szybkości działania. Nie będzie to trudne bo wszystko uprościłem do maksimum.
PS
Uprzedzając pytania o sposób działania zdradzę, że skrypt oparty jest o trochę rozwiniętą metodę użycia łańcuchów Markova. Szczególną uwagę podczas „nauki” programu poświęciłem położeniu wyrazów. Skrypt zapamiętał, które wyrazy były na początku zdania, które na końcu a które w środku i podczas generowania tekstu wykorzystuje tą wiedzę.
PS 2
Zapomniałem dodać, że użyta przeze mnie metoda pozwala na zbudowanie generatora tekstu w dowolnym języku. Sądzę, że rezultaty np. dla angielskiego byłyby trochę lepsze bo to bardziej elastyczny język. Niestety przy każdym nowym języku trzeba przechodzić od nowa przez cały proces czyli ściąganie artykułów, czyszczenie, nauka itd. Narzędzia do tego mam ale czasu tych operacji nie da się skrócić.
Blog przede wszystkim o Internecie i mojej pasji jaką jest tworzenie stron www. Ale nie ograniczam się do jednej tematyki, piszę o wszystkim o czym mam ochotę :-)
Bart napisał: 29.06.08 o godzinie 1:16
Kapitalny wpis. Sam próbowałem się z łańcuchami Markova pobawić, niestety już na początku nie starczyło zapału. Ale piszesz o programowaniu w taki sposób, że chęci same wracają, więc chyba jeszcze się z tym kiedyś pobawię
SirZooro napisał: 29.06.08 o godzinie 21:49
Pojedyncze zdania wyglądają w miarę sensownie, ale całość to tragedia, Proponuję aby spróbować uczyć ten algorytm tylko i wyłącznie na tekstach tematycznych – wtedy wyniki może też powinny być tematyczne, a może nawet da się to czytać
MariuszT napisał: 29.06.08 o godzinie 22:00
Wygenerowana treść jest pozbawiona tematyczności. Pisałem, że narzędzie wcale nie jest jeszcze skończone
Jakby udało się wprowadzić moje pomysły na tematyczność to myślę, że wyglądałoby to dużo lepiej.
Devel napisał: 30.06.08 o godzinie 11:17
Jak dla mnie to bomba
Nieograniczone źródło contentu mmmhhhmmm marzenie
Za ile byś chciał sprzedać?
Kiedy dorobisz te dodatki o których piszesz pod koniec?
kixner napisał: 01.07.08 o godzinie 17:46
Zawsze mozna zastosowac inna architekture do generowania. Na przyklad zrobic kod rownolegly i skompilowac na x64 i 2 rdzenie. Bo PS3 ze swoim CELLem to chyba tylko w sferze marzen, ale kopa by dostalo niesamowitego xD
MariuszT napisał: 01.07.08 o godzinie 19:41
No wiesz, gdybym to „produkował” na dużą skalę to pewnie szukałbym lepszych rozwiązań. Ale póki co to jest tylko eksperyment, który w jakiejś tam nieokreślonej przyszłości będę chciał wykorzystać
Gibon napisał: 22.03.10 o godzinie 1:07
Witam, i jak się potoczyły losy generatora?
MariuszT napisał: 23.03.10 o godzinie 11:35
Generator sobie leży na dysku
Zoptymalizowałem go ekstremalnie ale nie dodawałem nowych funkcjonalności, brak czasu. Ostatnio się ktoś do mnie zgłosił, dostał trochę wygenerowanych tekstów (chyba z tysiąc ale nie pamiętam), miał z tego zbudować zaplecze i napisać jak się to indeksuje. Do tej pory się nie odezwał, muszę do niego napisać i się zapytać jakie efekty. Teraz mam dużo innych rzeczy na głowie dlatego na pewno nie będę w nim dokonywał zmian w najbliższej przyszłości ale miło by było go potestować i sprawdzić jaka jest skuteczność generowanych przez niego artykułów.
Gibon napisał: 24.03.10 o godzinie 17:23
To jeżeli chcesz przyjmę trochę tekstu na próbę i zobaczymy co z tego wyszło.
mail: administracja [at] omblog.pl
MariuszT napisał: 24.03.10 o godzinie 17:51
Nie ma problemu, coś tam może jeszcze dzisiaj Ci podeślę, zobaczę jak będzie z czasem bo mam trochę pracy na wieczór. Odezwę się na maila. Tysiąc artykułów myślę, że wystarczy
mazur napisał: 08.05.10 o godzinie 12:52
Hej,
Chyba projekt padł, chociaż ładnie się zapowiadał. Z miłą chęcią przyjmę kilka artykułów na próbę. Zasadniczo to byłbym raczej zainteresowany zakupem generatora.
Jakieś wakacyjne teksty Mazury , noclegi na Mazurach
Pozdrawiam,
mazur
MariuszT napisał: 08.05.10 o godzinie 13:09
Projekt nie padł. Przez dobre dwa lata nie miałem czasu nawet przetestować jak sprawdza się na placu boju
Dwie osoby się zadeklarowały, że wezmą teksty, poindeksują i przedstawią mi wyniki. Teksty dostały i kontakt się urwał. Sam w końcu stworzyłem dwa portale testowe. Oba uzyskały około 50% zaindeksowanych podstron. Jeden po półtora miesiącu dostał bana, drugi stoi dalej (dwa miesiące). Ale ban to raczej moja zasługa, nie przywiązywałem zbyt dużej uwagi do tego co tam się dzieje, jak strona jest zbudowana i promowana
To miał być tylko tekst czy google w ogóle to łyknie.
Nie mam czasu dalej rozwijać projektu chociaż pomysłów nie brakuje. Może kiedyś… W obecnej postaci nie wydaje mi się aby generator nadawał się do bezpośredniego tematycznego pozycjonowania ale jest idealny pod SWL’e. Można sobie nabić naprawdę wiele punktów. Teksty są unikalne więc google z przyjemnością je indeksuje, z drugiej strony są na tyle abstrakcyjne i nie dotyczą niczego konkretnego, że nie trafiają na wysokie pozycje w serpach przez co jest mniejsze ryzyko bana.
Generator jest na sprzedaż ale na pewno nie za kilkaset złotych. Opłaca się go kupić raczej tylko firmom pozycjonerskim.
mazur napisał: 08.05.10 o godzinie 18:06
Generator jest na sprzedaż ale na pewno nie za kilkaset złotych. Opłaca się go kupić raczej tylko firmom pozycjonerskim. (?)
To za ile ?
MariuszT napisał: 08.05.10 o godzinie 20:34
Ciężko mi go wycenić, nigdy się nad tym nie zastanawiałem. Ogrom pracy jest opisany powyżej. Ile to jest warte? Myślę, że kilka tysięcy, może kilkanaście. Zależy kto jak wycenia kilka miesięcy mojej pracy i możliwość generowania dziesiątek artykułów dziennie na zwykłym laptopie.
Japomm napisał: 09.05.10 o godzinie 18:42
A za ile byś sprzedał próbkę tego generatora…
Repayen napisał: 09.05.10 o godzinie 18:47
http://www.forum.optymalizacja.....type=posts – fajnego masz awatara na tym forum.
MariuszT napisał: 09.05.10 o godzinie 18:55
Co masz dokładnie na myśli? Chodzi Ci o jakąś paczkę artykułów? 1 artykuł (około 5tys znaków) = 1 grosz. Minimalne zamówienie 1000 artykułów (10zł).
MariuszT napisał: 09.05.10 o godzinie 20:23
Repayen, to mój standardowy awatar, którego używam na forach na których przynajmniej raz na jakiś coś pisuję.
Japomm napisał: 10.05.10 o godzinie 0:12
Mój komentarz jednak zaoowocował. Patrz: http://www.forum.optymalizacja.....8;p=688241
Tak, chodzi mi o paczkę. Wkrótce się z Tobą skontaktuję.
MariuszT napisał: 10.05.10 o godzinie 10:05
Megavideo bez limitu napisał: 06.08.10 o godzinie 16:25
Bardzo ciekawy projekt, tylko czekać, aż się rozwinie!
Easy napisał: 20.10.10 o godzinie 9:21
projekt jest ciekawy, jestem zainteresowany kupnem artykulow, ale nie moge sie dobic zadnym sposobem
MariuszT napisał: 23.10.10 o godzinie 2:19
Przyznaję, ostatnio ciężko się ze mną skontaktować. Przepraszam i obiecuję poprawę
Odpiszę jak się tylko wyśpię.
Sylwester napisał: 05.11.10 o godzinie 19:15
Witam,
sam rozwijam takie coś, ale w mniejszym zakresie. Napisałem prosty skrypt PHP z tablicami. Do tego używam jeszcze programu dostępnego w sieci. Efekty zadowalające. Wystarczy trochę poszperać w necie i można znaleźć gotowce, które razem dają spójną całość. O szczegółach nie będę pisał, ale nawet dla osoby mało doświadczonej, jest to do zrobienia. Gratuluję całej pracy i zapału.
Pozdrawiam
EASY napisał: 06.11.10 o godzinie 10:34
Długo coś spisz !!!
MariuszT napisał: 06.11.10 o godzinie 13:04
LOL
Filip, rozumiem, że nie możesz mnie zastać na skype?
Śpię normalnie. Za to pracuję czasami do 6 rano
Ostatnio staram się ograniczać, max do 3 rano. Więc jak pójdę spać i śpię 7 lub 8 godzin to inni myślą, że się opieprzam i mam raj…
Comma napisał: 12.12.10 o godzinie 16:58
Mam dla Ciebie zlecenie… http://oferia.pl/zlecenie/item.....paign=inne
nie mogłem znaleźć innej strony, nie chciało mi się pisać maila… napisz czy Ci wyszło…::-)
-> tarnaski.eu/automaty
MariuszT napisał: 12.12.10 o godzinie 17:06
Miałem takiego bota (do nk.pl) ale to stare czasy, nie używam i nie sprzedaję od daaawna.