日文文本分析最強王者——Kuromoji

在我認識範圍內atilika完成的Kuromoji是在日文文本分析方面的最強王者。javascript

簡介

  1. kuromoji是一個開源的日文詞法分析的JAVA庫。html

  2. 但也有Ruby,javascript,go等語言的版本,你能夠在github或則語言對應的庫管理工具中找到。前端

  3. 官網有更多的信息。java

功能

kuromji功能例子

你能夠用它來對日文文本進行以下的處理,包括且不只包括:node

  1. 分詞git

  2. 給出讀音( 包括漢字)github

  3. 詞性npm

  4. 詞幹提取json

  5. …...segmentfault

你也能夠在kuromoji.js的playground嘗試kuromoji

使用

做爲一名前端小卒,我就以js版的kuromoji來作示範吧,JAVA同胞們能夠看這裏JAVA簡要教程

安裝

kuromoji的npm頁面在這裏

在 Node.js 中使用:

先經過npm來安裝到項目中

npm install kuromoji

再在JS文件中引用其。

var kuromoji = require("kuromoji");

接來下你能夠以下來實例化一個解析器。

kuromoji.builder({ dicPath: "指定/對應的路徑/到你使用/的/詞典上去" }).build(function (err, tokenizer) {
    // tokenizer is ready
    var path = tokenizer.tokenize("すもももももももものうち");
    console.log(path);
});
/* !!注意 !!
*
* Kuromoji能夠指定不一樣的詞典,所以在實例化解析器的過程當中須要指定使用
* 詞典的路徑,`kuromoji.builder`中的參數的`dicPath`的值應指向使用
* 得詞典。
* 若在node.js中使用,通常來講直接使用該庫中的字典便可,即設置
*     {dicPath:"./node_modules/kuromoji/dict/"}
*/

在 瀏覽器 中使用:

若是使用npm安裝,那麼你須要使用到包中的build/kuromoji.jsdict/*.dat.gz下的文件。

你能夠直接使用前端模塊管理Bower來安裝瀏覽器專用的kuromoji

bower install kuromoji

你也能夠直接使用github、CDN等其餘網絡連接的方式來引入該文件。

<script src="url/to/kuromoji.js"></script>

再在你的JS中這樣使用

設置路徑到kuromoji.builder({ dicPath: "指定/對應的路徑/到你使用/的/詞典上去" }).build(function (err, tokenizer) {
    // tokenizer is ready
    var path = tokenizer.tokenize("すもももももももものうち");
    console.log(path);
});
/* !!注意 !!
*
* Kuromoji能夠指定不一樣的詞典,所以在實例化解析器的過程當中須要指定使用
* 詞典的路徑,`kuromoji.builder`中的參數的`dicPath`的值應指向使用
* 得詞典。
* 若在瀏覽器中使用,則設置路徑到對應的網絡位置就好。
* 好比字典放在了 http://apps.bdimg.com/libs/kuromoji.js/0.3.2/dict/
* 就設置{ dicPath:"http://apps.bdimg.com/libs/kuromoji.js/0.3.2/dict/" }
*/

API

tokenize()函數將會返回一個以下格式的JSON數組:

[ {
    word_id: 509800,          // 詞典中的詞所在ID
    word_type: 'KNOWN',       // 單詞類型(存在詞典的爲KNOWN,不存在的爲UNKNOWN)
    word_position: 1,         // 單詞開始的位置
    surface_form: '黒文字',    // 單詞的表面(不知什麼意思)
    pos: '名詞',               // 詞性
    pos_detail_1: '通常',      // 詞性細分類別1
    pos_detail_2: '*',        // 詞性細分類別2
    pos_detail_3: '*',        // 詞性細分類別3
    conjugated_type: '*',     // 活用型
    conjugated_form: '*',     // 活用形
    basic_form: '黒文字',      // 基本型
    reading: 'クロモジ',       // 閱讀
    pronunciation: 'クロモジ'  // 發育
  } ]

以處理 「世界の神」 爲例子

tokenizer.tokenize("世界の神");

將會返回

[  { word_id: 2633350,
    word_type: 'KNOWN',
    word_position: 6,
    surface_form: '世界',    
    pos: '名詞',
    pos_detail_1: '通常',
    pos_detail_2: '*',
    pos_detail_3: '*',
    conjugated_type: '*',
    conjugated_form: '*',
    basic_form: '世界',
    reading: 'セカイ',
    pronunciation: 'セカイ' },
  { word_id: 93100,
    word_type: 'KNOWN',
    word_position: 8,
    surface_form: 'の',
    pos: '助詞',
    pos_detail_1: '連體化',
    pos_detail_2: '*',
    pos_detail_3: '*',
    conjugated_type: '*',
    conjugated_form: '*',
    basic_form: 'の',
    reading: 'ノ',
    pronunciation: 'ノ' },
  { word_id: 2771160,
    word_type: 'KNOWN',
    word_position: 9,
    surface_form: '神',
    pos: '名詞',
    pos_detail_1: '通常',
    pos_detail_2: '*',
    pos_detail_3: '*',
    conjugated_type: '*',
    conjugated_form: '*',
    basic_form: '神',
    reading: 'カミ',
    pronunciation: 'カミ' },
]

備註

你嘗試了一下,而後會發現kuromoji雖然強大,可是有一個問題——慢。

不過別擔憂,kuromojin(node.js)能夠幫你解決這個問題。

kuromojin

kuromojin是一個對kuromoji進行了高度包裝的語法糖,而且還實現了緩衝層來保證速度。

使用kuromojin,你能夠:

  1. 不用設置詞典的地址。

  2. 實例化解析器後,除了第一次以外,以後的速度會很是塊。

  3. 基於Promise實現了APi。

使用方面它的文檔已經很詳細,RDD我就很少做介紹了。

關聯

能夠將 日文漢字 轉換成 平假名,片假名或Romaji 的 KAKASI

相關文章
相關標籤/搜索