Aralarında benzerlik olanları bulma

Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın yurttaş,

Eşleşenleri buldum, eşleşmeyenleri de buldum (1 de olup 2 de olmayan ve 2 de olup 1 de olmayan 2 sorgu olarak), şimdi eşleşmeyen verilerden benzeşen verileri eşlemeye geldi. Bu da olabilir ancak bu noktada iyi düşünmek gerekir. Yeni düşünmeye başladığım için yöntem konusunda biraz karşılıklı tartışalım dedim.

Önce sanırım eşleşen verileri çekip almak gerekiyor. Ondan sonra kalanları tekrar tabloya yazıp işlem yapmamız gerekiyor diye düşünüyorum

Ben bir zamanlar bir fonksiyon yazmıştım Ad soyadları ayırıyordu. (Birden çok isimleri de soyad dan ayırabiliyordu) Bu işimize yarar diye düşünüyorum. Bu az farklı verileri ayırmaya başladıktan sonra da ne gibi bir işleme tabi olacaklar. Mutlaka bir şekilde eşleşmeleri gerekiyormu en sonunda hiç benzemeyen veriler olacak mı?

En sonunda birden fazla benzeme ihtimali olan veriler de olacaktır. Bu noktayı aşamamız gerekecek?

Şimdilik iyi çalışmalar
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın modali,

İlgilendiğiniz için teşekkür ederim.

Şimdi problemi açarsak belki çözüm için daha kolay yollar bulunabilir.

1 .Elimde bir liste var. Bu 300 500 satırlık kısa bir liste. İsterseniz Buna kara liste diyelim.
2. Elimizde birbaşka liste var bu da 10000 satırın üzerinde.
3. T.C. Kimlik No veya başka bir kod olsa işler kolay. Bu Yok.
4. Ad ve Soyadlar her iki listede farklı şekillerde yazılmış olabilir. Ancak standart bir kriter yok. Çok değişik şekillerde yazılmış olabilmektedir.
5. Esasen bu 10000 satırlık listede benzemeyen çoğunlukta. Benzer olabileceklerin maksimum sayısı 300-500 ama yanılmıyorsam bu sayı 30-50 kadar olabilir.
6. Özetle bu 10000 satırlık listede adları kara listede olanlar var mı? yok mu? Varsa kimlerle eşleşmesi mümkün. Aradığım bu.

Tekrar teşekkürler.

.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın yurttaş,

Bakın şimdi durum değişti ve sanırım kolaylaştı. İlk iş benzerler varsa bulup ayıklayacağız ve listeleyeceğiz.
Sonra 500 kişilik listeden verileri teker teker alıp ad ve soyadını ayıracağız, ondan sonra çapraz olarak yazılmış var mı diye arama yapacağız eşleşenleri listeye ekleyeceğiz.
Sonra kara listeden soyad eşleşmesi yapacağız adları karşılaştıracağız, olabilecek olan ihtimalleri de yazdıracağız. Fikrim harfleri saydırıp karşılaştırma bu noktada % 80 lik bir oran koyarız (5 harften 4 veya 10 harften 8 benziyorsa yazdırabiliriz.)

Sizin bu konuda bir fikriniz var mı?

İyi çalışmalar
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın modalı,

Benim fikrim şöyle bir parametreye bağlı olarak 3, 4'ten başlamak üzere kullanıcının tercihine bağlı biribirlerini takip eden girilen harf sayısı parametresine bağlı olarak kara listede olanlardan bu paremtre ile eşleşenleri getirmemiz mümkün mü? Yani Filter'deki, Contains ile birlikte Like fonksiyonu gibi bir şey oluşturmak. Ad ve soyadları parçalama ve parça, parça karşılaştırma yapmaktan daha iyi olmaz mı?

İlginiz için tekrar teşekkürler.

.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın yurttaş,

Access de sorgu sihirbazı birçok konuyu halediyor. Dikkat ettim verilerinizde Soyadı önce adı sonra olanlar da var. Soyadı tutup adı Ahmet ise A. olarak yazılan var.

Ama tabi 3 lü blok halinde karşılaştırmak da mümkün.

Ama artık yarın bakabilirim. Dün gece pek uyuyamadım. (Power Point sunusunda filmler eklenemiyordu. saat 3 e doğru codec ten olabileceği aklıma geldi de biraz uyuyabildim)
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhabalar;

