HW3 CS224U
HW3 CS224U
-
(text)
-
0.6440
-
45455.0000 (WRONG) // 43279
-
(text)
-
0.4560
-
(text)
-
0.5680
-
0.6630
-
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