technical

On the road to joint embedding with Wikidata lexemes?

Posted on Updated on

road-to-joint-embedding

Is is possible to use Wikidata lexemes for joint embedding, i.e., combining word embedding and knowledge graph entity embedding?

You can create on-the-fly text examples for joint embedding with the Wikidata Query Service. This SPARQL will attempt to interpolate a knowledge graph entity identifier into a text using the short usage example text (P5831):

 SELECT * {
  ?lexeme dct:language ?language ;
          wikibase:lemma ?lemma ;
          ontolex:lexicalForm ?form ;
          p:P5831 [
            ps:P5831 ?text ;
            pq:P5830 ?form 
          ] .
  BIND(SUBSTR(STR(?form), 32) AS ?entity)

  ?form ontolex:representation ?word .
  BIND(REPLACE(?text, STR(?word), ?entity) AS ?interpolated_text)
}

The result is here.

The interpolations are not perfect: There is a problem with capitalization in the beginning of a sentence, and short words may be interpolated into the middle of longer words (I am not able to get a regular expression with word separator “\b” working). Alternatively the SPARQL query result may be downloaded and the interpolation performed in a language that supports advanced regular expression patterns.

The number of annotated usage examples in Wikidata across languages is ridiculously small compared to the corpora typically applied in successful word embedding.

Update:

You can also interpolate the sense identifier: Here is the Wikidata Query Service result.

Advertisements

Danish public domain authors publishing after the spelling reform of 1948

Posted on Updated on

One annoying feature with finding Danish language use examples for Wikidata lexemes is the Spelling reform of 1948 and the requirement of Creative Commons Zero license of Wikidata.

The Spelling reform of 1948 means that old public domain works in Danish, e.g., by Søren Kirkegaard and Hans Christian Andersen are with an old spelling which entails capital first letter for common nouns, the use of “aa” instead of the modern “å” and certain other spelling variations.

Works in Danish published after 1948 might have the new spelling (but verbatim reprints/republications of, e.g., Hans Christian Andersen’s works might still have the old spelling). Unfortunately the copyright law requires the author to dead for more than 70 years before his/her works fall into public domain and we can use it in Wikidata (It is unclear – to me at least – whether the use of short excerpts, e.g., a subsentence from a copyrighted work can be regarded as public domain). Given that we are now more than 70 years away from 1948 we might begin to be “lucky” to see works published after the spelling reform and where the author has died, e.g., in 1949. Such work will soon fall into public domain and we could use these in various context in Wikidata, particularly for the language use examples in Wikidata lexemes. Can we find such works?

My idea was to turn to Wikidata and formulate a SPARQL query against Wikidata Query Service for works published after 1948 and where the author has a death date. Here is one attempt:

SELECT ?work ?workLabel ?author ?authorLabel ?death_date WHERE {
  ?work wdt:P50 ?author .
  ?work wdt:P407 wd:Q9035 .
  ?work wdt:P577 ?publication_date .
  ?author wdt:P570 ?death_date .
  FILTER (YEAR(?publication_date) > 1948)
  SERVICE wikibase:label { bd:serviceParam wikibase:language   
    "[AUTO_LANGUAGE],da,en". }
}
ORDER BY ?death_date
LIMIT 100

The result is available here. Works of Steen Steensen Blicher, Søren Kierkegaard, H.C. Andersen, Meïr Aron Goldschmidt, Ludvig Mylius-Erichsen are in public domain and some of the works have been published after 1948. Some of Ludvig Mylius-Erichsen’s works are available on Wikisource, e.g., Julegæster fra havet. The version on Wikisource is with a modern Danish spelling. It has been used a bit for Wikidata lexemes, see the Ordia page for Julegæster fra havet: https://tools.wmflabs.org/ordia/reference/Q22084925.

Wikidata leksemer og Ordia

Posted on Updated on

ordia-danish-lexical-categoriesI 2018 fik Wikidata mulighed for at repræsentere leksemer (ordbogsopslag) og herunder deres former (dvs. bøjninger) og betydninger (på engelsk: senses). Wikidata-siderne for leksemer adskiller sig fra de almindelige emne-sider på Wikidata: Der er specielle felter til angivelse af sprog, leksikal kategori (ordklasse), grammatiske karakteristikker og for betydninger er der “gloss”-er. Idéen er at få Wikidata til at fungere som en struktueret og maskinlæsbar pendant til Wiktionary.

