Java日文分词器之Kuromoji

标签: java 日文 分词 | 发表时间:2017-02-27 23:19 | 作者:ctwen
出处:http://www.iteye.com

Kuromoji是一个开源的,基于java语言开发的轻量级的日文分词工具包。捐赠给了ASF之后被内置在Lucene 和 Solr中,作为默认的日文分词器(默认的中文分词器是smartcn)。但他也不依赖Lucene 或 Solr,可以单独使用。采用维特比算法(Viterbi algorithm),默认使用IPA字典。 

其他有名的还有lucene-gosen : http://code.google.com/p/lucene-gosen/ 以及Google・Amazon・楽天等日本大的搜索引擎使用的Rosette : http://www.basistech.jp/base-linguistics/japanese/ 。Rosette是商业版的,能够适用于很多语言,比如:中文,日文,韩文,英文等等。 

http://www.atilika.org/ 

版本:kuromoji-0.7.7.jar 

(1)2行代码即可分词 

Java代码   收藏代码
  1. Tokenizer tokenizer = Tokenizer.builder().build();  
  2. List<Token> tokens = tokenizer.tokenize(word);  


分词后的Token: 

Java代码   收藏代码
  1. for (Token token : tokens) {  
  2.     System.out.println("==================================================");  
  3.     System.out.println("allFeatures : " + token.getAllFeatures());  
  4.     System.out.println("partOfSpeech : " + token.getPartOfSpeech());  
  5.     System.out.println("position : " + token.getPosition());  
  6.     System.out.println("reading : " + token.getReading());  
  7.     System.out.println("surfaceFrom : " + token.getSurfaceForm());  
  8.     System.out.println("allFeaturesArray : " + Arrays.asList(token.getAllFeaturesArray()));  
  9.     System.out.println("辞書にある言葉? : " + token.isKnown());  
  10.     System.out.println("未知語? : " + token.isUnknown());  
  11.     System.out.println("ユーザ定義? : " + token.isUser());  
  12. }  



(2)3中分词模式 

Java代码   收藏代码
  1. String word = "日本経済新聞でモバゲーの記事を読んだ。";  
  2. Builder builder = Tokenizer.builder();  
  3.   
  4. // Normal  
  5. Tokenizer normal = builder.build();  
  6. List<Token> tokensNormal = normal.tokenize(word);  
  7. disp(tokensNormal);  
  8.   
  9. // Search  
  10. builder.mode(Mode.SEARCH);  
  11. Tokenizer search = builder.build();  
  12. List<Token> tokensSearch = search.tokenize(word);  
  13. disp(tokensSearch);  
  14.   
  15. // Extends  
  16. builder.mode(Mode.EXTENDED);  
  17. Tokenizer extended = builder.build();  
  18. List<Token> tokensExtended = extended.tokenize(word);  
  19. disp(tokensExtended);  

 

引用
日本経済新聞 | で | モバゲー | の | 記事 | を | 読ん | だ | 。 | 
日本 | 経済 | 新聞 | で | モバゲー | の | 記事 | を | 読ん | だ | 。 | 
日本 | 経済 | 新聞 | で | モ | バ | ゲ | ー | の | 記事 | を | 読ん | だ | 。 |



(3)自定义词典 

Java代码   收藏代码
  1. // 使用自定义字典  
  2. InputStream is = UserDictSample.class.getClassLoader().getResourceAsStream("resources/userdict_ja.txt");  
  3.   
  4. Builder builder = Tokenizer.builder();  
  5. builder.userDictionary(is);  
  6. Tokenizer userTokenizer = builder.build();  
  7.   
  8. List<Token> tokens2 = userTokenizer.tokenize(word);  
  9.   
  10. StringBuilder sb2 = new StringBuilder();  
  11. for (Token token : tokens2) {  
  12.     sb2.append(token.getSurfaceForm() + " | ");  
  13. }  
  14. System.out.println(sb2.toString());  



引用
稀 | 勢 | の | 里 | 寛 | 
稀勢の里 | 寛 |



resources/userdict_ja.txt: 

引用
# 単語,形態素解析後の単語(単語を分ける場合は、スペースで区切る),読み,品詞 
稀勢の里寛,稀勢の里 寛,キセノサト ユタカ,カスタム人名



(4)汉字转片假名 

