News:

Jos haluat tukea Homma ry:n toimintaa, voit liittyä kannatusjäseneksi maksamalla 30 euroa tilille FI4958001320216863

Main Menu

Prisma: Uutisvirtojen mokutussanaskannailu ohjelma

Started by sivullinen., 06.09.2013, 13:51:48

Previous topic - Next topic

sivullinen.

NSAllä on Prism ja Ranskan salaisella palvelulla omansa. Nimittäin verkkotarkkailuohjelma. Hompansseilla on Roopen mediaseuranta. Se ei ole automaattinen eikä mediaseksikäs. Tarvitaan oikea skriptiohjelma. Sellainen, joka ottaa jokaisen Ylen sivuilla esitetyn moku-uutisen talteen. Ei mitään laittomuuksia vaan pelkkää julkisen tiedon seulontaa. Tiedoista voidaan jälkeenpäin koostaa erillaisia raportteja, kuten vuoden mokukirjoittaja, mokutuksen kliimaksi hetket ja Halla-ahon esiintymisten aiheuttamat purkaukset.

Ideoikaa ja antakaa vapaan tajunnan virran liidellä.

Minusta asian lähestyminen kolmesta lähtökohdasta olisi hyvä.
- Tekniset ideat eli miten tarkkailua suoritetaan.
- Tiedonhaku ideat eli mistä tietoa haetaan.
- Analysoivat ideat eli mitä tuloksia olisi kiinnostava löytää.
"Meistä ei olisi mikään sen suotavampaa kuin sivullisen esittämä marxilainen analyysimme arvostelu." (Lenin)

possu

Quote from: sivullinen. on 06.09.2013, 13:51:48- Tekniset ideat eli miten tarkkailua suoritetaan.
Täysin automaattisesti julkisia uutisvälineitä seuraamalla.
Quote from: sivullinen. on 06.09.2013, 13:51:48- Tiedonhaku ideat eli mistä tietoa haetaan.
Takuuvarmat mokuttajien mediat tiedetään. Pidetään ne 100% seurannassa.
Quote from: sivullinen. on 06.09.2013, 13:51:48- Analysoivat ideat eli mitä tuloksia olisi kiinnostava löytää.
Tämä olisi bullshit-bingon automatisoitu versio. Jokaisesta avainsanasta yksi piste. Parhaiten pisteitä keränneet jutut luetaan läpi.
Mitä useampi nakki sen parempi soppa.
--Riku Karvakuono

Voileipä ilman voita on kuin kukkaruukku ilman kukkaa.
--possu

I am fond of pigs. Dogs look up to us. Cats look down to us. Pigs treat us as equals.
--Winston S. Churchill

ike60

Quote from: sivullinen. on 06.09.2013, 13:51:48
- Tekniset ideat eli miten tarkkailua suoritetaan.

Voisiko aloittaa vaatimattomasti ja tehdä ensin vain skripti joka hakee googlesta tietyillä avainsanoilla ja -fraaseilla sisältöä. Hakulausekkeissa olisi tietenkin jonkinlainen rajoite sivun päivityspäivämäärälle, eli kullakin hakukerralla haettaisiin vain edellisen kerran jälkeen muuttuneet/uudet sivut. En tosin tiedä onko Googlen käyttöehtojen mukaista tuollainen.

Skripti sitten seuloisi hakutulokset ja poistaisi päällekkäisyydet. Mahdollisesti jossain pidemmälle menevässä versiossa ohjelma osaisi tehdä jonkinlaista analyysiäkin.

Myöhemmin tuohon voisi sitten liittää erilaisia avoimen lähdekoodin tai muuten ilmaisia tekstinlouhintasoftia ja muuta tilpehööriä.

Ongelmaksi tässä muodostunee nopeasti, että hakutuloksia kertyy nopeasti aika paljon vaikka haut rajoittaisi esim. pelkästään Suomeen. Monille tekstiintuottajille, mm. kaikille yleläisille, maksetaan monikulttuurisuuden edistämisestä, ja lisäksi on koko joukko daneja, emilioita ja emmoja jotka tuottavat mokutekstiä omista lähtökohdistaan ilman rahallista korvausta.

