過去の桐井戸端BBS (桐ver.9)
21114 類似したデータを一つにまとめたい とんびき 2003/06/26-15:39
こんにちは。以前質問させていただきました者です。
お陰さまで、順調に住所データの整理を進めているのですが、
その中で、大部分の住所データが、他のデータと重なっていることが判明しました。
具体的には、同一人物のデータが2〜3件あり、住所が完全なデータと不完全なデータが混在しています。
それだけなら話はまだ簡単なのですが、住所以外の重要なデータ(出身地、その他メモ)等は、
同じ様に入力されているもの、全く別の大事なデータがばらばらに入力されている、といった感じです。

私の下手な説明ですと分かりにくいかもしれません。以下に例を書いてみます。

氏名  住所        Memo

Aさん  A県A市        EEE
Aさん  A県           FFF
Aさん  B県B市(勤務先)  EEE
Bさん  X県X市        KKK  
Bさん   X県           LLL
Cさん   A県           sss
Dさん  B県D市
Dさん  B県F市
21116 Re:類似データを一つにまとめる とんびき 2003/06/26-15:45
記事番号21114へのコメント
すみません。途中で投稿ボタンを押してしまいました(^^;


このデータを、同一人物=1データに、すっきりまとめられないものかと、
現在、格闘中なのですが、初めて桐に触るため、遅遅として進みません(汗)

皆様のお知恵を拝借するのはとても心苦しいのですが、何か良い考えがありましたら、
どうぞお教えくださいませ。よろしくお願いいたします。
21117 Re:類似データを一つにまとめる うにん 2003/06/26-16:01
記事番号21116へのコメント
1. 単一化する。同姓同名がいなければ、氏名を基準でいいでしょう。
2. 絞り込みで補集合する。重複している分が絞り込まれます。
3. 書き出しして削除する。重複している分を一旦別ファイルにします。
4. 書き出したファイルを併合で連結する。

以上で一人1行のデータになります。
併合連結したい項目だけ、連結したことがわかるように一番最初に
[]+#強制改行文字()
で置換しておくといいかも。(無論、強制改行文字の設定を忘れずに!)

21148 Re:類似データを一つにまとめる 佐田 守弘 2003/06/28-02:07
記事番号21117へのコメント
とんびきさん
原則論的に言えば、うにんさんが言われる様に併合で連結する方法なのですが、
どうも質問の内容から見ると、難しい部分もありますね。
いくつかの点で補足します。

●備考欄の連結
>Aさん  A県A市       EEE
>Aさん  A県         FFF
>Aさん  B県B市(勤務先)  EEE
の場合で言うと、単純に連結すると、同じ値がある時には、2回書かれてしまいます。
対策としては、一括処理を使って、連結したい文字列が含まれてれば
無視する、含まれていなければ連結する、といった判断の処理が必要になるでしょう。

●住所などの最新データの判断
上記に引用したケースで、1行目のA県A市と2行目のA県のどちらを採用するかの
判断も考えるべき所でしょうね。
1つには、「文字列が長い方を採用する」も答えの1つです。
しかしもし、A県A市とA県B市だったらどうしましょうか。

もし登録日付と最終更新日付が記録されていれば、新しい方で書き換えるという方法もありです。

●自宅と勤務先
自宅と勤務先の住所や電話などは、別項目に分ける処理も必要になるかと思います。

いずれにしても会話処理だけでは難しく、また一括処理で行っても完璧な処理はできないかと思いますので、
最終的には人間の目で見て判断せざるをえないのかとも考えます。

佐田守弘(KS-00119)
21168 Re:類似データを一つにまとめる とんびき 2003/06/29-02:13
記事番号21148へのコメント
うにんさん:

早速のレス、ありがとうございました。
試してみたいのですが、以下の様な状況でして現在作業中断中です。
無い頭を絞って考えております(^^;

佐田 守弘さん:

お返事ありがとうございました。
正に私が悩んでおり、再度質問を投稿しようかと思っていた点を、ずばりとお答えいただきました。
ありがとうございます。

>登録日付と最終更新日付が記録されていれば、新しい方で書き換える
>という方法もありです。
記録されて無いです(涙)

>1つには、「文字列が長い方を採用する」も答えの1つです。
>最終的には人間の目で見て判断せざるをえないのかとも考えます。
そうですか・・・
名前で絞っても5万件あるのですがどうしましょう〜(泣)

>一括処理を使って、連結したい文字列が含まれてれば無視する、含まれ
>ていなければ連結する、といった判断の処理が必要になるでしょう。
>いずれにしても会話処理だけでは難しく、また一括処理で行っても完璧な
>処理はできないかと思います

私にはまだまだ理解に遠い世界かもしれません・・・が、もしお教えいただけるなら、
完璧な処理で無くとも良いのでチャレンジしてみたく思います。
厚顔で本当に申し訳ないのですが、再度ご教授頂ければ幸いです。

>自宅と勤務先の住所や電話などは、別項目に分ける処理も必要になるかと
>思います。

一つの手として今、思いついたのは、自宅住所と勤務先住所で2件データを持ってしまう、というやり方です。
その場合、データに“自宅”であるのか“勤務先”であるのかを判断するような情報を付加しなければいけないのですが・・・

ただ、最終的には今後データを足す際に、使用者が再び重複データを作らないような構造を作ることも大事ですので、
あまり今までのデータにこだわってはいけないのでしょうが・・・でも気になる〜〜(>_<)


戻る