Saltu al enhavo

Legi Vikipedion

NLP-biblioteko estas senutila sen teksto por prilabori. esperantilo havigas tiun tekston el Vikipedio per WikiPage, jam senigita je vikia marklingvo.

from esperantilo import WikiPage

page = WikiPage.look_up("Esperanto", language="eo")

page.title          # 'Esperanto'
page.qid            # 'Q143'
len(page)           # nombro da sekcioj

Titoloj, konceptoj kaj lingvoj

Artikolo ekzistas unufoje por ĉiu lingvo, kaj la sama koncepto estas alia paĝo en ĉiu el ili: Parsley, Perejil kaj Petroselo estas tri artikoloj pri unu sama planto. Kio ligas ilin estas la QID, la identigilo kiun Vikidatumoj donas al la koncepto mem — petroselo estas Q26980, en ĉiu lingvo.

look_up uzas tion. Ĝi solvas la titolon al koncepto kaj poste legas la artikolon por ĝi, do la lingvo en kiu vi serĉas kaj la lingvo en kiu vi legas ne devas esti la sama:

WikiPage.look_up("Perejil", language="eo").title
# 'Petroselo'

La titolo estas serĉata unue en language kaj poste en ĉiu el fallback_languages, sekvante alidirektilojn. La artikolo revenas en language, se tiu vikio havas ĝin, aŭ en la unua rezerva lingvo kiu havas ĝin — do kontrolu page.language, kiu eble ne estas la kodo kiun vi petis.

Se neniu listigita lingvo konas la titolon, any_language=True (la defaŭlto) serĉas en Vikidatumoj tra ĉiuj lingvoj. Tiu paŝo estas serĉo, ne konsulto: ĝi trovas ion por preskaŭ ĉiu kredebla vorto, kaj kion ĝi trovas ne nepre estas tio, kion vi celis. Uzu any_language=False por ricevi ValueError anstataŭ divenon.

Sekcioj

La korpo estas mapo de titolo al teksto, en la ordo en kiu la artikolo prezentas ilin. Nur unuanivelaj titoloj malfermas sekcion; pli profundaj restas ene de la teksto de la sekcio al kiu ili apartenas. Vikipedio lasas la enkondukon sentitola, do ĝi estas ŝlosita sub la titolo de la artikolo.

page.section_names          # ['Esperanto', 'Historio', 'Gramatiko', …]
page.section("historio")    # komparata ignorante usklecon
page["Historio"]            # la sama afero
"Historio" in page          # True
page.full_text()            # ĉiu sekcio, kun siaj titoloj

Kio povas misiri

Situacio Kio okazas
Neniu listigita lingvo konas la titolon ValueError
La koncepto havas artikolon en neniu el ili ValueError
Ne ekzistas sekcio kun tiu nomo KeyError
Neniu konekto, tempolimo, API-eraro requests.RequestException

ValueError signifas «la paĝo ne estas tie». Ĉio rilata al la reto aperas kiel escepto de requests, do la du estas kapteblaj aparte.

Ĉiu konsulto kostas inter unu kaj ok HTTP-petoj, depende de kiom da lingvoj oni devas provi. Nenio estas konservata en kaŝmemoro: voki look_up dufoje kun la samaj argumentoj elŝutas ĉion dufoje.

Permesilo

La teksto de Vikipedio estas CC BY-SA. Se vi reeldonas tion, kion vi havigas, konservu la atribuon kaj la permesilon; page.url estas la ligilo por citi.

Lingvoj

Jen listo de kelkaj el la plej uzataj lingvoj, kun iliaj Vikipediaj kodoj:

Lingvo Kodo
Esperanto eo
Angla en
Hispana es
Franca fr
Germana de
... ...

La kompleta listo de kodoj troviĝas en Wikipedia:List of ISO 639 language codes.

Vidu ankaŭ