問題タブ [quanteda]
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.
r - RでQuantedaを使用しているときにテキストコーパスから非ASCII文字を削除する最良の方法は何ですか?
私は切実に必要です。共通言語に変換したコーパスがありますが、一部の単語が正しく英語に変換されていません。したがって、私のコーパスには などの非 ASCII 文字が含まれていU+00F8
ます。
私は Quanteda を使用しており、次のコードを使用してテキストをインポートしました。
私のコーパスは 166 のドキュメントで構成されています。ドキュメントを R にインポートした後、これらの非 ASCII 文字を取り除く最善の方法は何でしょうか?
r - カイ二乗検定を使用したドキュメント機能マトリックスでの機能選択
自然言語処理を利用したテキストマイニングを行っています。パッケージを使用quanteda
してドキュメント機能マトリックス (dfm) を生成しました。ここで、カイ 2 乗検定を使用して特徴選択を行いたいと思います。すでに多くの人がこの質問をしていたことを知っています。ただし、それに関連するコードが見つかりませんでした。(答えは、次のような簡単な概念を示しただけです: https://stats.stackexchange.com/questions/93101/how-can-i-perform-a-chi-square-test-to-do-feature-selection- in-r )
chi.squared
パッケージで使用できることを知りましたが、この関数を dfm クラス オブジェクト (以下)FSelector
に適用する方法がわかりません。trainingtfidf
(マニュアルに示されています。予測変数に適用されます)
誰かヒントをくれませんか?それは有り難いです!
コード例:
r - R: 1 つのドキュメントに複数の文がある場合、dfm を使用して ngram を見つける
大きなデータセット (100 万行以上) があり、各行は複数の文からなるテキストです。たとえば、次は 2 行のサンプルです。
私がやろうとしていたのは、各行のバイグラム用語を抽出することです (「.」は ngram 用語を区切ることができます)。単純に dfm 関数を使用する場合:
これらは私が得た用語です:
これらは私が期待するもので、基本的には「.」です。はスキップされ、用語を区切るために使用されます。
遅いループを書くことでこれも解決できると信じていますが、それが巨大なデータセットであることを考えると、これを解決するには quanteda の dfm() に似た効率的な方法を好むでしょう。任意の提案をいただければ幸いです!
r - quanteda を使用して段階的に dfm を作成する
大きな (n=500,000) ドキュメントのコーパスを分析したい。fromよりも高速になることをquanteda
期待して 使用しています。で自動化された方法を使用する代わりに、段階的に進めたい。これには理由があります。ある場合には、ストップワードを削除する前にトークン化したくありません。これは、多くの役に立たないバイグラムが発生するためです。別の場合には、言語固有の手順でテキストを前処理する必要があります。tm_map()
tm
dfm()
このシーケンスを実装してほしい:
1) 句読点と数字を
削除する 2) ストップワードを削除する (つまり、無駄なトークンを避けるためにトークン化する前に)
3) ユニグラムとバイグラムを使用してトークン化する
4) dfm を作成する
私の試み:
おまけの質問
でスパース トークンを削除するにはどうすればよいquanteda
ですか? (つまり、 in に相当removeSparseTerms()
しtm
ます。
更新@Ken
の回答に照らして、次のコードを段階的に進めるコードを次に示しますquanteda
。
1) カスタムの句読点と数字を削除します。たとえば、ie2010 コーパスの「\n」に注意してください。
前処理を好む理由についての追加のメモ。私の現在のコーパスはイタリア語で書かれており、冠詞がアポストロフィで単語に接続されています。したがって、ストレートdfm()
は不正確なトークン化につながる可能性があります。例えば:
は、同じ単語に対して 2 つの別個のトークン ("un'abile" と "l'abile") を生成するため、gsub()
ここで追加の手順が必要になります。
2)quanteda
トークン化の前に、テキスト内のストップワードを直接削除することはできません。前の例では、誤解を招くバイグラムを生成しないように、「l」と「un」を削除する必要があります。これは で処理できtm
ますtm_map(..., removeWords)
。
3) トークン化
4) dfm を作成します。
5) まばらな特徴を取り除く
r - quanteda が corpusSource オブジェクトからコーパスを作成しない
32 ビットの制限により 3Gb のみにアクセスできる 4Gb RAM を搭載した 32 ビット オペレーティング システムで Windows 7 を使用しています。他のすべてをシャットダウンすると、開始前に約 1Gb がキャッシュされ、1Gb が使用可能であることがわかります。「空き」メモリはさまざまですが、0 の場合もあります。
quanteda の使用 - 157Mb の corpusSource オブジェクトを正常に作成する textfile() コマンドを使用して twitter.txt ファイルを読み込んでいます。corpus() コマンドを使用して「コーパス」に変換する次のステップを実行すると、R はそれを爆破し、すべて 0 を含む 4 つの要素を持つ非常に小さな空のファイルを作成します..... コードと出力は次のとおりです。
….なぜこれが起こっているのかについての洞察はありますか?