1、数据挖掘1、数据挖掘 -ICTCLAS分词这是最早的中文开源分词项目之一, ICTCLAS在国内 973专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构 SigHan组织的评测中都获得了多项第一名。 ICTCLAS3.0分词速度单机 996KB/s,分词精度 98.45%,API不超过 200KB,各种词典数据压缩后不到 3M.ICTCLAS全部采用 C/C+编写,支持 Linux、 FreeBSD及 Windows系列操作系统,支持 C/C+、 C#、Delphi、 Java等主流的开发语言。一、数据挖掘 -分词技术Paoding(庖丁解牛分词)基于 Java的开源中文分词组
2、件,提供 lucene和 solr 接口,具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。高效率: 在 PIII 1G内存个人机器上, 1秒 可准确分词 100万 汉字。高扩展性: 采用基于 不限制个数 的词典文件对文章进行有效切分,使能够将对词汇分类定义。能够对未知的词汇进行合理解析。仅支持 Java语言。庖丁中文分词库是一个使用 Java开发的,可结合到 Lucene应用中的,为互联网、企业内部网使用的中文搜索引擎分词组件。Paoding填补了国内中文分词方面开源组件的空白。Paoding中文分词追求分词的高效率和用户良好体验。2、数据挖掘 - Paoding分
3、词一、数据挖掘 -分词技术IKAnalyzer是一个开源的,基于 java语言开发的轻量级的中文分词工具包。从 2006年 12月推出 1.0版开始, IKAnalyzer已经推出了 3个大版本。最初,它是以开源项目 Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的 IKAnalyzer3.0则发展为面向 Java的公用分词组件,独立于 Lucene项目,同时提供了对 Lucene的默认优化实现。重要特性:支持停用词支持扩展词3、数据挖掘 - IKAnalyzer 分词一、数据挖掘 -分词技术1、下载 IKAnalyzer2012.jar、 lucene-core-
4、3.5.0.jar2、把文章进行批量加入 lucene,加入索引时进行 IK分词3、按关键词进行检索4、数据挖掘 - IKAnalyzer 分词实例一、数据挖掘 -分词技术public class IKAnalyzerDemo public static void main(String args) / Lucene Document的域名String fieldName = “text“;String indexpath = “d:/index“;String text = “北京商务局局长到武汉访问 “;/ 实例化 IKAnalyzer分词器Analyzer analyzer = new
5、IKAnalyzer(true);Directory directory = null;IndexWriter iwriter = null;IndexReader ireader = null;IndexSearcher isearcher = null;try / 建立内存索引对象directory = FSDirectory.open(new File(indexpath);/ 配置 IndexWriterConfigIndexWriterConfig iwConfig = newIndexWriterConfig(Version.LUCENE_34, analyzer);iwConfi
6、g.setOpenMode(OpenMode.CREATE_OR_APPEND);iwriter = new IndexWriter(directory, iwConfig);4、数据挖掘 - IKAnalyzer 分词实例一、数据挖掘 -分词技术/ 写入索引Document doc = new Document();doc.add(new Field(“ID“, “10000“, Field.Store.YES,Field.Index.NOT_ANALYZED);doc.add(new Field(fieldName, text, Field.Store.YES,Field.Index.AN
7、ALYZED);iwriter.addDocument(doc);iwriter.close();/ 搜索过程 */ 实例化搜索器ireader = IndexReader.open(directory);isearcher = new IndexSearcher(ireader);String keyword = “商务局 “;4、数据挖掘 - IKAnalyzer 分词实例一、数据挖掘 -分词技术1、综述一个词可能有好几个意思。例如 “地道 ”有两个意思,作为名词时表示:在地面下掘成的交通坑道,作为形容词时表示:纯粹的,真正的。另外有些词可以表示同样的意思,例如 “西红柿 ”和 “蕃茄 ”
8、是同义词, “招商行 ”是 “招商银行 ”的简称,也算同义词。可以从网络挖掘出同义词词库。例如有下面一些链接到同一个网站的标签。中国招商银行 招行 招商银行 从上面的链接中可以提取出同义词:中国招商银行 招行 招商银行二、数据挖掘 -相关性搜索2、相关性搜索通过同义词搜索来尝试语义扩展的搜索,也就是通过查询扩展的方式实现语义搜索。当用户输入 “计算机 ”搜索的同时,程序通过查找同义词库,按照 “计算机 ”, “电脑 ”, “微机 ”等多个同义词查找。当用户输入 “轿车 ”的同时,也能按照 “奥迪 ”, “奔驰 ”等进行下位词扩展。简单的做法是把同义词保存在一个散列表中。如果同义词词表很大,可以
9、把同义词保存在一个索引库中二、数据挖掘 -相关性搜索2、相关性搜索public class DexSynonymEngine implements SynonymEngine /词和对应的同义词数组private static Map map = new HashMap(); static /数字同义map.put(“1“, new String “一 “ );map.put(“2“, new String “二 “ );map.put(“3“, new String “三 “ );map.put(“4“, new String “四 “ );map.put(“5“, new String “
10、五 “ );map.put(“6“, new String “六 “);map.put(“7“, new String “七 “ );map.put(“8“, new String “八 “ );map.put(“9“, new String “九 “ );map.put(“10“, new String “十 “ ); /日期同义map.put(“非周末 “, new String “周一 “,“周二 “,“周三 “,“周四 “,“周五 “ );map.put(“周末 ”, new String “周六 ”,“周日 ” );/词同义map.put(“西红柿 “, new String “番茄 “ );map.put(“黄豆 “, new String “大豆 “ );二、数据挖掘 -相关性搜索