iOS中的词干 - 不适合单个单词 [英] Word Stemming in iOS - Not working for single word
本文介绍了iOS中的词干 - 不适合单个单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用 NSLinguisticTagger
进行词干。我能够在一个句子中得到单词的词干,但是不能为一个单词得到一个词干。
I am using NSLinguisticTagger
for word stemming. I am able to get a stem words of words in a sentence, but not able to get a stem word for a single word.
以下是我正在使用的代码,
Following is the code I am using,
NSString *stmnt = @"i waited";
NSLinguisticTaggerOptions options = NSLinguisticTaggerOmitWhitespace | NSLinguisticTaggerOmitPunctuation | NSLinguisticTaggerJoinNames;
NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes:@[NSLinguisticTagSchemeLemma] options:options];
tagger.string = stmnt;
[tagger enumerateTagsInRange:NSMakeRange(0, [stmnt length]) scheme:NSLinguisticTagSchemeLemma options:options usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
NSString *token = [stmnt substringWithRange:tokenRange];
NSLog(@"%@: %@", token, tag);
}];
为此,我正确地退出:
i: i
waited: wait
但是如果 stmnt = @等待,上面的代码无法识别词干;
任何帮助都很大赞赏
推荐答案
以下代码适用于我,
NSString *stmt = @"waited";
NSRange stringRange = NSMakeRange(0, stmt.length);
NSDictionary* languageMap = @{@"Latn" : @[@"en"]};
[stmt enumerateLinguisticTagsInRange:stringRange
scheme:NSLinguisticTagSchemeLemma
options:NSLinguisticTaggerOmitWhitespace
orthography:[NSOrthography orthographyWithDominantScript:@"Latn" languageMap:languageMap]
usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
// Log info to console for debugging purposes
NSString *currentEntity = [stmt substringWithRange:tokenRange];
NSLog(@"%@ is a %@, tokenRange (%d,%d)",currentEntity,tag,tokenRange.length,tokenRange.location);
}];
这篇关于iOS中的词干 - 不适合单个单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文