1 / 47

Programming for Linguists

Programming for Linguists. An Introduction to Python 24/11/2011. From Last Week.

Download Presentation

Programming for Linguists

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming for Linguists An Introduction to Python24/11/2011

  2. From Last Week • Ex 1)def name( ): name = raw_input("what is yourfirst name? ") length = len(name) last_letter = name[-1] print name," contains ", lenght, " letter(s) and endswith a(n) ”,last_lettername( )

  3. Ex 2)defplay( ): sentence = raw_input(“Sentence? ”) print sentence.upper( ) print sentence.lower( ) print sentence.title( ) print "The lowest index of the letter 'a' is”,sentence.index("a") ifsentence.index("a")>3: print sentence.replace ("a","e") play( )

  4. Ex 3)deftkofschip( ): verb=raw_input ("Please enter the root of a Dutch verb\n") ifverb.endswith ("t") or verb.endswith("k") or verb.endswith ("f") or verb.endswith("s") or verb.endswith("c") or verb.endswith("h") or verb.endswith("p"): print verb+"te" else: print verb+"de" tkofschip( )

  5. Fruitful Functions • Functions which produce a result: calling the function generates a value>>>len(“python”) 6 • Often contain a return statement:return immediately from the function and use the following expression as a return value

  6. Try: def word_length1(word): return len(word) def word_length2(word): print len(word) a = word_length1(“hello”) b = word_length2(“hello”) type(a) type(b)

  7. The return statement gives you a value which you can use in the rest of your script • The print statement does not give you a value • You can use multiple return statements, e.g.:def absolute_value(x): if x >= 0: return x else: return -x

  8. You can return a value, a variable, a function, a boolean expression • As soon as a return statement executes, the function terminates • Code that appears after a return statement = dead code

  9. Write a comparefunctionthatreturns ‘1’ if x > y, ‘0’ if x == y, and ‘-1’ if x < y

  10. def compare(x, y): if x == y: return 0elifx > y: return 1 else: return -1

  11. Recursion • As we saw: one function can call another • A function can also call itself • A function that calls itself = recursive • The process = recursion

  12. Try this:def countdown(n): if n<=0: print ‘Happy Newyear!’ else: print n n = n - 1 countdown(n)countdown(10)

  13. Infinite Recursion • If a recursion never reaches a base case, it goes on making recursive calls forever the program never terminates • Generally not a good idea • Python reports an error message when the maximum recursion depth is reached

  14. e.g.def recurse( ): recurse( )recurse( )

  15. The while statement: used to perform identical or similar tasksdef countdown(n):while n > 0: print n n = n – 1 print “Happy Newyear!”

  16. 3 steps: • evaluate the condition, yielding True or False • if the condition is True, execute the statements inside the body and return to step 1 ( = loop) • if the condition is False, exit the while statement and continue with the execution of the next statement Mind the difference in indentation between the statements inside and outside the while statement !

  17. The statements inside the body should change the value of one or more variables so that the condition becomes False at a certain point • If a loop goes on forever = infinite loop • You can use the break statement to jump out of the loop

  18. This program will echo the keyboard input until the user types “done” while True: line = raw_input (“> ”)if line == “done”: break print line

  19. Write a function that takes a string as an argument andprints the letters onebyoneusing a while statement while index < len(fruit): letter = fruit[index] print letter index = index + 1

  20. defprint_letters(word): index = 0 while index < len(word): letter = word[index] print letter index = index + 1

  21. Write a similar function that takes a string as an argument and prints the letters backward using a while statement

  22. def print_backward(word): index = len(word) – 1 while index >= 0: letter = word[index] print letter index = index - 1

  23. Lists • A list is a sequence of values • The valuescanbe of any type • The values = elements/items • A list is always in between [ ] • To create a new list:list = [10, “cheese”, 5.6, “this is a sentence”]

  24. A list can contain another list (nested list):[‘hello’, 15, [‘my name is’, ‘Franky’]] • to access them: index methodlist[:20] • you can change existing listsnumbers = [17, 21]numbers[1] = 10print numbers[17, 10]

  25. A list index works the sameway as a string index: • any integer expressioncanbeused as an index • ifyoutry to readorwritean element that does notexist, yougetanIndexError • ifan index has a negativevalue, itcountsbackwardfrom the end of the list • the in operator alsoworksonlists

  26. Traversing a List • For loopwords = [‘work’, ‘run’, ‘play’, ‘jump’]for word in words: print word

  27. if you need to update all elements: range function numbers = [1, 3, 5, 10] forelem in range(len(numbers)): numbers[elem] = numbers[elem] * 2 print numbers • This loop traverses the list and updates each element

  28. List Operations • The + operator concatenateslists • the * operator repeats a list a givennumber of times • The slice operator [n:m] givesyou a slice of the list

  29. Try this: a = [1, 2, 3] b = [4, 5] print a + b print a*2 print a[1:2]

  30. List Methods • Python provides methodsthatoperateonlists • appendmethod:a = [‘a’, ‘b’, ‘c’]a.append(‘d’)print a[‘a’, ‘b’, ‘c’, ‘d’]

  31. deleting elements: • using the index in the list: • pop method  modifies the list and returns the element that was removed • del method modifies the list without returning the removed element • removemethod ifyou do notknow the index of the element

  32. t = ['a', 'b', 'c’, ‘c’, ‘d’] x = t.pop(1) print t print x del t[0] print t t.remove(‘c’) print t

  33. s = [2,1,4,3] • s.count( )  4 • s.sort( )  [1, 2, 3, 4] • s.extend([5,6,7])  [1,2,3,4,5,6,7] • s.insert(0,8)  [8,1,2,3,4,5,6,7] • s.reverse( )  [7, 6, 5, 4, 3, 2, 1, 8]

  34. From String to List • From a word to a list of letters: list( ) s = “spam”print list(s)[‘s’, ‘p’, ‘a’, ‘m’] • From a sentence to a list of words: .split( )s = “This is a sentence”print s.split( )[‘This’, ‘is’, ‘a’, ‘sentence’]

  35. The split( ) function can also be used to split a string on other characters besides spacess = “spam-spam-spam”print s.split(“-”)[‘spam’, ‘spam’, ‘spam’] • “-” is called a delimiter in this case

  36. From List to String • Join( ) is the inverse of split( )l = [‘this’, ‘is’, ‘a’, ‘sentence’]delimiter = “ ”delimiter.join(l)“this is a sentence”

  37. List Arguments • You can also pass a list into a function as argumentdefdel_first(list1): del list1[0] return list1 del_first([1,2,3])

  38. Regular Expressions for Detecting Word Patterns • Manylinguistic processing tasksinvolvepatternmatching, e.g. • .startswith( ) • .endswith( ) • To useregularexpressions in Python we need to import the re libraryimport re

  39. Some Basic Regular Expression Meta-characters • . Wildcard, matches anycharacter • ^abc Matches somepattern abc at the start of a string • abc$ Matches somepattern abc at the end of a string • [abc] Matches one of a set of characters • [A-Z0-9] Matches one of a range ofcharacters

  40. a|b|c Matches one of the specifiedstrings (disjunction) • * Zero or more of the previous item(s) • + One or more of the previous item(s) • ? Zero orone of the previous item(s) (i.e.optional) • {n} Exactlynrepeatswheren is anon-negative integer • {n,} At leastnrepeats

  41. {,n} No more thannrepeats • {m,n} At leastmand no morethannrepeats • a(b|c)+ Parentheses thatindicate the scope of the operatorse.g.w(i|e|ai|oo)t matches wit, wet, waitand woot • <.*> Matches anytoken • In general, whenusingregularexpressionsit is best to user'...' before the regularexpressions

  42. Counting all vowels in a given word:word='supercalifragilisticexpialidocious' vowels = re.findall(r'[aeiou]', word)nr_vowels = len(vowels) • The re.findall( ) functionfinds all (non-overlapping) matches of the givenregularexpression

  43. You can find a list of all regular expressions operations in Python on: http://docs.python.org/library/re.html

  44. For Next Week Ex 1) Write a script that reads 5 words that are typed in by a user and tells the user which word is shortest and longest Ex 2) Write a function that takes a sentence as an argument and calculates the average word length of the words in that sentence

  45. Ex 3) Take a short text of about 5 sentences. Write a script that will split up the text into sentences (tip: use the punctuation as boundaries) and calculates the average sentence length, the average word length and the standard deviation for both values • How to calculate the standard deviation: http://en.wikipedia.org/wiki/Standard_deviation

  46. No lecture next week Some extra exercises will be posted on Blackboard instead.

  47. Thank you!

More Related