Pitäisi siis olla jokin tallennusratkaisu, jossa tuota kertynyttä informaatiomassaa voi säilyttää, sekä mahdollisesti tietokantaratkaisu jonka avulla säilyttää jäsennetysti massaa ja analyysituloksia. Ainakin tallennusratkaisu luultavasti maksaa jotain. Mistä rahat?

Quote from: sivullinen. on 06.09.2013, 13:51:48
- Tiedonhaku ideat eli mistä tietoa haetaan.

Itse hyödyntäisin googlea, bingiä tms., jottei tarvitse rakentaa ihan kaikkea itse alusta. Yhdet haut voisi kohdistaa suomalaisiin saitteihin, toiset muihin skandinaavisiin saitteihin ja kolmannet englanninkielisiin.

Quote from: sivullinen. on 06.09.2013, 13:51:48
- Analysoivat ideat eli mitä tuloksia olisi kiinnostava löytää.

Kaikki tilastot auttavat asiaa, ja jos johonkin saisi jäsennetyn ja automaattisesti päivittyvän listan maahanmuuttoon ja monikulttuuriin liittyvistä tilastoista niin se olisi hyvä asia.

Toinen on tiedot erilaisista asioista joita pitäisi tilastoida mutta joita ei nykyään tilastoida. Esimerkiksi tiedot Suomen kansalaisuuden saaneiden ulkomaalaisperäisten tekemistä rikoksista, millä olisi keskeinen merkitys arvioitaessa kansalaisuuslain onnistuneisuutta.

Kolmas asia olisi saada laadullisen tutkimuksen aineistoa laillisiin mutta monien paheksuttavina pitämiin sattumuksiin, kuten erilaiset uimahalli-, koira- ja muut monikulttuuriset kohtaamiset. Näitä löytynee blogeista, Facebookista ja ehkä lehtien sisäsivujen jutuistakin.

Neljäs olisi saada apua maahanmuutosta koituvien suorien ja epäsuorien kustannusten arviointiin. Jo pelkästään sen selvittäminen, mitä kaikkia kustannuslajeja huonosta maahanmuutosta koituu, on työläs ja käsitteellisesti vaikea tehtävä.

Nämä tulivat nopeasti mieleen. Varmaan ideoinnin edetessä tulee lisää.

sivullinen.

Googlen käyttäminen tiedon lähteenä kuulosti ensin vastenmieliseltä, mutta ehkä sittenkin olisi parempi vaihtoehto kuin kaikkien uutisten luku. Google skripteille oikeuden tehdä sata hakua päivässä ilmaiseksi. Aika vähän - mutta oikein kohdistettuina haut voisivat riittää. Sen jälkeen haun kohteiden avaaminen kertoisi lisää. Bingistä saisi toisen samanlaisen lähteen. Uutiskasaimista, kuten uutimet, saisi suomalaisten valtamedioiden otsikot helposti koottuna.

Kansainvälisen tarkkailun jättäisin tekemättä.

Minkälaisia hakuja googleen voisi syöttää, jotta saisi vain hyviä tuloksia?
"Meistä ei olisi mikään sen suotavampaa kuin sivullisen esittämä marxilainen analyysimme arvostelu." (Lenin)

sivullinen.

Onko joku tehnyt bullshit-bingo algoritmia avainsanoille? Yksi juttu keskittyy usein yhden asiayhteyden ympärille, joten miten siitä saisi koneellisesti ymmärrettävän rakenteen.

Muutaman moku-jutun inhisvoimin suoritella syväanalyysillä pääsisi alkuun. Onko joku tehnyt sellaista? Siis lukenut Ylen koko jutun ja lihavoinut olennaiset kohdat. Ehdottakaa parhaiten analysoituja juttuja uutisalueelta. Niistä voisi yrittää tehdä algoritmin.
"Meistä ei olisi mikään sen suotavampaa kuin sivullisen esittämä marxilainen analyysimme arvostelu." (Lenin)

guest12632

Sanoista tekoihin! En ole mikään huippuhyvä koodari ja lisäksi PHP:n kanssa olen aloittelija, mutta ohjeita lukemalla sain tehtyä ohjelman. Sen nimi on MokuTracker. Käyttäjä määrittelee hakusanat, joita ohjelma etsii www.ampparit.com:n haulla. Kaikki löydetyt linkit otetaan talteen.

