Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C:NSLinguistics Tagger“;“纽约”;vs";“纽约”;_Ios_Objective C_Ios5 - Fatal编程技术网

Ios 目标C:NSLinguistics Tagger“;“纽约”;vs";“纽约”;

Ios 目标C:NSLinguistics Tagger“;“纽约”;vs";“纽约”;,ios,objective-c,ios5,Ios,Objective C,Ios5,我刚开始玩nsLinguagistTagger,我的代码基于这个博客: 当我用question=@“纽约周末”运行此程序时,“纽约”被标记为PlaceName,这很好。但是当我用question=@“纽约周末”运行此程序时,“new”被标记为“形容词”,“york”被标记为地名。有没有办法绕过这个问题,使得“纽约”和“纽约”都被标记为地名 我对语言学一无所知。评论中已经提到了这一点,但我还是想指出这一点。语言学家塔格认为,“纽约”和“纽约”是不同的——因为它们是不同的。大写N表示它是一个专有名词

我刚开始玩
nsLinguagistTagger
,我的代码基于这个博客:

当我用
question=@“纽约周末”
运行此程序时,
“纽约”
被标记为
PlaceName
,这很好。但是当我用
question=@“纽约周末”
运行此程序时,
“new”
被标记为
“形容词”
“york”
被标记为
地名。有没有办法绕过这个问题,使得
“纽约”
“纽约”
都被标记为
地名


我对语言学一无所知。

评论中已经提到了这一点,但我还是想指出这一点。语言学家塔格认为,“纽约”和“纽约”是不同的——因为它们是不同的。大写N表示它是一个专有名词。据我所知,在NSLinguisticTagger中没有任何东西可以改变这种行为

但是,您可以依靠iOS自动更正。只需确保输入值的文本字段已启用自动更正功能,并应自动将“new york”更正为“new york”,以及类似情况。如果“自动更正”无法捕捉到这一点,那么我将尝试寻找其他用于语言分析的库

iOS中已经包含了追溯自动更正功能(在一定程度上),因此应该足以将“纽约”更正为“纽约”。如果您想将整个句子(即“纽约周末”改为“纽约周末”),您需要自己实现该功能。这应该不会太难,因为只有一些简单的语法规则是你必须遵循的,而且很多东西都会通过自动更正得到


希望这对您有所帮助,如果您需要更多信息,请告诉我。

进一步了解此主题名字和姓氏的大小写正确是NSLinguagistTagger识别姓名的一项要求

在经历了几个小时的挫折之后,我决定用大写、小写和大写的单词创建各种测试

在几乎所有的测试中,NSLinguagistTagger的结果都不一样

当NSLinguagistTagger以大写字母分析字符串时,几乎所有名词都标记为personalName。wtf

这非常令人沮丧

我想和大家分享的经验是,NSLanguageTagger可以猜测它放在单词上的标记,但最终它只是对单词的语法评估。评估取决于适当的语言结构,例如单词的位置以及单词是否大写

我仍然觉得它是一门有用的课程,但这篇文章的寓意是“要得体”


在解析文本时,有时我们程序员倾向于使用大写和小写来简化我们的工作。我们仍然可以这样做,但是请记住,单词大小写确实会改变NSLinguagistTagger的结果。

“纽约周末”和“纽约周末”实际上有两种不同的含义(纽约也是一个城市)。贴标签的人在使用“纽约周末”时会选择他认为正确的一个。如果可能的话,你最好的办法就是自己更正拼写。这是不可能的,从语法的角度来看,“纽约”和“纽约”是完全不同的。有没有一种方法可以对字符串进行自动更正?例如,如果我在设备上键入“weekend in new york”,当我在“york”后点击空格键时,它会自动更正为“weekend in new york”。在我的设备上,它会自动执行此操作。。截图:,但我想这可能只是在英文键盘上。。也许检查一下“纽约周末”是否有效,如果有效,你可能会通过编程强制所有CAP。请看下面我的回答,我试图总结已经提到的内容,并添加一些我自己的见解。
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); }];