問題タブ [google-cloud-dataprep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2014 参照

google-bigquery - BigQuery / DataPrep: 単語数を効率的に抽出する方法。HTMLを平文に変換する

BigQuery に保存されている最大 470 万のドキュメントのテーブルがあります。一部はプレーンテキストで、一部は HTML です。それらは 1 つあたり約 2,000 トークンで、幅広いバリエーションがあります。私は主に DataPrep を使用して処理を行っています。

それらのトークンを抽出し、 TF-IDF値を計算したいと考えています。

トークンカウント

より時間のかかる手順の 1 つは、次の手順を実行することです。

そして、これを次のように変えます:

それを行う1つの方法は次のとおりです。

  1. ドキュメントの抽出リスト{alphanum-underscore}+ id, wordlist 1, ["foo", "bar", "foo", "baz"] 2, ["foo", "bar", "bar", "qux"]
  2. 単語リストを平坦化 id, word 1, foo 1, bar 1, foo 1, baz 2, foo 2, bar 2, bar 2, qux
  3. グループごとの集計: id、単語、値: count() id, word, count 1, foo, 2 1, bar, 1 1, baz, 1 2, foo, 1 2, bar, 2 2, qux, 1

ただし、手順 2 と 3 は、特に大きなドキュメントでは非常に時間がかかります。

["foo", "bar", "foo", "baz"]理想的には、に変換する関数を持つことができます{"foo":2, "bar":1, "baz":1}。これは、カウントを抽出するためにフラット化してからグループ化する操作を必要とせず、その後のフラット化は小さくなります (各用語ではなく一意の用語で動作するため)。

ただし、DataPrep でそれを行う方法はわかりませんでした。:-/

これを行うためのより効率的な方法は何ですか?

HTMLからプレーンテキストへ

私のソース データは、プレーンテキストと html の組み合わせです。370 万のドキュメントのうち、平文を利用できるのは約 800k だけです。

この規模で機能する何らかの合理的な方法 (たとえば Nokogiri #content に相当するもの) で html をプレーンテキストに変換して、結果からトークンを抽出できるようにしたいと考えています。

bq queryを実行し、html を取り込み、nokogiri で処理し、処理済みのテーブルに出力するクラスターをスピンアップできます。しかし、それはちょっと複雑で、多くの I/O が必要です。

これを行うためのより簡単で効率的な方法はありますか?

0 投票する
2 に答える
715 参照

google-cloud-dataprep - 複数のデータセットに同じレシピを再利用する

1 つのデータセットに使用するのと同じレシピを、残りのデータセットにも使用したいと考えています。すべてのデータセットの構造/ヘッダーは同じです。すべての手順をやり直さずに、同じレシピをインポートまたは再利用する方法はありますか?