IK中文分詞擴充套件自定義詞典!!!

2021-06-06 12:01:10 字數 1425 閱讀 8556

1.基於分布式系統的自定義分詞要求與流程設計

(見圖)e:\plan\readingnote\分詞與索引\分詞\2012-4-20

2.分詞實現原理——詞典的載入過程

2.1.分詞詞典的載入過程涉及到3個類,分別是configuration類,directory類,以及dictsegment類。

其中前兩個類是獲得配置檔案,獲得分詞詞典的,為詞典內容的載入做準備的。而dictsegment類則是實現真正的分詞載入的類。

2.2.在呼叫分詞的過程中,首先呼叫directory類物件,在方法loadmaindict()中,包含了自定義分詞詞典內容的載入。

2.2.1.在自定義分詞內容的載入中,首先呼叫configuration類中的乙個方法,用來獲得ikanalyzer.cfg.xml(自定義詞典檔案配置路徑)中配置的自定義詞典檔案的配置路徑。listextdictfiles  = configuration.getextdictionarys();在這之前,得先獲得配置檔案的路徑,並將其作為流載入到記憶體中。其實,這兩件事情都是在configuration類中實現的,directory類只是呼叫了configuration類提供的介面而已。

2.2.2.現在來看看configuration類中做的兩件事。

private configuration() catch (invalidpropertiesformatexception e) catch (ioexception e) }

} (1)初始化。將ikanalyzer.cfg.xml作為流載入到記憶體中。注意加粗的**,這就使得在不修改**的情況下,只能載入到類所在的classpath路徑下的檔案。(對於加粗**的理解,詳見e:\plan\readingnote\分詞與索引\分詞\分詞自定義詞典路徑)

public static listgetextdictionarys() }

} }return extdictfiles;}

(2)該段**用來實現從ikanalyzer.cfg.xml中獲取自定義詞典配置路徑,並將其放入乙個集合中,作為返回值返回。

2.2.3現在轉回到directory類。在獲得自定義詞典檔案路徑之後,就是根據檔案路徑找到自定義詞典,然後呼叫dircsegment載入到內村中。

listextdictfiles  = configuration.getextdictionarys();

if(extdictfiles != null)

try

} while (theword != null);

} catch (ioexception ioe) finally

} catch (ioexception e) }

} }注意到粗體部分,這就要求其只能獲得directory類所在的classpath路徑下的資定義詞典檔案,超出了這個路徑範圍這找不到了。第二個粗體部分則是呼叫dictsegment對自定義詞典中的詞進行載入。

jieba 分詞自定義詞典問題

只對長詞起作用 對如果定義的詞比jieba自己分的短,則沒有用 下面是三種分詞方式的影響 python view plain copy encoding utf 8 import jieba import os import sys test text 號碼查詢 精確模式 seg list jieb...

jieba結巴分詞加入自定義詞典

新增自定義詞典 動態調整詞典 參考jieba官方文件 jieba.cut 以及 jieba.cut for search 返回的結構都是乙個可迭代的 generator,可以使用 for 迴圈來獲得分詞後得到的每乙個詞語 unicode 或者用 jieba.lcut 以及 jieba.lcut fo...

結巴分詞jieba新增自定義詞典

結巴分詞新增自定義詞典,有時候很有必要。比如下面這段話 test text 我們的健康碼也是綠色的,這憑什麼就限制我們的就醫!如果使用預設的分詞,那麼,健康碼 這個詞會分成 健康 和 碼 這裡可以使用詞典方式,新增自定義詞典。新建乙個txt檔案,在檔案裡輸入 健康碼 以utf 8形式儲存,這裡使用p...