は、私はこのブログで私のコードを基づかNSLinguisticTagger
で遊んで開始しました:NSLinguisticTagger @ NSHipster.comのObjective-C:「ニューヨーク」対NSLinguisticTagger「ニューヨーク」
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
とタグ付けされるような方法がありますか?
私はこの言語学の点で全く新しいです。
「ニューヨークの週末」と「ニューヨークの週末」は、実際には2つの異なる意味を持ちます(ヨークも都市です)。 Taggerは、 "New Yorkの週末"を使うときに正しいと思うものを選びます。おそらく、可能ならば、あなた自身のスペルを訂正することが最善の方法でしょう。 – Daniel
これはできません。文法的には「ニューヨーク」と「ニューヨーク」はまったく異なります – tkanzakic
文字列に自動修正を遡及的に適用する方法はありますか?たとえば、デバイスに「weekend in new york」と入力すると、「york」の後にスペースバーが表示されたら、「Weekend in New York」に自動修正されます。 –