使用搜狗詞庫製作mmseg自定義詞典

http://blog.atime.me/note/mmseg-custom-dict.html

總結使用搜狗詞庫製作mmseg詞典的方法和步驟。另外,最近一直沒寫新博客,一方面是因爲懶,另一方面是確實沒什麼可寫的。

coreseek的介紹和安裝説明可參考這裏,不再贅述。以下是接下來需要注意的幾點:

  • 下面假設libmmseg安裝於/usr/local/mmseg3目錄
  • 生成的mmseg詞典文件必須爲UTF-8編碼。
  • 下面用到的兩個python腳本見輔助腳本

提取搜狗字庫

目前只支持搜狗詞庫,搜狗詞庫可以在這裏這裏下載。

下載後的詞庫文件(.scel)放在sougou目錄下,然後運行腳本

./extract-sougou-dict.py sougou/*.scel -o sougou-dict.txt -mmseg

生成的sougou-dict.txt可供mmseg庫分詞使用。

合併已有的詞典和自定義詞典

假設已有的詞典文件爲unigram.txt,則運行腳本

./merge-mmseg-dict.py -a unigram.txt -b sougou-dict.txt -o merged.txt

這裏以unigram.txt爲主詞典,意味着如果在合併的過程中出現重複詞組,則忽略sougou-dict.txt中的重複詞組。

更新mmseg詞典

首先備份下舊的詞典文件

cd /usr/local/mmseg3/etc
mv unigram.txt unigram.txt.bak
mv uni.lib uni.lib.bak
cd -

將合併後的詞典重命名爲unigram.txt,在指定的目錄裏運行mmseg

mv merged.txt /usr/local/mmseg3/etc/unigram.txt
/usr/local/mmseg3/bin/mmseg -u /usr/local/mmseg3/etc/unigram.txt

最後將生成的unigram.txt.uni重命名爲uni.lib

cd /usr/local/mmseg3/etc
mv unigram.txt.uni uni.lib

需要注意一個比較蛋疼的問題,更新後的分詞效果對已建立的索引無效1

檢驗分詞效果

找一個之前無法分詞的詞組,然後用mmseg進行測試,這裏假設詞典位於/usr/local/mmseg3/etc目錄下

echo "金交所" > whatever.txt
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc whatever.txt

如果詞典中沒有`金交所'這個詞組,結果通常如下

金/x 交/x 所/x

Word Splite took: 0 ms.

如果在自定義的詞典中有`金交所'這個詞組,則結果如下

金交所/x

Word Splite took: 0 ms.

輔助腳本

以下兩個腳本放在Github上。

  • extract-sougou-dict.py

    參考了這篇文章裏的代碼。

  • merge-mmseg-dict.py

    合併兩個mmseg詞典,如果兩個詞典包含相同的詞組,那麼以主詞典爲準(-a)。

發佈了73 篇原創文章 · 獲贊 11 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章