aaljabari commited on
Commit
1f4a044
·
verified ·
1 Parent(s): 0ea22ed

Create infer.py

Browse files
Files changed (1) hide show
  1. Nested/bin/infer.py +73 -0
Nested/bin/infer.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+ import argparse
3
+ from collections import namedtuple
4
+ from Nested.utils.helpers import load_checkpoint
5
+ from Nested.utils.data import get_dataloaders, text2segments
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+
10
+ def parse_args():
11
+ parser = argparse.ArgumentParser(
12
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
13
+ )
14
+
15
+ parser.add_argument(
16
+ "--model_path",
17
+ type=str,
18
+ required=True,
19
+ help="Model path",
20
+ )
21
+
22
+ parser.add_argument(
23
+ "--text",
24
+ type=str,
25
+ required=True,
26
+ help="Text or sequence to tag",
27
+ )
28
+
29
+ parser.add_argument(
30
+ "--batch_size",
31
+ type=int,
32
+ default=32,
33
+ help="Batch size",
34
+ )
35
+
36
+ args = parser.parse_args()
37
+
38
+ return args
39
+
40
+
41
+ def main(args):
42
+ # Load tagger
43
+ tagger, tag_vocab, train_config = load_checkpoint(args.model_path)
44
+
45
+ # Convert text to a tagger dataset and index the tokens in args.text
46
+ dataset, token_vocab = text2segments(args.text)
47
+
48
+ vocabs = namedtuple("Vocab", ["tags", "tokens"])
49
+ vocab = vocabs(tokens=token_vocab, tags=tag_vocab)
50
+
51
+ # From the datasets generate the dataloaders
52
+ dataloader = get_dataloaders(
53
+ (dataset,),
54
+ vocab,
55
+ train_config.data_config,
56
+ batch_size=args.batch_size,
57
+ shuffle=(False,),
58
+ )[0]
59
+
60
+ # Perform inference on the text and get back the tagged segments
61
+ segments = tagger.infer(dataloader)
62
+
63
+ # Print results
64
+ for segment in segments:
65
+ s = [
66
+ f"{token.text} ({'|'.join([t['tag'] for t in token.pred_tag])})"
67
+ for token in segment
68
+ ]
69
+ print(" ".join(s))
70
+
71
+
72
+ if __name__ == "__main__":
73
+ main(parse_args())