Språkteknologi (SV2122) Föreläsning 3: Programmering i Python



Relevanta dokument
Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Använda Python Laboration 1 GruDat, DD1344

Språket Python - Del 1 Grundkurs i programmering med Python

Grundläggande datalogi - Övning 1

Föreläsning 1 & 2 INTRODUKTION

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

DD1314 Programmeringsteknik

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Program & programmering

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Föreläsning 1: Intro till kursen och programmering

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Digitalt lärande och programmering i klassrummet

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

729G04 Programmering och diskret matematik. Python 3: Loopar

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDP002 Imperativ programmering

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 1: Intro till kursen och programmering

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Uppgifter teknik HT17 (uppdaterad v. 40)

PROGRAMMERING ÅK 9 INTRODUKTION

Programmeringsteknik II

TDDE44 Programmering, grundkurs

Användarhandledning Version 1.2

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Repetition C-programmering

Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1

TDP002 - Imperativ programmering

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Programmering för språkteknologer II, HT2014. Rum

Avancerade Webbteknologier

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Objektsamlingar i Java

Introduktion till programmering och Python Grundkurs i programmering med Python

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Ordlistor, filhantering och ut på webben. Linda Mannila

Installera Anaconda Python

Extramaterial till Matematik Y

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Grundkurs i programmering - intro

729G04 Programmering och diskret matematik. Föreläsning 7

Introduktion C-programmering

Introduktion till programmering, hösten 2011

DD1311 Programmeringsteknik för S1 Laborationer läsåret

TDIU01 - Programmering i C++, grundkurs

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

F4. programmeringsteknik och Matlab

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Algoritmer. Två gränssnitt

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Kanban är inte din process. (låt mig berätta varför) #DevLin Mars 2012

TDP002 - Imperativ programmering

Extramaterial till Matematik Y

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Imperativ programmering. Föreläsning 2

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Extramaterial till Matematik Y

Grundläggande databehandling ht 2005

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Programmeringsteknik I

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Föreläsning 3 Programmeringsteknik och Matlab DD1315. Importering av moduler. randrange

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Planering av ett större program, del 2 - for och listor. Linda Mannila

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

v. 42 Python HT17 En introduktion Oscar Bergqvist

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Klassrumsprojekt programmering - Digitalt lärande

Programmering i C, 7,5 hp

Introduktion till programmering SMD180. Föreläsning 8: Listor

Rastercell. Digital Rastrering. AM & FM Raster. Rastercell. AM & FM Raster. Sasan Gooran (VT 2007) Rastrering. Rastercell. Konventionellt, AM

Programmering, grundkurs

Programmering i gymnasieskola och vuxenutbildning referensblad till workshop

i LabVIEW. Några programmeringstekniska grundbegrepp

Transkript:

Språkteknologi (SV2122) Föreläsning 3: Programmering i Python Richard Johansson richard.johansson@svenska.gu.se 29 januari 2014

översikt inledning första stegen grundläggande begrepp större byggstenar språkteknologibiblioteket NLTK fortsättningen

programmering i den här kursen varför programmering i denna kurs? detta är en förståelseinriktad kurs... men det blir ändå konkretare om vi ser hur någonting funkar i detalj

programmering datorer är maskiner som utför olika uppgifter åt oss för att kunna göra något användbart måste de få detaljerade instruktioner: ett program en precis beskrivning av hur man löser ett problem steg för steg kallas en algoritm vi använder ett programmeringsspråk för att uttrycka en algoritm som ett datorprogram

vilka ord förekommer i dagens GP, och hur ofta?

ett annat exempel hur bär vi oss åt för att slå upp ett nummer i telefonkatalogen? nns det olika sätt som är mer eller mindre bra?

programmeringsspråk olika programmeringsspråk kan ha olika bakomliggande losoer och vara utformade för olika syften några exempel: C för eektiva program, för detaljerad kontroll över datorns utrustning t.ex. grakkort Matlab, R för beräkningar och statistisk analys Javascript för websidor SQL för att anropa databaser Java, Scala, Python allmänt användbara, för snabb programutveckling

