如何从samppipe文章提取器运行并获取文档统计信息?

时间:2012-06-25 21:10:56

标签: web-scraping html-content-extraction boilerpipe

我对使用boilerpipe的ArticleExtractor类并不太了解。虽然,我也是java的新手,所以也许我对这个环境的基本知识是错误的。

无论如何,我正在尝试使用samppipe从我收集的一些原始html源中提取主要文章。 html源文本存储在java.lang.String变量(让我们称之为htmlstr)变量中,该变量具有网页的原始HTML内容。

我知道如何运行samppipe将提取的文本打印到输出窗口,如下所示:

java.lang.String htmlstr = "<!DOCTYPE.... ****html source**** ... </html>";

java.lang.String article = ArticleExtractor.INSTANCE.getText(htmlstr);
System.out.println(article);

但是,我不确定如何通过首先实例化ArticleExtractor类的实例来运行BP,然后使用'TextDocument'输入数据类型调用它。 TextDocument数据类型本身是以BP的'TextBlock'数据类型构建的,也许我没有正确地这样做...

从我的htmlstr字符串变量构造TextDocument类型变量的正确方法是什么?

所以我的问题是使用BP的Article Extractor类的处理方法,除了按照上面的例子调用ArticleExtractor getText方法。换句话说,我不确定如何使用

ArticleExtractor.process(TextDocument doc);

方法

据我了解,需要运行此ArticleExtractor流程方法才能使用相同的“TextDocument doc”变量来获取文档统计信息,使用BP的

TextDocumentStatistics(TextDocument doc, boolean contentOnly) 

方法?我想用统计数据来确定滤波估计有多好。

有人可以帮我解决任何代码示例吗?

1 个答案:

答案 0 :(得分:1)

用Jython编写的代码(转换为java应该很容易)

1)如何从HTML字符串中获取TextDocument:

import org.xml.sax.InputSource as InputSource
import de.l3s.boilerpipe.sax.HTMLDocument as HTMLDocument
import de.l3s.boilerpipe.document.TextDocument as TextDocument
import de.l3s.boilerpipe.sax.BoilerpipeSAXInput as BoilerpipeSAXInput
import de.l3s.boilerpipe.extractors.ArticleExtractor as ArticleExtractor
import de.l3s.boilerpipe.estimators.SimpleEstimator as SimpleEstimator
import de.l3s.boilerpipe.document.TextDocumentStatistics as TextDocumentStatistics
import de.l3s.boilerpipe.document.TextBlock as TextBlock

htmlDoc = HTMLDocument(rawHtmlString)
inputSource = htmlDoc.toInputSource() 
boilerpipeSaxInput = BoilerpipeSAXInput(inputSource)
textDocument = boilerpipeSaxInput.getTextDocument()

2)如何使用文章提取器处理TextDocument (从上面继续)

content = ArticleExtractor.INSTANCE.getText(textDocument)  

3)如何获取TextDocumentStatistics (从上面继续)

content_list = [] #replace python 'List' Object with ArrayList in java
content_list.append(TextBlock(content)) #replace with arrayList.add(TextBlock(content))
content_td = TextDocument(content_list)
content_stats = TextDocumentStatistics(content_td, True)#True for article content statistics only

注意:附带samppipe 1.2.jar库的java文档应该对将来的参考有所帮助