Pythonを用いた検索ツールの作成
1.はじめに
こんにちは。note初投稿です。Pythonを使いこなせるよう、日々勉強中のリーマンです。学習のアウトプット発信として、本記事を投稿します。
2.実行環境の情報
Python 3.9
Google colaboratory
3.本記事の概要
数百人規模の会社で勤務しており、日々たくさんの廃棄物処理問い合わせが来ています。廃棄物の担当者として、業務の効率化を実現するために、ごみの分別方法を検索できるツールを作成することを目標に、プログラムを作成しました。
4.作成したプログラム
4.1.プログラムの流れ
①ごみ分別データを作成
②分別用のコードを作成
③Herokuで公開・動作確認
4.2.作成したプログラム
①ゴミ分別データを作成
大分類・中分類・小分類・置き場に分けてデータを作成。
〇小分類・・・分別の対象品目
〇置き場・・・中分類・小分類の区分けによって決まる廃棄場所
〇中分類・・・小分類を品目ごとにグループ化したもの
〇大分類・・・中分類の項目をさらにグループ化したもの
②分別用のコードを作成
まず廃棄物分別データを取り込み、項目ごとにリスト化
#gabage_dataを取り込んで、項目ごとにリスト化
gabage_data = pd.read_csv("./gabage_data.csv")
large = list(gabage_data["大分類"])
medium = list(gabage_data["中分類"])
small = list(gabage_data["小分類"])
station = list(gabage_data["置き場"])
if文を用いて条件分岐を作成
下記コードが分別のロジックになります。
①inputに分別したい対象の品目が入ってきます。
②分別したい品目が入ってきた場合、まず小分類から確認して、その中に合致する品目があれば、それに該当する置き場が出力されます。
③小分類にない場合、中分類を見に行きます。もし中分類の中に合致するものがあれば、そこに登録されているすべての品目(小分類)を出力します。
④中分類にない場合、大分類を見に行きます。大分類の中に合致するものがあれば、それに対応する中分類を出力します。
⑤どの分類にも存在しない場合、大分類から入力していくような誘導文章が出力されます。
#webページからデータを引っ張るコードを作る
#GET=指定したwebリンクから情報を引っ張ってくる
#POST=入力された文字を引っ張ってくる
@app.route('/', methods=['GET','POST'])
def upload_file():
answers=""
output=""
if request.method == 'POST':
#取り出し
input = request.form['text']
#修正
input = neologdn.normalize(input)
#小分類に登録されているかの確認
if small.count(input)>0:
answers = gabage_data[gabage_data["小分類"]==input]
return render_template("index.html",answer=answers)
#中分類
elif medium.count(input)>0:
output = gabage_data[gabage_data["中分類"]==input]
output = list(output["小分類"])
answers = "現在登録されているものは{}です。もしこの中になければメールにてご連絡ください。:連絡先".format(set(output))
return render_template("index.html",answer=answers)
#大分類
elif large.count(input)>0:
output = gabage_data[gabage_data["大分類"]==input]
output = list(output["中分類"])
answers ="現在登録されているものは{}です。".format(set(output))
return render_template("index.html",answer=answers)
else:
answers = "見つからない場合は次のいずれかを選択してください。{}".format(set(large))
return render_template("index.html",answer=answers)
return render_template("index.html",answer="")
③Herokuで公開し、動作確認を実施
下記、動作確認の流れです。分別対象品目を入力(一斗缶で検証)
入力内容を一斗缶とすると、
下記の通り、gabage_dataに登録されている情報が無事反映されました。
今後の課題
今回作成したプログラムを更新していき、下記を実装できるように能力を向上させていきたいと思います。
・gabage_dataの更新
・複数の呼び方に対応できるよう随時改定
・索引機能を実装
・検索結果にマップを追加
・混合廃棄物の割合による条件処理
おわりに
実際に運用するためにはまだ能力が足りていませんが、先生に協力頂いたおかげで、プログラミング初心者でも形を作ることができました。プログラミング知識ゼロの状態から勉強を進めていくのはとてもつらいところではありましたが、親身にサポート頂いた先生にはとても感謝しています。これからも勉強して、今後の課題に挙げた項目を実装して、業務改善に活用できるよう頑張ります。