2012-06-25 19 views
0

有些東西我對使用boilerpipe的ArticleExtractor類不太瞭解。儘管如此,我對Java也很陌生,所以也許我對這個環境的基本知識是錯誤的。無論如何,我試圖使用boilerpipe從我收集的一些原始html源代碼中提取主要文章。 html源文本存儲在一個java.lang.String變量中(我們稱之爲htmlstr),該變量具有網頁的原始HTML內容。如何運行並獲取來自boilerpipe文章提取器的文檔統計信息?

我知道如何運行boilerpipe提取的文本打印到輸出窗口,如下所示:

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文檔」變量,採用BP的

TextDocumentStatistics(TextDocument doc, boolean contentOnly) 

方法?我想使用這些統計數據來確定過濾估計有多好。

有人可以幫助我的任何代碼示例? Jython編寫的

+0

重新標記有點用處。這是[tag:web-scraping](=從網頁中提取數據),而不是[tag:data-mining](=複雜的統計分析) –

回答

1

代碼(轉換成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 

注:伴隨着boilerpipe 1.2.jar庫中的Java文檔應該成爲今後的參考

+0

感謝Kevin,我只是不熟悉java語法來正確實現我正在閱讀javadoc。我實際上通過matlab實現了Java ...現在就開始工作了,除了文檔統計信息之外,所有的getNumWords方法總是返回0。 – brneuro