日文文本剖析最强王者——Kuromoji

在我熟悉范围内atilika完成的Kuromoji是在日文文本剖析方面的最强王者。

简介

  1. kuromoji是一个开源的日文词法剖析的JAVA库。

  2. 但也有Ruby,javascript,go等言语的版本,你能够在github或则言语对应的库治理工具中找到。

  3. 官网有更多的信息。

功用

《日文文本剖析最强王者——Kuromoji》

你能够用它来对日文文本举行以下的处置惩罚,包含且不仅包含:

  1. 分词

  2. 给出读音( 包含汉字)

  3. 词性

  4. 词干提取

  5. ……

你也能够在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

    原文作者:RDDcoding
    原文地址: https://segmentfault.com/a/1190000009913094
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