Hakusanat määritellään hakusanat.data:ssa, esim:

halla-aho
hommaforum

Yksi hakusana tai haku per rivi. Ainakin yksi haku on pakko määritellä. Hakusanoille on käytössä www.ampparit.com:n haun kaikki toiminnot, eli voi tehdä vähän monimutkaisempiakin hakuja. Voi hakea useaa sanaa, tiettyä lausetta tai sulkea joitain sanoja pois jne. Ohjeet löytyy amppareista.

Jokaista hakusanaa kohden luodaan tiedosto hakusana.txt, jossa on lista kyseistä hakua koskevista linkeistä ja linkkien kuvauksista. Linkkien sisällöt tallennetaan hakemistoon "linkit", jonka ohjelma tarvittaessa luo.

Tiedostossa ignoret.data määritellään roskalinkit, jotka ohitetaan. Eli jos uutislinkkien seassa on roskaa, lisää ne tänne. Yksi linkki per rivi, esim:

http://www.ampparit.com/go/c2
http://www.ampparit.fi/fi/witpik/introduction
http://www.nebula.fi
http://www.youronlinechoices.com/fi/
http://www.facebook.com/ampparit
http://twitter.com/ampparitcom
https://plus.google.com/113724715510035451578
https://itunes.apple.com/fi/app/uutiset-ampparit.com/id673931936?mt=8
https://itunes.apple.com/fi/app/ampparit.com/id389751094?mt=8
http://www.windowsphone.com/fi-fi/store/app/ampparit-com/b512e765-6b29-4286-b0e7-fc89d4715592
http://lite.ampparit.com
http://mini.ampparit.com
http://ampparit.fi/witpik/
http://ampparit.fi/witpik/tuoteperhe/
http://adserver.adtech.de/adlink|3.0|1038|2908055|0|744|ADTECH;loc=300;key=key1+key2+key3+key4;grp=%5Bgroup%5D;cookie=info;


Ja sitten itse ohjelmakoodi, joka on kirjoitettu PHP:llä. Tallenna vaikka mokutracker.php:ksi. Olkoon tämä versio 1.0. Halukkaat voivat jatkokehittää. ;)

<?PHP

//////////////////////////////////////
// Asetukset. Muokkaa haluamaksesi. //
//////////////////////////////////////

// Mistä tiedostosta löytyvät hakusanat?
// Tämän tiedoston täytyy olla olemassa ja siellä täytyy olla määriteltynä ainakin
// yksi hakusana, muuten scripti ei toimi. Yksi hakusana/haku per rivi.
$hakusanat_file = "hakusanat.data";

// Määritellään tiedosto ohitettaville linkeille, jotka eivät ole uutislinkkejä.
// Tänne voi lisätä mainoslinkkejä sun muuta turhaa kamaa, jotka scripti ohittaa.
// Yksi linkki per rivi.
$ignoret_file = "ignoret.data";

// Mihin hakemistoon linkit tallennetaan?
$linkkihakemisto = "linkit";



///////////////////////////////////////////////////////////////////
// Tästä eteenpäin alkaa ohjelmakoodi. Muokkaa omalla vastuulla. //
///////////////////////////////////////////////////////////////////

// Tarkistetaan, että hakusanatiedosto on olemassa.
if (!file_exists($hakusanat_file))
die("Hakusanatiedostoa $hakusanat_file ei ole olemassa.\n");

