Szukam wskazówek, jak stworzyć listę haseł. Czy ktoś wie / czy ktoś może zalecić dobrą metodę wyodrębnienia list słów-słów z samego zbioru danych w celu wstępnego przetwarzania i filtrowania?
Dane:
ogromna ilość tekstu ludzkiego o zmiennej długości (wyszukiwarki i całe zdania (do 200 znaków)) przez kilka lat. Tekst zawiera dużo spamu (np. Dane wejściowe z botów, pojedyncze słowa, głupie wyszukiwania, wyszukiwania produktów ...) i tylko kilka% z nich wydaje się przydatne. Uświadomiłem sobie, że czasami (bardzo rzadko) ludzie przeszukują moją stronę, zadając naprawdę fajne pytania. Te pytania są tak fajne, że uważam, że warto przyjrzeć się im głębiej, aby zobaczyć, jak ludzie szukają w czasie i jakie tematy zainteresowali się moją witryną.
Mój problem:
jest to, że naprawdę walczę z przetwarzaniem wstępnym (tj. usuwam spam). Próbowałem już trochę listy słów kluczowych z Internetu (NLTK itp.), Ale tak naprawdę nie zaspokajają moich potrzeb dotyczących tego zestawu danych.
Dziękujemy za pomysły i dyskusje!
stop words
. Stop-wrods znajduje się lista najczęstszych słów w jakimś języku, na przykładI
,the
,a
i tak dalej. Po prostu usuniesz te słowa z tekstu, zanim zaczniesz trenować algorytm, który próbuje zidentyfikować, który tekst jest spamem, czy nie. Nie pomógł ci ustalić, który tekst jest spamem, czy nie, może poprawić algorytm uczenia się.Odpowiedzi:
Jednym z podejść byłoby użycie wyniku tf-idf . Słowa występujące w większości zapytań niewiele pomogą w odróżnieniu dobrych zapytań od złych. Ale te, które występują bardzo często (wysoka tf lub częstotliwość-terminów) tylko w kilku zapytaniach (wysoka idf lub odwrotna częstotliwość dokumentów), które prawdopodobnie będą ważniejsze w odróżnianiu dobrych zapytań od złych.
źródło
To zależy od twojej aplikacji.
Podczas modelowania tematów wypróbuj najpierw domyślne hasła. Kiedy w wielu tematach pojawiają się wyraźne słowa (zwróć uwagę na moje dość niejasne sformułowanie), są dobrymi kandydatami na dodatkowe hasła.
Np. W korpusie z tekstami zawierającymi ryciny i materiały tabelaryczne, słowa „fig”, „figura”, „tab” lub „tabela” są dobrymi dodatkowymi hasłami. W rezultacie Twoje tematy stają się lepiej zdefiniowane.
źródło
Użycie TFIDF (termin odwrotna częstotliwość dokumentów) rozwiąże twój cel. Uzyskaj wynik TFIDF dla każdego słowa w dokumencie i posortuj słowa według ich wyników, według których możesz wybrać ważne słowa w swoich danych.
źródło
Podejście, którego użyłem do zbudowania listy słów kluczowych, to zbudowanie i wyszkolenie modelu regresji logistycznej (ze względu na jego interpretowalność) na danych tekstowych. Weź wartość bezwzględną współczynników dla każdego tokena. Następnie posortuj malejącą wartość bezwzględną współczynników tokenów. Następnie utwórz listę wszystkich tokenów o wysokiej wartości bezwzględnej o wysokim współczynniku, które mogą prowadzić do nadmiernego dopasowania lub które mogą spełniać inne kryteria, aby być słowem kluczowym. Ta lista jest Twoją listą stopwords. Następnie możesz zastosować tę listę słów kluczowych do innego zestawu dokumentów tego typu (coś w rodzaju zestawu testowego), aby sprawdzić, czy ich usunięcie zwiększa dokładność, precyzję lub przywołanie modelu zestawu testowego.
Ta strategia jest skuteczna, ponieważ uwzględnia wpływ tokenów podczas tworzenia listy słów kluczowych.
źródło
W pewnym momencie stopery mogą być częścią rozwiązania, ale nie kluczem. W każdym przypadku dla głównych języków istnieją dobre listy słów kluczowych, nie powinny one być specyficzne dla domeny.
Nie sądzę też, aby samo używanie TD-IDF było naprawdę poprawne. Mogą występować bardzo rzadkie (potencjalnie śmieci) słowa w łańcuchach niskiej jakości.
Zamiast zgadywać, które dokładne funkcje są przydatne: zacznę od utworzenia zestawu danych przez losowe wybranie niektórych danych i etykietowanie ich ręcznie (jako
good
lubbad
, lub w skali od 0,0 do 1,0). Następnie napisz coś, co wyciągnie wiele funkcji (długość, liczbę słów (tokenów), wynik spamu, czy zawiera adresy URL lub znaki botów, wykryty język, czy ma znak zapytania, czy ma odpowiednią wielkość liter). Nie zapomnij także o dodaniu funkcji niejęzykowych, takich jak kraj geoIP użytkownika, który wykonał zapytanie, czy użytkownik był zalogowany, ile lat ma konto użytkownika. W tym momencie będziesz mieć ogromną tabelę / CSV i mniejszą z jedną dodatkową kolumną dla dodanej etykiety.Następnie przećwicz pakiet uczenia maszynowego z tymi etykietowanymi przykładami, aby zbudować model, który będzie dla Ciebie wystarczająco dokładny. Następnie pozwól temu modelowi działać na pozostałych danych.
Jeśli nie chcesz za dużo kodować, możesz nawet przenieść te funkcje do postaci CSV i przekazać je interfejsowi arkusza kalkulacyjnego Google Prediction API .
źródło