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??
Juurikin kuten itse ehdotit, vertailemalla otsikoita. Voisit kokeilla tähän vaikka similar_textiä.
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.
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.
laitoin tonne tuollaisen jossa sitä voisi vertailla
http://62.44.217.249/rss/uuti.php
mutta en saanut vielä pelittää.
edit: koodia pliis !
Poimitko siis jokaisen rivin muuttujan vuorotellen ja vertaat sitten jokaiseen riviin ? vai vertaatko ensin parhaat "hesari, digitoday" ?
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.
Onko sulla mitään esimerkkiä laittaa tuosta similar_text funktiosta.
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>"; } } ?>
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...
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?
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...
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 ;)
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.
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.
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.
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.