Aya*_*aka 18 objective-c ios ios5
我刚刚开始在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); }];
Run Code Online (Sandbox Code Playgroud)
当我运行它时question = @"Weekend in New York"
,"New York"
标记为PlaceName
哪个是伟大的.但是,当我跑这跟question = @"Weekend in new york"
,"new"
被标记为"Adjective"
与"york"
被标记为PlaceName
.有没有办法解决这个问题,"New York"
并且"new york"
两者都被标记为PlaceName
?
我对这种语言学事物完全陌生.
评论中已经提到了这一点,但无论如何还是想指出这一点。NSLinguisticTagger 认为“New York”和“new york”是不同的——因为它们本来就是不同的。大写的 N 告诉它它是一个专有名词。据我所知,NSLinguisticTagger 中没有任何内容可以改变这种行为。
但是,您能做的就是依靠 iOS 自动更正。只需确保输入值的文本字段已启用自动更正,并且它应该自动将“纽约”更正为“纽约”,以及类似的情况。如果自动更正没有发现这一点,那么我会尝试寻找其他一些库进行语言分析。
iOS 中已经包含了追溯自动更正功能(在一定程度上),因此应该足以将“new york”更正为“New York”。如果您想将整个句子更正(即“纽约的周末”为“纽约的周末”),您需要自己实现该功能。这应该不是很困难,因为您必须遵循一些简单的语法规则,并且自动更正会拾取许多内容。
希望这有帮助,如果您需要更多信息,请告诉我。
归档时间: |
|
查看次数: |
2068 次 |
最近记录: |