NLP as a Service - slovak texts analysis

NLP pipeline (system architecture)

From text to token sequence (NLP modules).

NLP4SK architecture overview

  • -> Text Preprocessors
  • -> Tokenization (Word / Sentence boundary identification)
  • -> Restoration (Diacritic restoration, Abbreviation restoration)
  • -> POS tagging
  • -> Lemmatization
  • -> Stemming
  • -> Semantic tagging (NER, SCR, ...)
  • -> Relationship tagging (Coreferences, Appositions,...)
  • -> Sentiment analysis
  • -> Linked Open Data (LOD)
  • -> Resolvers
  • -> Output Formatter

API Documentation

POST: http://arl6.library.sk/nlp4sk/api

Parameter Possible values Required
text Text, ktorý chcem analyzovať. Y
apikey DEMO Y
TextPreprocessor BasicTextPreprocessor | ExtendedTextPreprocessor | ... N
tokenizer WhiteSpaceTokenizer | WhiteSpaceAndPunctuationTokenizer | SmartRuleTokenizer N
textrestorer DictionaryDiacriticRestorer | ProbabilisticDiacriticRestorer N
lemmatizer DictionaryLemmatizer | ProbabilisticLemmatizer N
stemmer DictionaryStemmer | ProbabilisticStemmer N
postagger DictionaryPOSTagger | IntersectionPOSTagger | ProbabilisticPOSTagger N
semantictaggers[] BasicNERTagger | BasicSCRTagger | NumberTagger | TemporalTagger | ContextualNERTagger | ... N
sentimentanalyser DictionarySentimentAnalyser | ExtendedSentimentAnalyser | ... N
resolvers[] NERResolver | LegalDocumentResolver ... N
formatters[] POSFineGrainedFormatter | POSCoarseGrainedFormatter | ... N

Output example

[{ "word": "Text", "meta": "{S}", "pos": [ "SSis1" ], "lemma": [ "text" ], "ner": [], "scr": []},{ "word": ",", "pos": [ "Z" ], "lemma": [ null ], "ner": [], "scr": []},{ "word": "ktorý", "pos": [ "PAis1" ], "lemma": [ "ktorý" ], "ner": [], "scr": []},{ "word": "chcem", "pos": [ "VKesa" ], "lemma": [ "chcieť" ], "ner": [], "scr": []},{ "word": "analyzovať", "pos": [ "VIe" ], "lemma": [ "analyzovať" ], "ner": [], "scr": []},{ "word": ".", "meta": "{/S}", "pos": [ "Z" ], "lemma": [ null ], "ner": [], "scr": []}]

Demo

Modules

Brief description of several modules (in slovak language).

