問題タブ [n-gram]
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.
f# - 文字列類似性比較のためのNグラム分割関数
現在学習しているF#をよりよく理解するための演習の一環として、指定された文字列をnグラムに分割する関数を作成しました。
1)自分の関数に関するフィードバックを受け取りたい:これはもっと簡単に、またはもっと効率的に書くことができますか?
2)私の全体的な目標は、n-gramの類似性に基づいて文字列の類似性(0.0 .. 1.0スケール)を返す関数を作成することです。このアプローチは短い文字列の比較に適していますか、またはこの方法を使用して大きな文字列(記事など)を確実に比較できますか?
3)n-gram比較が2つの文字列のコンテキストを無視するという事実を認識しています。私の目標を達成するためにどのような方法を提案しますか?
search - SOLR の EdgeNGramTokenizerFactory EdgeNGramFilterFactory の違いは何ですか?
これら 2 つのフィルターの違いは何ですか? 彼らは同じ効果を持っているようですか?
誰かがテキストにどのように適用されるかの例を提供できますか?
perl - Perl 段落 n グラム
テキストの文があるとしましょう:
その文を「キーワード」のハッシュに入れたいのですが、複数単語のキーワードを許可したいです。単一の単語のキーワードを取得するには、次のものが必要です。
これが完了すると、次のようなハッシュが得られます。
2 語のキーワードを取得するための次のステップは次のとおりです。
しかし、それはすべての「他の」ペアを取得するだけです。次のようになります。
1 ワードのオフセットも必要です。
これを行うには、次よりも簡単な方法はありますか?
perl - Perlの文字列から単語としてn-gramを抽出する
文字列からnグラムの単語を抽出するモジュールまたはPerlコードはありますText::Ngrams
か?
java - 文からのNグラム生成
次のような文字列のn-gramを生成する方法:
この入力でn-gramを生成したい:
出力は次のようになります。
Javaでいくつかのアイデア、それを実装する方法、またはライブラリが利用可能かどうかを教えてください。
私はこのNGramTokenizerを使用しようとしていますが、nグラムの文字シーケンスを提供し、nグラムの単語シーケンスが必要です。
algorithm - QWERTYキーボード配列を考慮したランダムキーボードヒットの検出
最近のウィキペディアの荒らし検出コンテストの勝者は、「 QWERTY キーボード レイアウトを考慮したランダムなキーボード ヒットの検出」によって検出が改善される可能性があることを示唆しています。
例:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh
すでにこれを行うソフトウェアはありますか(できれば無料でオープンソース) ?
そうでない場合、これを達成することを目標とするアクティブな FOSS プロジェクトはありますか?
そうでない場合、そのようなソフトウェアをどのように実装することをお勧めしますか?
similarity - コサイン類似度測定による n-gram 文類似度
私は文の類似性に関するプロジェクトに取り組んでいます。SOで何度も尋ねられたことは知っていますが、私がやっている方法で問題を解決できるかどうか、または問題へのアプローチを変更する必要があるかどうかを知りたいだけです。大まかに言えば、システムは記事のすべての文を分割し、システムに供給される他の記事の中から類似の文を見つけることになっています。
私は tf-idf 重みで余弦類似度を使用しています。それが私が行った方法です。
1- まず、すべての記事を文に分割し、次に文ごとにトライグラムを生成して並べ替えます (すべきでしょうか?)。
2- トリグラムの tf-idf 重みを計算し、すべての文のベクトルを作成します。
3- 元の文と比較する文の内積と大きさを計算します。次に、コサイン類似度を計算します。
しかし、システムは期待どおりに機能しません。ここで、いくつか疑問があります。
私が tf-idf の重みについて読んだ限りでは、同様の「ドキュメント」を見つけるのにより便利だと思います。私は文に取り組んでいるので、tf および idf 定義の式のいくつかの変数を変更して、アルゴリズムを少し変更しました (ドキュメントの代わりに、文ベースの定義を考え出そうとしました)。
tf = 文中のトライグラムの出現回数 / 文中のすべてのトライグラムの数
idf = 全記事の全文数 / トライグラムが出現する文数
この問題にそのような定義を使用しても問題ないと思いますか?
もう1つは、コサイン類似度を計算するときに正規化が何度も言及されているのを見たことです。トライグラムのベクトルが同じサイズではない可能性があるため、これは重要であると推測しています(私の場合はめったにありません)。トライグラム ベクトルのサイズが x で、もう一方のベクトルが x+1 の場合、最初のベクトルを x+1 のサイズとして扱い、最後の値は 0 です。これは正規化の意味ですか? そうでない場合、正規化を行うにはどうすればよいですか?
これらに加えて、間違ったアルゴリズムを選択した場合、そのような問題に他に何が使用できますか(できればn-gramアプローチを使用)?
前もって感謝します。
python - MySQL でのシリアル テキストファイル読み取りパフォーマンスに近い
Python で n-gram カウントを実行しようとしていますが、MySQL (MySQLdb モジュール) を使用してテキスト データを整理できると考えました。
varchar
一意の数値 ID (自動インクリメント) と言語フィールド (例: "en"、"de"、"es" など)によってインデックス付けされたドキュメントを表す、約 1000 万レコードのかなり大きなテーブルがあります。
select * from table
遅すぎて、メモリが壊滅的です。ID 範囲全体を小さな範囲 (たとえば、それぞれ 2000 レコード幅) に分割し、次のようなクエリを使用して、これらの小さなレコード セットを 1 つずつ処理することになりました。
等々...
MySQL でより効率的に実行し、大きなコーパス テキスト ファイルをシリアルに読み取るのと同様のパフォーマンスを達成する方法はありますか?
レコードの順序は気にしません。大きなテーブルで特定の言語に関連するすべてのドキュメントを処理できるようにしたいだけです。
unicode - マルコフ モデルを使用してすべて大文字を大文字と小文字の混合および関連する問題に変換する
マルコフ手法を使用して、欠落している情報を自然言語テキストに復元することを考えていました。
- すべて大文字のテキストを大/小文字混合に戻します。
- アクセント/発音区別符号を、それらがあるはずの言語に復元しますが、プレーン ASCII に変換されています。
- 大まかな音声表記をネイティブのアルファベットに変換します。
難易度の低いものから難しいものの順に並んでいるようです。基本的に問題は、コンテキストに基づいてあいまいさを解決することです。
ウィクショナリーを辞書として使用し、ウィキペディアをコーパスとして使用して、n グラムと隠れマルコフ モデルを使用してあいまいさを解決できます。
私は正しい軌道に乗っていますか?この種のサービス、ライブラリ、またはツールはすでにありますか?
例
- ジョージは茂みの中でSIMカードをなくしました ⇨ ジョージは茂みの中でSIMカードをなくしました
- tanto il rit a gorge deployee ⇨ tantot il rit à gorge déployée