Örneğin ismi "Osman Öztürk" olan bir ismi arayalım ama bu isim "Ozman Öztürk", "O.Oztürk", O.Öztürk" ya da bir çok varyasyonda yazılmış olabilir. Bir standart kesinlikle yok!! İsim önce soyisim sonra da diyemiyoruz. Tek başına "içeren (contains)" de çözüm olmaz.. Bir çok kombinasyonu içeren bir fonksiyon da kullansak binlerce veride bu karşılaştırma çok uzun sürer. Bana kalırsa bu iş için en iyi yol "Full Text Search" Alttaki linkten biraz daha detaylı bilgi alabilirsiniz..

http://www.bilgininadresi.net/Madde/785/Full-Text-Search-ile-Arama-İşlemleri

İndexlemeyle çalıştığı için çok hızlı sonuç verir ama tabii sql servera sahip olmak gerekir ayrıca T-SQL bilgisi..

Belirli şartlar içinde Access ya da Excel ile yapılacak çözümler de işinizi ne kadar görür bilemem elbette... Hangi yol olursa olsun oldukça zor ve karışık bir çözümü var bence ;)
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın beab05 ,

İlginiz için teşekkür ederim.

Bu yolla belki çözüm bulunabilir.

Bu da beni aşıyor...

.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın yurttaş,

Çok çabuk pes ediyorsunuz. Ben o kadar çabuk pes etmem. Biraz bir şeyler yapmaya çalıştım. Tabi biraz ekleme, biraz düzeltme ile bu iş olacak gibi.

Bir form ekledim, manuel olarak (eğer okeylenirse otomatikleştireceğim) tbl2 den verileri kopyalayıp, aranacak metin metin kutusuna yapıştırın ve arama yaptırın. Şimdilik tatmin edici sonuç alınmaya başlandı bile. Ama tabi tüm ihtimalleri göz önüne almamız gerekiyor.

Bir de sorguları çalıştırıp inceleyin. (qry ile başlamayanları) sqlEşleşenVeriler sorgusuyla aynı alanları seçebiliyoruz. Bir tabloda olupta ötekisinde olmayanlar ve ters olarak ta var.

Neyse bir göz atın ve bu işin olabileceğine inanın.

İyi çalışmalar
 

Ekli dosyalar

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın modalı,

Elinize sağlık.

Ben öyle kolay kolay pek pes etmem. Ama Access'te fazla derinliğim yok.

Gelelim probleme. Bana eşleşenler gerekiyor. Kelime, kelime aramıyacağımıza göre diğer sorgulamalara gerek yok. Onlarla bence zaman kaybetmiyelim.

Hazırladığınız dosyada tam olarak eşleşenleri veriyor. Bu güzel. Oysa iki tabloda da farklılıklar olmasına rağmen hepsinin eşleşmesi gerekiyor. Bunu çözebilirsek problem hal olacak.

Tekrar teşekkürler.

.

.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın yurttaş,

Kelime kelime arayacağımızı kim söyledi. O nokta otomatik olacak. Ancak başlangıç için yöntem doğru mu? Forma tablo 2 den herhangi bir iisim alıp yapıştırın ve arama yapın. Sonucu tartışalım.

İyi çalışmalar
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın yurttaş,

Kelime kelime arayacağımızı kim söyledi. O nokta otomatik olacak. Ancak başlangıç için yöntem doğru mu? Forma tablo 2 den herhangi bir iisim alıp yapıştırın ve arama yapın. Sonucu tartışalım.

İyi çalışmalar
Tablo2'den alınan ve forumda yapıştırıldığında Tablo2'deki alternatifleri getiryor. Bu Tablo1'de arayacak şekilde olması gerekir.

Tabloların kendi içleri ile bir işimiz yok. Yani orada tekrar ve benzeyen var mı? Yok mu? kaç adet tekrarlanmış, bunlar bana gerekmiyor.

Bana eşleşenlerin tablosu gibi bir tabloyu verecek düğme yeterli. Doğal olarak bu eşleşme de bezerliğe ve aynı olmaya bağlı olarak oluşması gerekecek.

Tekrar teşekkürler.

.
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Merhaba..

Aslına bakarsanız özünde sevgili beab05 haklı. Bu türde bir eşleştirmeyi hatasız yapmak excelin yada accessin işi değil. Bu olabildiğince hatasız yapabilmenin bencede tek yolu full text search.. En basit örnek google de bir sözcüğü yanlış yazarsak bize "bunu mu demek istiyorsun" diye soruyor ya işte orda full text search kullanılıyor
Yani direkt eşleştiriyor; olabildiğince tabii..