Da Wikidata, og dermed Wikidatas leksemer, er under Creative Commons Zero-licensen er det ikke umiddelbart nemt at finde gode leksikografiske resurser, og leksemerne er mere eller mindre indtastet manuelt. Der findes enkelte online værktøjer der letter indtastningen: Lucas Wekmeisters forms og Alicia Fagervings senses. Engelske leksemer er vel ikke overraskende dem der i øjeblikket er flest af. Fransk, svensk, nynorsk, polsk og tysk er også godt med. For dansk har jeg indtastet godt over 1.000 leksemer med tilhørende bøjninger og en del betydninger. Mange er linket til det danske ordnet der går under navnet DanNet. En del betydninger – særligt for navneordene – er linket til Wikidatas vanlige emner. Herfra kan man “gå rundt” i vidensgrafen og få hyponymer, hypernymer, synonymer og oversættelser.

Fyldigheden af Wikidatas leksemer både hvad angår antal leksemer og interlinkningen – er stadig noget svag og de forskellige ordbøger man kan skabe ud fra data (etymologisk ordbog, oversættelsesordbog, begrebsordbog, retstavningsordbog) er vel i øjeblikket noget sølle.

Parallel med indtastningen af leksemer har jeg udviklet og udvikler en webapplikation til at vise Wikidatas leksemer: Ordia. Den er tilgængelig fra Wikimedias computersky Toolforge. Da Ordia benytter Wikidata Query Service er det muligt at skabe sider på Ordia der samler information fra forskellige sider af Wikidata. I Ordia kan man for eksempel få en liste over alle bevægelsesverber eller navneord. Ordia har også en tekst-til-leksemer-funktion hvor man kan indtaste en tekst. Webapplikationen vil  udtrække ordene fra teksten, lave en forespørgsel mod Wikidata Query Service med ordene og vise matchede leksemformer og deres betydninger.

Der er stadig mange uklare elementer og åbne spørgsmål ved annoteringen af leksemerne. For eksempel, er den måde vi angiver at et verbum er et anbringelsesverbum brugbar? Skal den transitive og intransive udgave af verbet “hængte” være en eller to leksemer? Skal vi angive oversættelse ved hver enkelt betydning? Skal dansk s-genitiv angives i Wikidata? Kan vi med Wikidata specificere grammatik, således at det på sigt ville være muligt at skabe en grammatiktjekker? Hvad kan Wikidata leksemerne i det hele taget bruges til?

Ordia: Suggestion for a lightning talk at WikidataCon 2019

Posted on Updated on

Ordia is a Wikidata front-end running on the Wikimedia Toolforge https://tools.wmflabs.org/ordia/. Ordia displays information about the lexemes of Wikidata, including their forms and senses. It makes use of the Wikidata Query Service and can thus aggregate information from various different Wikidata pages. For instance, the language aspect shows statistics for the number of lexemes, forms and senses with respect to languages. Ordia also shows overviews over lexical categories, grammatical features, properties and the use of references. If a user input a text into a specific input field, Ordia can extract the individual words and query for the individual words. This talk will demonstrate the various uses of Ordia and briefly discuss the status of Wikidata lexemes.

Ideal number of attendees: 20

Take away: Attendees will know how to use Ordia and the limitation of Ordia and Wikidata lexemes.

Luftige spørgsmål til Wikimedia Strategi 2030

Posted on

Wikimedia forsøger at tænke langsigtet og lægge en strategi der sigter mod året 2030. Et udkast er tilgængelig fra https://meta.wikimedia.org/wiki/Strategy/Wikimedia_movement/2017/Direction