översikt inledning första stegen grundläggande begrepp större byggstenar språkteknologibiblioteket NLTK fortsättningen

ett enkelt exempel x = 5 y = x*x + 1 print x + y

att skriva program programkod skrivs i vanliga textler ler med Python-kod använder normalt ländelsen.py det nns skrivhjälpmedel (editors) som hjälper till vid programskrivning

att köra program vad händer med programtexten?

interaktivt läge vi kan också ge instruktionerna en efter en (interaktivt)

Python på din egen dator Python kan installeras på egen dator http://www.python.org/download

Python på nätet http://www.compileonline.com/execute_python_online.php kör ett program du skriver in https://www.pythonanywhere.com/try-ipython/ interaktiv http://www.pythontutor.com/visualize.html visar steg för steg vad som händer (OBS kan inte användas för att lösa labuppgifterna)

översikt inledning första stegen grundläggande begrepp större byggstenar språkteknologibiblioteket NLTK fortsättningen

en närmare titt på exemplet x = 5 y = x*x + 1 print x + y instruktioner som utförs sekventiellt (steg för steg) aritmetik (räkning): addition (+) och multiplikation (*) variabler: vi ger namn till mellanresultat på slutet en utskrift

när det går fel hur går det här? x = 5 y = x*x + print x + y... eller det här? x = 5 y = x*x + 1 print x + z

