Nie jestem pewien, czy to pytanie należy tutaj i przepraszam, jeśli nie. Chcę opracować programowy sposób, w jaki mogę probabilistycznie określić, czy dany ciąg „należy” do worka ciągów. Na przykład, jeśli mam torbę z 10 000 nazwami miast w USA, a następnie mam ciąg „Philadelphia”, chciałbym uzyskać ilościową miarę tego, jak prawdopodobne jest, że „Philadelphia” to nazwa miasta USA w oparciu o nazwy miast, które już znam. Chociaż wiem, że w tym kontekście nie będę w stanie oddzielić prawdziwych nazw miast od fałszywych nazw miast, przynajmniej spodziewałbym się, że będę mieć takie ciągi znaków jak „123,75” i „Szybki czerwony lis przeskoczył nad leniwymi brązowymi psami” jakiś próg.
Na początek spojrzałem na Levenshtein Distance i zastanowiłem się, w jaki sposób zostało to zastosowane do problemów, przynajmniej nieco podobnych do tego, który próbuję rozwiązać. Jedną z interesujących aplikacji, które znalazłem, było wykrywanie plagiatu, w jednym artykule opisano sposób wykorzystania odległości Levenshteina ze zmodyfikowanym algorytmem Smitha-Watermana do oceny wyników na podstawie prawdopodobieństwa, że były to plagaryzowane wersje danego dokumentu bazowego. Moje pytanie brzmi, czy ktoś mógłby skierować mnie we właściwym kierunku za pomocą innych ustalonych algorytmów lub metod, które mogą mi pomóc. Mam wrażenie, że może to być problem, który ktoś w przeszłości próbował rozwiązać, ale jak dotąd zawiodło mnie moje Google-fu.
Odpowiedzi:
Niektóre lepsze statystyki, o których warto pomyśleć, to analiza długości słów i gramów. W przypadku długości słowa możesz gromadzić statystyki rozkładu długości słów w nazwach miast i porównywać je z długością otrzymywanych słów. Analiza gram analizuje rozkład sekwencji liter w przykładowym tekście (powiedzmy ). Oba podejścia można połączyć.n n n n = 2
Biorąc pod uwagę heurystykę, możesz użyć prawdopodobieństwa, aby uzyskać wynik, który (miejmy nadzieję) byłby wyższy dla twoich przykładowych danych niż dla innego tekstu. Aby ustalić rozsądny próg, można przeprowadzić weryfikację krzyżową. Wybierz zestaw przykładowych fraz, które nie są nazwami miast. Podziel nazwy miast na dwie części: dużą (powiedzmy 80%) i małą (powiedzmy 20%) część. Trenuj swój model na dużej części (to znaczy zbieraj statystyki na dużej części), a następnie oceń swój model na małej części i na próbce złych fraz. Ustal, czy istnieje rozsądny próg, który przekracza większość nazw miast, ale tylko niewielką liczbę złych fraz.
źródło