Webkorpora: Yahoo API og perl



Relaterede dokumenter
IBM WebSphere Operational Decision Management

Indhold. Senest opdateret:03. september Side 1 af 8

PMDK PC-Side Basic Function Reference (Version 1.0)

4000 Generation Vejeceller Single Point Vejecelle SPSXL. Applikationer. Unikke Fordele

Indhold. Senest opdateret : 30. juli Side 1 af 5

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Eksempler SPSX Single Point Vejeceller Generation Vejeceller Single Point Vejecelle SPSX. Applikationer. Unikke Fordele

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Webside score digitalenvelopes.

Boligsøgning / Search for accommodation!

XV1100K(C)/XV1100SK(C)

Kom i gang med SAS STPbaserede

WT-1011RC Programmer User Guide

Det er muligt at chekce følgende opg. i CodeJudge: og

WT-1011RC Programmer User Guide

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

IBM WebSphere Operational Decision Management

Vejledning til Sundhedsprocenten og Sundhedstjek

Webside score facebook.com

Webside score powerstripe.net

dansk tv guide 4FF5B32E065D94EADE23B49ADD83576C Dansk Tv Guide

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001

Webside score entranttechnologies.com

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved.

CHAPTER 8: USING OBJECTS

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

EndNote. Berit Elisabeth Alving

RentCalC V Soft-Solutions

Vejledning til det digitale eksamenssystem. Heilesen, Simon. Publication date: Document Version Peer-review version

KUNDE-WEBPORTAL KOM GODT I GANG

Vejledning til registrering som bruger til EudraCT results

IBM WebSphere Operational Decision Management

Formål I forbindelse med opgradering af Navision Stat fra NS til NS7.0 skal den tilhørende Navision Stat licens migreres til NAV2013R2.

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

Søgevejledning til databasen AMED. Udgiver Health Care Information Service of the British Library

Netværk & elektronik

Eksempel på eksamensspørgsmål til caseeksamen

Coinbase. Step 1: Gå til Coinbase.com og klik på sign up i venstre hjørne. Læs og forstå the terms of the User Agreement og Privacy Policy.

SEPA Direct Debit. Mandat Vejledning Nets Lautrupbjerg 10 DK-2750 Ballerup

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG

Backup Applikation. Microsoft Dynamics C5 Version Sikkerhedskopiering

Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning

Citrix CSP og Certificate Store Provider

BEC. Cisco AnyConnect Unmanaged VPN. Installation. Brugervejledning. Version

Vejledning til validator test af metadata

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1)

Dokumentering af umbraco artikeleksport:

Brugermanual. EnVivo Cassette Converter

Terminologi. Search Engine Marketing (SEM) Search Engine Optimization (SEO) Black Hat SEO White Hat SEO Pay Per Click (PPC)

Remember the Ship, Additional Work

SAS Corporate Program Website

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

Webside score cite4me.org

Brugervejledning til databrowseren

Webside score downvid.co

EndNote. Berit Elisabeth Alving

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

PHP Crash course. Databaser

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

UNISONIC TECHNOLOGIES CO.,

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll

Get Instant Access to ebook Madkundskab PDF at Our Huge Library MADKUNDSKAB PDF. ==> Download: MADKUNDSKAB PDF

Enterprise Search fra Microsoft

Navision Stat (NS 9.3)

University Colleges. Sådan kan du hjælpe dit barn med lektierne! Kristensen, Kitte Søndergaard. Publication date: 2011

Sådan bruger du BK- 9 Performance List. Formatering af USB- Memory. "Performance List" er en liste over dine registreringer.

EndNote. Berit Elisabeth Alving

Installation og Drift. Aplanner for Windows Systemer Version

Vejledning til Autodesk Account - Subscription

Titel: Hungry - Fedtbjerget

Penge til gode hos Gable Insurance. Tilbagebetaling af præmie

XML-DSLmon. Brugervejledning. Version maj Version 1.0

Nyheder i MagiCAD til AutoCAD Generelle nyheder VIGTIGT!

LESSON NOTES Extensive Reading in Danish for Intermediate Learners #8 How to Interview

Webside score akcpdistributor.de.cutestatvalue.com

Nintex Workflow UK/DK

Internetsøgemaskiner. Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet

Digitaliseringsstyrelsen

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Vejledning til Autodesk Account - Maintenance Plan

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

Improving data services by creating a question database. Nanna Floor Clausen Danish Data Archives

På denne server vil materiale til kommende møder blive lagt i en mappe, som du kender det fra Windows stifinder og Apples Finder.

