Skip to content

Commit

Permalink
add help information
Browse files Browse the repository at this point in the history
  • Loading branch information
LiyuanLucasLiu committed Sep 14, 2017
1 parent 1f305ae commit 17ddd60
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 82 deletions.
10 changes: 5 additions & 5 deletions eval_w.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
import functools

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Evaluating CHAR-CW-BLSTM-CRF')
parser.add_argument('--load_arg', default='./checkpoint/soa/check_wc_p_char_lstm_crf.json')
parser.add_argument('--load_check_point', default='./checkpoint/soa/check_wc_p_char_lstm_crf.model')
parser.add_argument('--gpu',type=int, default=0)
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa')
parser = argparse.ArgumentParser(description='Evaluating BLSTM-CRF')
parser.add_argument('--load_arg', default='./checkpoint/soa/check_wc_p_char_lstm_crf.json', help='arg json file path')
parser.add_argument('--load_check_point', default='./checkpoint/soa/check_wc_p_char_lstm_crf.model', help='checkpoint path')
parser.add_argument('--gpu',type=int, default=0, help='gpu id')
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa', help='use f1 and accuracy or accuracy alone')
args = parser.parse_args()

with open(args.load_arg, 'r') as f:
Expand Down
10 changes: 5 additions & 5 deletions eval_wc.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
import functools

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Evaluating CHAR-CW-BLSTM-CRF')
parser.add_argument('--load_arg', default='./checkpoint/soa/check_wc_p_char_lstm_crf.json')
parser.add_argument('--load_check_point', default='./checkpoint/soa/check_wc_p_char_lstm_crf.model')
parser.add_argument('--gpu',type=int, default=0)
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa')
parser = argparse.ArgumentParser(description='Evaluating LM-BLSTM-CRF')
parser.add_argument('--load_arg', default='./checkpoint/soa/check_wc_p_char_lstm_crf.json', help='path to arg json')
parser.add_argument('--load_check_point', default='./checkpoint/soa/check_wc_p_char_lstm_crf.model',, help='path to model checkpoint file')
parser.add_argument('--gpu',type=int, default=0, help='gpu id')
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa', help='use f1 and accuracy or f1 alone')
args = parser.parse_args()

with open(args.load_arg, 'r') as f:
Expand Down
3 changes: 1 addition & 2 deletions model/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
__author__ = "Liyuan Liu and Frank Xu"
__credits__ = ["Liyuan Liu", "Frank Xu", "Jingbo Shang"]

__license__ = "GPL"
__version__ = "1.0.1"
__license__ = "Apache License 2.0"
__maintainer__ = "Liyuan Liu"
__email__ = "llychinalz@gmail.com"
11 changes: 6 additions & 5 deletions model/crf.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,9 @@ def __init__(self, tagset_size, start_tag, end_tag, average_batch=True):
self.crit = nn.CrossEntropyLoss(size_average=self.average_batch)

def forward(self, scores, target, current):
"""greedy decode loss, i.e., although its for CRF Layer, we calculate the loss as :math:`\prod_{j=1}^n p(l_{j+1}|z_{j+1}, l_{j})` instead of :math:`\frac{ \prod_{j=1}^n \phi(\hat{y}_{j-1}, \hat{y}_j, \z_j) } { \sum_{\y' \in \Y(\Z)} \prod_{j=1}^n \phi(y'_{j-1}, y'_j, \z_j)}`
"""greedy decode loss, i.e., although its for CRF Layer, we calculate the loss as :math:`\prod_{j=1}^n p(l_{j+1}|z_{j+1}, l_{j})`
instead of
:math:`\frac{ \prod_{j=1}^n \phi(\hat{y}_{j-1}, \hat{y}_j, \mathbf{z}_j) } { \sum_{\mathbf{y}' \in \mathbf{Y}(\mathbf{Z})} \prod_{j=1}^n \phi(y'_{j-1}, y'_j, \mathbf{z}_j)}`
args:
scores: crf scores, of size Word_Seq_len * Batch_size * target_size_from * target_size_to
Expand Down Expand Up @@ -284,7 +286,8 @@ def __init__(self, tagset_size, start_tag, end_tag, average_batch=True):

