【发布时间】:2013-02-18 14:43:00
【问题描述】:
我刚刚开始使用NSLinguisticTagger,我的代码基于这个博客:NSLinguisticTagger @ NSHipster.com
NSLinguisticTaggerOptions options = NSLinguisticTaggerOmitWhitespace | NSLinguisticTaggerOmitPunctuation | NSLinguisticTaggerJoinNames;
NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes: [NSLinguisticTagger availableTagSchemesForLanguage:@"en"] options:options];
tagger.string = question;
[tagger enumerateTagsInRange:NSMakeRange(0, [question length]) scheme:NSLinguisticTagSchemeNameTypeOrLexicalClass options:options usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
NSString *token = [question substringWithRange:tokenRange];
NSLog(@"%@: %@", token, tag); }];
当我使用 question = @"Weekend in New York" 运行此程序时,"New York" 会被标记为 PlaceName,这很棒。但是当我用question = @"Weekend in new york" 运行它时,"new" 被标记为"Adjective" 和"york" 被标记为PlaceName。有没有办法解决这个问题,使"New York" 和"new york" 都被标记为PlaceName?
我对这门语言学的东西完全陌生。
【问题讨论】:
-
“纽约周末”和“纽约周末”实际上有两种不同的含义(约克也是一座城市)。使用“纽约周末”时,Tagger 会选择他认为正确的那个。如果可能的话,最好的办法是自己纠正拼写。
-
这是不可能的,从语法上看“new york”和“New York”是完全不同的
-
有没有办法将自动更正追溯应用于字符串?例如,如果我在设备上输入“weekend in new york”,一旦我在“york”后按空格键,它就会自动更正为“Weekend in New York”。
-
在我的设备上它会自动执行此操作.. 屏幕截图:i.imgur.com/rL2yC6H.png,但我想这可能只是在英文键盘上.. 也许检查“纽约周末”是否有效,如果可以的话可能以编程方式强制全部大写。
-
请看下面我的回答,我试图总结已经提到的内容并添加一些我自己的见解。
标签: ios objective-c ios5