問題タブ [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.
google-bigquery - BigQuery / DataPrep: 単語数を効率的に抽出する方法。HTMLを平文に変換する
BigQuery に保存されている最大 470 万のドキュメントのテーブルがあります。一部はプレーンテキストで、一部は HTML です。それらは 1 つあたり約 2,000 トークンで、幅広いバリエーションがあります。私は主に DataPrep を使用して処理を行っています。
それらのトークンを抽出し、 TF-IDF値を計算したいと考えています。
トークンカウント
より時間のかかる手順の 1 つは、次の手順を実行することです。
そして、これを次のように変えます:
それを行う1つの方法は次のとおりです。
- ドキュメントの抽出リスト
{alphanum-underscore}+
id, wordlist 1, ["foo", "bar", "foo", "baz"] 2, ["foo", "bar", "bar", "qux"]
- 単語リストを平坦化
id, word 1, foo 1, bar 1, foo 1, baz 2, foo 2, bar 2, bar 2, qux
- グループごとの集計: 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 が必要です。
これを行うためのより簡単で効率的な方法はありますか?
google-cloud-dataprep - 複数のデータセットに同じレシピを再利用する
1 つのデータセットに使用するのと同じレシピを、残りのデータセットにも使用したいと考えています。すべてのデータセットの構造/ヘッダーは同じです。すべての手順をやり直さずに、同じレシピをインポートまたは再利用する方法はありますか?