`
文章列表
  ElasticSearch的Schema free特性给动态提取并索引网页结构化文本内容提供了支持,使用URL的hash值来作为索引的主键(实际开发中使用URL作为主键,这里使用URL的hash值是为了方便演示),当网页内容改变后,可以非常方便地更新索引。   下面演示了动态索引结构和索引更新机制: 1、提交索引: curl -XPUT http://localhost:9200/webpage/finance/85723925 -d ' { "url" : "http://money.163.com/14/0523/02/9ST8D7K ...
QuestionAnsweringSystem是一个Java实现的人机问答系统,能够自动分析问题并给出候选答案。IBM人工智能计算机系统"沃森"(Watson)在2011年2月美国热门的电视智力问答节目"危险边缘"(Jeopardy!)中战胜了两位人类冠军选手,QuestionAnsweringSystem就是IBM Watson的Java开源实现。   系统架构如下:     工作原理: 1、判断问题类型(答案类型),当前使用模式匹配的方法,将来支持更多的方法,如朴素贝叶斯分类器。 2、提取问题关键词。 3、利用问题关键词搜索 ...
cws_evaluation 是一个Java开源项目,用于对Java中文分词器分词效果进行评估。   cws_evaluation 是通过对前文《word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估》中写的评估程序进行重构改进后形成的。   支持的分词器有:word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器、jcseg分词器、fudannlp分词器、paoding分词器、jieba分词器、stanford分词器等9大中文分词器。   评估采用的测试文本有253 3709行,共2837 4490个字符。   ...
Java分布式中文分词组件 - word分词
word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。 同时提供了Lucene、Solr、ElasticSearch插件。   word分词器分词效果评估主要评估下面7种分词算法:   正向最大匹配算法:MaximumMatching逆向最大匹配算法:ReverseMaximumMatching正向最小匹配算法:MinimumMatching逆向最小匹配算法:ReverseMinimumMatching双向最大匹配算法:Bidirectiona ...
使用40个句子,在word分词、搜狗分词和ansj分词之间看看区别有多大。   word分词效果:   杨尚川 是 apdplat 应用 级 产品 开发 平台 的 作者 他 说 的 确实 在理 提高 人民 生活 水平 他俩 儿 谈恋爱 是从 头年 元月 开始 的 ...
在之前的博文中介绍了基于词典的逆向最大匹配算法,比如我们切分句子: 中华人民共和国万岁万岁万万岁,使用逆向最大匹配算法的切分结果为:[中华人民共和国, 万岁, 万岁, 万万岁],可以看到,切分出来的词是很长的,粒度很粗,如果我们想要切分出很细粒度的词,该怎么办呢?   本文介绍逆向最小匹配算法,该算法和逆向最大匹配算法相得益彰,一个强调细粒度,一个强调粗粒度。   使用逆向最小匹配算法,必须注意的一点是:词典中不能有单字词,词的长度至少为2!我们看逆向最小匹配算法和逆向最大匹配算法的代码比较:       切分效果如下:   切分句子: 中华人民共和国万岁万岁万万岁 逆向 ...
在之前的博文中介绍了基于词典的正向最大匹配算法,比如我们切分句子: 中华人民共和国万岁万岁万万岁,使用正向最大匹配算法的切分结果为:[中华人民共和国, 万岁, 万岁, 万万岁],可以看到,切分出来的词是很长的,粒 ...
In 2009 Tony Hoare, one of the giants of computer science, wrote:   I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to en ...
随着Web的发展,RIA越来越多,JavaScript和Complex AJAX Libraries给网络爬虫带来了极大的挑战,解析页面的时候需要模拟浏览器执行JavaScript才能获得需要的文本内容。   好在有一个Java开源项目HtmlUnit,它能模拟Firefox、IE、Chrome等浏览器,不但可以用来测试Web应用,还可以用来解析包含JS的页面以提取信息。   下面看看HtmlUnit的效果如何:   首先,建立一个maven工程,引入junit依赖和HtmlUnit依赖:   <dependency> <groupId>junit ...
在之前的两篇博文中文分词算法 之 基于词典的正向最大匹配算法和中文分词算法 之 基于词典的逆向最大匹配算法中,我们对分词实现和词典实现都做了优化,本文对词典实现做进一步优化,并和之前的多个实现做一个对比,使用的词典下载地址,使用的测试文本下载地址。   优化TrieV3的关键在于把虚拟根节点(/)的子节点(词表首字母)提升为多个相互独立的根节点,并对这些根节点建立索引。优化的依据是根节点(词表首字母)的数量庞大,索引查找的速度远远超过二分查找。   下面看看进一步优化后的TrieV4和之前的TrieV3的对比: /** * 获取字符对应的根节点 ...
在之前的博文中介绍了基于词典的正向最大匹配算法,用了不到50行代码就实现了,然后分析了词典查找算法的时空复杂性,最后使用前缀树来实现词典查找算法,并做了3次优化。   下面我们看看基于词典的逆向最大匹配算法的实现,实验表明,对于汉语来说,逆向最大匹配算法比(正向)最大匹配算法更有效,如下代码所示:   public static List<String> segReverse(String text){ Stack<String> result = new Stack<>(); while ...
运行Nutch的时候提示Generator: 0 records selected for fetching, exiting ...然后程序退出,怎么回事呢?   原因多种多样,归根结底就是CrawlDB中的URL经过爬虫抓取调度器(默认是org.apache.nutch.crawl.DefaultFetchSchedule)判断,断定都不应该去抓,所以,Stop The World。   我们使用命令如下命令来查看CrawlDB的统计信息:   bin/nutch readdb data/crawldb -stats     结果如下:   CrawlDb stat ...
Apache Nutch v1.8已经发布了,建议所有使用1.X系列的用户和开发人员升级到这个版本。这个版本的依赖库Crawler Commons升级到了0.3版本,Apache Tika也升级到了1.4版本,同时还修复了35个BUG,提供了18项改进。详细内容请看更新日志,下 ...
基于词典的正向最大匹配算法(最长词优先匹配),算法会根据词典文件自动调整最大长度,分词的好坏完全取决于词典。   算法流程图如下:   Java实现代码如下:   /** * 基于词典的正向最大匹配算法 * @author 杨尚川 */ public class WordSeg { private static final List<String> DIC = new ArrayList<>(); private static final int MAX_LENGTH; static{ tr ...
Global site tag (gtag.js) - Google Analytics