AIの業務活用

AIが翻訳した業務文書の数値・単位・名前・否定表現を確認する方法

AI翻訳が自然に読めるかだけでなく、数値、単位、名前、否定表現、意味が原文どおり保たれているかを確認します。小さな合成例、逆翻訳のスポットチェック、Pythonによる確認方法を使います。

目次を表示

この翻訳はAIで作成しました。コード、単位、数値は原文と併せて確認してください。各言語のネイティブ話者による校閲は、まだ完了していません。 English

対象読者AIチャットアシスタントで業務文書を翻訳し、共有前に重要な情報が正しく維持されているか確認したい実務担当者向けです。

準備するもの
  • Python 3.12
  • 原文とAI翻訳文を保存したテキストファイル

01自然な翻訳でも間違っていることがある理由

AI翻訳は非常に自然に読めても、重要な事実が変わっていることがあります。小数点の位置が変わる、単位が消える、製品名が不要に翻訳される、否定命令が肯定的な意味に変わる、といったことがあります。特に技術、購買、日程、規制、運用文書では、小さな表現の違いが実際の作業指示を変える可能性があります。

以下は合成した例です。文学的な翻訳品質を評価することが目的ではありません。言語が変わっても維持されるべき重要情報が、本当に維持されているかを確認することが目的です。

02小さな合成業務文書から始める

架空の試験チーム向けに短い英語の作業指示があるとします。この例では、翻訳先の言語そのものより確認手順が重要です。

原文の項目原文
数量Prepare 12 samples.
トルクTighten Bolt A to 35 N·m.
温度Do not exceed 80 °C.
日付Send the report by October 14, 2026.
氏名Send the final file to Mina Park.
製品名Use the Alpha-X bracket.

したがって重要な値は12、35 N·m、80 °C、October 14, 2026、Mina Park、Alpha-Xです。また、'Do not exceed'という否定表現も重要です。否定が消えたり弱まったりすると、作業指示の意味そのものが変わります。

03保護すべき情報を維持するようAIに依頼する

翻訳を依頼するときは、どの項目をそのまま維持する必要があるか、どの内容を勝手に変更してはいけないかを明示します。

丁寧なプロンプトを書いても確認は必要です。良いプロンプトはリスクを下げますが、すべての重要情報が正しく維持されたことを証明するものではありません。

04数値、単位、名前、否定表現を1つずつ確認する

  1. 数値:数量、小数、割合、日付の構成要素、モデル番号、リビジョン番号をすべて原文と比較します。
  2. 単位:明示的に変換を依頼していない場合、35 N·mが35 N·mのまま、80 °Cが80 °Cのまま維持されているか確認します。
  3. 名前:人名、会社名、プロジェクト名、製品名を原文の正式表記と照合します。
  4. 否定表現:原文のnot、never、do not、cannot、except、withoutなどを探し、翻訳文でも同じ制限が維持されているか確認します。
  5. 義務の強さ:must、should、may、canを区別します。業務指示ではこれらを同じ意味として扱えません。
  6. 日付:日付の値だけでなく、その日付の役割も確認します。締切日が会議日や予定日に変わってはいけません。
翻訳上の問題確認結果
35 N·mが35 Nmに翻訳された意味は理解できる場合がありますが、文書で正確な単位表記が必要か確認してください。
80 °Cが80 °Fに翻訳された明示的な単位変換の依頼と確認がない場合は誤りです。
Mina Parkの表記が変更された正式な氏名表記と再確認する必要があります。
Do not exceed 80 °CがMaintain 80 °Cに翻訳された禁止の意味と作業条件が変わっているため誤りです。
Alpha-Xが説明的な一般語に翻訳されたAlpha-Xが正式な製品名なら誤りです。

05逆翻訳はスポットチェックとして使う

2つ目の確認方法として、翻訳文の一部を原文言語へ戻して翻訳できます。このとき元の文は見せません。特に否定指示、約束、締切、原文と大きく異なる表現になった文を確認するのに役立ちます。

たとえば逆翻訳の結果が'Do not exceed 80 °C'ではなく'Keep the temperature at 80 °C'になった場合、翻訳された作業指示を再確認する必要があります。一方、逆翻訳が原文と似ていても正確さが証明されたわけではありません。同じAIが以前の誤った解釈を再現する可能性があるためです。

06Pythonで保護対象のトークンを比較する

簡単なスクリプトを使うと、保護すべき情報の明らかな変化を見つけやすくなります。次の標準ライブラリだけを使う例では、source.txtとtranslation.txtを読み、数値と指定した保護文字列を取り出し、outputs/translation_check_report.txtに結果を書き出します。元のファイルは変更せず、outputsフォルダがすでに存在する場合は停止します。

python
from pathlib import Path
import re
import sys

SOURCE_PATH = Path("source.txt")
TRANSLATION_PATH = Path("translation.txt")
OUTPUT_DIR = Path("outputs")
REPORT_PATH = OUTPUT_DIR / "translation_check_report.txt"

if not SOURCE_PATH.is_file():
    sys.exit("Missing input file: source.txt")

if not TRANSLATION_PATH.is_file():
    sys.exit("Missing input file: translation.txt")

if OUTPUT_DIR.exists():
    sys.exit("Stop: outputs folder already exists. Remove or rename it manually first.")

