2018-05-12 11:37:19 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
Zad 4. Napisz funkcje oov(text, vocab), która zwraca listę wyrazów
|
|
|
|
(bez duplikatów), które występują w tekście text i nie występują w liście
|
|
|
|
znanych wyrazów vocab. Argumenty funkcji text i vocab to odpowiednio łańcuch
|
|
|
|
znakowy i lista łańuchów znakowych. Wszystkie wyrazy należy zmienić na małe
|
|
|
|
litery. (OOV = out of vocabulary) (W pythonie istnieje struktura danych tak
|
|
|
|
jak 'set', która przechowuje elementy bez powtórzeń.)
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
def oov(text, vocab):
|
2018-05-13 12:54:51 +02:00
|
|
|
flag = []
|
|
|
|
textSegm = set(text.split(' '))
|
|
|
|
for word in textSegm:
|
|
|
|
if word not in vocab:
|
|
|
|
flag.append(word)
|
|
|
|
return flag
|
|
|
|
|
2018-05-12 11:37:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def tests(f):
|
|
|
|
inputs = [("this is a string , which i will use for string testing",
|
|
|
|
[',', 'this', 'is', 'a', 'which', 'for', 'will', 'i'])]
|
|
|
|
outputs = [['string', 'testing', 'use']]
|
|
|
|
|
|
|
|
for input, output in zip(inputs, outputs):
|
|
|
|
if set(f(*input)) != set(output):
|
|
|
|
return "ERROR: {}!={}".format(f(*input), output)
|
|
|
|
break
|
|
|
|
return "TESTS PASSED"
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
print(tests(oov))
|
2018-05-13 12:54:51 +02:00
|
|
|
|
|
|
|
|
|
|
|
text = "this is a string , which i will use for string testing"
|
|
|
|
textSegm = set(text.split(' '))
|
|
|
|
print(textSegm)
|
|
|
|
len(textSegm)
|