iOS 分词

func wordBoundary(_ text: String) -> [String] {
        let tokenize = CFStringTokenizerCreate(kCFAllocatorDefault, text as CFString?, CFRangeMake(0, text.count), kCFStringTokenizerUnitWordBoundary, CFLocaleCopyCurrent())
        CFStringTokenizerAdvanceToNextToken(tokenize)
        var range = CFStringTokenizerGetCurrentTokenRange(tokenize)
        var boundaries : [String] = []
        while range.length > 0 {
            let wRange = text.index(text.startIndex, offsetBy: range.location)..<text.index(text.startIndex, offsetBy: range.location + range.length)
            let keyWord = String(text[wRange])
            boundaries.append(keyWord)
            CFStringTokenizerAdvanceToNextToken(tokenize)
            range = CFStringTokenizerGetCurrentTokenRange(tokenize)
        }
        return boundaries
    }
    
func wordBoundariesWithSentences(_ text: String) -> [Dictionary<String, Array<String>>] {
        let tokenize = CFStringTokenizerCreate(kCFAllocatorDefault, text as CFString?, CFRangeMake(0, text.count), kCFStringTokenizerUnitSentence, CFLocaleCopyCurrent())
        CFStringTokenizerAdvanceToNextToken(tokenize)
        var range = CFStringTokenizerGetCurrentTokenRange(tokenize)
        var result : [Dictionary<String, Array<String>>] = []
        while range.length > 0 {
            let wRange = text.index(text.startIndex, offsetBy: range.location)..<text.index(text.startIndex, offsetBy: range.location + range.length)
            let sentence = String(text[wRange])
            let words = wordBoundary(sentence)
            result.append([sentence: words])
            CFStringTokenizerAdvanceToNextToken(tokenize)
            range = CFStringTokenizerGetCurrentTokenRange(tokenize)
        }
        return result
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 分词是将一段string根据语法进行切分成若干个短语/词/字,多见于搜索中使用。
    LJMagicCoder阅读 1,647评论 1 7
  • 在搜索等场景,需要对完成的字符串进行分词处理,iOS 自带两种分词方式 NaturalLanguage 及 CFS...
    topws1阅读 974评论 0 0
  • 引言 技术无关, 可跳过. 最近在写一个独立项目,基于斗鱼直播平台的开放接口, 对斗鱼的弹幕进行实时的分析,最近抽...
    Syik阅读 3,190评论 7 10
  • 背景 在垃圾短信过滤应用 SMSFilters 中,需要使用 Jieba 分词库来対短信进行分词,然后使用 TF-...
    qiwihui阅读 921评论 0 0
  • 说明 在处理文本的时候,第一步往往是将字符串进行分词,得到一个个关键词。苹果从很早就开始支持中文分词了,而且我们几...
    Cloudox_阅读 3,195评论 0 2