source = SOURCE_PATH.read_text(encoding="utf-8")
translation = TRANSLATION_PATH.read_text(encoding="utf-8")

number_pattern = re.compile(r"\b\d+(?:\.\d+)?\b")
source_numbers = number_pattern.findall(source)
translation_numbers = number_pattern.findall(translation)

protected_strings = [
    "N·m",
    "°C",
    "Mina Park",
    "Alpha-X",
]

lines = []
lines.append("AI TRANSLATION CHECK")
lines.append("====================")
lines.append("")
lines.append(f"Source numbers: {source_numbers}")
lines.append(f"Translation numbers: {translation_numbers}")

if source_numbers == translation_numbers:
    lines.append("PASS: number sequence matches")
else:
    lines.append("CHECK: number sequence differs")

lines.append("")
lines.append("Protected strings:")

for item in protected_strings:
    in_source = item in source
    in_translation = item in translation
    if in_source and in_translation:
        lines.append(f"PASS: {item}")
    elif in_source:
        lines.append(f"CHECK: missing or changed in translation -> {item}")

lines.append("")
lines.append("Manual checks still required:")
lines.append("- Verify negations and obligation strength sentence by sentence.")
lines.append("- Confirm that each number still refers to the same item.")
lines.append("- Check dates, names, units, and product names in context.")
lines.append("- Spot-check high-risk sentences with back-translation.")

OUTPUT_DIR.mkdir()
REPORT_PATH.write_text("\n".join(lines) + "\n", encoding="utf-8")
print(f"Created: {REPORT_PATH}")

2つのテキストを保存した後、python translation_check.pyを実行します。数値一覧が一致することは有用ですが、それだけでは十分ではありません。同じ数値が翻訳文にあっても誤った文に付いている可能性があるため、重要な項目は文脈まで直接確認してください。

07AI翻訳を確認するときによくあるミス

  • 翻訳文が自然に読めるかだけを確認します。
  • 小数点、マイナス記号、パーセント記号、単位の変更を見落とします。
  • 製品名やプロジェクト名を一般語として翻訳させてしまいます。
  • not、never、except、withoutなどが消えたことを見落とします。
  • must、should、may、canを同じ強さとして扱います。
  • 逆翻訳が原文に似ているという理由だけで正しいと判断します。
  • トークンが存在するかだけを見て、各数値や単位が正しい文に対応しているか確認しません。

自動チェックは目に見える不一致を見つけるのに強い一方、文の意図、範囲、例外、責任、法的効果が維持されているかを判断するのは苦手です。こうした点は文脈を直接読む必要があり、重要度の高い文書では専門的な確認が必要です。

08最終翻訳チェックリストを使う

  1. すべての数値、日付、割合、モデル番号、リビジョン番号を比較します。
  2. すべての単位を確認し、依頼していない変換が行われていないか確認します。
  3. 人名、会社名、プロジェクト名、製品名を正式表記と照合します。
  4. すべての否定表現と例外条件を原文と直接比較します。
  5. must、should、may、canなどの義務レベルを確認します。
  6. リスクの高い文を数文選び、原文を見せずに逆翻訳します。
  7. 自動トークンチェックだけに頼らず、最終翻訳文を全体の文脈で読みます。

実務では、AI翻訳を下書きとして扱い、重要な事実を独立して確認するのが適切です。契約、安全指示、規制文書、医療内容、その他影響の大きい資料では、簡単なAIとスクリプトの確認だけに頼らず、組織で求められる専門的な確認手順を使用してください。

実行・検証の記録

2026-09-21 · hand-checked example · Python 3.12

  • 合成した原文に重要な値12、35 N·m、80 °C、October 14, 2026、Mina Park、Alpha-Xが含まれていることを確認しました。
  • 'Do not exceed 80 °C'が上限を超えないという否定指示であり、'Maintain 80 °C'と同じ意味ではないことを確認しました。
  • 明示的な変換依頼なしに80 °Cを80 °Fへ変更すると原文情報が変わることを確認しました。
  • 逆翻訳の例は正確さの証明ではなくスポットチェックとしてのみ説明されていることを確認しました。
  • スクリプトがsource.txtとtranslation.txtを変更せず読み取るだけであることを確認しました。
  • スクリプトがoutputs/translation_check_report.txtだけを書き出し、outputsフォルダがすでに存在する場合は停止する構成であることを確認しました。
  • スクリプトがPython 3.12の標準ライブラリだけを使う構成であることを確認しました。
検証範囲の限界
  • コードは確認し、小さな合成例は手作業で確認しましたが、コード自体は実行していません。
  • スクリプトは目に見える数値と指定した保護文字列を比較しますが、それぞれが正しい意味に対応しているかは判断できません。
  • この例では、すべての単位表記の違い、地域別の数値形式、言語ごとの否定表現、意味上の変化を自動検出することはできません。
  • 逆翻訳でも同じ解釈ミスが再現される可能性があるため、逆翻訳だけで正確さを証明することはできません。
  • 法律、安全、規制、医療、契約、重要な技術文書では、専門の翻訳者や分野の担当者による確認が必要な場合があります。

サイト全体の執筆・検証方針

参考資料

説明と例は独自に作成しました。関連する動作や概念は、以下の公式資料で確認できます。