Med detta API kan du hitta ordklass (substantiv, verb, adjektiv, ...) och grundform (programmet -> program) för ord i svensk text.
API:et bygger på UDPipe, ett projekt vid Charles University i Tjeckien. UDPipe gör allt grovarbete:
JSON Tagger (detta projekt) lägger till:
Vem ligger bakom detta?
Vill du använda API:et?
API:et kräver att du skickar en POST-request över HTTP. Det går att göra i alla plattformar och programmeringsspråk, men här är några av de vanligaste:
cURL finns förinstallerat på alla Mac och Linux-datorer. Starta en terminal och kör:
curl https://json-tagger.com/tag -d "Fördomen har alltid sin rot i vardagslivet - Olof Palme"
Installera först requests genom att skriva "pip install requests".
import requests
r = requests.post("https://json-tagger.com/tag", data="Fördomen har alltid sin rot i vardagslivet - Olof Palme".encode("utf-8"))
print(r.json())
Installera först requests genom att skriva "pip install requests".
# -*- coding: utf-8 -*-
import requests
r = requests.post("https://json-tagger.com/tag", data=u"Fördomen har alltid sin rot i vardagslivet - Olof Palme".encode("utf-8"))
print r.json()
Installera först http.rb genom att skriva "gem install http".
require 'http'
r = HTTP.post("https://json-tagger.com/tag", :body => "Fördomen har alltid sin rot i vardagslivet - Olof Palme")
puts r.to_s
Installera först request genom att skriva "npm install -g request".
var request = require('request');
request.post({url: 'https://json-tagger.com/tag', body: "Fördomen har alltid sin rot i vardagslivet - Olof Palme"}, function (error, response, body) {
console.log(body)
})
Spara koden nedan i en fil som heter JsonTagger.java, och kompilera den med "javac JsonTagger.java". Sen kan du köra den med "java JsonTagger".
import java.net.*;
import java.io.*;
public class JsonTagger {
public static void main(String[] args) throws Exception {
URL url = new URL("https://json-tagger.com/tag");
String text = "Fördomen har alltid sin rot i vardagslivet - Olof Palme";
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.write(text.getBytes());
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;
while ((output = reader.readLine()) != null) {
System.out.println(output);
}
}
}
API:et returnerar JSON, ett format som det finns bibliotek för att läsa i alla programmeringsspråk.
{
"sentences": [
[
{
"word_form": "Fördomen",
"lemma": "Fördom",
"ud_tags": {
"pos_tag": "NOUN",
"features": {
"Case": "Nom",
"Definite": "Def",
"Gender": "Com",
"Number": "Sing"
}
},
"sentence_id": 0,
"word_id": 0
},
{
"word_form": "har",
"lemma": "ha",
"ud_tags": {
"pos_tag": "VERB",
"features": {
"Mood": "Ind",
"Tense": "Pres",
"VerbForm": "Fin",
"Voice": "Act"
}
},
"sentence_id": 0,
"word_id": 1
},
{
"word_form": "alltid",
"lemma": "alltid",
"ud_tags": {
"pos_tag": "ADV",
"features": null
},
"sentence_id": 0,
"word_id": 2
},
{
"word_form": "sin",
"lemma": "sig",
"ud_tags": {
"pos_tag": "DET",
"features": {
"Definite": "Def",
"Gender": "Com",
"Number": "Sing",
"Poss": "Yes",
"PronType": "Prs"
}
},
"sentence_id": 0,
"word_id": 3
},
{
"word_form": "rot",
"lemma": "rot",
"ud_tags": {
"pos_tag": "NOUN",
"features": {
"Case": "Nom",
"Definite": "Ind",
"Gender": "Com",
"Number": "Sing"
}
},
"sentence_id": 0,
"word_id": 4
},
{
"word_form": "i",
"lemma": "i",
"ud_tags": {
"pos_tag": "ADP",
"features": null
},
"sentence_id": 0,
"word_id": 5
},
{
"word_form": "vardagslivet",
"lemma": "vardagsliv",
"ud_tags": {
"pos_tag": "NOUN",
"features": {
"Case": "Nom",
"Definite": "Def",
"Gender": "Neut",
"Number": "Sing"
}
},
"sentence_id": 0,
"word_id": 6
},
{
"word_form": "-",
"lemma": "-",
"ud_tags": {
"pos_tag": "PUNCT",
"features": null
},
"sentence_id": 0,
"word_id": 7
},
{
"word_form": "Olof",
"lemma": "Olof",
"ud_tags": {
"pos_tag": "PROPN",
"features": {
"Case": "Nom"
}
},
"sentence_id": 0,
"word_id": 8
},
{
"word_form": "Palme",
"lemma": "Palme",
"ud_tags": {
"pos_tag": "PROPN",
"features": {
"Case": "Nom"
}
},
"sentence_id": 0,
"word_id": 9
}
]
]
}
sentences
word_form
lemma
ud_tags
pos_tag
features
Exempel: { "Case": "Nom", "Definite": "Def", "Gender": "Com", "Number": "Sing" }
sentence_id
word_id
Förkortningarna i pos_tag
motsvarar alltså ordklasser. Ordklasserna (både dessa och de mer specifika nedan) kommer från ett projekt som heter Universal Dependencies. Taggarna är speciellt framtagna för att fungera på flera olika språk.
Kod | Ordklass | Exempel |
---|---|---|
ADJ | Adjektiv | glad |
ADP | Adposition | hos |
ADV | Adverb | inte |
AUX | Hjälpverb | skulle |
CCONJ | Samordnande konjunktion | och |
DET | Determinativa pronomen | den |
INTJ | Interjektion | usch! |
NOUN | Substantiv | pudding |
NUM | Räkneord | 123 |
PART | Partikel | ju |
PRON | Pronomen | vem |
PROPN | Egennamn | Carl |
PUNCT | Skiljetecken | . (punkt) |
SCONJ | Subjunktion | att |
SYM | Symbol | € |
VERB | Verb | kasta |
X | Övrigt |
Ordklasserna ovan är relativt grovkorniga. För att gå mer på djupet finns även specifika böjningsformer i features
. Dessa finns dokumenterade på engelska på Universial Dependencies feature-referens.