

このプロジェクトでは、設計書などのドキュメントに含まれる曖昧な語句を自動検出するPythonアプリケーションを開発しました。 背景として設計書などのドキュメントに曖昧な語句「予定」や「多分」が含まれていると品質が下がる問題がありました。 しかし、何百件、何千件とあるドキュメントからそれらを一つ一つ見つけ出すのは砂漠から針を見つけるような作業でした。 何百件、何千件とあるドキュメントから「予定」や「多分」などの曖昧な語句を見つけ出すことで、ドキュメントの品質向上を支援しました。
Pythonを使用して、ファイル群を入れれば語句を見つけ出すアプリケーションの開発に着手しました。
自動化により、人的ミスを防ぎ、効率的な品質管理を実現することを目指しました。
以下のファイル形式に対応するよう設計しました:
- Officeアプリケーション: Excel, Word, PowerPoint
- テキストファイル: txtファイル
- その他: 将来的な拡張性も考慮
各ファイル形式ごとに読み込みクラスを分離し、条件分岐による柔軟な処理を実装しました。
処理フロー:
1. ファイル形式の判定(Excel、Word、PowerPoint、txt)
2. 各形式に応じた読み込みクラスの呼び出し
3. ドキュメントの1行1行または1セル1セルずつの読み込み
4. 検索メソッドによる語句の検出
5. 結果の整形と出力
それぞれのデータをPandasライブラリを使用して整形や結合を行いました。
目当ての語句を見つけたら、以下の情報を記録します:
- 語句の位置: どのファイルの何行目(または何セル)
- ファイル名: 対象ファイルの特定
- 語句の内容: 検出された曖昧な語句
- ハイライト: 赤文字での強調表示
検索結果をExcelファイルとして出力し、以下の情報を提供しました:
- 検出された語句の一覧
- ファイル名と行番号
- 語句の前後の文脈
- 視覚的なハイライト表示
- 検出された語句の一覧
- ファイル名と行番号
- 語句の前後の文脈
- 視覚的なハイライト表示
初期の課題として最初の読み込み時間は、マシンにもよりますが5000ファイルに対して約10分かかっていました。
大量のファイル処理において、処理時間の短縮が重要な課題でした。
そこで、取り出したデータをset型で整理することで効率化を図りました。
その結果、処理時間を7分台にまで短縮することができました。
Pytestを使用したテスト設計を採用しました。
各メソッドに対してPytestを使用したテストを実装しました。
テスト項目:
- ファイル読み込み機能のテスト
- 検索アルゴリズムのテスト
- データ整形機能のテスト
- 結果出力機能のテスト
- エラーハンドリングのテスト
社内ツールとして配布するため、Tkinterを使用して簡単なUIを設計しました。
UI機能:
- ファイル選択ダイアログ
- 検索語句の入力フィールド
- 処理進捗の表示
- 結果のプレビュー機能
- エクスポート機能
大量のドキュメントから曖昧な語句を効率的に検出するシステムを構築できました。
set型による最適化により、処理時間を約30%短縮することができ、アルゴリズムの重要性を実感しました。
また、社内ツールとしての配布により、実際の業務での品質向上に貢献できました。