def forward(self, scores, target, mask):
"""
viterbi decode loss, \frac{ \prod_{j=1}^n \phi(\hat{y}_{j-1}, \hat{y}_j, \z_j) } { \sum_{\y' \in \Y(\Z)} \prod_{j=1}^n \phi(y'_{j-1}, y'_j, \z_j)}
viterbi decode loss,
:math:`\sum_{j=1}^n \log(\phi(\hat{y}_{j-1}, \hat{y}_j, \mathbf{z}_j)) - \log(\sum_{\mathbf{y}' \in \mathbf{Y}(\mathbf{Z})} \prod_{j=1}^n \phi(y'_{j-1}, y'_j, \mathbf{z}_j) )`
args:
scores: crf scores, of size seq_len * bat_size * target_size_from * target_size_to
Expand Down Expand Up @@ -314,9 +317,7 @@ def forward(self, scores, target, mask):
# previous to_target is current from_target
# partition: previous results log(exp(from_target)), #(batch_size * from_target)
# cur_values: bat_size * from_target * to_target
cur_values = cur_values + partition.contiguous().view(bat_size, self.tagset_size, 1).expand(bat_size,
self.tagset_size,
self.tagset_size)
cur_values = cur_values + partition.contiguous().view(bat_size, self.tagset_size, 1).expand(bat_size, self.tagset_size, self.tagset_size)
cur_partition = utils.log_sum_exp(cur_values, self.tagset_size)
# (bat_size * from_target * to_target) -> (bat_size * to_target)
partition = utils.switch(partition, cur_partition,
Expand Down
8 changes: 8 additions & 0 deletions model/evaluator.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
"""
.. module:: evaluator
:synopsis: evaluator for f1 and acc
.. moduleauthor:: Liyuan Liu, Frank Xu
"""


import torch
import numpy as np
import itertools
Expand Down
58 changes: 29 additions & 29 deletions train_w.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,35 +21,35 @@

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Learning with BLSTM-CRF')
parser.add_argument('--rand_embedding', action='store_true')
parser.add_argument('--emb_file', default='./embedding/glove.6B.100d.txt')
parser.add_argument('--train_file', default='./data/ner2003/eng.train.iobes')
parser.add_argument('--dev_file', default='./data/ner2003/eng.testa.iobes')
parser.add_argument('--test_file', default='./data/ner2003/eng.testb.iobes')
parser.add_argument('--gpu', type=int, default=0)
parser.add_argument('--batch_size', type=int, default=10)
parser.add_argument('--unk', default='unk')
parser.add_argument('--checkpoint', default='./checkpoint/')
parser.add_argument('--hidden', type=int, default=100)
parser.add_argument('--drop_out', type=float, default=0.5)
parser.add_argument('--epoch', type=int, default=200)
parser.add_argument('--start_epoch', type=int, default=0)
parser.add_argument('--caseless', action='store_true')
parser.add_argument('--embedding_dim', type=int, default=100)
parser.add_argument('--layers', type=int, default=1)
parser.add_argument('--lr', type=float, default=0.01)
parser.add_argument('--lr_decay', type=float, default=0.001)
parser.add_argument('--fine_tune', action='store_false')
parser.add_argument('--load_check_point', default='')
parser.add_argument('--load_opt', action='store_true')
parser.add_argument('--update', choices=['sgd', 'adam'], default='sgd')
parser.add_argument('--momentum', type=float, default=0.9)
parser.add_argument('--clip_grad', type=float, default=5.0)
parser.add_argument('--small_crf', action='store_false')
parser.add_argument('--mini_count', type=float, default=5)
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa')
parser.add_argument('--patience', type=int, default=15)
parser.add_argument('--least_iters', type=int, default=50)
parser.add_argument('--rand_embedding', action='store_true', help='random initialize word embedding')
parser.add_argument('--emb_file', default='./embedding/glove.6B.100d.txt', help='path to pre-trained embedding')
parser.add_argument('--train_file', default='./data/ner2003/eng.train.iobes', help='path to training file')
parser.add_argument('--dev_file', default='./data/ner2003/eng.testa.iobes', help='path to development file')
parser.add_argument('--test_file', default='./data/ner2003/eng.testb.iobes', help='path to test file')
parser.add_argument('--gpu', type=int, default=0, help='gpu id, set to -1 if use cpu mode')
parser.add_argument('--batch_size', type=int, default=10, help='batch size (10)')
parser.add_argument('--unk', default='unk', help='unknow-token in pre-trained embedding')
parser.add_argument('--checkpoint', default='./checkpoint/', help='path to checkpoint prefix')
parser.add_argument('--hidden', type=int, default=100, help='hidden dimension')
parser.add_argument('--drop_out', type=float, default=0.5, help='dropout ratio')
parser.add_argument('--epoch', type=int, default=200, help='maximum epoch number')
parser.add_argument('--start_epoch', type=int, default=0, help='start epoch idx')
parser.add_argument('--caseless', action='store_true', help='caseless or not')
parser.add_argument('--embedding_dim', type=int, default=100, help='dimension for word embedding')
parser.add_argument('--layers', type=int, default=1, help='number of lstm layers')
parser.add_argument('--lr', type=float, default=0.01, help='initial learning rate')
parser.add_argument('--lr_decay', type=float, default=0.001, help='decay ratio of learning rate')
parser.add_argument('--fine_tune', action='store_false', help='fine tune pre-trained embedding dictionary')
parser.add_argument('--load_check_point', default='', help='path of checkpoint')
parser.add_argument('--load_opt', action='store_true', help='load optimizer from ')
parser.add_argument('--update', choices=['sgd', 'adam'], default='sgd', help='optimizer method')
parser.add_argument('--momentum', type=float, default=0.9, help='momentum for sgd')
parser.add_argument('--clip_grad', type=float, default=5.0, help='grad clip at')
parser.add_argument('--small_crf', action='store_false', help='use small crf instead of large crf, refer model.crf module for more details')
parser.add_argument('--mini_count', type=float, default=5, help='thresholds to replace rare words with <unk>')
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa', help='use f1 and accuracy or accuracy alone')
parser.add_argument('--patience', type=int, default=15, help='patience for early stop')
parser.add_argument('--least_iters', type=int, default=50, help='at least train how many epochs before stop')
args = parser.parse_args()

if args.gpu >= 0:
Expand Down
72 changes: 36 additions & 36 deletions train_wc.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,42 +24,42 @@ def eprint(*args, **kwargs):

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Learning with LM-LSTM-CRF together with Language Model')
parser.add_argument('--rand_embedding', action='store_true')
parser.add_argument('--emb_file', default='./embedding/glove.6B.100d.txt')
parser.add_argument('--train_file', default='./data/ner2003/eng.train.iobes')
parser.add_argument('--dev_file', default='./data/ner2003/eng.testa.iobes')
parser.add_argument('--test_file', default='./data/ner2003/eng.testb.iobes')
parser.add_argument('--gpu', type=int, default=0)
parser.add_argument('--batch_size', type=int, default=10)
parser.add_argument('--unk', default='unk')
parser.add_argument('--char_hidden', type=int, default=300)
parser.add_argument('--word_hidden', type=int, default=300)
parser.add_argument('--drop_out', type=float, default=0.5)
parser.add_argument('--epoch', type=int, default=200)
parser.add_argument('--start_epoch', type=int, default=0)
parser.add_argument('--checkpoint', default='./checkpoint/')
parser.add_argument('--caseless', action='store_true')
parser.add_argument('--char_dim', type=int, default=30)
parser.add_argument('--word_dim', type=int, default=100)
parser.add_argument('--char_layers', type=int, default=1)
parser.add_argument('--word_layers', type=int, default=1)
parser.add_argument('--lr', type=float, default=0.01)
parser.add_argument('--lr_decay', type=float, default=0.05)
parser.add_argument('--fine_tune', action='store_false')
parser.add_argument('--load_check_point', default='')
parser.add_argument('--load_opt', action='store_true')
parser.add_argument('--update', choices=['sgd', 'adam'], default='sgd')
parser.add_argument('--momentum', type=float, default=0.9)
parser.add_argument('--clip_grad', type=float, default=5.0)
parser.add_argument('--small_crf', action='store_false')
parser.add_argument('--mini_count', type=float, default=5)
parser.add_argument('--lambda0', type=float, default=1)
parser.add_argument('--co_train', action='store_true')
parser.add_argument('--patience', type=int, default=15)
parser.add_argument('--high_way', action='store_true')
parser.add_argument('--highway_layers', type=int, default=1)
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa')
parser.add_argument('--least_iters', type=int, default=50)
parser.add_argument('--rand_embedding', action='store_true', help='random initialize word embedding')
parser.add_argument('--emb_file', default='./embedding/glove.6B.100d.txt', help='path to pre-trained embedding')
parser.add_argument('--train_file', default='./data/ner2003/eng.train.iobes', help='path to training file')
parser.add_argument('--dev_file', default='./data/ner2003/eng.testa.iobes', help='path to development file')
parser.add_argument('--test_file', default='./data/ner2003/eng.testb.iobes', help='path to test file')
parser.add_argument('--gpu', type=int, default=0, help='gpu id')
parser.add_argument('--batch_size', type=int, default=10, help='batch_size')
parser.add_argument('--unk', default='unk', help='unknow-token in pre-trained embedding')
parser.add_argument('--char_hidden', type=int, default=300, help='dimension of char-level layers')
parser.add_argument('--word_hidden', type=int, default=300, help='dimension of word-level layers')
parser.add_argument('--drop_out', type=float, default=0.5, help='dropout ratio')
parser.add_argument('--epoch', type=int, default=200, help='maximum epoch number')
parser.add_argument('--start_epoch', type=int, default=0, help='start point of epoch')
parser.add_argument('--checkpoint', default='./checkpoint/', help='checkpoint path')
parser.add_argument('--caseless', action='store_true', help='caseless or not')
parser.add_argument('--char_dim', type=int, default=30, help='dimension of char embedding')
parser.add_argument('--word_dim', type=int, default=100, help='dimension of word embedding')
parser.add_argument('--char_layers', type=int, default=1, help='number of char level layers')
parser.add_argument('--word_layers', type=int, default=1, help='number of word level layers')
parser.add_argument('--lr', type=float, default=0.01, help='initial learning rate')
parser.add_argument('--lr_decay', type=float, default=0.05, help='decay ratio of learning rate')
parser.add_argument('--fine_tune', action='store_false', help='fine tune the diction of word embedding or not')
parser.add_argument('--load_check_point', default='', help='path previous checkpoint that want to be loaded')
parser.add_argument('--load_opt', action='store_true', help='also load optimizer from the checkpoint')
parser.add_argument('--update', choices=['sgd', 'adam'], default='sgd', help='optimizer choice')
parser.add_argument('--momentum', type=float, default=0.9, help='momentum for sgd')
parser.add_argument('--clip_grad', type=float, default=5.0, help='clip grad at')
parser.add_argument('--small_crf', action='store_false', help='use small crf instead of large crf, refer model.crf module for more details')
parser.add_argument('--mini_count', type=float, default=5, help='thresholds to replace rare words with <unk>')
parser.add_argument('--lambda0', type=float, default=1, help='lambda0')
parser.add_argument('--co_train', action='store_true', help='cotrain language model')
parser.add_argument('--patience', type=int, default=15, help='patience for early stop')
parser.add_argument('--high_way', action='store_true', help='use highway layers')
parser.add_argument('--highway_layers', type=int, default=1, help='number of highway layers')
parser.add_argument('--eva_matrix', choices=['a', 'fa'], default='fa', help='use f1 and accuracy or accuracy alone')
parser.add_argument('--least_iters', type=int, default=50, help='at least train how many epochs before stop')
args = parser.parse_args()

if args.gpu >= 0:
Expand Down

0 comments on commit 17ddd60

Please sign in to comment.