3

私はdbpedia抽出フレームワークをいじっています。とてもいい感じで、喜んでウィキペディアのページの AST を作成し、リンクを抽出しています (WikiParser を使用)。しかし、解析からは構造化されたツリーが得られますが、テキスト ノードにはまだ多くの書式設定マークアップが含まれていることに気付きました (たとえば、イタリック体、太字などに使用されるアポストロフィ)。私の目的では、これらは役に立ちません。プレーンテキストが必要なだけです。

これを取り除くために独自のコードを書くのに時間を費やすことができますが、このようなものが dbpedia に役立つだろうと推測しています - そしてそれはライブラリのどこかに存在します。私は正しいですか?もしそうなら - 裸のテキストに落とす余分な機能はどこにありますか?

それ以外の場合 - mediawiki マークアップを削除する他の (できれば scala) パッケージを知っている人はいますか?

編集

詳細についてのリクエストに応えて。次のマークアップ:

''An italicised '''bit''' of text'', <b>Some markup</b>

TextNode のコンテンツとして dbpedia を通過しますが、そのままです。私はそれを次のように削除する機能が欲しいです:

 An italicised bit of text, Some markup

または、生のテキストの各セクションを表す追加のノードを含む、より構造化された AST に、おそらく (各ノードに) 適用される書式設定の種類 (イタリック体、太字など) で注釈が付けられます。

現状では、dbpedia 解析の最終結果は依然としてマークアップでいっぱいです。

それが役立つことを願っています。

4

3 に答える 3

2

そのため、sourceforge のSimpleWikiParser ソース コードをざっと見てみると、2011 年 1 月 29 日現在、パーサーは次のエンティティを処理していることがわかります。

  • コメント
  • 参考文献
  • コードブロック
  • 内部リンクと外部リンク
  • プロパティ
  • テーブル。

おそらくすべてのウィキの他のコンテンツは、最終的にTextNodeオブジェクトになります。ウィキ マークアップ機能セットを見ると、ウィキの構文要素を削除するだけでなく、それらをさらに構造化された要素に変換するために、かなりの量の作業が必要になります。

利用できる代替またはコードについては、次の代替パーサーページを参照してください。

自己完結型の不完全なソリューションの場合、一連の正規表現 replace on を実行できますnode.text

于 2011-03-04T21:51:54.653 に答える
1

gwtwiki (bliki) プロジェクトは、mediawiki の書式設定 -> pdf/html/etc を処理します。これは、mediawiki テキストの解析と再フォーマットのためのかなり完全なフレームワークです。

于 2011-04-08T17:43:13.500 に答える
0

このプロセスを開始するには、WikiUtil.removeWikiEmphasis を使用し、いくつかのルールを追加します。

私の場合、テキストを toWikiText にマップし、ノードを宛先名にリンクします。

case text:TextNode => text.toWikiText
case link:LinkNode => {
link match {
   case external:ExternalLinkNode =>  (external.destination.toString)
   case internal:InternalLinkNode =>  (internal.destination.decodedWithNamespace)
   case inter:InterWikiLinkNode   =>  (inter.destination.decodedWithNamespace)
}
于 2011-08-09T23:27:29.470 に答える