Norbert M.

Norbert M. Nobody's perfect.
Call me Nobody ;)

Temat: Wyszukiwanie fraz w tekście

Witam. Mam prosta aplikację, która za pomocą prostego OCR ściąga mi dokumenty z Tif’a do stringa oraz bazę kilku tysięcy klientów. Pytanie jak w najbardziej efektywny sposób wyszukać kontrahentów występujących w danym dokumencie (może ich być wielu). Nie mogę się oprzeć o Nip czy Regon (bo to nie było by trudne), ale o nazwę pełną, która może być w róży sposób zapisana. Myślałem o Regex.IsMatch, ale chciałby coś, co zwróci wynik z pewną precyzją (np. 90% zgodnych znaków), ponieważ czasem OCR myli znaki a czasem nazwa jest różnie zapisana ("Firma SA" != "Firma S.A." ). Będę wdzięczny za wszelkie sugestie.
Michał Jasiorowski

Michał Jasiorowski Inżynier ds.
oprogramowania

Temat: Wyszukiwanie fraz w tekście

Polecam zapoznanie się algorytmami które wyznaczają metryki podobieństwa ciągów znaków które pozwalają zrobić dokładnie to co chcesz.
Przykładowe metryki to Odległość Levenshteina, Odległość Damerau-Levenshteina itp.
Poniżej link do biblioteki C# która posiada implementację wielu algorytmów i normuje sposób z nich korzystania.

http://sourceforge.net/projects/simmetrics/files/

Powodzenia :)
Norbert M.

Norbert M. Nobody's perfect.
Call me Nobody ;)

Temat: Wyszukiwanie fraz w tekście

Michał Jasiorowski:
Polecam zapoznanie się algorytmami które wyznaczają metryki podobieństwa ciągów znaków które pozwalają zrobić dokładnie to co chcesz.
Przykładowe metryki to Odległość Levenshteina, Odległość Damerau-Levenshteina itp.
Poniżej link do biblioteki C# która posiada implementację wielu algorytmów i normuje sposób z nich korzystania.

http://sourceforge.net/projects/simmetrics/files/

Powodzenia :)
Algorytm działa rewelacyjnie. Dzięki i pozdrawiam.
Michał Jasiorowski

Michał Jasiorowski Inżynier ds.
oprogramowania

Temat: Wyszukiwanie fraz w tekście

Nie ma za co :) Sam miałem taki problem jakiś czas temu, dzięki tej bibliotece udało mi się match'ować klientów po całych adresach które były jednym stringiem!

Temat: Wyszukiwanie fraz w tekście

Odgrzebuję temat, bo sam niedawno zetknąłem się z zagadnieniem bardziej zaawansowanego wyszukiwania informacji. Można o tym poczytać w temacie: Koncepcje wyszukiwarek treści w serwisie (shared hosting) na grupie ASP.NET. Co prawda szukałem rozwiązania działającego na bazie danych (ale bez CLR, czysty TSQL), ale ostatecznie zdecydowałem się na Lucene.NET

W skrócie - jest to świetny silnik wyszukiwarki, nadający się szczególnie do dłuższych tekstów (do kilkuwyrazowych fraz wystarczą wspomniane metryki). Lucene.NET oferuje niesamowite możliwości wyszukiwania dokładnego i przybliżonego. Korzysta właśnie z metryki Levensteina.

A właśnie, co do metryk, to Levenstein, chociaż "oklepany" w całym Internecie (ma zgrabne implementacje w T-SQL) mnie raczej zawiódł, choć i tak bije na głowę np. "double metaphone". Zamiast Levensteina, z podanej przez Michała świetnej biblioteki zdecydowanie polecam metrykę Smitha-Watermana-Gotoha w wersji "windowed affine". W wolnej chwili spróbuję podmienić w Lucene.NET Levensteina na SWG(WA).

Wspomniany SimMetrics fajnie integruje się z SQL Serverem (trzeba włączyć obsługę CLR), zwłaszcza w połączeniu z Full Text Search: http://anastasiosyal.com/POST/2009/01/11/18.ASPXAdrian Olszewski edytował(a) ten post dnia 31.03.12 o godzinie 02:52

konto usunięte

Temat: Wyszukiwanie fraz w tekście

Adrian Olszewski:
ASP.NET. Co prawda szukałem rozwiązania działającego na bazie danych (ale bez CLR, czysty TSQL), ale ostatecznie zdecydowałem się na Lucene.NET

W skrócie - jest to świetny silnik wyszukiwarki, nadający się szczególnie do dłuższych tekstów (do kilkuwyrazowych fraz wystarczą wspomniane metryki). Lucene.NET oferuje niesamowite możliwości wyszukiwania dokładnego i przybliżonego. Korzysta właśnie z metryki Levensteina.

Polecam zapoznac sie tez z Solr, pracuje na bazie Lucene i ma duzo przydatnych funkcji

http://lucene.apache.org/solr/

Temat: Wyszukiwanie fraz w tekście

Dzięki Sebastian :)

Lucena jest fajna, tylko trzeba się trochę przez nią przegryźć. Ile by się trzeba narobić bez niej, żeby uzyskać taki efekt (tutaj demo w formsach, ale docelowo będzie w asp.net).


Obrazek
Krzysztof Mierzejewski

Krzysztof Mierzejewski SharePoint
Consultant

Temat: Wyszukiwanie fraz w tekście

Jeszcze może dorzucę od siebie dwa alternatywne rozwiązania spod znaku MS:
- SQL Server 2012 i Semantic Search oraz Full-Text Search.
- Search Server 2010 Express.

Nie miałbym nic przeciwko gdyby ktoś zewaluował pierwsze rozwiązanie i podzielił się spostrzeżeniami :) Szczególnie interesuje mnie jak się sprawdza RANK w praktyce (czyli niejednokrotnie wspominana w tym wątku odległość, ale nie tylko) i jak z ogólnie pojętymi kwestiami wydajności.

Następna dyskusja:

Upload na FTP, oraz synonim...




Wyślij zaproszenie do