在我熟悉范围内atilika完成的Kuromoji
是在日文文本剖析方面的最强王者。
简介
kuromoji
是一个开源的日文词法剖析的JAVA
库。但也有
Ruby
,javascript
,go
等言语的版本,你能够在github
或则言语对应的库治理工具中找到。官网有更多的信息。
功用
你能够用它来对日文文本举行以下的处置惩罚,包含且不仅包含:
分词
给出读音( 包含汉字)
词性
词干提取
……
你也能够在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.js
和 dict/*.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
,你能够:
不必设置辞书的地点。
实例化解析器后,除了第一次以外,以后的速率会异常块。
基于Promise完成了APi。
运用方面它的文档已很细致,RDD我就不多作引见了。