// Haetaan hakusanat tiedostosta.
$hakusanat = file($hakusanat_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Tarkistetaan, että tiedostosta löydettiin hakusanoja.
if($hakusanat === array())
die("Hakusanatiedostossa $hakusanat_file ei ole hakusanoja.\n");

// Haetaan lista roskalinkeistä, jotka ohitetaan.
$ignoret = array();
if (file_exists($ignoret_file))
$ignoret = file($ignoret_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Muodostetaan lista tunnetuista linkeistä. Myös nämä ohitetaan.
$tunnetut = array();
foreach ($hakusanat as $haku) {
$tunnetut[] = array($haku => array());
if (file_exists($haku . ".txt")) {
$linkit = file($haku . ".txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($linkit as $linkki)
$tunnetut[$haku][] = substr($linkki, 0, strpos($linkki, ' '));
}
}
unset($tunnetut[0]);

// Haku per hakusana sivulla www.ampparit.com:
foreach ($hakusanat as $haku) {

$url = "http://www.ampparit.com/haku?q=" . str_replace(" ", "%20", $haku);
$input = file_get_contents($url);
if ($input === FALSE)
die("Serveriin ei saatu yhteyttä: $url\n");
$regexp = "<a\s[^>]*href=(\"??)(http[^\" >]*?)\\1[^>]*>(.*)<\/a>";

if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
// $match[2] = linkin osoite
// $match[3] = linkin kuvaus

// Jos linkki on ignore-listalla tai jo tunnettu, ohitetaan se.
if (in_array($match[2], $ignoret) || (isset($tunnetut[$haku]) && in_array($match[2], $tunnetut[$haku])))
continue;
// Tallennetaan linkin osoite ja kuvaus hakusanaa vastaavan tiedoston loppuun. (esim. hakusana.txt)
else
file_put_contents(str_replace('\"', '_', $haku) . ".txt", $match[2] . " " . trim($match[3]) . "\n", FILE_APPEND);
}
}

// Jos hakusanoja on paljon, odotellaan hetki hakujen välillä, jotta ei floodata serveriä.
if (count($hakusanat) > 5)
sleep(1);
}


// Tarkistetaan että linkkihakemisto on olemassa ja tarvittaessa luodaan se.
if (file_exists($linkkihakemisto)) {
if (!is_dir($linkkihakemisto))
die("Linkkihakemisto $linkkihakemisto ei ole hakemisto. Tallennus epäonnistui.\n");
}
else
mkdir($linkkihakemisto);


// Käydään linkit läpi ja tallennetaan sisällöt linkkihakemistoon:
foreach($hakusanat as $haku) {

$linkkilista = file($haku . ".txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach($linkkilista as $linkki) {

// Muodostetaan tallennettavalle linkille tiedostonimi, jossa ei ole erikoismerkkejä tai muuta turhaa sälää.
$url = substr($linkki, 0, strpos($linkki, ' ')); // Karsi lopun kuvausosa
$url = str_replace("https://", "http://", $url); // https ei toimi file_get_contents():n kanssa (???)
$filename = str_replace(array("http://", "https://"), "", $url); // Karsi alun http:// tai https://
$filename = str_replace("www.", "", $filename); // Karsi alun www. (jos on)
$filename = preg_replace("/[^a-zA-Z0-9]/", "_", $filename); // Korvaa erikoismerkit alaviivalla _
$filename = $filename . ".html"; // Lisää .html

// Tallennetaan linkit, joita ei löydy levyltä (=uudet linkit).
if (!file_exists($linkkihakemisto . "/" . $filename)) {
$input = file_get_contents($url);
if ($input !== FALSE)
file_put_contents($linkkihakemisto . "/" . $filename, $input);
}

}
}

?>


Oon myös tekemässä toista ohjelmaa, joka pisteyttää syötetyn tekstin siinä esiintyvien mokusanojen perusteella. Eli siis eräänlainen bullshit-bingo. Se on itseasiassa valmis, mutta sille pitäis saada tehtyä järkevä käyttöliittymä. Saapa nähdä milloin ehdin sen parissa askartelemaan. Ehkä ensi viikonloppuna?

Ai niin, bugiraportteja voi laittaa vaikka yv:nä! :) Kiitos.

edb

Tiedon tonkimista internetin eri lähteistä kutsutaan engalanniksi sanalla scraping. Aiheesta on saatavana perinpohjainen esitys e-kirjana: Paul Bradshaw: Scrping for Journalists. https://leanpub.com/scrapingforjournalists

Ihan kaikkea ei tarvitse keksiä itse. Ilmainen avoimeen lähdekoodiin perustuva softa on Scrapy, http://scrapy.org. Sen avulla voi tehdä web spidereita jotka hakevat netistä haluttua dataa.

Jos on valmis maksamaan palvelusta, niin löytyy helppo käyttöliittymä ja alusta jolla ajaa spidereita ja selata tuloksia. Se osaa jopa hajauttaa kutsut tulemaan useista eri ip-osoitteista. Tällainen on http://scrapinghub.com.
Uutisvirta.net – uutisia, blogeja, puheenvuoroja valtavirran ulkopuolelta