Løsningforslag for obligatorisk innlevering 2 INF2820

Like dokumenter
INF 2820 V2018: Innleveringsoppgave 1 - løsningsforslag

INF 2820 V2016: Innleveringsoppgave 2

INF 2820 V2016: Obligatorisk innleverinsoppgave 2

Kva er klokka? Kva er klokka? Kva er klokka?

INF 2820 V2018: Innleveringsoppgave 2

INF 2820 V2018: Innleveringsoppgave 1

1 3Hva er klokka? Hva er klokka? Hva er klokka? Hva er klokka? Hva er klokka? Hva er klokka?

INF 2820 V2015: Obligatorisk innleverinsoppgave 2

Meg selv Faggruppe. Substantiv Verb ÅLO, PLE, RVA GYM ELY; RVA ÅLO; RVA

INF 2820 V2016: Obligatorisk innleverinsoppgave 1

INF 2820 V2018: Innleveringsoppgave 3

INF1000 Eksamen 2014 (modifisert)

INF2820 Datalingvistikk V2016. Forelesning 4, 10.2 Jan Tore Lønning

INF2820 Datalingvistikk V2018 Forelesning 4, 5.2 Jan Tore Lønning

INF2820 Datalingvistikk V2017 Forelesning 4, 6.2 Jan Tore Lønning

Engelsk gruppe 2 høsten 2015

Mandatory assignment 1, INF2820, 2013

Norsk minigrammatikk bokmål

INF 2820 V2016: Innleveringsoppgave 3 del 1

INF2820 Datalingvistikk V2015. Forelesning 4, 9.2 Jan Tore Lønning

INF 2820 V2016: Innleveringsoppgave 3 hele

2/6/2012. Begrensninger ved regulære språk. INF2820 Datalingvistikk V2012. Formelle språk som ikke er regulære KONTEKSTFRIE GRAMMATIKKER.

3/5/2012. Chart alternativ datastruktur. Fundamentalregelen. Chart-parsing. Bottom-up FORMELL SPRÅKTEORI. Jan Tore Lønning

NORSK ANDRESPRÅKSKORPUS KURSHEFTE. ASK, kurshefte Hilde Johansen (2011) 1

APPENDIKS D Geminittisk språk/grammatikk

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF1000 Eksamen 2014 (modifisert)

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Ukeplan Navn: Uke: 18

NORDISKE STUDIER I LEKSIKOGRAFI

INF2820 Datalingvistikk V2016. Forelesning 4, 10.2 Jan Tore Lønning

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

Morfologi. Studiet av ordenes struktur Kap. 11 Om morfer (selvsagt) og litt større ting. EXFAC EURA 2. Morfologi1 1

Gordana Ili_ Holen Institutt for lingvistiske fag Det historisk-filosofiske fakultet Universitetet i Oslo g.i.holen@hfstud.uio.no

Veiledning og tilleggsoppgaver til kapittel 5 i Her bor vi 1

Setningsledd. Norsk som fremmedspråk Side 131

2/24/2012. Dynamic Programming. I dag. Example. Example PARSING. Jan Tore Lønning

The Oslo-Bergen-Tagger and The Nomen Nescio Project

INF2820 Datalingvistikk V2014. Forelesning 4, 6.2 Jan Tore Lønning

Eksamensoppgaver 2014

INF2820 Datalingvistikk V2012

INF1820: Ordklasser INF1820: Ordklasser. Arne Skjærholt. 13. februar. INF1820: Ordklasser. Arne Skjærholt. 13. februar

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Arbeidsbok Nivå 1 og Nivå 2 / bokmål

Finne ut om en løsning er helt riktig og korrigere ved behov

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

INF2820 Datalingvistikk V2012. Jan Tore Lønning

INF2820 Datalingvistikk V2018 Forelesning 3, 29. jan. Jan Tore Lønning

Ukeplan Navn: Uke: 34

Lokal læreplan i samisk trinn. Trinn 6 Periodeplan 1 uke ca Kompetansemål

