gpt4 book ai didi

ios - 语言标注器错误地标注为 'OtherWord'

转载 作者:可可西里 更新时间:2023-11-01 03:07:06 24 4
gpt4 key购买 nike

我一直在对句子使用 NSLinguisticTagger 并且遇到了一个奇怪的句子问题,例如“我饿了”或“我喝醉了”。虽然人们会期望“我”被标记为代词,“我”被标记为动词,“饥饿”被标记为形容词,但事实并非如此。相反,它们都被标记为 OtherWord

我做错了什么吗?

NSString *input = @"I am hungry";
NSLinguisticTaggerOptions options = NSLinguisticTaggerOmitWhitespace;
NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes:[NSLinguisticTagger availableTagSchemesForLanguage:@"en"] options:options];
tagger.string = input;

[tagger enumerateTagsInRange:NSMakeRange(0, input.length) scheme:NSLinguisticTagSchemeNameTypeOrLexicalClass options:options usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
NSString *token = [input substringWithRange:tokenRange];
NSString *lemma = [tagger tagAtIndex:tokenRange.location
scheme:NSLinguisticTagSchemeLemma
tokenRange: NULL
sentenceRange:NULL];
NSLog(@"%@ (%@) : %@\n", token, lemma, tag);
}];

输出是:

I ((null)) : OtherWord
am ((null)) : OtherWord
hungry ((null)) : OtherWord

最佳答案

quite some time in chat 之后我们发现了问题:

The sentence does not contain enough information to determine its language.

要解决此问题,您可以:

在您的实际句子之后用您选择的语言添加一个演示句子。这应该可以保证检测到您的首选语言。

告诉标记器使用什么语言:添加行

[tagger setOrthography:[NSOrthography orthographyWithDominantScript:@"Latn" languageMap:@{@"Latn" : @[@"en"]}] range:NSMakeRange(0, input.length)];

enumerate 调用之前。通过这种方式,您可以明确告诉标注器您希望文本使用哪种语言,在本例中,英语 (en) 作为拉丁语主导语言 (Latn) 的一部分。

如果您不确定该语言,那么在单词被标记为 OtherWord 意味着无法检测到该语言时,使用这些方法中的任何一种作为后备方法可能很有用。

关于ios - 语言标注器错误地标注为 'OtherWord',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29311279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com