1

構造化データとの間のインターフェースを作成しようとしていますNLTKNLPライブラリは通常、単語の袋を処理するため、構造化データを単語の袋に変換する必要があります。

単語のオフセットをそのメタデータに関連付ける必要があるため、範囲をキーとして保持し(ネストされた範囲を許可)、すべてのメタデータを取得できる(単語のオフセットの場合は複数)、ある種のコンテナーを用意するのが最善の策です。ネストされた範囲の一部です)。

これを効率的に行うためにどのコードをピックアップできますか(つまり、データのスパース表現)?私のグローバルコーパスには少なくとも数百メガバイトあるので効率的です。

ノート :

  • 構造化されたフォーラムの投稿をシリアル化しています。これには、引用のセクションが含まれる投稿が含まれます。単語がどのトピックに属しているのか知りたいのですが、それが引用またはユーザーテキストです。作業が進むにつれて、おそらく追加のメタデータがあります。引用に属する単語は、ネストされたメタデータが意味するものであるため、その単語は引用の一部であり、ユーザーが作成した投稿に属していることに注意してください。

  • まだ調べていない単語にタグを付けることができることは知っていNLTKます。その方法でやりたいことができる場合は、コメントしてください。しかし、私はまだ元のアプローチを探しています。

  • numpy私の問題を解決できる何かがおそらくあります、今それを見て

編集

入力データは複雑すぎて、取り除いて投稿することはできません。http://packages.python.org/PyICL/で探していたものを見つけました。範囲ではなく間隔について話す必要がありました:DIはブーストを広範囲に使用しましたが、依存関係があると少し不安になります(残念ながら、PyICLでコンパイラエラーが発生しています:()。

ここでの問題は、ネストされた間隔にスパースな方法でインデックスを付けるために使用できる間隔コンテナライブラリまたはデータ構造を誰もが知っているということです。または、別の言い方をすれば、boost.iclと同様のセマンティクスを提供します

4

1 に答える 1

0

使用したくない場合、PyICLまたはboost.icl特殊なライブラリに依存する代わりに、sqlite3を使用して作業を行うことができますか?boost.iclin0memoryバージョンを使用する場合でも、 (他のデータ構造とsqlite3のコーディングの経験から)数桁遅くなりますがstd::vector、Pythonコンテナー上でc++スタイルのアプローチを使用するよりも効果的です。

2つの整数を使用date_type_low < offset < date_type_highして、where句に述語を含めることができます。また、テーブル構造に応じて、ネストされた/重複する範囲が返されます。

于 2012-09-20T15:51:16.677 に答える