我目前正在调查从文本中提取人名,位置,技术词和类别的选项(来自网络的大量文章),然后这些文章将被用于Lucene/ElasticSearch索引.然后将附加信息添加为元数据,并且应该提高搜索的精度.
例如,当有人查询"检票口"时,他应该能够决定他是指板球运动还是阿帕奇项目.到目前为止,我试图自己实现这一点并取得了一些成功.现在我找到了很多工具,但我不确定它们是否适合这项任务,哪些与Lucene集成良好,或者实体提取的精度是否足够高.
我的问题:
以下是与该主题相关的一些问题:
我目前正在开展一个涉及爬行和处理大量数据(数百场演出)的项目,并挖掘它们以提取结构化数据,命名实体识别,重复数据删除,分类等.
我熟悉Java和Python世界的ML工具:Lingpipe,Mahout,NLTK等.但是,当涉及到选择这样一个大规模问题的平台时 - 我缺乏足够的经验来决定Java或Python .
我知道这听起来像一个模糊的问题,但我正在寻找关于选择Java或Python的一般建议.JVM提供了比Python更好的性能(?),但像Lingpipe等库是否与Python生态系统相匹配?如果我使用这个Python,那么扩展它并在多台机器上管理它会有多容易.
我应该选择哪一个?为什么?
我正在尝试编写一个简短的脚本来通过clojure聚集我的数据(尽管调用Mahout类).我有这种格式的输入数据(这是PHP脚本的输出)
format: (tag) (image) (frequency)
tag_sit image_a 0
tag_sit image_b 1
tag_lorem image_a 1
tag_lorem image_b 0
tag_dolor image_a 0
tag_dolor image_b 1
tag_ipsum image_a 1
tag_ipsum image_b 1
tag_amit image_a 1
tag_amit image_b 0
... (more)
Run Code Online (Sandbox Code Playgroud)
然后我使用这个脚本(clojure)将它们写入SequenceFile
#!./bin/clj
(ns sensei.sequence.core)
(require 'clojure.string)
(require 'clojure.java.io)
(import org.apache.hadoop.conf.Configuration)
(import org.apache.hadoop.fs.FileSystem)
(import org.apache.hadoop.fs.Path)
(import org.apache.hadoop.io.SequenceFile)
(import org.apache.hadoop.io.Text)
(import org.apache.mahout.math.VectorWritable)
(import org.apache.mahout.math.SequentialAccessSparseVector)
(with-open [reader (clojure.java.io/reader *in*)]
(let [hadoop_configuration ((fn []
(let [conf (new Configuration)]
(. conf set "fs.default.name" "hdfs://localhost:9000/")
conf)))
hadoop_fs …Run Code Online (Sandbox Code Playgroud) 基于Java的Mahout的目标是构建可扩展的机器学习库.Python中是否有任何等效的库?
我有以下问题,并认为我可以使用机器学习但我不完全确定它将适用于我的用例.
我有一个大约一亿条记录的数据集,其中包含客户数据,包括姓名,地址,电子邮件,电话等,并希望找到一种方法来清理这些客户数据并识别数据集中可能存在的重复数据.
大多数数据都是使用没有验证的外部系统手动输入的,因此我们的许多客户在我们的数据库中最终得到了多个配置文件,有时每个记录中都有不同的数据.
对于实例我们可能为客户John Doe提供5个不同的条目,每个条目都有不同的联系方式.
我们还有这样的情况:代表不同客户的多个记录在电子邮件等关键字段上匹配.例如,当客户没有电子邮件地址但数据输入系统需要时,我们的顾问将使用随机电子邮件地址,导致许多不同的客户档案使用相同的电子邮件地址,同样适用于电话,地址等.
我们的所有数据都在Elasticsearch中编制索引并存储在SQL Server数据库中.我的第一个想法是使用Mahout作为机器学习平台(因为这是一个Java商店)并且可能使用H-base来存储我们的数据(仅仅因为它适合Hadoop生态系统,不确定它是否具有任何实际价值),但是我读到的越多,我对它的工作方式就越困惑,对于初学者我不知道我能使用哪种算法,因为我不确定这个问题在哪里,我可以使用聚类算法或分类算法吗?当然,必须使用某些规则来确定配置文件的唯一性,即哪些字段.
我们的想法是最初将其部署为客户资料重复数据删除服务,我们的数据输入系统可以使用这些服务在输入新的客户资料时验证和检测可能的重复项,并且将来可能将其发展为分析平台以进行收集洞察我们的客户.
任何反馈将不胜感激:)
谢谢.
recommendation-engine machine-learning duplicates mahout record-linkage
我很困惑基于项目的推荐是什么,正如" Mahout in Action " 一书中所描述的那样.书中有算法:
for every item i that u has no preference for yet
for every item j that u has a preference for
compute a similarity s between i and j
add u's preference for j, weighted by s, to a running average
return the top items, ranked by weighted average
Run Code Online (Sandbox Code Playgroud)
如何计算项目之间的相似度?如果使用内容,是不是基于内容的推荐?
我想在Java中编写一个"智能监视器",它会在检测到即将发生的性能问题时发出警报.我的Java应用程序正在以结构化格式将数据写入日志文件:
<datetime> | <java-method> | <seconds-to-execute>
Run Code Online (Sandbox Code Playgroud)
因此,例如,如果我有一个Widget#doSomething(String)执行812ms 的方法,它将被记录为:
2013-03-24 11:39:21 | Widget#doSomething(String) | 812
Run Code Online (Sandbox Code Playgroud)
随着性能开始下降(例如在主要收集期间,在峰值负载期间,或者如果系统正在慢慢爬行),方法执行时间开始减慢; 所以最右边的列开始看到大量的数字(有时候执行单个方法需要20到40秒).
在大学 - 进行机器学习练习 - 我写了我的教授所谓的线性二分法,它采用简单的测试数据(一个人的身高,体重和性别),并"学会"如何根据他们的人将男性或女性分类身高体重.然后,一旦它掌握了所有的训练数据,我们就会向它提供新的数据,以确定它可以准确地确定性别.
我认为线性二分法的多变量版本称为支持向量机(SVM).如果我错了,那么请澄清,我会将问题的标题更改为更合适的名称.无论如何,我需要这个应用程序来做以下事情:
java-method和seconds-to-execute列作为输入/测试数据很重要; 我不关心日期时间重要的是要注意这一seconds-to-execute列并不是唯一重要的因素,因为我看到某些方法在令人敬畏的性能期间出现了可怕的时序,并且在服务器似乎即将死亡的时候,其他方法确实很好的时机并推动雏菊.因此,显然某些方法比其他方法"加权"/更重要.
jlibsvm,svmlearn但前者看起来处于纯beta状态,而后者似乎只支持二元决策(就像我的旧线性二分法).我知道有Mahout,但它位于Hadoop之上,我认为我没有足够的数据来保证建立我自己的Hadoop集群所需的时间和精力.提前致谢!
我打算在我的项目中使用hadoop作为"计算集群".然而,我读到Hadoop并不打算用于实时系统,因为开销与工作相关.我正在寻找可以这种方式使用的解决方案 - 可以轻松扩展到多台机器但不需要太多输入数据的作业.更重要的是,我想使用机器学习工作,例如在神经网络之前实时创建.
我可以为此目的使用哪些库/技术?
从(http://girlincomputerscience.blogspot.com/2010/11/apache-mahout.html)安装mahout之后.如何运行mahout算法,从那里我可以获得最受欢迎的mahout新手的简单教程....
提前致谢.
mahout ×10
java ×4
hadoop ×2
python ×2
scalability ×2
apache-spark ×1
clojure ×1
cygwin ×1
duplicates ×1
lucene ×1
nlp ×1
nltk ×1
opennlp ×1
real-time ×1
semantic-web ×1
svm ×1