Her er nogle luftige spørgsmål der måske ville kunne få folk til at tænke over tingene:

  1. Hvorfor skal vi ha’ en strategi? Bør Wikimedia ikke blot udvikling sig organisk? Kan vi overhovedet forsige meget til 2030? Hvis vi ikke allerede kender vores strategi sidder vi så ikke allerede fast?
  2. Sidder vi fast i wiki-interfacet?
  3. Skal vi fortsætte med PHP MediaWiki interfacet som det primære software?
  4. Hvorfor er Wikiversity ikke blevet større, og slet ikke eksisterende på dansk? Er det fordi folk ikke gide lave Wikiversity? Er det fordi vi ikke ved hvad wikiversity er eller skal være? Er det fordi wiki-tekniske ikke fungerer i undervisningssammenhæng. Hvad skal vi ændre for at få det til at fungere?
  5. Hvorfor laver folk ikke flere video? Er det fordi at det er teknisk for besværlig? Er det for produktionsmæssigt for besværligt? Hvordan kunne Wikimedia hjælpe?
  6. Hvorfor er Stackoverflow det primære sted for faglige spørgsmål og svar? Burde det ikke have været Wikimedia der var det?
  7. Skal Wikimedia Foundation modtage penge fra firmaer så som Google? Vil det kunne skabe et afhængighedsforhold? Ifølge Peter Gøtzsches mening er patientforeninger påvirket i uheldig retning på grund af afhængighed til medicinalfirmaer. Kan Wikimedia-bevægelsen løbe ind i samme problem? Skaber det problemer med pengedonation, for eksempel i forbindelse med lobbyvirksomhede til EU’s ophavsretsdirektiv?
  8. Hvorfor kan OpenStreetMap kører med et mindre budget? Skyldes det langt mindre server load? Burde Wikimedia neddrosle og vælge en slags OpenStreetMap-model med hvor server værket bliver bedre distribueret til andre?
  9. “Knowledge equity” er et af to centrale begreber i Wikimedia Foundations strategi og noget svært at oversætte. Financial equity er hvad der på danske betegnes egenkapital. Et latinsk ord der nærmer sig findes i Den Store Danske, ellers er min nærmeste tanke det forældede udtryk “billighed”, – “ret og billighed” som det hedder i en dansk sang. Et sådant ord kan vi næppe bruge. Hvad kan vi på dansk forstå som “knowledge equity”?
  10. Kan Wikimedia komme i en situation som man har set Cochrane Collaboration hvor den professionaliserede del af organisationen kommer til at udmanøvrere græsrødderne? Hvad gør vi for at det ikke ske?
  11. Skal vi være stolt af at den danske Wikipedia stort set er opbygget gratis? Sidst jeg spurgte på den danske Wikipedias Landsbybrønd om Wikimedia Strategi blev det nævnt.
  12. Knowledge as a service følger en as-a-service-mønster man ser i datalogi. Her kan det hedder Platform-as-a-service e software-as-a-service. Hvad skal vi egentlig ligge i det? Jeg selv har skabt Scholia, et websted der viser videnskabelige data fra Wikidata via SPARQL-forespørgsler til Wikidata Query Service og Ordia, der gør det samme for leksikografiske data. Som sådan falder tanker om knowledge as a service fint i slag, – og jeg har da også forgæves forsøgt at erindre om det var mig der var med til at foreslå begrebet ved et internationalt Wikimedia-møde i 2017.
  13. Skal Wikimedia engagere sig i aktivisme, så som det sås til afstemningen om EU’s nye ophavsretsdirektiv? Har vi nogen succeshistorier på at det hjælper?
  14. Wikimedia Danmark har fået penge af Wikimedia Foundation til blandt andet et roll-up-banner. Det har været brugt i nogle få sammenhænge og vist været i tv. Er det sådan at Wikimedia Foundation skal bruge dets penge?
  15. Den visuelle editor synes at kunne hjælpe mange nye brugere, men er redigering af Wikipedia på en smartphone ikke meget besværlig? Kan man overhoved gøre noget ved det?
  16. Skal Wikimedia Foundation støtte forskere der bygger værktøjer eller undersøger fænomener på Wikimedia’s wikier?
  17. Normalt fungerer Wikipedia hurtigt, men hvis man kommer til et net der er langsomt oplever man at der kan være frustrerende at arbejde med, for eksempel Wikidata. Er det mon ikke frustrere at arbejde med wikier fra lande som ikke har hurtigt Internet? HVad kan der gøres ved det?
  18. Linux udvikles med en distribueret model, og sådan gør man med mange andre software systemer. Hvor er Wikipedia og andre Wikimedia wikier ikke distribuerede hvor fork og pull requests er nemt?
  19. Hvor mange af Wikimedia Foundations indsamlede midler skal anvendes på events, så som Wikimania?

Danish stopword lists

Posted on Updated on

Python’s NLTK package has some support for Danish and there is a small list of 94 stopwords. They are available with

