LunaTranslator/docs/ja/textprocess.md
Ikko Eltociear Ashimine e01c35d370
docs: add Japanese documentation (#1251)
I created Japanese translated documents.
2024-12-22 11:41:39 +08:00

109 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 各種テキスト処理方法の機能と使用方法
> 一般的にHOOKモードでは、誤ったテキストが読み取られることがあります。例えば、重複したテキストや他の乱れたテキストです。このような場合、テキスト処理が必要です。
> 非常に複雑なエラー形式がある場合、複数の処理方法を有効にし、その実行順序を調<EFBFBD><EFBFBD>して、豊富な処理方法の組み合わせを得ることができます。
1. #### テキスト内の非日本語文字セット文字をフィルタリング
時々、乱れたテキストがフックされることがあります。この問題は通常、日本のゲームで発生するため、この方法は**shift-jis文字セットでエンコードできない文字**をフィルタリングするように設定されています。例えば:
`エマさんԟのイԠラストは全部大好き!``エマさんのイラストは全部大好き!` に処理されます。
1. #### 制御文字をフィルタリング
この方法は、テキスト内のASCII制御文字をフィルタリングします。例えば、`` などです。
1. #### 英文句読点をフィルタリング
この方法は、テキスト内の ```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~``` をフィルタリングします。
1. #### その他の乱れたテキストをフィルタリング
設定で許可される文字エンコーディングまたはUnicode範囲を設定する必要があります。許可されていない文字はすべてフィルタリングされます。
1. #### 「」以外の文字をフィルタリング
例えば:`こなみ「ひとめぼれってやつだよね……」` は `「ひとめぼれってやつだよね……」` に処理されます。
1. #### 波括弧{}を削除
これは文字通りの意味ではなく、主に日本語のふりがなをフィルタリングするためのものです。多くのゲームスクリプトは、{}や他の文字を使用して漢字にふりがなを追加します。2つのふりがな形式をサポートしています`{漢字/注音}` と `{漢字:注音}` です。例えば:
`「{恵麻/えま}さん、まだ{起き/おき}てる?」` または `「{恵麻:えま}さん、まだ{起き:おき}てる?」``「恵麻さん、まだ起きてる?」` に処理されます。
1. #### 指定行数を抽出
この方法は、**抽出行数**で指定された行数を抽出します。
**末尾から抽出**が有効になっている場合、テキストの末尾から指定された行数を抽出します。
1. #### 重複文字を削除 _AAAABBBBCCCC->ABC
これは最も一般的に使用されるフィルタです。
ゲームがテキストを描画する方法例えば、テキストを描画し、次に影を描画し、次にアウトラインを描画するなどにより、HOOKモードは同じ文字を複数回抽出することがあります。例えば、`恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。` は `恵麻さんは再び液タブへ視線を落とす。` に処理されます。デフォルトの繰り返し回数は`1`で、自動的に繰り返し文字数を分析しますが、不正確な場合もあるため、特定の繰り返し回数を指定することをお勧めします。
1. #### 履歴重複をフィルタリング LRU
時々、ゲームがテキストを再描画する方法は文字ごとではなく行ごとであり、静的な状態で現在表示されているテキストを連続して再描画します。例えば、現在の表示が2行のテキスト `你好``哈哈` である場合、この方法を使用しないと、`你好哈哈你好哈哈你好哈哈你好哈哈……` と繰り返し出力されます。この方法を使用すると、最近出力されたテキストをいくつかキャッシュし、キャッシュがいっぱいになり新しいテキストが表示されると、キャッシュ内の最も古いテキストを削除し、最近のテキストが繰り返し更新されるのを防ぎます。
1. #### 重複行を削除 _ABCDABCDABCD->ABCD
これも一般的で、上記と似ていますが、通常は繰り返し更新されず、すばやく複数回更新されます。効果は `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。``恵麻さんは再び液タブへ視線を落とす。` になります。同様に、デフォルトの繰り返し回数は`1`で、自動的に繰り返し文字数を分析しますが、不正確な場合もあるため、特定の繰り返し回数を指定することをお勧めします。
1. #### 重複行を削除 _S1S1S1S2S2S2->S1S2
これは比較的複雑です。時々、各文の更新回数が完全に同じではないため、プログラムが重複を分析して決定する必要があります。例えば、`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。` では、`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。` が3回繰り返され、`なんてニヤニヤしていると、恵麻さんが振り返った。` は繰り返されず、`私は恵麻さんの目元を優しくハンカチで拭う。` が2回繰り返されます。最終的な分析結果は `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。` となります。複雑さのため、いくつかの分析エラーが発生することがありますが、一般的には正しい結果を得ることができます。
1. #### 角括弧<>をフィルタリング
これは実際にはHTMLタグをフィルタリングするもので、初心者が混乱しないようにこのように名前が付けられています。例えば、`<div>`、`</div>`、`<div id="dsds">` などがフィルタリングされます。これは主にTyranoScriptゲームで使用され、HOOKがテキストをinnerHTMLとして抽出するため、通常は多くのタグが含まれています。
1. #### 改行文字をフィルタリング
元の名前は**改行文字をフィルタリング 言語適応**で、旧版の**改行文字をフィルタリング**は廃止されました。
ソース言語が日本語でない場合、改行文字をフィルタリングするときに、改行文字をスペースに置き換えることで、複数の単語が連結されるのを防ぎます。
1. #### 数字をフィルタリング
該当なし
1. #### 英字をフィルタリング
該当なし
1. #### 重複行を削除 _ABCDBCDCDD->ABCD
これも一般的です。この原因は、テキストを表示する関数に表示されるテキストがパラメータとして渡され、各文字が表示されるたびに関数が呼び出され、各回でパラメータ文字列が次の文字を指すように変更されるためです。結果として、最初の呼び出しで完全なテキストが取得され、後続の呼び出しで残りの部分文字列が出力され、長さが0になるまで続きます。例えば、`恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` は `恵麻さんは再び液タブへ視線を落とす。` に分析されます。
1. #### 重複行を削除 _AABABCABCD->ABCD
これも一般的です。この原因は、各文字が描画されるたびに、前の文字が再描画されるためです。例えば、`恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。` は `恵麻さんは再び液タブへ視線を落とす。` に分析されます。
1. #### 重複行を削除 _AABABCABCDEEFEFG->ABCDEFG
これは上記と似ていますが、複数行のテキストがある場合、各行が上記のロジックに従って個別に処理されるため、複雑さが増します。複雑さのため、この処理は正しく処理できないことがよくあります。問題が発生した場合は、カスタムPythonスクリプトを作成して解決することをお勧めします。
1. #### カスタムPython処理
より複雑な処理のためにPythonスクリプトを作成します。処理スクリプトが存在しない場合、userconfigディレクトリに`mypost.py`ファイルと以下のテンプレートが自動生成されます:
```
def POSTSOLVE(line):
return line
```
1. #### 文字列置換
置換だけでなく、主にフィルタリングにも使用されます。例えば、固定された乱れた文字や、繰り返し更新される逆三角形の文字などを空白に置き換えることでフィルタリングできます。
`正規表現`と`エスケープ`の両方のオプションを同時に有効にすることも、どちらか一方だけを有効にすることも、どちらも有効にしないこともできます。
どちらも有効にしない場合、通常の文字列置換が使用されます。
`エスケープ`を有効にすると、入力内容が文字列リテラルではなくエスケープ文字列として扱われます。例えば、`\n`を使用して改行文字を表すことができ、改行文字の前後にのみ表示される文字をフィルタリングできます。
`正規表現`を有効にすると、正規表現置換が使用されます。