INF2820 Datalingvistikk V2017 Forelesning 3, 30.1 Jan Tore Lønning

deler: Fig. 1 3rd Nordic Conference of Computational Linguistics NODALIDA

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Utvida rettleiing til søk i nynorskkorpuset


UKEPLAN UKE 43 UKE: 43 DATO: GRUPPE: E

Øvingsforelesning 5 Python (TDT4110)

Oppgavesett for Python

Informasjon Eksamen i IN1000 høsten 2017

EXFAC EURA Syntaks2 1

INF2820 Datalingvistikk V gang, Jan Tore Lønning

INF2820 Datalingvistikk V2012. Jan Tore Lønning

Øvingsforelesning 7 i Python (TDT4110)

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

INF2820 Datalingvistikk V2016. Jan Tore Lønning

Øvinger september Wiebke Ramm, Kjetil Rå Hauge

IN1000 Obligatorisk innlevering 7

UKE TEMA SKRIVE GRAMMATIKK VERK ARBEIDMETODER. flertall

Objektorientert programmering i Python

TDT4110 IT Grunnkurs Høst 2015

Øvingsforelesning 5 Python (TDT4110)

INF2820 Datalingvistikk V Gang 30.3 Jan Tore Lønning

INF2820 Datalingvistikk V Gang 4.5 Jan Tore Lønning

INF2820 Datalingvistikk V2015. Jan Tore Lønning

"Det er fort gjort og skrive feil." En presentasjon av en automatisk grammatikkontroll for bokmål

Arbeidsgang ved hver lønnskjøring

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Finne ut om en løsning er helt riktig og korrigere ved behov

Lesekurs i praksis. Oppgaver på «Nivå 2» Vigdis Refsahl

Innhold. Forord... 19

Tid: M6lform: Sidetal: 8. Vedlegg: Merknader: I oppgive 10 skriver du bare en av oppgavene./in task l0 you. Hjelpemiddel: Ingenordbok/Nodictionary

Forelesning i Matte 3

Finn-Erik Vinje. Riktig norsk. 4. utgave. j UKiVEr?S!TA rseibliothek KiEL! - ZE^TRALB!3L!OTHEK -

Periodeplan for M1 høsten 2017.

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

INF2820 Datalingvistikk V forelesning, 30.1 Jan Tore Lønning

1/31/2011 SAMMENHENGER FSA OG REGULÆRE UTTRYKK. Regulære språk. Fra FSA til RE. Fra regulært uttrykk til NFA REGULÆRE UTTRYKK I DATALINGVISTIKK DEL 2

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Informasjon Prøveeksamen i IN1000 høsten 2018

INF2820 Datalingvistikk V2011. Jan Tore Lønning & Stephan Oepen

7. trinn Målark Chapter 1 Bokmål

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF2820 Datalingvistikk V Gang 6.4 Jan Tore Lønning

IN2110 Obligatorisk innlevering 1a

Transkript:

Løsningforslag for obligatorisk innlevering 2 INF2820 March 16, 2017 Oppgave 1 NFA START: 0 FINAL: 5 EDGES: 0 # 1 0 'kvart' 3 0 MINUTE 4 1 'halv' 2 1 HOUR 5 2 HOUR 5 3 PRE 2 4 PRE 1 ABRS: HOUR: 'ett', 'to', 'tre', 'fire', 'fem', 'seks', 'syv', 'åtte', 'ni', 'ti', 'elleve', 'tolv' MINUTE: 'ett', 'to', 'tre', 'fire', 'fem', 'seks', 'syv', 'åtte', 'ni', 'ti', 'elleve', 'tolv', 'tretten', 'fjorten' PRE: 'på', 'over' Kjøringseksempel from nfa_smart import * correct = ("tre", "halv fem", "ti på syv", "fem over halv åtte", "kvart over ni", "kvart på ti", "fem på ti", "ti over tolv", "fem på halv syv") incorrect = ("halv", "kvart på halv ni", "fem over kvart på ti", "ti på halv", "halv over to", "halv på tolv", 1

