We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
haaaaaaa です こちらのシステムに goodBadWordList の実装を使わせていただいています このPRは目を通したらクローズしていただければと思います
実装するうえでテキストの前処理で認識結果の結合時に入ってしまうスペースを除去したほうが良さそうだったので共有です
jimakuChan/main.html
Line 325 in b577ab7
こちらで前処理に使ってみている正規表現を使った replace は以下のパターンです
text.replace(/(?<=[^\x20-\x7E])\s+(?=[^\x20-\x7E])/g, '')
ご指定のJavaScriptの正規表現 /(?<=[^\x20-\x7E])\s+(?=[^\x20-\x7E])/g で使用されている text.replace() メソッドは、特定の条件を満たすスペースを文字列から削除するために設計されています。この正規表現の意味を詳細に解説します。
/(?<=[^\x20-\x7E])\s+(?=[^\x20-\x7E])/g
text.replace()
後読みアサーション (?<=[^\x20-\x7E]):
?<=[^\x20-\x7E])
(?<=...)
[^\x20-\x7E]
\x20
\x7E
\s+:
\s+
\s
+
先読みアサーション (?=[^\x20-\x7E]):
?=[^\x20-\x7E])
(?=...)
この正規表現は、ASCIIのプリンタブル範囲外の文字に挟まれた空白文字を探し出し、それらを削除します。この処理は、特に非英語圏の文字(全角文字や特殊記号など)で、不要な空白(特に全角スペースやその他の不可視文字)を削除するのに有効です。
"これは テストです。"
"これはテストです。"
全角文字の間に入り込んだ不要な空白が削除されます。このような処理は、テキストデータのクリーニングや整形、Webページのテキスト整理など、多くの場面で役立つことがあります。
この正規表現は、全角スペースを含む特定の空白をターゲットにしていますが、使用する前に、特定のテキストに対して期待される動作をするかどうかをテストすることが重要です。また、JavaScript環境での実行を前提としています。他のプログラミング環境やエディタでは、正規表現のエンジンによっては動作が異なる可能性があるため、適宜調整が必要です。
また、下記コードでは event.results 毎に置換する処理を行っていますが、全て結合してから前述のスペース除去を行い、その後Good/Badワードのチェックを行うと意図しない無置換が減るかもしれません
event.results
Lines 314 to 316 in b577ab7
this.recognition.onresult = (event) => { const resultIndex = event.resultIndex const isFinal = event.results[resultIndex].isFinal const eventResults = [...event.results] const candidates = eventResults .slice(resultIndex) // 過去の認識内容っぽいため、event.results から resultIndex 以前のデータを除去 .filter((r) => r[0].confidence > 0) // confidence にどれくらい自信があるかが入っていて、0 だけとりあえず除去(0.001)などでもよいかも .map((r) => r[0].transcript) テキストだけで Map const candidateText = candidates .map((c) => c.trim()) // それぞれの前後のスペースの除去 .join(' ') // 2バイト言語の場合はスペースはいらないが、1バイト言語の場合には単語の区切りのスペースが必要なため、スペース前後の文字を使ってそのスペースを除去してよいかはここではなく別途確認するほうが良さそうな気がしてとりあえずスペースで結合)
The text was updated successfully, but these errors were encountered:
こちらで使用しているロジックとして記述しているものはどうやら Edge では動かないようです うちは「Edge とか知らん。Chrome を使え」で終わるつもりですがここの場合はユーザーも多そうなので使えないかもしれません
Sorry, something went wrong.
No branches or pull requests
haaaaaaa です
こちらのシステムに goodBadWordList の実装を使わせていただいています
このPRは目を通したらクローズしていただければと思います
実装するうえでテキストの前処理で認識結果の結合時に入ってしまうスペースを除去したほうが良さそうだったので共有です
jimakuChan/main.html
Line 325 in b577ab7
こちらで前処理に使ってみている正規表現を使った replace は以下のパターンです
ChatGPT4 に解読させた内容
ご指定のJavaScriptの正規表現
/(?<=[^\x20-\x7E])\s+(?=[^\x20-\x7E])/g
で使用されているtext.replace()
メソッドは、特定の条件を満たすスペースを文字列から削除するために設計されています。この正規表現の意味を詳細に解説します。正規表現の解説
後読みアサーション (
?<=[^\x20-\x7E])
:(?<=...)
は後読みアサーションで、「直前に...がある場所」とマッチします。[^\x20-\x7E]
は、ASCII文字セットのプリンタブル文字(スペース(\x20
)からデリートキー直前(\x7E
))以外の文字にマッチします。この範囲外には、非ASCII文字(例えば、全角文字や特殊記号など)が含まれます。\s+
:\s
は任意の空白文字(スペース、タブ、改行など)にマッチします。+
は直前の文字の1回以上の繰り返しを表します。したがって、\s+
は1つ以上の連続した空白文字にマッチします。先読みアサーション (
?=[^\x20-\x7E])
:(?=...)
は先読みアサーションで、「直後に...がある場所」とマッチします。[^\x20-\x7E]
は後読みと同じく、ASCIIのプリンタブル文字以外の文字にマッチします。コードの動作
この正規表現は、ASCIIのプリンタブル範囲外の文字に挟まれた空白文字を探し出し、それらを削除します。この処理は、特に非英語圏の文字(全角文字や特殊記号など)で、不要な空白(特に全角スペースやその他の不可視文字)を削除するのに有効です。
具体的な使用例
"これは テストです。"
"これはテストです。"
全角文字の間に入り込んだ不要な空白が削除されます。このような処理は、テキストデータのクリーニングや整形、Webページのテキスト整理など、多くの場面で役立つことがあります。
注意点
この正規表現は、全角スペースを含む特定の空白をターゲットにしていますが、使用する前に、特定のテキストに対して期待される動作をするかどうかをテストすることが重要です。また、JavaScript環境での実行を前提としています。他のプログラミング環境やエディタでは、正規表現のエンジンによっては動作が異なる可能性があるため、適宜調整が必要です。
また、下記コードでは
event.results
毎に置換する処理を行っていますが、全て結合してから前述のスペース除去を行い、その後Good/Badワードのチェックを行うと意図しない無置換が減るかもしれませんjimakuChan/main.html
Lines 314 to 316 in b577ab7
こちらで使用しているロジックです
The text was updated successfully, but these errors were encountered: