最近想使用ICTCLAS分词系统,需要在myeclipse中加载dll(本地库),查阅资料使用jni,ICTCLAS官方也提供了很全面的加载方法,虽然在run as java application下运行没有问题,但是在tomcat下报UnsatisfiedLinkError的错误,错误来自Syst...
分类:
其他好文 时间:
2014-07-14 08:46:13
阅读次数:
254
更新了公司的搜索,写下日志来激励自己!新版搜索新特性:solr版本升级到solr4.8.1中文分词器改用ansj,开源,简洁,强大,无害词库兼顾任意编码格式,不怕乱码分词器和分词词库分离,降低更新分词器版本难度分词器配置统一在library.properties中,在solr/WEB-INF/cla...
分类:
其他好文 时间:
2014-07-13 08:04:32
阅读次数:
268
近期做项目中有用到过Lucene,那个模块是由一位前端大神负责的,空闲时间我也做了个关于Lucene做全文检索的Demo,记录下来,方便以后学习。
关于Lucene的原理,网上有长篇大论的文章,有兴趣的话可以去阅读,再次我就直奔主题,在代码中分析其原理。
1、创建索引(此处我用的是盘古分词)
注:在后台代码的第一行上加上 #define notes这样一行代码,目的是可以用外侧代码的#if,...
分类:
Web程序 时间:
2014-07-12 23:52:43
阅读次数:
509
在采用FMM (正向最大匹配) 进行中文分词的时候, 可能会存在比较多的交集歧义, 这个时候为了解决交集歧义的问题, 可以采用 FM (Forwar Matching, 正向匹配) 进行中文分词, 正向匹配会在最大匹配的路径上查找所有可能成词的term(这里所有可能成词的term的意思是在构建索引的时候所有切分出来的词, 因为不是路径上的所有节点都会是切分成的词)。
http://blo...
分类:
其他好文 时间:
2014-07-12 22:23:26
阅读次数:
383
最近接触NLP中文分词, 在lunr.js的基础上, 实现了中文的最大正向匹配分词。
某些情况下, 我们在服务器端进行中文文本分词可以使用完整的基于mmseg算法的分词模块, 例如nodejieba, node-segment, 盘古分词等等, 但是在客户端环境下, 我们不能使用这些复杂的分词算法进行分词, 这个时候可以根据已经生成的索引进行简单的客户端分词, 就是所说的FMM (Forwar...
分类:
其他好文 时间:
2014-07-12 22:18:57
阅读次数:
301
承接前面对whoosh的文章,继续:
写索引文件
下面开始写入索引内容,过程如下:
writer = ix.writer()
writer.add_document(title=u"my document", content=u"this is my document", path=u"/a", tags=u"firlst short", icon=u"/icons/star.p...
分类:
其他好文 时间:
2014-07-12 20:22:08
阅读次数:
342
中文分词中存在交集歧义检测问题, 例如“互联网金宝” 可以切分为“互联网” 和“金宝”, 也可以切分为“互联”和“网金宝”, 如何在切分过程中检测是否有交集歧义发生, 以及如果存在交集歧义的话怎么处理切分问题, 是非常重要的话题。
这里, 可以采用FMM算法进行切分, 首先切分出最大的正向匹配, 然后进行交集歧义检测, 如果检测到存在交集歧义, 那么对可能存在歧义的一段文字进行FM切分, 获取所有的可能切分结果; 然后对剩下的query子句重复进行FMM切分, 直到query == null...
分类:
其他好文 时间:
2014-07-12 18:26:14
阅读次数:
264
最近调研了一下simhash算法,它主要用在谷歌网页去重中,网上有很多原理性的介绍。既然可以用来判断文件的相似性,就想知道效果怎么样,simhash的精确度是否依赖于分词算法?是否和simhash的长度有关?
在数据去重过程中,都是先对文件进行分块,而后得到关于这个文件的所有指纹(SHA-1 digest),那么如果把这些fingerprints视为这个文件的单词,作为simhash的输入,效果...
分类:
其他好文 时间:
2014-07-11 08:33:56
阅读次数:
217
题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中”
给定字符串,以及一个字典,判断字符串是否能够拆分为字段中的单词。例如,字段为{hello,world},字符串为hellohelloworld,则可以拆分为hello,hello,world,都是字典中的单词。
思想:最直接的思路就是递归,我们考虑每一个前缀,是否在字典中?如果在,则递归处理剩下的字串;如果不再,...
分类:
其他好文 时间:
2014-07-10 21:44:02
阅读次数:
207
什么是Sphinx
Sphinx 是一个全文检索引擎,一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS的原...
分类:
数据库 时间:
2014-07-09 11:22:17
阅读次数:
310