TextPreprocessors

  • BasicTextPreprocessor - BasicTextPreprocessor
    Základná úprava vstupného textu (odstránenie HTML tagov, referencií, nesprávneho kódovania...
  • LawTextPreprocessor - LawTextPreprocessor
    Korekcia právnických textov

Tokenizers

  • SmartRuleTokenizer - Tokenizer využívajúci naučené pravidlá
    Rozdelí text na tokeny na základe bielych znakov a množiny špeciálnych pravidiel slovenského jazyka (zaužívané písanie čísiel, skratiek a pod.).
  • WhitespaceAndPunctuationTokenizer -
    Rozdelí text na tokeny na základe bielych znakov a špeciálnych znakov (napr. bodka, čiarka ...).
  • WhitespaceTokenizer -
    Rozdelí text na tokeny na základe bielych znakov.

TextRestorers

  • AbbreviationRestorer - Rekonštrukcia skratiek a akronymov
    Identifikácia skratiek a akronymov v texte
  • DictionaryDiacriticRestorer - DictionaryDiacriticRestorer
    Identifikácia diakritiky na základe slovníka.
  • ProbabilisticDiacriticRestorer - ProbabilisticDiacriticRestorer
    Identifikácia diakritiky na základe pravdepodobnosti.
  • ProbabilisticDiacriticRestorerPlus - ProbabilisticDiacriticRestorerPlus
    Identifikácia diakritiky na základe pravdepodobnosti.
  • SlangRestorer - Rekonštrukcia slangových slov
    Rekonštrukcia slangových slov v texte
  • TypoRestorer - Rekonštrukcia preklepov
    Rekonštrukcia preklepov v texte

POSTaggers

  • DictionaryPOSTagger - Slovníkový Tagger
    Identifikácia slovných druhov na základe slovníka.
  • DictionarySlangPOSTagger - Slovníkový Tagger
    Identifikácia slovných druhov na základe slovníka.
  • IntersectionPOSTagger - Prienikový Tagger
    Identifikácia slovných druhov a gramatických kategórií na základe prieniku všetkých možností uvedených v slovníku.
  • ProbabilisticPOSTagger - Pravdepodobnostný (štatistický) Tagger
    Identifikácia slovných druhov na základe pravdepodobnosti.

Lemmatizers

  • DictionaryLemmatizer - Slovníkový lematizér
    Identifikácia základných tvarov slov na základe slovníka.
  • ProbabilisticLemmatizer - Pravdepodobnostný lematizér
    Identifikácia základných tvarov slov na základe pravdepodobnosti.

Stemmers

  • DictionaryStemmer - Slovníkový stemmer
    Identifikácia koreňov slov na základe slovníka.
  • ProbabilisticStemmer - Pravdepodobnostný stemmer
    Identifikácia koreňov slov na základe pravdepodobnosti.

SemanticTaggers

  • BasicNERTagger - Základný NER (identifikácia názvoslovných entít)
    Priradí informáciu o entite zo slovníka pre slová, ktoré sa začínajú veľkým písmenom (PER = osoba, LOC = lokalita, ORG = organizácia).
  • BasicNERTaggerTeam13 - BasicNERTaggerTeam13
    Experimentálny NER pre Tím 13.
  • BasicSCRTagger - Základný SCR (Sense Category Recognizer) - rozpoznávač kategórií slov.
    Priradí informáciu zo slovníka pre slová určitých slovných druhov
  • ContextualNERTagger - Kontextový NER
    Priradí značku entity na základe kontextu (okolia slova), bez použitia slovníka.
  • NumberTagger - Identifikácia číselných údajov
    Priradí značky súvisiacie s čislom (percento, hodnota, mena).
  • QuantityUnitTagger - Identifikácia pre jednotky (OTH/units)
    Priradí značky pre fyzikálne jednotky a veličiny .
  • TemporalTagger - Identifikácia pre časové údaje (TMP/* => TMP/date,TMP/time,TMP/year,TMP/month,TMP/day,TMP/day_of_week)
    Priradí značky pre časové údaje tokenom na základe lexikálnych a syntaktických pravidiel (rok, mesiac, deň, dátum, čas, ...).
  • UnitTagger - Identifikácia pre jednotky (OTH/units)
    Priradí značky pre fyzikálne jednotky a veličiny .

RelationshipTaggers

  • CoreferenceTagger - Identifikácia koreferencií

SentimentAnalysers

  • DictionarySentimentAnalyser - DictionarySentimentAnalyser
    Identifikácia sentimentu viet na základe slovníkov vyjadrujúcich polaritu slova + základné pravidlá pri použití negácie, intenzifikátorov (slov zvyšujúcich intenzitu) a deminutív (slov znižujúcich intenzitu).
  • ExtendedSentimentAnalyser - ExtendedSentimentAnalyser
    Identifikácia sentimentu tokenov - specialny pristup bez nazvu 2

LODRecognizers

  • LODRecognizer - LODRecognizer
    Prepojí pojmy na otvorené a prepojené dáta (Linked Open Data).

Resolvers

  • LegalDocumentResolver - Rekonštrukcia pojmov z oblasti práva
    Rekonštrukcia pojmov z právnických dokumentov
  • NERResolver - Vyladenie NER
    Vyladenie zajužívaných pojmov v slovenčine.

OutputFormatters

  • BaseFormatter -
  • CoarseGrainedFormatter -
    Coarse formatter pre: POS, NER, CSR (slovné druhy bez gramatických kategórií)
  • FineGrainedFormatter -
    Fine Formatter pre: POS, NER, CSR (slovné druhy vrátane gramatických kategórií - rod, čislo, pád, osoba, čas)
  • LemmatizationFormatter -
  • NERCoarseGrainedFormatter -
    NER Coarse
  • NERFineGrainedFormatter -
    NER Fine
  • POSCoarseGrainedFormatter -
    POS Coarse
  • POSFineGrainedFormatter -
    POS Fine
  • SCRCoarseGrainedFormatter -
    SCR Coarse
  • SCRFineGrainedFormatter -
    SCR Fine
  • SentenceSentimentFormatter -
    Sentence sentiment formatter
  • SentimentKinit3classFormatter -
    Kinit sentiment formatter -
  • SentimentKinit8classFormatter -
    Kinit sentiment formatter - 7class + no sentiment
  • SimplePOSCoarseFormatter -
  • SimplePOSFormatter -