Java代码   收藏代码
  1. String word = "東京特許許可局";  
  2.   
  3. Builder builder = Tokenizer.builder();  
  4. builder.mode(Mode.NORMAL);  
  5. Tokenizer tokenizer = builder.build();  
  6. List<Token> tokens = tokenizer.tokenize(word);  
  7.   
  8. StringBuilder sb = new StringBuilder();  
  9. for (Token token : tokens) {  
  10.     sb.append(token.getReading() + " | ");  
  11. }  
  12. System.out.println(sb.toString());  

 

文章出自:http://rensanning.iteye.com/blog/2008575



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [java 日文 分词] 推荐:

Java日文分词器之Kuromoji

- - 行业应用 - ITeye博客
Kuromoji是一个开源的,基于java语言开发的轻量级的日文分词工具包. 捐赠给了ASF之后被内置在Lucene 和 Solr中,作为默认的日文分词器(默认的中文分词器是smartcn). 但他也不依赖Lucene 或 Solr,可以单独使用. 采用维特比算法(Viterbi algorithm),默认使用IPA字典.

Jcseg java中文分词器

- - 企业架构 - ITeye博客
Jcseg[dʒɛ'​ke'sɛ]完整版本(源码, 词库, 帮助文档, 词库管理工具, jar文件)下载:  http://sourceforge.net/projects/jcseg . jcseg是使用Java开发的一个开源中文分词器,使用流行的mmseg算法实现,并且提供了最高版本的lucene, solr, elasticsearch(New)的分词接口..

java中文分词组件-word分词

- - 研发管理 - ITeye博客
关键字:java中文分词组件-word分词. word分词器主页 :https://github.com/ysc/word. word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义. 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词.

11大Java开源中文分词器的使用方法和分词效果对比

- - ImportNew
1、学会使用11大Java开源中文分词器. 2、对比分析11大Java开源中文分词器的分词效果. 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断. 11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口:.

jcseg-1.9.2 发布 - Java开源轻量级中文分词器+里程碑版本

- - 开源中国社区最新新闻
jcseg是使用java开发的一款轻量级的开源中文分词器, 并且提供了最新版本的lucene和solr分词接口.. jcseg-1.9.2更新内容:. 配置文件中词库多目录加载, 多个目录使用';'隔开..     例如:在jcseg.properties中设置lexicon.path=/java/jcseg/lex1;/java/jcseg/lex2.

Java中的锁(Locks in Java)

- - 并发编程网 - ifeve.com
原文链接 作者:Jakob Jenkov 译者:申章 校对:丁一. 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂. 因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字( 译者注:这说的是Java 5之前的情况).

Java PaaS 对决

- 呆瓜 - IBM developerWorks 中国 : 文档库
本文为 Java 开发人员比较了三种主要的 Platform as a Service (PaaS) 产品:Google App Engine for Java、Amazon Elastic Beanstalk 和 CloudBees [email protected] 它分析了每种服务独特的技术方法、优点以及缺点,而且还讨论了常见的解决方法.

Java浮点数

- d0ngd0ng - 译言-电脑/网络/数码科技
Thomas Wang, 2000年3月. Java浮点数的定义大体上遵守了二进制浮点运算标准(即IEEE 754标准). IEEE 754标准提供了浮点数无穷,负无穷,负零和非数字(Not a number,简称NaN)的定义. 在Java开发方面,这些东西经常被多数程序员混淆. 在本文中,我们将讨论计算这些特殊的浮点数相关的结果.

Qt——转战Java?

- - 博客 - 伯乐在线
编者按:事实上,在跨平台开发方面,Qt仍是最好的工具之一,无可厚非,但Qt目前没有得到任何主流移动操作系统的正式支持. 诺基亚的未来计划,定位非常模糊,这也是令很多第三方开发者感到失望,因此将导致诺基亚屡遭失败的原因. Qt的主要开发者之一Mirko Boehm在博客上强烈讽刺Nokia裁了Qt部门的决定,称其为“绝望之举”,而非“策略变更”.

java 验证码

- - ITeye博客
// 创建字体,字体的大小应该根据图片的高度来定. // 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到. // randomCode用于保存随机产生的验证码,以便用户登录后进行验证. // 随机产生codeCount数字的验证码. // 得到随机产生的验证码数字. // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同.