>>> import nltk
>>> nltk.corpus.stopwords.words('danish')

MIT-licensed spaCy is another NLP Python package. The support for Danish is yet limited, but it has a stopword list. With version 2+ of spaCy, they are available from

>>> from spacy.lang.da.stop_words import STOP_WORDS

SpaCy 2.03 has 219 words in that list.

MIT-licensed “stopwords-iso” has a list of 170 words (October 2016 version). They are available from the GitHub repo at https://github.com/stopwords-iso.

The Snowball stemmer has 94 words at http://snowball.tartarus.org/algorithms/danish/stop.txt.

In R, the GPL-3-licensed tm package uses the Snowball stemmer stopword list. The 94 words are available with:

> install.packages("tm")
> library(tm)
> stopwords(kind="da")

The NLTK stopswords are also the same as the Snowball stopwords. It can be checked with:

import re
import nltk
import requests

url = "http://snowball.tartarus.org/algorithms/danish/stop.txt"
snowball_stopwords = re.findall('^(\w+)', requests.get(url).text,
                                flags=re.MULTILINE | re.UNICODE)
nltk_stopwords = nltk.corpus.stopwords.words('danish')
snowball_stopwords == nltk_stopwords

A search with an Internet search engine on “Danish stopwords” reveals several other pointers to lists.

 

 

Find titles of all works published by DTU Cognitive Systems in 2017

Posted on Updated on

Find titles of all works published by DTU Cognitive Systems in 2017! How difficult can that be? To identify all titles of works from a research organization? With Wikidata and the Wikidata Query Service (WDQS) at hand it shouldn’t be that difficult to do? Nevertheless, I ran into a few hatches:

  1. There is what we can call the “Nathan Churchill Problem”: Nathan Churchill was at one point affiliated with our research section Cognitive Systems and wrote papers, e.g., together with our Morten Mørup. One paper clearly identifies him as affiliated with our section. Searching the DTU website yields no homepage for him though. He is now at St. Michael’s Hospital, Toronto according to a newer paper. So is he no longer affiliated with the Cognitive Systems section? That’s somewhat difficult to establish with credible and citable sources. If he is not, then any simple SPARQL query on the WDQS for Cognitive Systems papers will yield his new papers which shouldn’t be counted as Cognitive Systems section papers. If we could point to a source that indicates whether his affiliation at our section is stopped we could add a qualifier to the P1416 property in his Wikidata entry and extend the SPARQL query. What I ended up doing, was to explicitly filter out two of Churchill’s publications with the ugly line “FILTER(?work != wd:Q42595201 && ?work != wd:Q36384548)“. The problem is of course not just confined to Churchill. For instance, Scholia currently lists new publications by our Søren Hauberg at the Scholia page for DIKU, – a department where he has previously been affiliated. We discussed the affiliation problem a bit in the Scholia paper, see page 253 (page 17).
  2. Datetime datatype conversion with xsd:dateTime. The filter on date is with this line: “FILTER(?publication_datetime >= "2017-01-01"^^xsd:dateTime)“. Something like “FILTER(?publication_datetime >= xsd:dateTime(2017))” does not work.
  3. Missing data. It is difficult to establish how complete the Wikidata listing is for our section with respect to publications. Scraping Google Scholar, PubMed and our local university database of publications could be a possibility, but this is far from streamlined with the tools I have developed.

The full query is listed below and the result is available from this link. Currently, 48 results are returned.

#defaultView:Table
SELECT ?workLabel 
WITH {
  SELECT 
    ?work (MIN(?publication_datetime) AS ?datetime)
  WHERE {
    # Find CogSys work
    ?researcher wdt:P108 | wdt:P463 | wdt:P1416/wdt:P361* wd:Q24283660 .
    ?work wdt:P50 ?researcher .
    ?work wdt:P31 wd:Q13442814 .
    
    # Nathan Churchill seems not longer to be affiliated!?
    FILTER(?work != wd:Q42595201 && ?work != wd:Q36384548)
    
    # Filter to year 2017
    ?work wdt:P577 ?publication_datetime .
    FILTER(?publication_datetime >= "2017-01-01"^^xsd:dateTime)
  }
  GROUP BY ?work 
} AS %results
WHERE {
  INCLUDE %results
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,da,de,es,fr,jp,nl,nl,ru,zh". }
}