赞
踩
笔者最近遇到一个需求:将文章输入后输出文章中的高频词,这是个简短的需求,但细分下便会出现许多细节重点。笔者细化需求后确定了这几个步骤:1. 文章分词(包括中英文混词)——> 2. 分词统计——>3. 推荐热词。
根据上述的简单需求,我就想用原生JAVA通过某些数据结构实现,由于知识面有限且笔者目前是名在校的学生,实现了英文下的分词、中文下的分词。但是遇到中英文混排的怎么也合并不了。经过两天的各种思考各种分析结果以失败告终。在查阅资料的时候发现了阿帕奇的OpenNLP 工具,然后仔细的看了看源码。。看的也是云里雾里的,但基本思想也了解了。虽然阿帕奇的OpenNLP很牛逼,但是我还是选择了一个国人自产基于n-Gram+CRF+HMM的分词JAVA实现。具体开发文档和源码可以访问GITHUB。
废话不多说上源码。
- package com.sim;
-
- import org.ansj.splitWord.analysis.ToAnalysis;
-
- import java.io.*;
- import java.util.*;
-
- public class NLPTools {
-
- public static Map<String,String> wordFrequency(String article) {
- Map<String, Integer> map = new HashMap<String, Integer>();
- Map<String,String > info = new HashMap<String, String>();
- String result = ToAnalysis.parse(article).toStringWithOutNature();
- System.out.println(result);
- String[] words = result.split(",");
-
-
- for(String word: words){
- String str = word.trim();
- // 过滤空白字符
- if (str.equals(""))
- continue;
- //
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。