我有一个Java应用程序,它创建了4个Nutch Java实例(每个实例都在单个种子URL上工作) 所有上述5个应用程序以及SOLR(10 GM内存)均在具有64 GB RAM和32个处理器的Azure VM上进行配置。
我只对与某个关键字匹配的外链感兴趣,并且只想在下一个深度转发那些外链。 阅读Wiki页面https://wiki.apache.org/nutch/NaiveBayesParseFilter 给了我一个可以尝试解决问题的想法,但是我找不到相同的任何好例子。 我了解的是 parsefilter.naivebayes.trainfile:用于解析页面内容 parsefilter.naivebayes.wordlist:用于解析出站 我可以使用Naviebayes满足我的要求吗,如果可以,任何人都可以提供我可以关注的更详细的链接。
在这里考虑一个例子。我的种子列表将包含URL http://www.blueprism.com/investors 在深度1中,http://www.blueprism.com/investors的内容将被读取,过滤和解析并传递到深度2。我只需要传递几个URL到第二个深度,然后使用自定义的Filter来执行此操作,该Filter会查看关键字的Outlinks和Anchor文本(可以说我要查找的关键字是财务关键字和年度关键字) 在深度2中:从抓取数据库读取的URL之一是https://www.blueprism.com/reports-presentations,然后再次读取内容,过滤并解析 在深度3中:https://www.blueprism.com/wp-content/uploads/2018/02/BluePrism_AR2017.pdf(与深度2解析器的锚点匹配的关键字)
在上述情况下,到达文档的流程并不是那么困难,但这就是我试图获取自己感兴趣的文档的方式。 检索50个种子URL到4的深度大约需要-5个小时 Navie Bayes只是我打算尝试的一步。我不确定是否可以通过采用任何新设计来改进我的流程,创建分类器会帮助我解决这个问题,如果可以,请提供相同文档或任何博客,并且可以用JAVA创建的ML?
答案 0 :(得分:0)
问题明确后编辑
如果仅需要查看特定关键字的链接及其锚文本,则完全不需要任何ML技术。您只需要编写一个处理Outlinks数组的HtmlParseFilter(在过滤器接收并返回的ParseData中,Parse中,ParseResult中)即可获取所需的那些外链。
您可以遍历找到的Outlinks。每个Outlink包含两个字符串:其锚文本和目标URL,因此只需在这两个字符串中查找您的关键字,然后用包含过滤后的Outlinks的新字符串替换该数组。