18

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か?

私はこの言語学のことはまったく初めてです。

4

2 に答える 2

2

これはすでにコメントで言及されていますが、とにかくこれを指摘したかったのです。NSLinguisticTagger は、"New York" と "new york" は異なるものであると考えています。大文字の N は、それが固有名詞であることを示します。私の知る限り、NSLinguisticTagger にはこの動作を変更できるものは何もありません。

ただし、できることは iOS オートコレクトに頼ることです。値が入力されているテキスト フィールドで自動修正が有効になっていることを確認してください。これにより、「ニューヨーク」が「ニューヨーク」などに自動的に修正されます。オートコレクトがこれをキャッチしない場合は、言語分析用の他のライブラリを見つけようとします。

遡及オートコレクトはすでに iOS に (ある程度まで) 含まれているため、「ニューヨーク」を「ニューヨーク」に修正するのに十分なはずです。文全体を修正したい場合 (例: "weekend in new york" を "Weekend in New York" に)、その機能を自分で実装する必要があります。従わなければならない簡単な文法規則がいくつかあるだけで、オートコレクトによって多くのことが検出されるため、これはそれほど難しいことではありません。

これがお役に立てば幸いです。さらに情報が必要な場合はお知らせください。

于 2013-02-23T21:44:37.437 に答える