iOS中自帶超強(qiáng)中文分詞器的實(shí)現(xiàn)方法
說(shuō)明
在處理文本的時(shí)候,第一步往往是將字符串進(jìn)行分詞,得到一個(gè)個(gè)關(guān)鍵詞。蘋(píng)果從很早就開(kāi)始支持中文分詞了,而且我們幾乎人人每天都會(huì)用到,回想一下,在使用手機(jī)時(shí),長(zhǎng)按一段文字,往往會(huì)選中按住位置的一個(gè)詞語(yǔ),這里就是一個(gè)分詞的絕佳用例,而iOS自帶的分詞效果非常棒,大家可以自己平常注意觀察一下,基本對(duì)中文也有很好的效果。而這個(gè)功能也開(kāi)放了API供開(kāi)發(fā)者調(diào)用,我試用了一下,很好用!
效果如下:

實(shí)現(xiàn)
其實(shí)蘋(píng)果給出了完整的API,想要全面了解的可以直接看文檔:CFStringTokenizer Reference
這里說(shuō)說(shuō)簡(jiǎn)單的一個(gè)實(shí)現(xiàn):
// 要分詞的字符串
NSString *string = @"俠士隱鋒,莽夫露刃";
self.keywords = [[NSMutableArray alloc] init];
CFStringTokenizerRef ref = CFStringTokenizerCreate(NULL, (__bridge CFStringRef)string, CFRangeMake(0, string.length), kCFStringTokenizerUnitWord, NULL);// 創(chuàng)建分詞器
CFRange range;// 當(dāng)前分詞的位置
// 獲取第一個(gè)分詞的范圍
CFStringTokenizerAdvanceToNextToken(ref);
range = CFStringTokenizerGetCurrentTokenRange(ref);
// 循環(huán)遍歷獲取所有分詞并記錄到數(shù)組中
NSString *keyWord;
while (range.length>0) {
keyWord = [string substringWithRange:NSMakeRange(range.location, range.length)];
[self.keywords addObject:keyWord];
CFStringTokenizerAdvanceToNextToken(ref);
range = CFStringTokenizerGetCurrentTokenRange(ref);
}
其實(shí)邏輯很簡(jiǎn)單:創(chuàng)建分詞器–>一個(gè)個(gè)地一次獲取分詞后的每個(gè)詞的起始位置和長(zhǎng)度,從而取出詞。
示例里我用列表顯示每個(gè)分詞,比較清楚,列表的實(shí)現(xiàn)就不說(shuō)明了,可以直接看工程代碼。
值得一提的是,其分詞速度很快,甚至一些網(wǎng)絡(luò)詞匯比如“木有”,一些成語(yǔ)等等都能夠識(shí)別出,能看出這是分詞的什么嗎:

示例工程:https://github.com/Cloudox/OXStringTokenizerDemo
本地下載:http://xiazai.jb51.net/201706/yuanma/OXStringTokenizerDemo(jb51.net).rar
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Java實(shí)現(xiàn)簡(jiǎn)易的分詞器功能
- docker 部署 Elasticsearch kibana及ik分詞器詳解
- 如何在docker容器內(nèi)部安裝kibana分詞器
- docker 安裝solr8.6.2 配置中文分詞器的方法
- 安裝elasticsearch-analysis-ik中文分詞器的步驟講解
- Solr通過(guò)特殊字符分詞實(shí)現(xiàn)自定義分詞器詳解
- JAVA StringBuffer類(lèi)與StringTokenizer類(lèi)代碼解析
- 基于Java中的StringTokenizer類(lèi)詳解(推薦)
- 淺談分詞器Tokenizer
相關(guān)文章
iOS中在APP內(nèi)加入AppStore評(píng)分功能的實(shí)現(xiàn)方法
這篇文章主要介紹了iOS中在APP內(nèi)加入AppStore評(píng)分功能的實(shí)現(xiàn)方法,文中筆者給大家整理了三種方式,大家可以根據(jù)自己的需求選擇,需要的朋友可以參考下2017-11-11
iOS實(shí)現(xiàn)控制屏幕常亮不變暗的方法示例
最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關(guān)于利用iOS如何實(shí)現(xiàn)控制屏幕常亮不變暗的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
簡(jiǎn)單說(shuō)說(shuō)iOS之WKWebView的用法小結(jié)
iOS8.0之后我們使用 WebKit框架中的WKWebView來(lái)加載網(wǎng)頁(yè)。這篇文章主要介紹了簡(jiǎn)單說(shuō)說(shuō)iOS之WKWebView的用法小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
iOS視頻壓縮存儲(chǔ)至本地并上傳至服務(wù)器實(shí)例代碼
本篇文章主要介紹了iOS視頻壓縮存儲(chǔ)至本地并上傳至服務(wù)器實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

