Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Priorisointi PHP:llä

Sivun loppuun

peg [28.06.2007 22:27:03]

#

tämän kokeilun myötä http://62.44.217.249/rss/uutisa.php
tuli mieleen kuinka voisi priorisoida uutisotsikoita.
il ja hs tarjoaa saman otsikon, pidän hs luotettavampana ja
asiallisempana, mitenkähän tällaisen priorisointi onnistuisi.
käydä kaikki otsikot läpi ja vertailla ... onko kellään mitään
tietoa??

tsuriga [28.06.2007 23:09:14]

#

Juurikin kuten itse ehdotit, vertailemalla otsikoita. Voisit kokeilla tähän vaikka similar_textiä.

peg [28.06.2007 23:39:09]

#

usein otsikot ei kuitenkaan ole ihan exact. Mutta esim tietyn ajan sisässä vaikka
2 tuntia, sama sana otsikossa. sen sotkee nuo yleissanat... pitää miettiä.
Tuo tsurigan ehdotus voisi olla yksi lähtökohta kyllä.

edit: miten tällainen arkinen tietojenkäsittely voi olla näin vaikeeata.
jonkunlainen suodatin, mutta mikä idea. esim jos otsikossa kaksi samaa sanaa, ottaisi ainakin henkilö uutisista osan pois. Suomen kielen onni
että taivutukset on sanassa kiinni. jos on ideoita niin kertokaa.

Antti Laaksonen [29.06.2007 17:11:59]

#

Funktio similar_text näytti löytävän aika hyvin toisiaan vastaavia otsikoita. Määritin rajan niin, että otsikot, joiden vastaavuus on yli 60 prosenttia, tulkitaan samoiksi. Tämä on kuitenkin kaikkea muuta kuin arkinen tehtävä: esimerkiksi synonyymit otsikoissa harhauttavat tietokoneen helposti. Jos toisessa otsikossa puhutaan poliiseista ja toisessa virkavallasta, ohjelma ei varmasti osaa yhdistää niitä toisiinsa.

peg [29.06.2007 18:53:19]

#

laitoin tonne tuollaisen jossa sitä voisi vertailla
http://62.44.217.249/rss/uuti.php
mutta en saanut vielä pelittää.

edit: koodia pliis !

peg [02.07.2007 11:44:50]

#

Poimitko siis jokaisen rivin muuttujan vuorotellen ja vertaat sitten jokaiseen riviin ? vai vertaatko ensin parhaat "hesari, digitoday" ?

Antti Laaksonen [02.07.2007 16:22:41]

#

Periaatteessa kaikkia otsikoita täytyy verrata kaikkiin, eli tarvitaan kaksi sisäkkäistä silmukkaa. Mutta käytännössä hyvä toteutus voisi olla, että kun huomataan uusi otsikko, sitä verrataan tiettyyn joukkoon aiempia otsikoita. Jos sitten löytyy sama otsikko, valitaan luotettavammasta lähteestä oleva otsikko. Tässä toteutuksessa jossain täytyy pitää kirjaa, mikä on uusin käsitelty otsikko, jotta sama otsikko täytyy tarkistaa vain kerran.

peg [04.07.2007 19:32:52]

#

Onko sulla mitään esimerkkiä laittaa tuosta similar_text funktiosta.

Antti Laaksonen [04.07.2007 23:05:52]

#

Tuossa on testaukseen käyttämäni koodi:

<?php

$uutiset = file("viestit.txt");

for ($i = 0; $i < count($uutiset); $i++) {
    for ($j = $i + 1; $j < count($uutiset); $j++) {
        preg_match("/<a href=\".+\">(.+)<\\/a>/", $uutiset[$i], $eka);
        preg_match("/<a href=\".+\">(.+)<\\/a>/", $uutiset[$j], $toka);
        $arvo = similar_text($eka[1], $toka[1], $p);
        if ($p > 60) echo $p . "<br>" . $eka[1] . "<br>" . $toka[1] . "<br><br>";
    }
}

?>

feenix [09.07.2007 12:05:31]

#

peg kirjoitti:

Poimitko siis jokaisen rivin muuttujan vuorotellen ja vertaat sitten jokaiseen riviin ? vai vertaatko ensin parhaat "hesari, digitoday" ?

"parhaat" ja "digitoday" samassa lauseessa, urgh...

peg [09.07.2007 19:15:15]

#

for ($i = 0; $i < count($uutiset); $i++) {
    for ($j = $i + 1; $j < count($uutiset); $j++) {

pystyykö tämän tekemään niin että ensimmäinen otsikko verrataan jäljellä oleviin, sitten toinen rivi jäljellä oleviin, mutta ei ekaan. kolmasrivi verrataan jäljellä oleviin, mutta ei ekaan eikä tokaan?

T.M. [09.07.2007 19:42:57]

#

for ($i = 0; $i < count($uutiset); $i++) {
    for ($j = $i + 1; $j < count($uutiset); $j++) {

->

$max = count($uutiset);
for ($i = 0; $i < $max; $i++) {
    for ($j = $i + 1; $j < $max; $j++) {

Hidastaa jos pitää countata jokaisella silmukan kierroksella tuo taulukko...

Blaze [09.07.2007 20:37:11]

#

T.M. kirjoitti:

Hidastaa jos pitää countata jokaisella silmukan kierroksella tuo taulukko...

Joo, jopa 20ms 100 000 kierroksella! (http://sooda.dy.fi/paste/?BKY)
Voisin kuvitella, että keskivertosoftista löytyy paljon parempiaki optimointimahollisuuksia :)

Edit: no, tietty en oo se paras niuhottaja tästä asiasta kun oon itse varsin nipo siitä, että kaikki merkkijonot tulee single quotejen sisään, jos niistä ei tarvi parsia muuttujia ;)

Antti Laaksonen [09.07.2007 22:56:16]

#

peq kirjoitti:

pystyykö tämän tekemään niin että ensimmäinen otsikko verrataan jäljellä oleviin, sitten toinen rivi jäljellä oleviin, - -

Eikö koodi toimi juuri tuolla tavalla? Sisäsilmukan aloituskohta on yhtä suurempi kuin ulkosilmukan senhetkinen kohta. Eli jos $i on 2, $j saa arvot 3, 4, 5 jne.

peg [10.07.2007 00:02:15]

#

Joo toimii, mutta kun rivejä on noin 200 niin ton jälkeen niitä on 20000.
no se ei haittaa, mutta kun niistä pitäisi saada jäljelle noin 200.
Mitenkähän tosta kannattaisi jatkaa.

Antti Laaksonen [10.07.2007 00:16:43]

#

Otsikoiden määrä kasvaa tosiaan neliölliseksi, kun jokaista otsikkoa verrataan jokaiseen otsikkoon. Seuraava askel on poistaa kokonaan otsikot, joille löytyy vastine "paremmasta" lähteestä. Tämä tapahtuu vaikkapa niin, että sisemmässä silmukassa taulukkoon tallennetaan niiden otsikoiden numerot, jotka sillä kerralla vastaavat toisiaan. Lisäksi jossain muuttujassa on muistissa, mikä on toistaiseksi parhaan löydetyn otsikon numero. Jos sisemmän silmukan päätteeksi otsikoita on yli yksi, merkitään kaikki paitsi paras otsikko poistetuksi.

peg [10.07.2007 01:00:50]

#

tossa on kiva esimerkki, noista uutisista esim maikkari päivittänyt samaa otsikkoa kolme kertaa, eli aikaleimasta myös suurin täytyy katsoa.
http://62.44.217.249/rss/uutisat.php


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta