2012-06-27 10 views
7

Szukam klejnotu, który może porównać dwa ciągi (w tym przypadku paragrafy tekstu) i być w stanie ocenić prawdopodobieństwo, że są one podobne w treści (z może tylko kilka słów uporządkowanych, zmienionych). Uważam, że SO używa czegoś podobnego, gdy użytkownicy przesyłają pytania.Ruby gem dla porównania tekstu

+0

Zawsze można po prostu porównać liczbę słów. Wszystko, co może być czymś więcej, byłoby zrozumieniem komputerowym, a twoja postawa znacznie przewyższała to, co próbujesz zrobić. – Linuxios

Odpowiedz

7

I pewnie użyć czegoś jak Diff :: LCS:

>> require "diff/lcs" 
>> seq1 = "lorem ipsum dolor sit amet consequtor".split(" ") 
>> seq2 = "lorem ipsum dolor amet sit consequtor".split(" ") 
1.9.3-p194 :010 > Diff::LCS.diff(seq1, seq2).length 
=> 2 

Wykorzystuje algorytm longest common subsequence (stosując metodę LCS dostać diff jest opisana na the wiki page).

+0

Dziękuję Yehuda, nie wiedziałem, że wisiałeś na SO. Moje teoretyczne CS staje się coraz bardziej zacięte, im bardziej wkopam się w Rails i szybciej poruszające się technologie, w istocie nie znajduję już od samego początku tworzenia złożonych algorytmów ... –