"halv på kvart ni", "ti over fem over ett") nfa = NFAFromFile('klokken.nfa') for lst, status in ((correct, True), (incorrect, False)): for item in lst: if nrec(item.split(), nfa)!= status: if status: print("should have been recognized: '{}'".format(item)) else: print("should not have been recognized: '{}'".format(item)) Oppgave 2 a) Using <LancasterStemmer>: split - split splitting - splitting goldfishes - goldf Using <PorterStemmer>: split - split splitting - split goldfishes - goldfish Porter-stemmeren gjør det vi ønsker, mens Lancaster gir ikke samme stem for split og splitting. Lancaster gir også uforventede resultater for goldfishes, mens Porter igjen gjør det vi forventer. b) Ordform Porter Snowball vicious viciou vicious slightly slightli slight commune commun commune his hi his jesus jesu jesus herring her herring Figure 1: Ordformer med forskjellig stemming 2

Oppgave 3 a) form_to_ids = {} for ident,word in sclex.words.items(): if word.form in form_to_ids: form_to_ids[word.form].append(ident) else: form_to_ids[word.form] = [ident] def analyze(form): print("\nanalyser av '{}':".format(form)) for ident in form_to_ids[form]: print("{0.morf_feat} {0.syn_feat}".format(sclex.words[ident])) for form in ("", "øyer"): analyze(form) Resultat Analyser av '': N,sg N_n_sg_def Adj,pos,indef,sg,part Adj_mfn_pos_indef_sg V V_pastpart_indic_passive_main_dummysubj!intrans!trans V V_pastpart_indic_active_main_ditrans!intrans!trans V,pret V_pret_indic_active_main_ditrans!intrans!trans Analyser av 'øyer': N,pl,indef N_f_pl_indef V,pres V_pres_indic_active_main_trans N,pl,indef N_n_pl_indef b) V,pres V_pres_indic_active_main_ditrans!intrans!trans Analyserer kaster som aktivt hovedverb i presens som i Per kaster ballen langt. Det er rimelig at kaster kan være transitivt ( Per kaster ballen ), men ditransitivt ( *Per kaster ballen Ola ) og intransitivt ( *Per kaster ) er mer tvilsomt. 3

Trekk Type Verdi V Ordklasse Verb pres Tempus Presens indic Modus Indikativ active Stemme Aktiv main Hovedverb ditrans Transitivitet Ditransitiv intrans Transitivitet Intransitiv trans Transitivitet Transitiv N,pl,indef N_m_pl_indef Analyserer kaster som substantiv i ubestemt flertall som i India har mange kaster. Trekk Type Verdi N Ordklasse Substantiv pl Numerus Flertall indef Bestemthet Ubestemt m Kjønn Hankjønn N,sg,indef N_m_sg_indef Analyserer kaster som substantiv i ubestemt entall som i Per er en god kaster. Trekk Type Verdi N Ordklasse Substantiv sg Numerus Entall indef Bestemthet Ubestemt m Kjønn Hankjønn c) def print_analysis(identifier): word = sclex.words[identifier], *features = word.syn_feat.split("_") labels = {"N": ("", "", ""), "V": ("", "", "", "", ""), "Det": ("", "", "", "determinant type")} if in labels: print(word.form) print("{:<17}- {}".format("", )) 4

for label,feature in zip(labels[], features): print("{:<17}- {}".format(label, feature)) print() for form in ("kaster", "", "noen", "et"): for identifier in form_to_ids[form]: print_analysis(identifier) Resultat kaster kaster kaster - pres - ditrans!intrans!trans - m - pl - m - n - def - pastpart - passive - dummysubj!intrans!trans - pastpart 5

- ditrans!intrans!trans - pret - ditrans!intrans!trans noen - Det - mfn - pl determinant type - quant et - pres - imp - accinf!intrans!objacomp!ref!trans et - Det - n determinant type - quant d) import re def _from_lexeme(lexeme_id): regexes = {"N": "^N,sg(pl)?,indef$", "V": "^V,inf$", "Adj": "^Adj,pos,(def)?indef,sg(pl)?$"} for word_id in sclex.lexemes[lexeme_id].word_ids: word = sclex.words[word_id] = word.morf_feat.split(",", 1)[0] if re.search(regexes[], word.morf_feat): return word.form 6

