HW3 CS224U

HW3 CS224U

  1. (text)

  2. 0.6440

  3. 45455.0000 (WRONG) // 43279

  4. (text)

  5. 0.4560

  6. (text)

  7. 0.5680

  8. 0.6630

  9. 75813.0000

ONE  FORWARD_TOKEN = “” BACKWARD_TOKEN = “” def directional_bag_of_words_featurizer(kbt, corpus, feature_counter):     for ex in corpus.get_examples_for_entities(kbt.sbj, kbt.obj):         for word in ex.middle.split(’ ‘):             feature_counter[word+FORWARD_TOKEN] += 1     for ex in corpus.get_examples_for_entities(kbt.obj, kbt.sbj):         for word in ex.middle.split(’ ‘):             feature_counter[word+BACKWARD_TOKEN] += 1

FOUR START_TOKEN = “” END_TOKEN = “”

def pad(words):     return [START_TOKEN] + list(words) + [END_TOKEN]

def pos(word_pos):     return word_pos.rsplit(’/’, 1)[-1]

def ngrams(iterable, n):     it = iter(iterable)     try:         ngram = [next(it) for _ in range(n)]         while True:             yield tuple(ngram)             ngram = ngram[1:] + [next(it)]     except StopIteration:         return def middle_bigram_pos_tag_featurizer(kbt, corpus, feature_counter):     for ex in corpus.get_examples_for_entities(kbt.sbj, kbt.obj):         for ngram in ngrams(pad(map(pos, ex.middle_POS.split())), 2):             feature_counter[str(ngram)] += 1     for ex in corpus.get_examples_for_entities(kbt.obj, kbt.sbj):         for ngram in ngrams(pad(map(pos, ex.middle_POS.split())), 2):             feature_counter[str(ngram)] += 1

SIX from nltk.corpus import wordnet as wn

def wn_tag(pos):     if pos.startswith(‘N’): return ’n’     if pos.startswith(‘V’): return ‘v’     if pos.startswith(‘J’): return ‘a’     if pos.startswith(‘R’): return ‘r’     return None

def synset_featurizer(kbt, corups, feature_counter):     for ex in corpus.get_examples_for_entities(kbt.sbj, kbt.obj):         for word, word_pos in zip(ex.middle.split(), ex.middle_POS.split()):             synsets = wn.synsets(word, pos=wn_tag(pos(word_pos)))             for synset in synsets:                  feature_counter[str(synset)] += 1     for ex in corpus.get_examples_for_entities(kbt.obj, kbt.sbj):         for word, word_pos in zip(ex.middle.split(), ex.middle_POS.split()):             synsets = wn.synsets(word, pos=wn_tag(pos(word_pos)))             for synset in synsets:                 feature_counter[str(synset)] += 1