<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
	>
<channel>
	<title>Comments on: Fuzzy Logic!</title>
	<atom:link href="http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/</link>
	<description></description>
	<lastBuildDate>Tue,  7 Feb 2012 08:09:02 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
	<item>
		<title>By: Cassidy Chun</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-80952</link>
		<dc:creator>Cassidy Chun</dc:creator>
		<pubDate>Wed, 19 Jan 2011 14:14:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-80952</guid>
		<description>Often an excellent submit after i see this web site along with other websites you own. Understand your current skills.</description>
		<content:encoded><![CDATA[<p>Often an excellent submit after i see this web site along with other websites you own. Understand your current skills.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nigel Heffernan</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-80947</link>
		<dc:creator>Nigel Heffernan</dc:creator>
		<pubDate>Tue, 11 Jan 2011 16:48:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-80947</guid>
		<description>Fuzzy Lookups and Fuzzy Matching in Excel:

I&#039;m late to the game in posting this, but a few more links will help anyone arriving via Google when they&#039;re looking for a Fuzzy-Match algorithm for Excel.

I wrote and implemented a fuzzy-logic VLookup function on a long flight a few years ago. The details are here:

http://excellerando.blogspot.com/2010/03/vlookup-with-fuzzy-matching-to-get.html

You are correct in placing the Levenshtein &#039;edit distance&#039; algorithm at the top of the list: it is the gold standard for measuring similarity in passages of text... It is also somewhat &#039;gold-plated&#039; in terms of weight and expense! A &#039;sum-of-common-strings&#039; approach is perfectly adequate and well within the reach of VBA; So, after some work with modified Levenshtein algorithms  - which one of your correspondents has linked to in a previous comment - I published a set of Match and Lookup functions using the Sum-of-common-strings approach. 

There&#039;s a discussion of the theoretical constraints in the previous post: please feel free to add the lessons you&#039;ve learned the different approaches you came up with. I never got anything useful out of SoundEx for the complex lookups - addresses, especially - that we get in real-life applications.</description>
		<content:encoded><![CDATA[<p>Fuzzy Lookups and Fuzzy Matching in Excel:</p>
<p>I&#8217;m late to the game in posting this, but a few more links will help anyone arriving via Google when they&#8217;re looking for a Fuzzy-Match algorithm for Excel.</p>
<p>I wrote and implemented a fuzzy-logic VLookup function on a long flight a few years ago. The details are here:</p>
<p><a href="http://excellerando.blogspot.com/2010/03/vlookup-with-fuzzy-matching-to-get.html" rel="nofollow">http://excellerando.blogspot.com/2010/03/vlookup-with-fuzzy-matching-to-get.html</a></p>
<p>You are correct in placing the Levenshtein &#8216;edit distance&#8217; algorithm at the top of the list: it is the gold standard for measuring similarity in passages of text&#8230; It is also somewhat &#8216;gold-plated&#8217; in terms of weight and expense! A &#8216;sum-of-common-strings&#8217; approach is perfectly adequate and well within the reach of VBA; So, after some work with modified Levenshtein algorithms  &#8211; which one of your correspondents has linked to in a previous comment &#8211; I published a set of Match and Lookup functions using the Sum-of-common-strings approach. </p>
<p>There&#8217;s a discussion of the theoretical constraints in the previous post: please feel free to add the lessons you&#8217;ve learned the different approaches you came up with. I never got anything useful out of SoundEx for the complex lookups &#8211; addresses, especially &#8211; that we get in real-life applications.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JP</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-56955</link>
		<dc:creator>JP</dc:creator>
		<pubDate>Thu, 25 Sep 2008 19:53:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-56955</guid>
		<description>Oh and here&#039;s another one:

http://chandoo.org/wp/2008/09/25/handling-spelling-mistakes-in-excel-fuzzy-search/</description>
		<content:encoded><![CDATA[<p>Oh and here&#8217;s another one:</p>
<p><a href="http://chandoo.org/wp/2008/09/25/handling-spelling-mistakes-in-excel-fuzzy-search/" rel="nofollow">http://chandoo.org/wp/2008/09/25/handling-spelling-mistakes-in-excel-fuzzy-search/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JP</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-56871</link>
		<dc:creator>JP</dc:creator>
		<pubDate>Wed, 24 Sep 2008 13:41:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-56871</guid>
		<description>Just FTR, I didn&#039;t write that UDF. It&#039;s extremely useful, if you happen to need the functions. 

Thx,
JP</description>
		<content:encoded><![CDATA[<p>Just FTR, I didn&#8217;t write that UDF. It&#8217;s extremely useful, if you happen to need the functions. </p>
<p>Thx,<br />
JP</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ross</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-56818</link>
		<dc:creator>Ross</dc:creator>
		<pubDate>Tue, 23 Sep 2008 20:09:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-56818</guid>
		<description>Thanks JP, 
Can see you&#039;ve done a bit of work in this area too! I&#039;ve found a few more methods flotting around, so i will update those in to that SS some, I think unless you&#039;re an expert with these things then it&#039;s all a bit trial and error!</description>
		<content:encoded><![CDATA[<p>Thanks JP,<br />
Can see you&#8217;ve done a bit of work in this area too! I&#8217;ve found a few more methods flotting around, so i will update those in to that SS some, I think unless you&#8217;re an expert with these things then it&#8217;s all a bit trial and error!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JP</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-56739</link>
		<dc:creator>JP</dc:creator>
		<pubDate>Mon, 22 Sep 2008 16:01:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-56739</guid>
		<description>OK here it is:

[VBA]
Function Str_Comp(st1 As String, st2 As String) As Double
&#039;
&#039; returns a number showing % comparison between two names
&#039;
&#039; i.e. =Str_Comp(A1, B1)
&#039;
&#039; Format cell as Percentage to make it look pretty!!
&#039;
&#039;
Dim MtchTbl(100, 100)
Dim MyMax As Double, ThisMax As Double
Dim i As Integer, j As Integer, ii As Integer, jj As Integer

With WorksheetFunction
    st1$ = Trim$(.Proper(st1$))
    st2$ = Trim$(.Proper(st2$))
End With

MyMax# = 0

For i% = Len(st1$) To 1 Step -1
    For j% = Len(st2$) To 1 Step -1
        If Mid$(st1$, i%, 1) = Mid$(st2$, j%, 1) Then
            ThisMax# = 0
            For ii% = (i% + 1) To Len(st1$)
                For jj% = (j% + 1) To Len(st2$)
                    If MtchTbl(ii%, jj%) &gt; ThisMax# Then
                        ThisMax# = MtchTbl(ii%, jj%)
                    End If
                Next jj%
            Next ii%
            MtchTbl(i%, j%) = ThisMax# + 1
            If (ThisMax# + 1) &gt; ThisMax# Then
                MyMax# = ThisMax# + 1
            End If
        End If
    Next j%
Next i%
Str_Comp = MyMax# / ((Len(st1$) + Len(st2$)) / 2)

End Function
[/VBA]

And here&#039;s another link to fuzzy lookup code:

&lt;a href=&quot;http://hairyears.livejournal.com/115867.html&quot; rel=&quot;nofollow&quot;&gt;http://hairyears.livejournal.com/115867.html&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>OK here it is:</p>
<p>[VBA]<br />
Function Str_Comp(st1 As String, st2 As String) As Double<br />
&#8216;<br />
&#8216; returns a number showing % comparison between two names<br />
&#8216;<br />
&#8216; i.e. =Str_Comp(A1, B1)<br />
&#8216;<br />
&#8216; Format cell as Percentage to make it look pretty!!<br />
&#8216;<br />
&#8216;<br />
Dim MtchTbl(100, 100)<br />
Dim MyMax As Double, ThisMax As Double<br />
Dim i As Integer, j As Integer, ii As Integer, jj As Integer</p>
<p>With WorksheetFunction<br />
    st1$ = Trim$(.Proper(st1$))<br />
    st2$ = Trim$(.Proper(st2$))<br />
End With</p>
<p>MyMax# = 0</p>
<p>For i% = Len(st1$) To 1 Step -1<br />
    For j% = Len(st2$) To 1 Step -1<br />
        If Mid$(st1$, i%, 1) = Mid$(st2$, j%, 1) Then<br />
            ThisMax# = 0<br />
            For ii% = (i% + 1) To Len(st1$)<br />
                For jj% = (j% + 1) To Len(st2$)<br />
                    If MtchTbl(ii%, jj%) &gt; ThisMax# Then<br />
                        ThisMax# = MtchTbl(ii%, jj%)<br />
                    End If<br />
                Next jj%<br />
            Next ii%<br />
            MtchTbl(i%, j%) = ThisMax# + 1<br />
            If (ThisMax# + 1) &gt; ThisMax# Then<br />
                MyMax# = ThisMax# + 1<br />
            End If<br />
        End If<br />
    Next j%<br />
Next i%<br />
Str_Comp = MyMax# / ((Len(st1$) + Len(st2$)) / 2)</p>
<p>End Function<br />
[/VBA]</p>
<p>And here&#8217;s another link to fuzzy lookup code:</p>
<p><a href="http://hairyears.livejournal.com/115867.html" rel="nofollow">http://hairyears.livejournal.com/115867.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JP</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-56496</link>
		<dc:creator>JP</dc:creator>
		<pubDate>Sat, 20 Sep 2008 03:45:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-56496</guid>
		<description>I&#039;ve always found SoundEx hard to understand. This page has some interesting links:

http://www.dailydoseofexcel.com/archives/2004/06/16/fuzzy-text-match/

I also have a UDF somewhere (can&#039;t locate it at the moment) that returns a percentage indicating how close two words are to each other.

--JP</description>
		<content:encoded><![CDATA[<p>I&#8217;ve always found SoundEx hard to understand. This page has some interesting links:</p>
<p><a href="http://www.dailydoseofexcel.com/archives/2004/06/16/fuzzy-text-match/" rel="nofollow">http://www.dailydoseofexcel.com/archives/2004/06/16/fuzzy-text-match/</a></p>
<p>I also have a UDF somewhere (can&#8217;t locate it at the moment) that returns a percentage indicating how close two words are to each other.</p>
<p>&#8211;JP</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: zach</title>
		<link>http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/comment-page-1/#comment-56203</link>
		<dc:creator>zach</dc:creator>
		<pubDate>Wed, 17 Sep 2008 15:07:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.blog.methodsinexcel.co.uk/2008/09/17/fuzzy-logic/#comment-56203</guid>
		<description>I&#039;m not in a position to test this out yet, but I look forward to it.  I can&#039;t say I&#039;ve much luck with the soundex type alogrithms in the past, though.  I&#039;ve spent lots of time trying to match lists where one name is &quot;rosenstein,jonathan&quot; and the other is &quot;rossenstein, jon dr&quot;.  I&#039;ve never seen much of a breakthrough in this area.  It&#039;s pretty frustrating.  You&#039;d think with all the work put into things such as cataloging tools that there&#039;d be something brilliant by now.

By the way, congrats on being blocked by Websense.  You&#039;ve made the exclusive club!</description>
		<content:encoded><![CDATA[<p>I&#8217;m not in a position to test this out yet, but I look forward to it.  I can&#8217;t say I&#8217;ve much luck with the soundex type alogrithms in the past, though.  I&#8217;ve spent lots of time trying to match lists where one name is &#8220;rosenstein,jonathan&#8221; and the other is &#8220;rossenstein, jon dr&#8221;.  I&#8217;ve never seen much of a breakthrough in this area.  It&#8217;s pretty frustrating.  You&#8217;d think with all the work put into things such as cataloging tools that there&#8217;d be something brilliant by now.</p>
<p>By the way, congrats on being blocked by Websense.  You&#8217;ve made the exclusive club!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

