Próbuję wykryć, czy artykuł lub post na forum jest zduplikowanym wpisem w bazie danych. Zastanowiłem się nad tym, dochodząc do wniosku, że ktoś, kto powiela treść, zrobi to za pomocą jednego z trzech (w malejącym, trudnym do wykrycia):
- prosta kopia wklej cały tekst
- kopiuj i wklejaj fragmenty tekstu łącząc je z własnymi
- skopiuj artykuł z zewnętrznej strony i zamaskuj jako własną
Przygotowanie tekstu do analizy
Zasadniczo wszelkie anomalie; celem jest uczynienie tekstu możliwie „czystym”. Aby uzyskać dokładniejsze wyniki, tekst jest „standaryzowany” przez:
- Usuwanie zduplikowanych białych znaków i przycinanie na początku i na końcu.
- Nowe linie są znormalizowane do \ n.
- Tagi HTML są usuwane.
- Za pomocą RegEx o nazwie Daring Fireball URL są usuwane.
- Używam kodu BB w mojej aplikacji, więc idzie do.
- (ä) wyśrodkowane i obce (oprócz Enlgisha) są konwertowane na ich obce formy.
Informacje o każdym artykule przechowuję w (1) tabeli statystyk oraz w (2) tabeli słów kluczowych.
(1) Tabela statystyk Poniższe statystyki są przechowywane o treści tekstowej (podobnie jak ten post)
- długość tekstu
- liczba liter
- Liczba słów
- liczba zdań
- średnia słów na zdanie
- wskaźnik automatycznej czytelności
- wynik strzelającej mgły
W przypadku języków europejskich należy stosować Coleman-Liau i indeks zautomatyzowanej czytelności, ponieważ nie używają liczenia sylab, dlatego powinny dawać dość dokładny wynik.
(2) Tabela słów kluczowych
Słowa kluczowe są generowane przez wykluczenie ogromnej listy słów stop (słów wspólnych), np. „The”, „a”, „of”, „to” itp. Itp.
Przykładowe dane
- długość_tekstu, 3963
- liczba_literów, 3052
- word_count, 684
- zdanie_licznik, 33
- word_per_sentence, 21
- gunning_fog, 11.5
- auto_read_index, 9.9
- słowo kluczowe 1, zabity
- słowo kluczowe 2, oficerowie
- słowo kluczowe 3, policja
Należy zauważyć, że po zaktualizowaniu artykułu wszystkie powyższe statystyki są generowane ponownie i mogą mieć zupełnie inne wartości.
Jak mogę wykorzystać powyższe informacje do wykrycia, czy artykuł, który jest publikowany po raz pierwszy, już istnieje w bazie danych?
Wiem, że wszystko, co zaprojektuję, nie będzie idealne, największym ryzykiem jest (1) Treść, która nie jest duplikatem, zostanie oznaczona jako duplikat (2) System zezwala na duplikowanie treści.
Algorytm powinien więc wygenerować numer oceny ryzyka od 0, że nie jest duplikatem, ryzyko 5 jest możliwe, że jest duplikatem, a 10 jest duplikatem. Jeśli jest powyżej 5, istnieje duża możliwość, że treść jest zduplikowana. W takim przypadku treść może zostać oflagowana i powiązana z artykułami, które są możliwymi duplikatami, a człowiek może zdecydować, czy usunąć, czy zezwolić.
Jak powiedziałem wcześniej, przechowuję słowa kluczowe do całego artykułu, jednak zastanawiam się, czy mógłbym zrobić to samo na podstawie akapitów; oznaczałoby to również dalsze oddzielenie moich danych w bazie danych, ale ułatwiłoby to wykrycie (2) w moim początkowym poście.
Myślę o średniej ważonej między statystykami, ale w jakiej kolejności i jakie byłyby konsekwencje ...