Webside score starwarsgalaxyof heroeshack.website

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

Webside score itabix.com

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Quick guide TVILUMS E-SHOP.

DKAL Snitflader REST HTTP returkoder

Aktiv lytning - som kompetence hos ph.d.-vejledere

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Flytte Thunderbird-adresser til din nye Outlook Exchange.

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Vejledning til Autodesk Account - Autodesk Collection og Autodesk AutoCAD Toolset

IPTV Box (MAG250/254) Bruger Manual

Transkript:

Webkorpora: Yahoo API og perl Jakob Halskov jh.id@cbs.dk Ph.d.-studerende Terminologi og korpuslingvistik den 21. februar 2006 1. Hvad er et API? 2. Hent din egen udviklernøgle! 3. Gennemgang af koden 4. Udvidelse af koden 5. Øvelser

Hvad er et API? Application Programming Interface the interface that a computer system, library or application provides in order to allow requests for service to be made of it by other computer programs, and/or to allow data to be exchanged between them. (wikipedia.org) In short, an API can be thought of as a company's internal telephone book with descriptions of key personnel's titles and job descriptions where you (the outsider) are free to call those people up to do your bidding. (John Maeda, MIT Media Lab) Yahoos web search API: en slags filter som definerer og begrænser vores adgang til at bruge søgemaskinen i vores egne programmer

Yahoos API'er map API, weather API, music API,... Yahoo Search Web Services API Hvad kræver det? En application ID (= en Yahoo! konto) Et par perl moduler a) enten Yahoo::Search (fra http://developer.yahoo.net/download/) b) eller LWP::Simple og XML::SIMPLE (fra www.cpan.org)

Få din egen udviklernøgle! 1. Gå til http://developer.yahoo.net/search 2. Get an application ID 3. Sign up (for at få en Yahoo! ID) 4. Find en ledig Yahoo! ID og udfyld formularen 5. Find en ledig application ID 6. Tjek din mailbox og bekræft registreringen

