备份几篇文章
2015-09-29 10:33
344 查看
如何正确配置Nginx+PHP
9个基于Java的搜索引擎框架
mysql查询优化
解析网页 使用Beautiful
Soup进行查找
beautiful soup相关文档: 1. 点击打开链接 2. 点击打开链接
官方网站:http://lucene.apache.org/
利用Nutch,你可以做到以下这些功能:
每个月取几十亿网页
为这些网页维护一个索引
对索引文件进行每秒上千次的搜索
提供高质量的搜索结果
以最小的成本运作
官方网站:http://nutch.apache.org/
官方网站:http://www.elasticsearch.org/
其特性如下:
支持Solr的大多数默认特性 (search, faceting, highlights)
数据复制,分片,缓存及压缩这些都由Cassandra来进行
Multi-master (任意结点都可供读写)
实时性高,写操作完成即可读到
Easily add new SolrCores w/o restart across the cluster 轻松添加及重启结点
官方网站:https://github.com/tjake/Solandra
索引更新实时生效
地理位置搜索
支持多种客户端语言
Ruby, Rails, Python, Java, PHP, .NET & more!
支持灵活的排序与评分控制
支持自动完成
支持面搜索(facet search)
支持匹配高亮
支持海量数据扩展(Scalable from a personal blog to hundreds of millions of documents! )
支持动态数据
官方网站:https://github.com/linkedin/indextank-engine
搜索引擎抽象层(使用Lucene搜索引荐)
OSEM (Object/Search Engine Mapping) 支持
事务管理
类似于Google的简单关键字查询语言
可扩展与模块化的框架
简单的API
官方网站:http://www.compass-project.org/
官方网站:http://lucene.apache.org/solr/
官方网站:http://www.Semanticmetadata.net/lire/
官方网站:http://www.egothor.org/cms/
---------------------------------------------------------------------------------------------------------------------------------推荐系统相关---------------------------------------------------------------
推荐系统开源软件列表汇总和点评(/article/7608679.html)
我收集和整理的目前互联网上所能找到的知名开源推荐系统(open source project for recommendation system),并附上了个人的一些简单点评(未必全面准确),
这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助
陈运文
SVDFeature
由上海交大的同学开发的,C++语言,代码质量很高 。去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐!
项目地址:
http://svdfeature.apexlab.org/wiki/Main_Page
SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。
另外含有Logistic regression的model,可以很方便的用来进行ensemble运算
Crab
项目地址:
http://geektell.com/story/crab-recommender-systems-in-python/
系统的Tutorial可以看这里:
http://muricoca.github.io/crab/
Crab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤。据说更多算法还在开发中,
Crab的python代码看上去很清晰明了,适合一读
CofiRank
C++开发的 Collaborative Filtering算法的开源推荐系统,但似乎2009年后作者就没有更新了,
CofiRank依赖boost库,联编会比较麻烦。不是特别推荐
项目地址:
http://www.cofirank.org/
EasyRec
Java开发的推荐系统,感觉更像一个完整的推荐产品,包括了数据录入模块、管理模块、推荐挖掘、离线分析等,整个系统比较完备。
项目地址:
http://easyrec.org/
GraphLab
项目地址:
http://graphlab.org/
Graphlab是基于C++开发的一个高性能分布式graph处理挖掘系统,特点是对迭代的并行计算处理能力强(这方面是hadoop的弱项),
由于功能独到,GraphLab在业界名声很响
用GraphLab来进行大数据量的random walk或graph-based的推荐算法非常有效。
Graphlab虽然名气比较响亮(CMU开发),但是对一般数据量的应用来说可能还用不上
Lenskit
http://lenskit.grouplens.org/
这个Java开发的开源推荐系统,来自美国的明尼苏达大学,也是推荐领域知名的测试数据集Movielens的作者,
他们的推荐系统团队,在学术圈内的影响力很大,很多新的学术思想会放到这里
Mahout
网址
http://mahout.apache.org/
Mahout知名度很高,是Apache基金资助的重要项目,在国内流传很广,并已经有一些中文相关书籍了。注意Mahout是一个分布式机器学习算法的集合,协同过滤只是其中的一部分。除了被称为Taste的分布式协同过滤的实现(Hadoop-based,另有pure Java版本),Mahout里还有其他常见的机器学习算法的分布式实现方案。
另外Mahout的作者之一Sean Owen基于Mahout开发了一个试验性质的推荐系统,称为Myrrix, 可以看这里:
http://myrrix.com/quick-start/
MyMediaLite
http://mymedialite.net/index.html
基于.NET框架的C#开发(也有Java版本),作者基本来自德国、英国等欧洲的一些高校。
除了提供了常见场景的推荐算法,MyMediaLite也有Social Matrix Factorization这样独特的功能
尽管是.Net框架,但也提供了Python、Ruby等脚本语言的调用API
MyMediaLite的作者之一Lars Schmidt在2012年KDD会议上专门介绍过他们系统的一些情况,可惜由于.Net开发框架日渐式微,MyMediaLite对Windows NT Server的系统吸引力大些,LAMP网站用得很少
LibFM
项目网址:
http://www.libfm.org/
作者是德国Konstanz University的Steffen Rendle,去年KDD Cup竞赛上我们的老对手,他用LibFM同时玩转Track1和Track2两个子竞赛单元,都取得了很好的成绩,说明LibFM是非常管用的利器(虽然在Track1上被我们打败了,hiahia)
顾名思义,LibFM是专门用于矩阵分解的利器,尤其是其中实现了MCMC(Markov Chain Monte Carlo)优化算法,比常见的SGD(随即梯度下降)优化方法精度要高(当然也会慢一些)
顺便八卦下,去年KDD会议上和Steffen当面聊过,他很腼腆而且喜欢偷笑,呵呵挺可爱。
LibMF
项目地址:
http://www.csie.ntu.edu.tw/~cjlin/libmf/
注意LibMF和上面的LibFM是两个不同的开源项目。这个LibMF的作者是大名鼎鼎的台湾国立大学,他们在机器学习领域享有盛名,近年连续多届KDD Cup竞赛上均获得优异成绩,并曾连续多年获得冠军。台湾大学的风格非常务实,业界常用的LibSVM, Liblinear等都是他们开发的,开源代码的效率和质量都非常高
LibMF在矩阵分解的并行化方面作出了很好的贡献,针对SDG优化方法在并行计算中存在的locking problem和memory discontinuity问题,提出了一种矩阵分解的高效算法,根据计算节点的个数来划分评分矩阵block,并分配计算节点。系统介绍可以见这篇论文(Recsys 2013的 Best paper Award)
Y. Zhuang, W.-S. Chin, Y.-C. Juan, and C.-J. Lin. A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems. Proceedings of ACM Recommender Systems 2013.
PREA
全名是 Personalized Recommendation Algorithms Toolkit, 开发语言为Java。也是一个轻量级的开源项目
项目网址:
http://mloss.org/software/view/420/
放在Mloss这个大project下。我个人感觉PREA还是比较简陋的,参加开发的三位工程师Joonseok Lee, Mingxuan Sun, Guy Lebanon更新频率很低,提供的资料也少。
不过Mloss下倒是能找到其他一些推荐开源项目
http://mloss.org/software/tags/collaborative-filtering/
Python-recsys
一个非常轻量级的开源推荐系统,python开发,作者似乎只有一位,
Python-recsys主要实现了SVD、Neighborhood SVD推荐算法,
这个项目麻雀虽小五脏俱全,评估数据(Movielens,Last.fm)、评估框架也都有
API也很简单清晰,代码简洁,属于推荐入门的良好教材。
不过真正要用到实际系统中,还是得补充很多内容
github的地址位于
https://github.com/ocelma/python-recsys
项目的介绍见:
http://ocelma.net/software/python-recsys/build/html/
RapidMiner
项目网址为:
http://rapidminer.com/
Java语言开发,RapidMiner(前身是Yale)已经是一个比较成熟的数据挖掘解决方案了,包括常见的机器学习、NLP、推荐、预测等方法(推荐只占其中很小一部分),而且带有GUI的数据分析环境,数据ETL、预处理、可视化、评估、部署等整套系统都有。
另外RapidMiner提供commercial license,提供R语言接口,感觉在向着一个商用的数据挖掘公司的方向在前进。
Recommendable
基于Ruby语言开发,实现了一些评分预测的推荐算法,但是整体感觉比较单薄,
github上地址如下:
https://github.com/davidcelis/recommendable/
Recommenderlab
基于R语言开发的开源推荐程序,对经常使用R语言的工程师或者BI数据分析师来说,recommenderlab的出现绝对算得上是福音了
项目地址:
http://cran.r-project.org/web/packages/recommenderlab/index.html
基于Recommenderlab来开发推荐系统,代码会非常精简,因为推荐系统所依赖的user-item rating matrix对擅长处理向量运算的R语言来说再方便不过了,
但是在实际推荐系统中,需要考虑的问题和逻辑都比较复杂,用Recommenderlab不是很灵活。另外受限于R语言对内存的限制,Recommenderlab不太适用于过大规模的推荐应用
Waffles
SF地址:
http://waffles.sourceforge.net/
Waffles英文原意是蜂蜜甜饼(见logo),在这里却指代一个非常强大的机器学习的开源工具包,基于C++语言开发。
Waffles里包含的算法特别多,涉及机器学习的方方面面,推荐系统位于其中的Waffles_recommend tool,大概只占整个Waffles的1/10的内容(其它还有分类、聚类、采样、降维、数据可视化、音频处理等许许多多工具包,估计能与之媲美的也就数Weka了)
---------------------------------------0331update-----------------------------------------------------------
[关注于 机器学习、数据挖掘、并行计算、数学]
9个基于Java的搜索引擎框架
Redis系列-php怎么通过redis扩展使用redis
YYI之Model方法mysql查询优化
解析网页 使用Beautiful
Soup进行查找
beautiful soup相关文档: 1. 点击打开链接 2. 点击打开链接
1、Java 全文搜索引擎框架 Lucene
毫无疑问,Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene为开发人员提供了相当完整的工具包,可以非常方便地实现强大的全文检索功能。下面有几款搜索引擎框架也是基于Lucene实现的。官方网站:http://lucene.apache.org/
2、开源Java搜索引擎Nutch
Nutch 是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。利用Nutch,你可以做到以下这些功能:
每个月取几十亿网页
为这些网页维护一个索引
对索引文件进行每秒上千次的搜索
提供高质量的搜索结果
以最小的成本运作
官方网站:http://nutch.apache.org/
3、分布式搜索引擎 ElasticSearch
ElasticSearch就是一款基于Lucene框架的分布式搜索引擎,并且也是一款为数不多的基于JSON进行索引的搜索引擎。ElasticSearch特别适合在云计算平台上使用。官方网站:http://www.elasticsearch.org/
4、实时分布式搜索引擎 Solandra
Solandra 是一个实时的分布式搜索引擎,基于 Apache Solr 和 Apache Cassandra 构建。其特性如下:
支持Solr的大多数默认特性 (search, faceting, highlights)
数据复制,分片,缓存及压缩这些都由Cassandra来进行
Multi-master (任意结点都可供读写)
实时性高,写操作完成即可读到
Easily add new SolrCores w/o restart across the cluster 轻松添加及重启结点
官方网站:https://github.com/tjake/Solandra
5、IndexTank
IndexTank是一套基于Java的索引-实时全文搜索引擎实现,IndexTank有以下几个特点:索引更新实时生效
地理位置搜索
支持多种客户端语言
Ruby, Rails, Python, Java, PHP, .NET & more!
支持灵活的排序与评分控制
支持自动完成
支持面搜索(facet search)
支持匹配高亮
支持海量数据扩展(Scalable from a personal blog to hundreds of millions of documents! )
支持动态数据
官方网站:https://github.com/linkedin/indextank-engine
6、搜索引擎 Compass
Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架.Compass包括:搜索引擎抽象层(使用Lucene搜索引荐)
OSEM (Object/Search Engine Mapping) 支持
事务管理
类似于Google的简单关键字查询语言
可扩展与模块化的框架
简单的API
官方网站:http://www.compass-project.org/
7、Java全文搜索服务器 Solr
Solr也是基于Java实现的,并且是基于Lucene实现的,Solr的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果。值得注意的是,Solr还提供一款很棒的Web界面来管理索引的数据。官方网站:http://lucene.apache.org/solr/
8、Lucene图片搜索 LIRE
LIRE是一款基于Java的图片搜索框架,其核心也是基于Lucene的,利用该索引就能够构建一个基于内容的图像检索(content- based image retrieval,CBIR)系统,来搜索相似的图像。官方网站:http://www.Semanticmetadata.net/lire/
9、全文本搜索引擎 Egothor
Egothor是一个用Java编写的开源而高效的全文本搜索引擎。借助Java的跨平台特性,Egothor能应用于任何环境的应用,既可配置为单独的搜索引擎,又能用于你的应用作为全文检索之用。官方网站:http://www.egothor.org/cms/
---------------------------------------------------------------------------------------------------------------------------------推荐系统相关---------------------------------------------------------------
推荐系统开源软件列表汇总和点评(/article/7608679.html)
我收集和整理的目前互联网上所能找到的知名开源推荐系统(open source project for recommendation system),并附上了个人的一些简单点评(未必全面准确),
这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助
陈运文
SVDFeature
由上海交大的同学开发的,C++语言,代码质量很高 。去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐!
项目地址:
http://svdfeature.apexlab.org/wiki/Main_Page
SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。
另外含有Logistic regression的model,可以很方便的用来进行ensemble运算
Crab
项目地址:
http://geektell.com/story/crab-recommender-systems-in-python/
系统的Tutorial可以看这里:
http://muricoca.github.io/crab/
Crab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤。据说更多算法还在开发中,
Crab的python代码看上去很清晰明了,适合一读
CofiRank
C++开发的 Collaborative Filtering算法的开源推荐系统,但似乎2009年后作者就没有更新了,
CofiRank依赖boost库,联编会比较麻烦。不是特别推荐
项目地址:
http://www.cofirank.org/
EasyRec
Java开发的推荐系统,感觉更像一个完整的推荐产品,包括了数据录入模块、管理模块、推荐挖掘、离线分析等,整个系统比较完备。
项目地址:
http://easyrec.org/
GraphLab
项目地址:
http://graphlab.org/
Graphlab是基于C++开发的一个高性能分布式graph处理挖掘系统,特点是对迭代的并行计算处理能力强(这方面是hadoop的弱项),
由于功能独到,GraphLab在业界名声很响
用GraphLab来进行大数据量的random walk或graph-based的推荐算法非常有效。
Graphlab虽然名气比较响亮(CMU开发),但是对一般数据量的应用来说可能还用不上
Lenskit
http://lenskit.grouplens.org/
这个Java开发的开源推荐系统,来自美国的明尼苏达大学,也是推荐领域知名的测试数据集Movielens的作者,
他们的推荐系统团队,在学术圈内的影响力很大,很多新的学术思想会放到这里
Mahout
网址
http://mahout.apache.org/
Mahout知名度很高,是Apache基金资助的重要项目,在国内流传很广,并已经有一些中文相关书籍了。注意Mahout是一个分布式机器学习算法的集合,协同过滤只是其中的一部分。除了被称为Taste的分布式协同过滤的实现(Hadoop-based,另有pure Java版本),Mahout里还有其他常见的机器学习算法的分布式实现方案。
另外Mahout的作者之一Sean Owen基于Mahout开发了一个试验性质的推荐系统,称为Myrrix, 可以看这里:
http://myrrix.com/quick-start/
MyMediaLite
http://mymedialite.net/index.html
基于.NET框架的C#开发(也有Java版本),作者基本来自德国、英国等欧洲的一些高校。
除了提供了常见场景的推荐算法,MyMediaLite也有Social Matrix Factorization这样独特的功能
尽管是.Net框架,但也提供了Python、Ruby等脚本语言的调用API
MyMediaLite的作者之一Lars Schmidt在2012年KDD会议上专门介绍过他们系统的一些情况,可惜由于.Net开发框架日渐式微,MyMediaLite对Windows NT Server的系统吸引力大些,LAMP网站用得很少
LibFM
项目网址:
http://www.libfm.org/
作者是德国Konstanz University的Steffen Rendle,去年KDD Cup竞赛上我们的老对手,他用LibFM同时玩转Track1和Track2两个子竞赛单元,都取得了很好的成绩,说明LibFM是非常管用的利器(虽然在Track1上被我们打败了,hiahia)
顾名思义,LibFM是专门用于矩阵分解的利器,尤其是其中实现了MCMC(Markov Chain Monte Carlo)优化算法,比常见的SGD(随即梯度下降)优化方法精度要高(当然也会慢一些)
顺便八卦下,去年KDD会议上和Steffen当面聊过,他很腼腆而且喜欢偷笑,呵呵挺可爱。
LibMF
项目地址:
http://www.csie.ntu.edu.tw/~cjlin/libmf/
注意LibMF和上面的LibFM是两个不同的开源项目。这个LibMF的作者是大名鼎鼎的台湾国立大学,他们在机器学习领域享有盛名,近年连续多届KDD Cup竞赛上均获得优异成绩,并曾连续多年获得冠军。台湾大学的风格非常务实,业界常用的LibSVM, Liblinear等都是他们开发的,开源代码的效率和质量都非常高
LibMF在矩阵分解的并行化方面作出了很好的贡献,针对SDG优化方法在并行计算中存在的locking problem和memory discontinuity问题,提出了一种矩阵分解的高效算法,根据计算节点的个数来划分评分矩阵block,并分配计算节点。系统介绍可以见这篇论文(Recsys 2013的 Best paper Award)
Y. Zhuang, W.-S. Chin, Y.-C. Juan, and C.-J. Lin. A Fast Parallel SGD for Matrix Factorization in Shared Memory Systems. Proceedings of ACM Recommender Systems 2013.
PREA
全名是 Personalized Recommendation Algorithms Toolkit, 开发语言为Java。也是一个轻量级的开源项目
项目网址:
http://mloss.org/software/view/420/
放在Mloss这个大project下。我个人感觉PREA还是比较简陋的,参加开发的三位工程师Joonseok Lee, Mingxuan Sun, Guy Lebanon更新频率很低,提供的资料也少。
不过Mloss下倒是能找到其他一些推荐开源项目
http://mloss.org/software/tags/collaborative-filtering/
Python-recsys
一个非常轻量级的开源推荐系统,python开发,作者似乎只有一位,
Python-recsys主要实现了SVD、Neighborhood SVD推荐算法,
这个项目麻雀虽小五脏俱全,评估数据(Movielens,Last.fm)、评估框架也都有
API也很简单清晰,代码简洁,属于推荐入门的良好教材。
不过真正要用到实际系统中,还是得补充很多内容
github的地址位于
https://github.com/ocelma/python-recsys
项目的介绍见:
http://ocelma.net/software/python-recsys/build/html/
RapidMiner
项目网址为:
http://rapidminer.com/
Java语言开发,RapidMiner(前身是Yale)已经是一个比较成熟的数据挖掘解决方案了,包括常见的机器学习、NLP、推荐、预测等方法(推荐只占其中很小一部分),而且带有GUI的数据分析环境,数据ETL、预处理、可视化、评估、部署等整套系统都有。
另外RapidMiner提供commercial license,提供R语言接口,感觉在向着一个商用的数据挖掘公司的方向在前进。
Recommendable
基于Ruby语言开发,实现了一些评分预测的推荐算法,但是整体感觉比较单薄,
github上地址如下:
https://github.com/davidcelis/recommendable/
Recommenderlab
基于R语言开发的开源推荐程序,对经常使用R语言的工程师或者BI数据分析师来说,recommenderlab的出现绝对算得上是福音了
项目地址:
http://cran.r-project.org/web/packages/recommenderlab/index.html
基于Recommenderlab来开发推荐系统,代码会非常精简,因为推荐系统所依赖的user-item rating matrix对擅长处理向量运算的R语言来说再方便不过了,
但是在实际推荐系统中,需要考虑的问题和逻辑都比较复杂,用Recommenderlab不是很灵活。另外受限于R语言对内存的限制,Recommenderlab不太适用于过大规模的推荐应用
Waffles
SF地址:
http://waffles.sourceforge.net/
Waffles英文原意是蜂蜜甜饼(见logo),在这里却指代一个非常强大的机器学习的开源工具包,基于C++语言开发。
Waffles里包含的算法特别多,涉及机器学习的方方面面,推荐系统位于其中的Waffles_recommend tool,大概只占整个Waffles的1/10的内容(其它还有分类、聚类、采样、降维、数据可视化、音频处理等许许多多工具包,估计能与之媲美的也就数Weka了)
---------------------------------------0331update-----------------------------------------------------------
[关注于 机器学习、数据挖掘、并行计算、数学]
相关文章推荐
- [转载]Python爬虫入门三之Urllib库的基本使用
- Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋…
- 【读书笔记】iOS-NSPredicate
- Tiger –UNIX:一款开源安全审计 入侵检测工具
- VirtualBox 设置共享文件夹
- 关于向app中添加设备并上传至蒲公英
- PAT(甲级)1069
- Jquery 全选/反选
- iOS远端推送部署详解
- NetFlix电影推荐算法(获奖那个)
- two sum
- 给普通的view添加边框和背景 (关于layer的一些属性)
- 高情商就是说话让人感到舒服
- 发送短信功能
- phpMyAdmin导入文件突破2M大小
- [C#] AY.WPF-图形编程-高中生为起点-研究报告1
- DNS作用
- java多态性理解
- XEN虚拟化概论
- time