2015-05-23 11 views
11

Ho la seguente domanda di ricerca Wikipedia API:Wikipedia API: la ricerca di persone famose

http://en.wikipedia.org/w/api.php?&action=query&generator=search&gsrnamespace=0&gsrlimit=20&prop=pageimages|extracts&pilimit=max&exintro&exsentences=1&exlimit=max&continue&pithumbsize=100&gsrsearch=Albert%20Einstein

voglio solo elencare personaggi famosi - c'è un modo per farlo?

+0

Inoltre, se c'è un suggerimento con una limitazione - per esempio uno che funziona solo se esiste una data di nascita - sono ancora interessato. – rybo111

+0

Come definisci famoso? Si potrebbe sostenere che chiunque abbia una pagina di Wikipedia dedicata a loro sia famoso. –

risposta

5

Non esiste un modo preciso per limitare i risultati della ricerca solo a persone famose. Tuttavia, è possibile utilizzare un paio diverso filters in with Wikipedia's CirrusSearch a circa restringere i risultati per le persone:

  • incategory: si può trovare una categoria che include le persone che si desidera? Le categorie potrebbero non essere un'ottima soluzione, poiché potrebbero essere inopportune.
  • linksto: Gli articoli sulle persone si collegano a un articolo comune?
  • hastemplate: Riesci a trovare un modello che viene utilizzato su biografie di personaggi famosi? Il modello {{birth date}} può essere una buona soluzione (se va bene limitare la ricerca a persone per lo più non fittizie con date di nascita note non contestate).

Ad esempio, vedere il tuo stesso risultato di ricerca con hastemplate:Birth_date vedere la gente:

https://en.wikipedia.org/w/api.php?&action=query&generator=search&gsrnamespace=0&gsrlimit=20&prop=pageimages|extracts&pilimit=max&exintro&exsentences=1&exlimit=max&continue&pithumbsize=100&gsrsearch=hastemplate%3ABirth_date+Albert%20Einstein

{ 
"batchcomplete": "", 
"continue": { 
    "gsroffset": 20, 
    "continue": "gsroffset||" 
}, 
"query": { 
    "pages": { 
     "92733": { 
      "pageid": 92733, 
      "ns": 0, 
      "title": "Albert A. Michelson", 
      "index": 14, 
      "thumbnail": { 
       "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Albert_Abraham_Michelson2.jpg/71px-Albert_Abraham_Michelson2.jpg", 
       "width": 71, 
       "height": 100 
      }, 
      "pageimage": "Albert_Abraham_Michelson2.jpg", 
      "extract": "<p><b>Albert Abraham Michelson</b> (surname pronunciation anglicized as \"Michael-son\", December 19, 1852 \u2013 May 9, 1931) was an American physicist known for his work on the measurement of the speed of light and especially for the Michelson\u2013Morley experiment.</p>" 
     }, 
     "736": { 
      "pageid": 736, 
      "ns": 0, 
      "title": "Albert Einstein", 
      "index": 1, 
      "thumbnail": { 
       "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Einstein_1921_by_F_Schmutzer_-_restoration.jpg/76px-Einstein_1921_by_F_Schmutzer_-_restoration.jpg", 
       "width": 76, 
       "height": 100 
      }, 
      "pageimage": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg", 
      "extract": "<p><b>Albert Einstein</b> (<span><span>/<span><span title=\"/\u02c8/ primary stress follows\">\u02c8</span><span title=\"/a\u026a/ long 'i' in 'tide'\">a\u026a</span><span title=\"'n' in 'no'\">n</span><span title=\"'s' in 'sigh'\">s</span><span title=\"'t' in 'tie'\">t</span><span title=\"/a\u026a/ long 'i' in 'tide'\">a\u026a</span><span title=\"'n' in 'no'\">n</span></span>/</span></span>; <small>German:</small> <span title=\"Representation in the International Phonetic Alphabet (IPA)\">[\u02c8alb\u025b\u0250\u032ft \u02c8a\u026an\u0283ta\u026an]</span>; 14 March 1879&#160;\u2013 18 April 1955) was a German-born theoretical physicist.</p>" 
     }, 
     "1139788": { 
      "pageid": 1139788, 
      "ns": 0, 
      "title": "Alfred Einstein", 
      "index": 6, 
      "thumbnail": { 
       "source": "https://upload.wikimedia.org/wikipedia/en/thumb/1/12/Alfred_Einstein.jpg/70px-Alfred_Einstein.jpg", 
       "width": 70, 
       "height": 100 
      }, 
      "pageimage": "Alfred_Einstein.jpg", 
      "extract": "<p><b>Alfred Einstein</b> (December 30, 1880&#160;\u2013 February 13, 1952) was a German-American musicologist and music editor.</p>" 
     }, 

     ... 

Un giorno, si dovrebbe essere in grado di utilizzare Wikidata per la ricerca di soggetti su Wikipedia che sono un instance of human. Per ora, dovremo lavorare con i filtri di ricerca.

+0

Interessante. Ma [una query con 'hastemplate: Birth_date'] (https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=hastemplate%3ABirth_date+Tom%20Cruise&utf8=) non trova Tom Cruise, mentre [la stessa query senza di essa] (https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=Tom%20Cruise&utf8=) lo elenca per primo. – rybo111

+0

Per ora ho deciso di saltare articoli in cui il contenuto della revisione non contiene 'birth_date'. Preferirei escluderli nella query, se possibile. – rybo111

+0

Una volta filtrati per categorie suggerisco di cercare i collegamenti posteriori all'interno di Wikipedia. È facile perché hai un "Quali link qui?" link in ogni articolo. Una persona famosa probabilmente avrà più collegamenti posteriori. – derloopkat

1

La mia soluzione ora è quella di filtrare i risultati della ricerca lato server, mostrando solo articoli che hanno birth_date nel loro contenuto di revisione.

La taglia è ancora disponibile se qualcuno trova la soluzione.

1

Penso che tutte le persone avranno ... birthDate) (se ancora in vita) o birthDate - died) nella prima riga dell'estratto. Quindi credo che è possibile filtrare solo i record con un estratto che soddisfa questa espressione regolare:

^[^.]*\d{4}\)[^.]*\..* 

che corrisponderà solo testi con qualcosa di simile 2001) in prima fila.

Se è sicuro assumere che altri record non ce l'hanno (non sono sicuro che lo sia), allora puoi fermarti lì. In caso contrario, almeno hai filtrato qualche altro record prima di controllare la revisione.

0

C'è due URL per cercare famosi popoli:

https://en.wikipedia.org/w/api.php?action=query&generator=search&format=json&exintro&exsentences=1&exlimit=max&gsrlimit=20&gsrsearch=hastemplate:Birth_date_and_age+Melanie_laurent&pithumbsize=100&pilimit=max&prop=pageimages%7Cextracts 
https://en.wikipedia.org/w/api.php?action=query&generator=search&format=json&exintro&exsentences=1&exlimit=max&gsrlimit=20&gsrsearch=hastemplate:Birth_date+Melanie_laurent&pithumbsize=100&pilimit=max&prop=pageimages%7Cextracts 

L'unica differenza tra i due URL è gsrsearch parametro:

Per convincere la gente vive è necessario utilizzare hastemplate:Birth_date_and_age

Per ottenere morti persone che devi usare hastemplate:Birth_date

Nel mio caso, devo fare due richieste.

In questo esempio url, sostituire Melanie_laurent sostituire la query.

Problemi correlati