Skip to content

5l1v3r1/ml-seotool

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Machine Learning/Statistik SEO Tool

Simples Tool, das einige ML/Statistik Algorithmen für die Analyse von Textdokumenten verwendet. Das ganze ist recht "modular" aufgebaut - von einem Python-Noob :P

Funktionen

  • Abrufen der Top 100 von Google.de zu einem Suchbegriff
  • Extraktion des Inhalts der Top 100
  • Generierung von Tokens, Dictionaries und Corpi mit Gensim/SKLearn
  • Trainieren diverser Algorithmen sowie deren Persistenz
  • Abrufen der Ergebnisse

Algorithmen

  • Latent Semantic Indexing via Gensim
    • Allgemein für Transformation der Corpi
  • TFIDF + Latent Semantic Indexing via Gensim
    • Themen-Extraktion
    • Bestes Dokument zur Suche
  • Latent Dirichlet Allocation via Gensim
    • Top Topic Extraction
    • Bestes Dokument zur Suche
  • Hierarchical Dirichlet Process via Gensim
    • Top Topic Extraction
    • Bestes Dokument zur Suche
  • TFIDF + Latent Dirichlet Allocation via Sklearn
    • Top Topic Extraction
  • TFIDF + Non-negative matrix factorization via Sklearn
    • Top Topic Extraction
  • Approximate Nearest Neighbors via Spotify Annoy
    • Bestes Dokument zur Suche
    • Distanz zwischen Dokumenten

Voraussetzungen

  • Python 3.5
  • Sklearn
  • Numpy
  • annoy
  • gensim
  • BeautifilSoup

Allgemein ist es empfehlenswert einfach auf die Fehlermeldungen zu achten und ggf. einfach via pip zu installieren: "pip install gensim" beispielsweise. Das Tool hat recht viele Abhängigkeiten!

Verwendung

Auf die Schnell kann man die "process-all.sh" öffnen und das Suchwort ändern. Anschließed ausführen via sh. Dabei wird für die Suchquery die Top 100 von google.de (!) heruntergeladen, anschließend wird jedes Ergebnis gecrawled und dessen Content extrahiert. Alle Daten werden in das sluggified Verzeichnis innerhalb von "data/" gespeichert. Daher ist der erste Parameter der Befehle meist die Suche mit der die Daten abgerufen wurden!

Achtung: Das Tool erkennt recht simpel englische Texte und skipped solchen Content. Wenn anderes Vorgehen erwünscht ist, muss man die entsprechenden Dateien anpassen (extract.py). Gleiches gilt für die Extraktion der Top 100. Hier werden bestimmte Seiten übersprungen (youtube.com, .ru-Links, Foren, ...). Ist aber leicht anpassbar.

Alternativ von Hand:

Scrapen:

python3 tool.py scrape "4k fernseher"

Extrahiere Content von min. 20 (der zuvor gescrapten Links), Minimale Anzahl von Wörtern muss 500 betragen:

python3 tool.py extract "4k fernseher" 20 500

Corpus vorbereiten - Mindestlänge der Wörter: 3 Zeichen, Mindestvorkommen der Wörter: 2x, nutze 100 Dokumente, wenn verfügbar:

python3 tool.py prepare "4k fernseher" 3 2 100

Trainiere Modelle für min. 45 Themen:

python3 tool.py train "4k fernseher" 45

Die Parameter (meist Zahlen) definieren, meist wie viele Ergebnisse verwendet werden sollen, wie groß der Corpus sein soll, wie groß ein Wort min. sein muss. Im Quellcode gibt es eig. direkt konkrete Antwort.

Die "process-all.sh" ist vor allem dann einfacher, wenn man zuvor noch kein Crawl gemacht hat. Sind die Daten einmal da, sollte man für das Vorbereiten/Neu trainieren manuell anstoßen.

Ergebnisse anzeigen

Wichtig ist, dass process-all.sh zuvor ausgeführt wurde - damit die Modelle trainiert sind und es überhaupt Daten geben kann. Auch hier kann man allesauf einmal mit "show-results.sh" anzeigen lassen. Zuvor den Suchbegriff analog der "process-all.py" anpassen.

Alternativ von Hand: Extrahiert die Themenkomplexe:

python3 tool.py top-topics "4k fernseher"

Zeigt an, welche Dokuemten am besten auf ein Suchbegriff (hier "smart tv") passen:

python3 tool.py best-doc "4k fernseher" "smart tv"

Vergleicht die Distanz zw. allen Dokumenten:

python3 tool.py distances "4k fernseher"

Sonstiges

Stoplisten

In data/statics findet man einige Stoplisten, die automatisch eingelesen und verwendet werden. Je nach Case lohnt sich da was rein/rauszunehmen. Sieht man dann meist während der Ergebnisse, dass Crap dabei ist. Dann einfach Datei anpassen und prepare.py + train.py, wie oben beschrieben, ausführen.

Google Scraping

Zu schnelles Scrapen führt bei Google schnell zum Ausschluss. Ich schalge max. jede 2 Minuten vor.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 97.6%
  • Shell 2.4%