def main(): Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 1 rnn = RNN(50, [50], V) rnn.fit(Xtrain, Ytrain) print "train score:", rnn.score(Xtrain, Ytrain) print "test score:", rnn.score(Xtest, Ytest)
def main(): Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 1 K = len(set(flatten(Ytrain)) | set(flatten(Ytest))) rnn = RNN(10, [10], V, K) rnn.fit(Xtrain, Ytrain) print("train score:", rnn.score(Xtrain, Ytrain)) print("test score:", rnn.score(Xtest, Ytest)) print("train f1:", rnn.f1_score(Xtrain, Ytrain)) print("test f1:", rnn.f1_score(Xtest, Ytest))
def main(): Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 1 K = len(set(flatten(Ytrain)) | set(flatten(Ytest))) rnn = RNN(10, [10], V, K) rnn.fit(Xtrain, Ytrain) print "train score:", rnn.score(Xtrain, Ytrain) print "test score:", rnn.score(Xtest, Ytest) print "train f1:", rnn.f1_score(Xtrain, Ytrain) print "test f1:", rnn.f1_score(Xtest, Ytest)
def main(smoothing=1e-1): # X = words, Y = POS tags Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 1 # find hidden state transition matrix and pi M = max(max(y) for y in Ytrain) + 1 #len(set(flatten(Ytrain))) A = np.ones((M, M))*smoothing # add-one smoothing pi = np.zeros(M) for y in Ytrain: pi[y[0]] += 1
def main(smoothing=1e-1): # X = words, Y = POS tags Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 1 # find hidden state transition matrix and pi M = max(max(y) for y in Ytrain) + 1 #len(set(flatten(Ytrain))) A = np.ones((M, M)) * smoothing # add-one smoothing pi = np.zeros(M) for y in Ytrain: pi[y[0]] += 1 for i in range(len(y) - 1): A[y[i], y[i + 1]] += 1 # turn it into a probability matrix A /= A.sum(axis=1, keepdims=True) pi /= pi.sum() # find the observation matrix B = np.ones((M, V)) * smoothing # add-one smoothing for x, y in zip(Xtrain, Ytrain): for xi, yi in zip(x, y): B[yi, xi] += 1 B /= B.sum(axis=1, keepdims=True) hmm = HMM(M) hmm.pi = pi hmm.A = A hmm.B = B # get predictions Ptrain = [] for x in Xtrain: p = hmm.get_state_sequence(x) Ptrain.append(p) Ptest = [] for x in Xtest: p = hmm.get_state_sequence(x) Ptest.append(p) # print results print("train accuracy:", accuracy(Ytrain, Ptrain)) print("test accuracy:", accuracy(Ytest, Ptest)) print("train f1:", total_f1_score(Ytrain, Ptrain)) print("test f1:", total_f1_score(Ytest, Ptest))
def main(smoothing=1e-1): # X = words, Y = POS tags Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 1 # find hidden state transition matrix and pi M = max(max(y) for y in Ytrain) + 1 #len(set(flatten(Ytrain))) A = np.ones((M, M))*smoothing # add-one smoothing pi = np.zeros(M) for y in Ytrain: pi[y[0]] += 1 for i in range(len(y)-1): A[y[i], y[i+1]] += 1 # turn it into a probability matrix A /= A.sum(axis=1, keepdims=True) pi /= pi.sum() # find the observation matrix B = np.ones((M, V))*smoothing # add-one smoothing for x, y in zip(Xtrain, Ytrain): for xi, yi in zip(x, y): B[yi, xi] += 1 B /= B.sum(axis=1, keepdims=True) hmm = HMM(M) hmm.pi = pi hmm.A = A hmm.B = B # get predictions Ptrain = [] for x in Xtrain: p = hmm.get_state_sequence(x) Ptrain.append(p) Ptest = [] for x in Xtest: p = hmm.get_state_sequence(x) Ptest.append(p) # print results print("train accuracy:", accuracy(Ytrain, Ptrain)) print("test accuracy:", accuracy(Ytest, Ptest)) print("train f1:", total_f1_score(Ytrain, Ptrain)) print("test f1:", total_f1_score(Ytest, Ptest))
currentX = [] currentY = [] if not split_sequences: Xtest = currentX Ytest = currentY return Xtrain, Ytrain, Xtest, Ytest, word2idx def flatten(l): return [item for sublist in l for item in sublist] # get the data Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 2 # vocab size (+1 for unknown, +1 b/c start from 1) K = len(set(flatten(Ytrain)) | set(flatten(Ytest))) + 1 # num classes # training config epochs = 20 learning_rate = 1e-4 mu = 0.99 batch_size = 32 hidden_layer_size = 10 embedding_dim = 10 sequence_length = max(len(x) for x in Xtrain + Xtest)
currentX = [] currentY = [] if not split_sequences: Xtest = currentX Ytest = currentY return Xtrain, Ytrain, Xtest, Ytest, word2idx def flatten(l): return [item for sublist in l for item in sublist] # get the data Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True) V = len(word2idx) + 2 # vocab size (+1 for unknown, +1 b/c start from 1) K = len(set(flatten(Ytrain)) | set(flatten(Ytest))) + 1 # num classes # training config epochs = 20 learning_rate = 1e-2 mu = 0.99 batch_size = 32 hidden_layer_size = 10 embedding_dim = 10 sequence_length = max(len(x) for x in Xtrain + Xtest)