1

音声文字変換ファイルを出力として提供するVoice-to-Textアプリケーションを使用しています。文字起こしされたテキストには、(s)(文の始まり).. (/s)(文の終わり).. (VOCAL_NOISE)(認識されない単語)などのタグがいくつか含まれています。テキストには、、、、など(VOCAL_N)の不要なタグも含まれています。私はSEDを使用してテキストを処理していますが、適切なregexを記述して、、、を除く他のすべてのタグをタグに置き換えることはできません。それ..(VOCAL_NOISED)(VOCAL_SOUND)(UNKNOWN)(s)(/s)(VOCAL_NOISE)~NS

テキストの例:

(s) Hi Stacey , this is Stanley (/s) (s) I would (VOCAL_N) appreciate if you could call (UNKNOWN) and let him know I want an appointment (VOCAL_NOISE) with him (/s)

出力は次のようになります。

(s) Hi Stacey , this is Stanley (/s) (s) I would ~NS appreciate if you could call ~NS and let him know I want an appointment (VOCAL_NOISE) with him (/s)
4

5 に答える 5

1

これは、最適とはほど遠い汚いトリックですが、うまくいくはずです。

sed ' 
    s|(\(/\?\)s)|[\1AAA]|g; 
    s|(VOCAL_NOISE)|[BBB]|g; 

    s/([^)]*)/~NS/g; 

    s|\[\(/\?\)AAA\]|(\1s)|g; 
    s|\[BBB\]|(VOCAL_NOISE)|g'

秘訣は、(s)、(/ s)、および(VOCAL_NOISE)を、入力テキストに存在しないパターン(この場合は[AAA]、[/ AAA]、および[BBB])に置き換えることです。次に、(。*)のすべてのインスタンスを〜NSに置き換えます。最終的に、偽のパターンを元の値に戻します。

于 2011-01-17T12:59:18.077 に答える
1

これはそれを処理する必要があります:

sed 's|([^)]*)|\n&\n|g;s@\n\((/\?s)\|(VOCAL_NOISE)\)\n@\1@g;s|\n\(([^)]*)\)\n|~NS|g' inputfile

説明:

  • s|([^)]*)|\n&\n|g-括弧で囲まれたすべての文字列を2つの改行の間に入れて、行を分割します
  • s@\n\((/\?s)\|(VOCAL_NOISE)\)\n@\1@g-「(s)」、「(/ s)」、
    「(VOCAL_NOISE)」(キーパー)の前後の改行を削除します
  • s|\n\(([^)]*)\)\n|~NS|g-括弧内にある改行の間のその他のものを「〜NS」に置き換えます

これは、改行が新しく読み取られたテキスト行内に表示されないことが保証されているために機能します。

編集:交互を使用してコマンドを短縮しました\(foo\|bar\)

前のバージョン:

    sed 's|([^)]*)|\n&\n|g;s|\n\((/\?s)\)\n|\1|g; s|\n\((VOCAL_NOISE)\)\n|\1|g;s|\n\(([^)]*)\)\n|~NS|g' inputfile

于 2011-01-17T16:01:24.317 に答える
0

私はvimを使ってこれを提案することができます:

:%s/\((\w\+)\)\&\(\((s)\|(VOCAL_NOISE)\)\@!\)/\~NS/g

シェル(bash)を使用すると、次のことができます。

vim file -c '%s/\((\w\+)\)\&\(\((s)\|(VOCAL_NOISE)\)\@!\)/\~NS/g' -c "wq"

最初にバックアップを作成してください。これが間違っている場合、私はいかなる損害についても責任を負いません。

于 2011-01-17T12:16:36.160 に答える
0

単にこれ?

sed -E 's/\((VOCAL_N|UNKNOWN)\)/~NS/'

この場合、ブラックリストがあります(何を除外するかを知っています)。または、ホワイトリストが絶対に必要ですか(除外しないものを知っています)?

于 2011-01-17T12:22:33.847 に答える
0
awk -vRS=")" -vFS="(" '$2!~/s|\\s|VOCAL_NOISE/{$2="~NS"}RT' ORS=")"  file |sed 's/~NS)/~NS/g'
于 2011-01-17T12:47:16.483 に答える