近似文字列の分岐方法

・「川中A」と、「川中A棟」や「川中A」(Aが全角)は同じもの
・また、「川中A棟」と「川中A」は同じもの
・「wing」と、「Wing bell」は別のもの
・また、「Wing bell」と「wing」は別のもの

上記を満たせる分岐の条件式を探しています。
含む条件にしていたところ、「wing」の例が出てきてしまいどうすれば良いか困っています。

いただいている情報だけではちょっと判断するのが難しいのですが、上の2つと、下の2つと、で判断を分けたい理由や基準がお示しいただけると参考になるかもしれません。
(何となく、建物名の抽出なのかなと考えています)

変数inputString
ifのconditionに
inputString.Contains(“川中A”) Or inputString.Contains(“川中A棟”) Or inputString.Contains(“川中A”)を入力して、
trueの場合
Falseの場合、IFを追加して、conditionに
inputString.Contains(“Wing bell”)を入力して、
trueの場合、
Falseの場合、IFを追加して、conditionに
inputString.Contains(“wing”)を入力して、
trueの場合
Falseの場合、

ご参考ください。

要件が理解できていないですが、

1)全角を半角に変換(A → A) ※ 必要なら大文字小文字変換も
2)末尾の特定文字を除去(棟・号棟など)
3)2つの文字列が一致するか比較

という流れで、出来る気がします。

1.2を関数に出来れば、「IF func_変換(文字列A) = func_変換(文字列B)」とかで判定できます。

1 Like

仰る通り、建物名の抽出と比較でした。
抽出した建物名をテーブルから検索するためでしたが、パターンが多すぎるためすべてを満たす条件は厳しいのかもしれません。

ありがとうございます。
ご提示いただいた1)と3)はすでに実装しているのですが、2)の除去する文字列で、可能性のある文字列を考えたらきりがなく何か魔法のようなやり方ができないかと考えました。
しかし経験則に基づく判断も含まれるため難しいですよね。

「データクレンジング」の話ですが、ご自身でデータを見て「変換ルール」を集めて仕込めば、ある程度のデータクレンジングは出来ると思います。

そんなにパターンは無さそうにも思えますが、元データが「どれだけの揺らいでいるか」「変換ルールが逆に邪魔をしないか?」などの事情で変わってくるはず。

より高い正確さを求めるなら、有料のAPIを使用する方法もあるかと思いますが・・・。

1 Like

正直なところ建物名については、ある程度のイレギュラーを認める代わりに、出来る限りイレギュラーを減らすような考え方で取り組むのが良いと思います。

過去に、住所や建物名を大量に処理する業務のRPA化に携わったことがありますが、そのときも最終的には手作業にしています。先方と調整のうえ「すべてのパターンを網羅して100%にすること」は目指さずに、「手作業のボリュームを極力減らすこと」として9割を目標に対応することとした、という話です。
割合をどの程度に設定されるか、は先方の状況次第になるかと思います(私のときは1割なら手で対応できるだろう、という想定でした)。

@shinji さんのいうように有料のAPIなどもありますが、これはだいたい「建物名」には対応していないです(住所はある程度対応してくれますが)。

2 Likes

ご経験に基づくアドバイスをいただきありがとうございます。
確かに、最初から100%を目指すことはやめて話し合いで方針を決められればと思いました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.