Ben yinede sizin için eklediğiniz verilerin şartlarına uygun olabilecek bir düzenek hazırladım. Birinci tablodaki verilere diğer tablodan uygun olanları hemen yanında görebileceğiniz şekilde yerleşimini sağlayan bir düzenek bu. Bu haliyle tümünü eşleştiriyor. Mevcut çoklu verilerinizde uyuşmayan illaki olacaktır. Sayı fazlaysa onların şartlarına görede koşulları çoğaltabilirim..

Düzeneğin işleyişi daha iyi anlamanız için Eşleştir düğmesine basmadan tabloları incelemenizi öneririm.

Selamlar..



Not: Dosya güncellenmiştir.
 

Ekli dosyalar

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Taruz, harika bir iş çıkartmışsın bence. Tebrik ediyorum. Yeni şartlar eklenerek te daha geniş sonuçlar alınabilir senin de belirttiğin gibi .
Bu arada "Google" a rakip te olmuş oldun ;)
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Merhaba..

Aslına bakarsanız özünde sevgili beab05 haklı. Bu türde bir eşleştirmeyi hatasız yapmak excelin yada accessin işi değil. Bu olabildiğince hatasız yapabilmenin bencede tek yolu full text search.. En basit örnek google de bir sözcüğü yanlış yazarsak bize "bunu mu demek istiyorsun" diye soruyor ya işte orda full text search kullanılıyor
Yani direkt eşleştiriyor; olabildiğince tabii..

Ben yinede sizin için eklediğiniz verilerin şartlarına uygun olabilecek bir düzenek hazırladım. Birinci tablodaki verilere diğer tablodan uygun olanları hemen yanında görebileceğiniz şekilde yerleşimini sağlayan bir düzenek bu. Bu haliyle tümünü eşleştiriyor. Mevcut çoklu verilerinizde uyuşmayan illaki olacaktır. Sayı fazlaysa onların şartlarına görede koşulları çoğaltabilirim..

Düzeneğin işleyişi daha iyi anlamanız için Eşleştir düğmesine basmadan tabloları incelemenizi öneririm.

Selamlar..
Sayın Taruz,

Teşekkürler.

İnceledikten sonra döneceğim.

.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın Taruz,

Teşekkürler.

İnceledikten sonra döneceğim.

.
Sayın Taruz,

Eklediğiniz dosyayı inceledim. Orada gayet güzel çalışıyor. Elinize sağlık.

Ancak, Tbl1'deki verileri silip, benim 14000'lik listeyi import edince ve Tbl2'deki verileri silip, 400'lük veriyi de import edince, import işlemler tamam. Veriler tablolarda yerlerini alıyor. Burada bir sıkıntı yok. Formu açıp eşleştir dümesine basınca;

Run-time error '36642':
ölçüt ifadesinde veri türü uyuşmazlığı. Hatası vriyor.

ve hata;

.RunSQL "UPDATE tbl1, tbl2 SET tbl1.EŞİ = tbl2.adı2 WHERE (((Right([adı],Len([adı])-InStr(1,[ADI],"" "")-2))=Right([tbl2].[adı2],Len([tbl2].[adı2])-InStr(1,[tbl2].[adı2],"" "")-2)))"

.RunSQL "UPDATE tbl1, tbl2 SET tbl1.EŞİ = tbl2.adı2 WHERE (((Right([adı],Len([adı])-InStr(1,[ADI],"" "")))=Left([tbl2].[adı2],InStr(1,[tbl2].[adı2],"" ""))))"

.RunSQL "UPDATE tbl1, tbl2 SET tbl1.EŞİ = tbl2.adı2 WHERE (((Left(Right([adı],Len([adı])-InStr(1,[ADI],"" "")),4))=Left(Right([tbl2].[adı2],Len([tbl2].[adı2])-InStr(1,[tbl2].[adı2],"" "")),4)))"

kodlarında çalışmıyor.

Ancak, bunları devreden çıkarınca kalan;

Private Sub Komut4_Click()
With DoCmd
.SetWarnings False
.RunSQL "UPDATE tbl1, tbl2 SET tbl1.EŞİ = tbl2.adı2 WHERE (((tbl1.ADI)=[tbl2].[adı2]))"


.RunSQL "DELETE tbl2.ADI2 FROM tbl2 WHERE (((tbl2.ADI2) In (select ([eşi]) from tbl1)))"

.SetWarnings True
.Requery
End With
End Sub

bu kodlarla çalııp, tam benzeyenleri veriyor.

Birinci husus bu. Diğer bir hususta bunlar eşleştikten sonra hem yaptığınız gibi formda gözükmesi ancak tüm verileri değil sadece eşleşenleri verecek, ayrıca bunları Excel'e atacak bir yol var mı?

Tekrar teşekkürler.


.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın Yurttaş,

