問題タブ [text-normalization]
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.
javascript - JavaScript でのプログラムによるアクセントの削減 (別名、テキストの正規化またはアクセントの解除)
次のように、2 つの文字列を等しいものとして比較する必要があります。
リューベック == リューベック
JavaScript で。
なんで?さて、Lucene を使用して Java サービスに送信されるオートコンプリート フィールドがあります。そこでは地名が自然に (Lübeck として) 保存されますが、正規化されたテキストとしてインデックスも作成されます。
このようにして、「メキシコ」と入力することを知らない人が「メキシコ」と入力すると、「メキシコ」を返す一致を取得できます (「カフェメキシコ、ドバイ、UAE」など、他の多くのヒットの可能性があります)。
サーバー側で強調表示を行うようにサービスを変更する機能がないため、次のようなクライアント JavaScript 側で強調表示しています。
入力で特殊な正規表現文字をエスケープしているので、もう少し凝っています。これは、ヒットの最初の単純な 1 つの単語の一致には問題ありませんが、「london cafe」のような複数の単語の一致を突然サポートしたい場合は、実際には機能しません。
これは、「london ca」(london cafe と入力していた) と言う場合には機能しません。これは、「Jack London Cabin, Dawson City, Canada」を次のようにマークするためです: "Ja<b>ck</b> <b>London</b> <b>ca</b>bin, Dawson <b>Ci</b>ty, <b>Ca<b/>nada"
[特に「ck」と「Ci」に注意してください]
したがって、私は次のようなクレイジーではないものを探しています。
他の文字のアクセント付きバージョンである文字の範囲をその文字にマッピングするために参照できるコンパイル済みのテーブルはありますか。これは、プレーンなユニコードチャートを意味するものではありません。もしそうなら、奇妙な、おそらく遅い正規表現ステートメントの使用を避けることができますか?
報奨金について: 報奨金
を始める前に 2 つの回答がありました。1 つは Ruby で行うように指示するもので、もう 1 つはMizzardXが書いたもので、私が質問に入れた基本的なフォームを完成させたものです。誤解しないでほしいのですが、彼のように完全に解決できたことに本当に感謝していますが、別の方法があればいいのにと思いました。これまでのところ、質問と回答を見るために立ち寄った人は皆、MizzardX が問題なくカバーしているか、別のアプローチを持っていないと判断したようです。私は別のアプローチに興味があります.バウンティが終了する前にそれが利用できない場合は、MizzardXがバウンティを獲得します.彼は賞金を手に入れるでしょう!)
unicode - Unicode パスワードを正しく実装するにはどうすればよいですか?
Unicode パスワードのサポートを追加することは、開発者が無視してはならない重要な機能です。
それでも、パスワードに Unicode のサポートを追加するのは難しい作業です。なぜなら、Unicode では同じテキストがさまざまな方法でエンコードされる可能性があり、そのためにユーザーがログインするのを妨げたくないからです。
パスワードを UTF-8 として保存するとします。この質問は Unicode エンコーディングとは関係なく、Unicode の正規化に関連していることに注意してください。
問題は、Unicode データをどのように正規化するかです。
比較できるかどうかを確認する必要があります。次の Unicode 標準がリリースされたときに、パスワードの検証が無効にならないようにする必要があります。
注: Unicode パスワードがおそらくまったく使用されない場所もいくつかありますが、この質問はUnicode パスワードを使用する理由や時期に関するものではなく、適切な方法でそれらを実装する方法に関するものです。
1回目の更新
OSを使って正規化するように、ICUを使わずにこれを実装することは可能ですか?
ruby-on-rails - Ruby 1.8.7 でさまざまなタイプの UTF ハイフンに取り組む
データベースにはさまざまな種類のハイフン/ダッシュ (一部のテキスト) が入力されています。それらをユーザー入力テキストと比較する前に、任意のタイプのダッシュ/ハイフンを単純なハイフン/マイナス (ASCII 45) に正規化する必要があります。
変換する必要がある可能性のあるダッシュは次のとおりです。
これらはすべて、gsub を使用してハイフンマイナス (-) に変換する必要があります。CharDet gem を使用して、フェッチされた文字列の文字エンコーディング タイプを検出しました。windows-1252が表示されています。エンコーディングをASCIIに変換するためにIconvを試しました。しかし、例外Iconv::IllegalSequenceをスローしています。
ruby -v => ruby 1.8.7 (2009-06-12 パッチレベル 174) [i686-darwin9.8.0]
rails -v => Rails 2.3.5
mysql エンコーディング => 'latin1'
これを達成する方法はありますか?
javascript - JS でのテキストの正規化
Javascriptで文字列を通常の形式Cに変換する方法はありますか? node.js のunormについては知っていますが、ブラウザ内 JS に興味があるので、標準のブラウザ API で十分です。
gwt - GWT での Unicode 正規化
重複の可能性:
GWT では、éàçè… を同等の「eace」に置き換えます
gwt でユニコードの正規化操作を行うために使用できるライブラリはありますか? (たとえば、ラテン語の O がキリル文字の O と等しいことを文脈的に保証するため)
c# - 異常な改行からテキストファイルを正規化していますか?
正規化したいテキスト間に改行がたくさんあるテキストファイルがいくつかありますが、たとえば、テキスト間の改行の量にパターンはありません。
それで、改行の量がXよりも大きいところをYに変更したかったので、たとえば、5つの連続した改行があると2になり、10は3になります。
私の現在の問題は、どの行を正規化する必要があるかを特定する方法がわからないことです。
スプリットを使用して新しい行を数えることができることは知っていますが、行が空かどうかを確認するなどの他の方法もあります...しかし、おそらく、この問題を解決するための単純な正規表現またはより良いアプローチがありますか?
python - テキスト マイニングに適した Unicode 正規化の形式はどれですか?
私は Unicode について多くのことを読んできましたが、正規化とそのさまざまな形式について非常に混乱したままです。要するに、私は PDF ファイルからテキストを抽出し、セマンティック テキスト分析を実行するプロジェクトに取り組んでいます。
簡単な python スクリプトを使用してテキストをうまく抽出できましたが、今度はすべての同等の正字法文字列が 1 つ (そして 1 つだけ) の表現を持つようにする必要があります。たとえば、'fi' 活字合字は 'f' と 'i' に分解する必要があります。
Python のunicodedata.normalize
関数には、Unicode コード ポイントを正規化するためのアルゴリズムがいくつか用意されているようです。誰かが次の違いを説明してもらえますか:
- NFC
- NFKC
- NFD
- NFKD
関連するウィキペディアの記事を読みましたが、あまりにも不透明すぎて、私の弱い脳には理解できませんでした。誰かがこれをわかりやすい英語で親切に説明してくれませんか?
また、自然言語処理プロジェクトに最適な正規化方法を推奨していただけますか?
unicode - QWebView :: findTextは、Unicodeの合成発音区別符号では機能しません
QtWebKit
( )を使用QWebView
してテキストを表示していますが、を介して検索機能を実装したいと考えていQWebView::findText
ます。
問題は、表示する必要のあるテキストにいわゆるUnicodeの合成発音区別符号が含まれておりQWebView::findText()
、JavaScriptの両方window.find()
がそれらの「マーク」(文字)を無視しないことです。
たとえば、テキストに「tị̀krăs」(「t」、「i」、「ドットの組み合わせ」、「アクサングラーブの組み合わせ」、「k」、「r」、「a」、「ブレーベの組み合わせ」、「s」)という単語がある場合、 findText()は、クエリ「tikras」(「t」、「i」、「k」、「r」、「a」、「s」)を検索するときに、その単語を見つけることができません。
この場合、他のWebKitベースのブラウザー(Chrome、Safari)は正常に動作しているようです。
この状況について私にできることはありますか?
unicode - 文字セットの比較
緊急の助けが必要です。文字セット文字列を比較できません。データベース table1 に書き込まれた文字列utf-8 charset
はまだ奇妙に見えます: SADI しかし、同じデータベースの table2 に書き込まれた文字列SADI
は正常です。両方を比較すると、常に false になります。
どのように比較を行うことができるか考えていますか?(実際には、比較によって真の結果が得られるはずです)
SADI
データベースにSADIを挿入する方法を教えてください。
いずれかがうまくいけば解決策になります。
parsing - Neo4j Cypher での文字列の正規化 - 方法は?
問題の背景: 中国語の単語は、単語そのものである文字で構成されています。中国語の単語を表す 3 つのノードがあり、それぞれに文字列値を持つ属性単語があります: ノード (1): "a" ノード (2): "b" ノード (3): "ab"
質問 1 : ノード (3) から始まる Cypher を使用して、ノード (3) の文字列を構成するノード (1) と (2) をどのように見つけることができますか?
質問 2 : さらにノード (4): "dabc" がある場合、グラフの一部ではない長さ 1 のすべての単語を見つけるにはどうすればよいですか ("d" と "c" にはノードがありません)。
これらのノード間の関係を明示的にモデル化できることはわかっていますが、Cypher がこの負担を軽減するのに十分な表現力を備えているかどうかは疑問です。