Gennemgang af koden (løsning b) NB: koden stammer fra Yahoo! Hacks (O'Reilly) - www.oreilly.com/catalog/yahoohks/chapter/hack68.pdf #!/usr/bin/perl -w use strict; #Alle variable skal erklæres med local scope! Besværligt, men sund praksis. use LWP::Simple; use XML::Simple; # Set your unique Yahoo! Application ID my $appid = "XXXXXXXX"; # Grab the incoming search query my $query = join(' ', @ARGV) or die "Usage: yahoo_search.pl <query>\n";

Koden (løsning b) # Construct a Yahoo! Search Query with only required options my $req_url = "http://api.search.yahoo.com/"; $req_url.= "WebSearchService/V1/webSearch?"; $req_url.= "appid=$appid"; $req_url.= "&query=$query"; $req_url.= "&language=en"; $req_url.= &results=10 ; $req_url.= &format=any ; basis URL søgeparametre # Make the request my $yahoo_response = get($req_url); #konstruér et XML-Simple-objekt my $xmlsimple = XML::Simple->new( ); #invokér metoden XMLin på objektet, xml -> en kompleks datastruktur my $yahoo_xml = $xmlsimple->xmlin($yahoo_response);

Koden (løsning b) # Initialize results counter my $i; # Loop through the items returned, printing them out foreach my $result (@{$yahoo_xml->{result}}) { $i++; my $title = $result->{title}; my $summary = $result->{summary}; my $url = $result->{url}; print "$i. $title\n$summary\n$url\n\n"; } #kompleks datastruktur #forklaring følger...

Eksempel på programoutput

Hvad indeholder $yahoo_response? <?xml version="1.0" encoding="utf-8"?> <ResultSet xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="urn:yahoo:srch" xsi:schemalocation="urn:yahoo:srch http://api.search.yahoo.com/websearchservice/v1/websearchresponse.xsd" totalresultsavailable="12900000" totalresultsreturned="20" firstresultposition="1"> <Result> <Title>Fortinet Remote VPN Fortinet Remote VPN Fortinet Remote VPN Fortinet Remote VPN Client V1.4 Client V1.4 Client V1.4 </Title> <Summary>Fortinet Remote VPN. Fortinet Remote VPN. Fortinet Remote VPN. Fortinet Remote VPN. Client V1.4. Client V1.4. Client V1.4. Client V1.4. User Manual. User Manual. User Manual. User Manual. Fortinet Inc. Copyright 2002 Fortinet Inc. All rights reserved. </Summary> <Url>http://www.fortinet.com/doc/vpn/FortinetRemoteVPNClientUserManual.pdf </Url> <ClickUrl>http://www.fortinet.com/doc/vpn/FortinetRemoteVPNClientUserManual.pdf#search='' </ClickUrl> <ModificationDate>1039593600 </ModificationDate> <MimeType>application/pdf </MimeType> <Cache> <Url>http://66.218.69.11/search/cache?appid=terminoweb&query=client&language=en&results=20&format=&u=w ww.fortinet.com/doc/vpn/fortinetremotevpnclientusermanual.pdf&w=client&d=towy8m1amsld&icp=1&.intl=us </Url> <Size>1965039 </Size> </Cache> </Result> <Result>...

Hvad så med $yahoo_xml? $yahoo_xml er en scalar som indeholder en reference til en hash Hashens nøgle-værdi-par svarer til XML'ens øverste niveau: while ((my($k,$v)) = each %{$yahoo_xml}){ print $k, " => ", $v, "\n"; } firstresultposition => 1 xmlns => urn:yahoo:srch Result => ARRAY(0x83cdc38) totalresultsreturned => 10 xmlns:xsi => http://www.w3.org/2001/xmlschema-instance totalresultsavailable => 615000000 xsi:schemalocation => urn:yahoo:srch http://api.search.yahoo.com/...xsd

Kort om referencer Hvad er referencer?

Referencer og komplekse datastrukturer Referencer bruges i perl til indlejring af datastrukturer Referencer er scalars som skal pakkes ud for at tilgå de faktiske datastrukturer de refererer til (~pointers i C). @en_array = ( det, er, lidt, tricky ); $en_anden_array[0] = @en_array; print $en_anden_array[0]; #output er 4! PROBLEM: elementer i lister skal være scalars! LØSNING: erklær en reference til array1, gem den i en scalar og put den så i array2! $array_ref = \@en_array; $en_anden_array[0] = $array_ref;

Pile og Tuborg $en_anden_array[0] = $array_ref; print $en_anden_array[0]; #output er ARRAY(0x814e630) #Pak referencen ud med Tuborg-klammer print @{$en_anden_array[0]}; #output er deterlidttricky print ${$en_anden_array[0]}[0]; #output er det LETTERE SYNTAKS: ${$en_anden_array[0]}[0] er det samme som $en_anden_array[0]->[0]

Hvad indeholder @{$yahoo_xml{result}} så? $yahoo_xml: reference til en hash med 7 nøgler my %yahoo_xml = %{$yahoo_xml}; #1. udpakning @{$yahoo_xml{result}}: værdien af nøglen er en reference til en array som indeholder referencer til 10 hashes (standard antal søgeresultater) foreach my $element (@{$yahoo_xml{result}}){ print $element, ; } #2. udpakning HASH(0x864da3c) HASH(0x864da48) HASH(0x864db68) HASH(0x864e354) HASH(0x864dc34)...

Hvad er der i de 10 hashes? foreach my $hash_ref (@{$yahoo_xml{result}}){ while ((my($k,$v) = each %{$hash_ref}){ print $k, =>, $v, \n ; } print \n ; } #3. udpakning MimeType => text/html Cache => HASH(0x8649334) ModificationDate => 1139126400 #antal sekunder siden 1. januar 1970! ClickUrl => http://httpd.apache.org/ Url => http://httpd.apache.org/ Summary => Effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. Title => Apache HTTP Server Project MimeType => text/html Cache => HASH(0x8649334) ModificationDate => 1139126400...

Næste gang: Udvidelse af koden Mål: vi vil ikke kun printe dokumenternes titler og summaries, men selve den tekstressource som URL'erne peger på.... open (KORPUS, >>webkorpus_om_$query ); #bruge file handles foreach my $result (@{$yahoo_xml->{result}}) { $i++; my $title = $result->{title}; my $url = $result->{url}; print KORPUS TITEL: $title\nurl: $url\ntekst:\n\n ; if ($url =~ /\.pdf$/) {... } #bruge pdftotext hvis PDF else { print KORPUS `lynx -dump -nolist $url`; } #konvertere med lynx... }

Øvelser Hent en udviklernøgle, download scriptet yahoo_api_orig.pl og indsæt nøglen. Find 5 relevante dokumenter om navigationsstruktur ved at køre scriptet og kigge på resultaterne Tilpas søgningen ved at stille på de to søgeparametre, format (fx. pdf) og results (max 100) Eksperimentér evt. med flere søgeparametre fra http://developer.yahoo.net/search/web/v1/websearch.html