0

ボイラーパイプの ArticleExtractor クラスの使用について、私がよく理解していないことがあります。とはいえ、私はJavaも初めてなので、おそらくこの環境に関する私の基本的な知識に誤りがあります。

とにかく、ボイラーパイプを使用して、収集した生の HTML ソースから主要な記事を抽出しようとしています。HTML ソース テキストは、Web ページの生の HTML コンテンツを持つ java.lang.String 変数 (htmlstr と呼びましょう) 変数に格納されます。

次のように、ボイラーパイプを実行して、抽出されたテキストを出力ウィンドウに出力する方法を知っています。

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

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

ただし、最初に ArticleExtractor クラスのインスタンスをインスタンス化し、それを「TextDocument」入力データ型で呼び出すことによって BP を実行する方法がわかりません。TextDocument データ型自体は、何らかの形で BP の「TextBlock」データ型から構築されており、おそらくこれを正しく行っていません...

htmlstr 文字列変数から TextDocument 型変数を作成する適切な方法は何ですか?

したがって、私の問題は、上記の例のように ArticleExtractor getText メソッドを呼び出す以外に、BP の Article Extractor クラスの処理メソッドを使用することです。つまり、使い方がわからない

ArticleExtractor.process(TextDocument doc);

方法。

この ArticleExtractor プロセス メソッドを実行して、BP の

TextDocumentStatistics(TextDocument doc, boolean contentOnly) 

方法?統計を使用して、フィルタリングがどの程度良好であると推定されたかを判断したいと思います。

誰かが私を助けることができるコード例はありますか?

4

1 に答える 1

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)Article Extractorを使用して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

Note: The java docs accompanied with the boilerpipe 1.2.jar library should be somewhat useful for future reference

于 2012-06-28T06:59:03.263 に答える