プログラムを使ってテキストから住所を抽出する方法が知りたいです。
実現したいこと
具体的に実現したいことは、以下の通りです。
- テキストから住所を抽出する
- もしテキスト中に住所が存在しなかったら(抽出できなかったら)NULL を返す
- 住所はテキスト中に最大1回しか出現しないとする
- できるだけ長い住所を抽出したい
- たとえば「大阪市中央区」なら「大阪市」ではなく「大阪市中央区」のほうが良い
- 何丁目以降などは取得できなくてかまわない(でもできたら嬉しい)
- 住所には表記揺れがあると思うので、確実にすべて抽出できる必要はない
- プログラムの実行速度はあまり気にしません
- 基本的なロジックを知りたいだけので、プログラミング言語などは問わない
具体的な出力結果は、以下のような例になります。
Python
1> text = "令和5年1月2日午前4時45分頃、大阪市中央区島之内2丁目8番付近路上で犯人が目撃されました。" 2> extract_address(text) 3'大阪市中央区島之内' 4 5> text = "2023年5月21日ごろ、岩見沢市上志文町で熊が目撃されました。" 6> extract_address(text) 7'岩見沢市上志文町' 8 9> text = "11月21日、長野県長野市南長野県町で初雪が観測されました。" 10> extract_address(text) 11'長野県長野市南長野県町' 12 13> text = "11月21日、長野市南長野県町で初雪が観測されました。" 14> extract_address(text) 15'長野市南長野県町'
考えたこと
個人的には正規表現だけでの抽出は難しいと考えており、事前に住所データベースなどを用意して、その住所とテキストが一致したときにそれを返すような形になると思っています。
あまり住所を取り扱った経験がないため、もし住所データベースを用意する必要がある場合は、どのようなデータソースを使えばいいのかお聞きしたいです。また、複雑な住所によっては間違ったものを返す可能性があるのではないかと懸念しています。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。