-
Notifications
You must be signed in to change notification settings - Fork 89
Expand file tree
/
Copy pathTokenizer.mm
More file actions
58 lines (48 loc) · 1.7 KB
/
Copy pathTokenizer.mm
File metadata and controls
58 lines (48 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#import "Tokenizer.h"
#import <ExecutorchLib/HuggingFaceTokenizer.h>
#import <React/RCTBridgeModule.h>
@implementation Tokenizer {
HuggingFaceTokenizer *tokenizer;
}
RCT_EXPORT_MODULE()
- (void)load:(NSString *)tokenizerSource
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject {
@try {
tokenizer = [[HuggingFaceTokenizer alloc]
initWithTokenizerPath:[NSURL URLWithString:tokenizerSource].path];
resolve(@(0));
} @catch (NSException *exception) {
reject(@"Tokenizer_Error", @"Failed to load tokenizer", nil);
}
}
- (void)encode:(NSString *)input
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject {
resolve([tokenizer encode:input]);
}
- (void)decode:(NSArray *)input
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject {
resolve([tokenizer decode:input]);
}
- (void)getVocabSize:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject {
resolve([NSNumber numberWithUnsignedInteger:[tokenizer getVocabSize]]);
}
- (void)idToToken:(double)input
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject {
NSInteger tokenID = (NSInteger)input;
resolve([tokenizer idToToken:tokenID]);
}
- (void)tokenToId:(NSString *)input
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject {
resolve([NSNumber numberWithInteger:[tokenizer tokenToId:input]]);
}
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
(const facebook::react::ObjCTurboModule::InitParams &)params {
return std::make_shared<facebook::react::NativeTokenizerSpecJSI>(params);
}
@end