Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ForContest(object):
- def __init__(self, d=0):
- self.d = d
- def parse_for_contest(self, str):
- punctuation = "!\"#$%&()*+ ,-./:;<=>?@[\]^_`{|}~"
- tokens = []
- token = ''
- number_token = ''
- for symb in str.strip():
- if symb not in punctuation:
- if symb in string.digits:
- if token != '':
- tokens.append(token)
- token = ''
- number_token += symb
- else:
- if number_token != '':
- tokens.append(number_token)
- number_token = ''
- token += symb
- else:
- if number_token != '':
- tokens.append(number_token)
- number_token = ''
- if token != '':
- tokens.append(token)
- token = ''
- tokens.append(symb)
- if number_token != '':
- tokens.append(number_token)
- if token != '':
- tokens.append(token)
- return tokens
- def chains_for_contest(self):
- chains = [[], []]
- text_lines = sys.stdin.readlines()
- punctuation = "!\"#$%&()*+ ,-./:;<=>?@[\]^_`{|}~"
- counter = collections.Counter([word for line in text_lines
- for word in self.parse_for_contest(line)
- if word[0] not in punctuation + string.digits])
- chains[0] = counter.items()
- for i in xrange(1, self.d + 1):
- dic = defaultdict(lambda: defaultdict(int))
- for line in text_lines:
- all_tokens = [token for token in self.parse_for_contest(line)
- if token[0] not in punctuation + string.digits]
- for k in xrange(len(all_tokens) - i):
- dic[tuple(all_tokens[k: k + i])][all_tokens[k + i]] += 1
- chains[1] += [(key, collections.Counter(value)) for (key, value) in dic.items()]
- answer = ['']
- s = sum([pair[1] for pair in chains[0]])
- for pair in sorted(chains[0], key=lambda x: x[0]):
- answer += ' %s: %.2f' % (pair[0], pair[1] * 1.0 / s)
- for chain in chains[1:]:
- for (word, probs) in sorted(chain, key=lambda x: x[0]):
- answer += ' '.join(word)
- s = sum([pair[1] for pair in probs.items()])
- for pair in sorted(probs.items(), key=lambda x: x[0]):
- answer += ' %s: %.2f' % (pair[0], pair[1] * 1.0 / s)
- return answer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement