我正在修补NSLinguisticTagger。
识别名词、动词、介词等基本单词类型非常有效。
然而,人名NSLinguisticTagPersonalName的识别在我的测试中几乎不起作用(iOS8)。Places NSLinguisticTagPlaceName似乎也能很好地工作,但大多数时候人名也被归类为地点。
这是我的基本设置(使用 NSLinguisticTagSchemeNameTypeOrLexicalClass)
var tagger:NSLinguisticTagger = NSLinguisticTagger(tagSchemes: NSLinguisticTagger.availableTagSchemesForLanguage("en") , options: 3)
tagger.string = entryString
tagger.enumerateTagsInRange(NSMakeRange(0, entryString.length), scheme: NSLinguisticTagSchemeNameTypeOrLexicalClass, options: (NSLinguisticTaggerOptions.OmitWhitespace | NSLinguisticTaggerOptions.JoinNames), usingBlock: {
tag,tokenRange,sentenceRange,_ in
let token = entryString.substringWithRange(tokenRange)
println("[\(tag)] \(token) \(tokenRange)")
示例 1
"Meeting with John in Paris"
Evaluation
[Verb] Meeting
[Preposition] with
[Noun] John
[Preposition] in
[PlaceName] Paris
示例 2
"Meeting with John"
Evaluation
[Verb] Meeting (0,7)
[Preposition] with (8,4)
[PlaceName] John (13,4)
知道如何改进人名的匹配吗?
另外我很想知道名称需要如何被识别。(我假设像“with”这样的介词会是一个很好的指标……显然这还不够)。我将不胜感激有关此的任何想法或其他见解。这是一个令人兴奋的领域。