Benim önerimi göz ardı ediyorsunuz ama sanırım tek çıkar yolunuz o. (Geliştirilmesi gerekir). Siz bana eğer mahsuru yoksa esas verilerinizi

modali2006@hotmail.com adresine yollayabilir misiniz. Onun üzerinde çalışmak daha gerçekçi olacaktır.

Ben örneğimde gelişigüzel tablo1 seçip tablo2 verilerini içinde aramıştım.

Eklediğim sorgulara gerek yok dediniz ama onlar olmadan sonuç alınamaz.

Önce, tam eşleşenler bulunacak ve ayrı bir tabloya eklenecekler, sonra eşleşen verilerin olmadığı bir sorgu elde edeceğiz ve olabilecek ihtimalleri bu sorgular üztünde bulup çıkaracağız.

Uygulamamdaki formda ise örnek bir arama çalışması ekledim. Dikkat ettiyseniz sekiz ayrı söz dizinini arıyor tabloda birer harf eksiği ile, siz adet kısmına takıldınız.

Bu iş çok yönlü aramayı gerektirdiğinden, yavaş yavaş çözümleyerek ilerlememiz gerekiyor.

Ben size arama yöntemiyle ilgili düşüncenizi soruyorum siz bana bu kadar sorguya ihtiyacım yok diye cevap yazıyorsunuz.

Sayın karaayhana bundan bir yıl önce sanırım buna benzer bir projede yardımcı olmuştum ve sonuç tatmin edici oldu.

İyi çalışmalar
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın Yurttaş,

Benim önerimi göz ardı ediyorsunuz ama sanırım tek çıkar yolunuz o. (Geliştirilmesi gerekir). Siz bana eğer mahsuru yoksa esas verilerinizi

modali2006@hotmail.com adresine yollayabilir misiniz. Onun üzerinde çalışmak daha gerçekçi olacaktır.

Ben örneğimde gelişigüzel tablo1 seçip tablo2 verilerini içinde aramıştım.

Eklediğim sorgulara gerek yok dediniz ama onlar olmadan sonuç alınamaz.

Önce, tam eşleşenler bulunacak ve ayrı bir tabloya eklenecekler, sonra eşleşen verilerin olmadığı bir sorgu elde edeceğiz ve olabilecek ihtimalleri bu sorgular üztünde bulup çıkaracağız.

Uygulamamdaki formda ise örnek bir arama çalışması ekledim. Dikkat ettiyseniz sekiz ayrı söz dizinini arıyor tabloda birer harf eksiği ile, siz adet kısmına takıldınız.

Bu iş çok yönlü aramayı gerektirdiğinden, yavaş yavaş çözümleyerek ilerlememiz gerekiyor.

Ben size arama yöntemiyle ilgili düşüncenizi soruyorum siz bana bu kadar sorguya ihtiyacım yok diye cevap yazıyorsunuz.

Sayın karaayhana bundan bir yıl önce sanırım buna benzer bir projede yardımcı olmuştum ve sonuç tatmin edici oldu.

İyi çalışmalar

Sayın modalı,

Sizin önerilerinizi göz ardı edebilmem için Access'te söz sahibi olmam gerekir. Bu mümkün değil. Asla böyle bir düşüncem olamaz.

Gerçek verilerin gizlilik özelliği olduğu için bunları gönderememiyorum. Ancak problem basit ancak çok değişken olduğu için zorluğu buradan başlıyor.

Problem basit, belki ben bunu baştan anlatamadım herhalde.

Şimdi 14000'lik ad soyad ve ifadlerden oluşan bir listemiz var. Bunun sözcük uzunluğu değişken 2'den 15'kadar sözcükten oluşması mümkün.

İkinci listemiz kara liste dediğimiz liste 400 kişilik, bu ad ve soyadlardan oluşuyor. Bunun da sözcük uzunluğu 2-4 sözcük olabilir.

Soru bu hacimli listede olupta kara listede olan var mı? Bunları bulmak.

Tam eşleşenler bir şekilde bulunur. Ancak her iki liste de yazım şekli olarak akla gelebilen her türlü yazım değişikliği olabileceği dikkate alarak (vardır demiyorum olabilir.) mümkün olduğu kadar yalnız biribirlerine benzeyenleri yanyana görmek ve ondan sonra bunları göz elemesinden geçirmek.

Olay bundan ibaret. Aksi takdirde ben sizin neden önerilerinizi dikkate almayayım. Herhalde bu yaştan sonra Access'de biraz yoğunlaşmam gerekecek.

İlgilenmeniz bile benim açımdan büyük lütüftür. Tekrar teşekkürler...
 
Üst