att hantera text: strängar text som hanteras i programmering kallas strängar en sträng består av en följd av tecken... och vi kan ta ut enskilda tecken i ett program skriver vi strängar med citattecken (' eller ") text1 = "ena halvan" text2 = 'andra halvan' print text1 + " " + text2 print text1[0]

att hantera ler läsa texten från en l: f = open("textfil.txt") texten_i_filen = f.read() print texten_i_filen skriva text till en l: f = open("textfil_att_skriva.txt", "w") texten = "Detta ska skrivas" f.write(texten)

översikt inledning första stegen grundläggande begrepp större byggstenar språkteknologibiblioteket NLTK fortsättningen

större byggstenar för att göra intelligentare program behöver vi större byggstenar datastrukturer: att hålla ordning på era saker samtidigt kontrollstrukturer: göra annat än bara gå uppifrån och ner

datastrukturer vi kommer att titta på två olika datastrukturer: listor uppslagningstabeller (dictionaries)

listor listor används för att representera sekvenser av data, t.ex. de ord som förekommer i ett dokument i Python skrivs de med hakparenteser [ ] hakparenteserna används också för att komma åt de saker som nns i en lista textlistan = [ "en", "lista", "med", "flera", "ord" ] nummerlistan = [ 87, 12, 35 ] print textlistan[0] print nummerlistan[2]

uppdelning av text om man har en textsträng så kan man omvandla den till en lista genom att skriva strängens namn.split() om inget annat anges så baseras uppdelningen på blanktecken texten = "en text med flera stycken ord" orden_i_texten = texten.split() print orden_i_texten[1] f = open("dagenstidning.txt") texten_i_tidningen = f.read() orden_i_tidningen = texten_i_tidningen.split() print orden_i_tidningen[0]

uppslagningstabeller ibland behöver man lagra saker för att kunna slå upp, och då använder vi en uppslagningstabell (dictionary) exempel: adressböcker, ordlistor,... när vi sätter igång tabellen så används måsvingar { }, för uppslagning och insättning används hakparenteser [ ] givet en nyckel (t.ex. ett namn) slår man upp ett värde (t.ex. ett telefonnummer) ordklasstabell = { "katt": "substantiv" } ordklasstabell["sitta"] = "verb" ordklasstabell["under"] = "preposition" print ordklasstabell["sitta"]

när uppifrån och ner inte räcker kontrollstrukturer används för att skriva exiblare program som inte bara jobbar uppifrån och ner de viktigaste kontrollstrukturerna är följande: repetitionssats (for): gå igenom allt som nns i en lista eller en uppslagningstabell, en sak i taget villkorssats (if): om ett visst villkor gäller, gör SI, annars SÅ

exempel: skriv ut alla talen i en lista krånglig lösning: nummerlistan = [ 87, 12, 35 ] print nummerlistan[0] print nummerlistan[1] print nummerlistan[2] bättre lösning: nummerlistan = [ 87, 12, 35 ] for numret in nummerlistan: print numret

going through a list: iterating using for do something for each member of a collection (list, string,... ) in programming jargon, doing something repeatedly is called a loop

Proper indentation is important! mylist = [7, 4, 8, 12] listsum = 0 for x in mylist: listsum = listsum + x print listsum mylist = [7, 4, 8, 12] listsum = 0 for x in mylist: listsum = listsum + x print listsum

printing the largest of two numbers? user gives us two numbers x and y how can we print a message saying which of them is the largest (or whether they are equal), e.g. x is the largest or y is the largest or x and y are equal

doing dierent things depending on a condition The if statement will execute a block depending on a condition Simplest case: if x > 1000: print "x is greater than 1000" Selecting one of two alternatives: if x > 1000: print "x is greater than 1000" else: print "x is not greater than 1000" Even more alternatives: if x > 1000: print "x is greater than 1000" elif x < 0: print "x is less than 0" else: print "x is between 0 and 1000"

the if statement

printing the largest of two numbers assume we are given x and y... if x > y: print "x is the largest" elif x < y: print "y is the largest" else: print "x and y are equal"

ett större exempel: ordstatistik i ett dokument

sista detaljen innan vi kan lösa uppgiften nns en nyckel i uppslagningstabellen eller inte? vi använder in funkar på samma sätt för listor ordklasstabell = { "katt": "substantiv" } ordklasstabell["sitta"] = "verb" ordklasstabell["under"] = "preposition" print ordklasstabell["sitta"] testordet = "katt" if testordet in ordklasstabell: print "ordet finns i tabellen" else: print "ordet finns INTE i tabellen!"

lösning av ordräkningsuppgiften tabell = {} f = open("tidningen.txt") texten = f.read() orden_i_texten = texten.split() for ordet in orden_i_texten: if ordet not in tabell: tabell[ordet] = 1 else: tabell[ordet] = tabell[ordet] + 1 for ordtyp in tabell: print ordtyp, tabell[ordtyp]

resultat utveckla 1 bokslut 1 senare 1 och 5 han 2 till 2 hade 1 kunder 2 ska 2 få 2 datorn 1 jag 1 har 3...

översikt inledning första stegen grundläggande begrepp större byggstenar språkteknologibiblioteket NLTK fortsättningen

bibliotek det är vanligt att man grupperar Python-kod i bibliotek när man installerar Python så följer det med ett stort antal inbyggda bibliotek: http://docs.python.org/2/library/ bibliotek kan också installeras om man har gjort något återanvändbart så kan man dela med sig av det t.ex. https://pypi.python.org/pypi om man i ett Python-program vill använda ett bibliotek så skriver man import

NLTK NLTK är ett bibliotek som innehåller många språkteknologiska verktyg orduppdelare ordklassmärkare lexikonresurser... inriktat på engelskspråkig användning, men en hel del kan användas också för andra språk http://nltk.org

NLTK-exempel: använding av WordNet from nltk.corpus import wordnet synsets = wordnet.synsets("cat") for synset in synsets: print synset.lemma_names

resultat: alla betydelser av cat ['cat', 'true_cat'] ['guy', 'cat', 'hombre', 'bozo'] ['cat'] ['kat', 'khat', 'qat', 'quat', 'cat', 'Arabian_tea', 'African_tea'] ["cat-o'-nine-tails", 'cat'] ['Caterpillar', 'cat'] ['big_cat', 'cat'] ['computerized_tomography', 'computed_tomography', 'CT',... ['cat'] ['vomit', 'vomit_up', 'purge', 'cast', 'sick', 'cat', 'be_sick',...

översikt inledning första stegen grundläggande begrepp större byggstenar språkteknologibiblioteket NLTK fortsättningen

för den som vill fördjupa sig se kurswebsidan http://docs.python.org/2/tutorial/

första datorövningen nästa onsdag 1012 i T225 (i losohuset) tema: Python och NLTK lärare: Ildikó

nästa föreläsning kategorisering av text (kapitel 6 i boken) fredag 7 februari i K235