for lexeme_id in ("x30027", "x30049", "x30061"): print("{} - {}".format(lexeme_id, _from_lexeme(lexeme_id))) Resultat x30027 - kjeldevatn x30049 - kjemi x30061 - kjemme e) word_to_lexemes = {} for lexeme_id, lexeme in sclex.lexemes.items(): for word_id in lexeme.word_ids: word_to_lexemes[word_id] = lexeme_id def print_analysis_with_(identifier): word = sclex.words[identifier], *features = word.syn_feat.split("_") labels = {"N": ("", "", ""), "V": ("", "", "", "", ""), "Det": ("", "", "", "determinant type")} if in labels: print(word.form) print("{:<16}- {}".format("", )) = _from_lexeme(word_to_lexemes[identifier]) print("{:<16}- {}".format("", )) for label,feature in zip(labels[], features): print("{:<16}- {}".format(label, feature)) print() for form in ("kaster", "", "fisker", "øyer", "foreslo", "gås"): for identifier in form_to_ids[form]: print_analysis_with_(identifier) Resultat kaster - kaste - pres 7

kaster kaster - ditrans!intrans!trans - kaste - m - pl - kaster - m - kast - n - def - kaste - pastpart - passive - dummysubj!intrans!trans - kaste - pastpart - ditrans!intrans!trans - kaste - pret 8

fisker fisker fisker øyer øyer øyer - ditrans!intrans!trans - fisk - m - pl - fiske - pres - intrans!trans - fisker - m - øy - f - pl - øye - pres - trans - øye - n - pl foreslo 9

gås gås - foreslå - pret - ditrans!scomp!trans - gå - infpres - passive - acomp!dummysubj!intrans - gås - f f) print("antall lexemer: {}".format(len(sclex.lexemes))) print("antall ord: {}".format(len(sclex.words))) print("antall ordformer: {}".format(len(form_to_ids))) form_ = set([(word.form, word.morf_feat.split(",")[0]) for word in sclex.words.values()]) print("antall kombinasjoner av ordform og kategori: {}".format(len(form_))) Resultat Antall lexemer: 73993 Antall ord: 344806 Antall ordformer: 287682 Antall kombinasjoner av ordform og kategori: 311217 10

g) words_per_ = {} for word_id,word in sclex.words.items(): = word.morf_feat.split(",")[0] if in words_per_: words_per_[] += 1 else: words_per_[] = 1 print("antall kategorier: {}".format(len(words_per_))) for,n in sorted(words_per_.items(), key=lambda x : x[1], reverse=true): print("antall ord i {}: {}".format(, n)) Resultat Antall kategorier: 14 Antall ord i N: 216713 Antall ord i V: 61189 Antall ord i Adj: 57562 Antall ord i endepart: 7000 Antall ord i Adv: 841 Antall ord i OTHERS: 832 Antall ord i P: 219 Antall ord i Interj: 197 Antall ord i Det: 159 Antall ord i Pro: 38 Antall ord i PossDet: 25 Antall ord i Subj: 24 Antall ord i Conj: 6 Antall ord i Aa: 1 h) analyses_per_wordform = [(len(words), form) for form,words in form_to_ids.items()] analyses_per_wordform.sort(reverse=true) print("de {} mest tvetydige ordformene:".format(n)) for words,form in analyses_per_wordform[:10]: print("'{}': {} analyser".format(form, words)) 11

Resultat De 10 mest tvetydige ordformene: 'raka': 13 analyser 'løyet': 13 analyser 'rana': 12 analyser 'luta': 12 analyser '': 12 analyser 'hola': 12 analyser 'fløyta': 12 analyser 'fjøra': 12 analyser 'trena': 11 analyser 'stima': 11 analyser 12