1

我想写一个枚举器,它会遍历一段文本并一次给我一个句子。我尝试将 stringEnumerate 与 NSStringEnumerationBySentences 一起使用,但这只是查看句点并失败。例如,假设我有以下文本块:

“参议员 John A. Boehner 决定不继续前进。他还决定不召集国会。新闻记者说……”

我希望我的功能将上述段落分解为以下句子:

  1. 参议员约翰·A·博纳决定不再前进

  2. 他还决定不召集大会(没有第三句话,因为它是半句话)

带有句子选项的字符串枚举器只查看句点并以错误的方式分解:

  1. 参议员约翰 A。

  2. 博纳决定不再前进

  3. 他还决定不召开代表大会

  4. 新闻记者说,虽然......

有没有我可以调用的库或函数在这方面做得更好?

谢谢

- (NSMutableString *) getOnlyFullSentencesFromTextBlock:(NSMutableString *) textBlock{
    [textBlock enumerateSubstringsInRange:NSMakeRange(0, [textBlock length])
                                  options:NSStringEnumerationBySentences | NSStringEnumerationLocalized
                                usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop)
    {
        NSLog(@"Sentence Frag:%@", substring);                                                                        
    }];
    return textBlock;
}
4

2 回答 2

0

我出现的唯一解决方案是检查句点之前的最后一个单词是否以大写字符开头。如果是这样,并且该单词的字符数不超过 3 或 4 个(您将不得不尝试看看哪种效果更好),那么它可能是一个缩写词。
我知道这并不涵盖所有情况,但它可能适用于大多数情况。

于 2012-06-30T15:12:34.400 回答
0

NSLinguisticTagger 会这样做

于 2018-05-01T16:57:45.510 回答