# -*- coding: utf-8 -*- #!/usr/bin/python3.6 -S -W ignore from sklearn.feature_extraction.text import TfidfVectorizer from sklearn import model_selection, naive_bayes, svm from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score from sklearn.model_selection import GridSearchCV from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score from sklearn.multiclass import OneVsRestClassifier from tabulate import tabulate from sklearn.svm import SVC from sklearn.svm import LinearSVC import logging import datetime import pprint import codecs import numpy as np import dill # wichtig für joblib load and dump import os import math import nltk # the natural langauage toolkit, open-source NLP import pandas as pd # pandas dataframe import re # regular expression from nltk.corpus import stopwords from gensim.utils import lemmatize from gensim import parsing # Help in preprocessing the data, very efficiently import gensim import numpy as np import pprint import lxml import codecs import os,sys import gzip import json import os import os import codecs import os,sys import gzip import json import re import subprocess from fasttext import train_supervised # pip3 install -U fasttext import fasttext # via Shell filtern #cat unaique.txt | sed -e "s/([.\!?,'/()])/ 1 /g" | tr "[:upper:]" "[:lower:]" >> unaique.preprocessed.txt # https://github.com/facebookresearch/fastText/blob/master/docs/supervised-tutorial.md # http://soner.in/fasttext-grid-search/ # https://github.com/facebookresearch/fastText/blob/master/python/fasttext_module/fasttext/FastText.py #train_data_tmp="/home/unaiqueFRAMEWORK/new_prototyp/fasttext/trainingsdata/train/unaique.preprocessed.txt" #cat unaique.txt | sed -e "s/([.\!?,'/()])/ 1 /g" | tr "[:upper:]" "[:lower:]" >> unaique.preprocessed.txt train_data="/home/seo-auto-scaler/data/data.txt" """ r=codecs.open(train_data_tmp, 'r', encoding='utf-8') data3 = r.read().replace('\n', '').strip().lower() r.close() data3 = re.sub("^[A-Za-z0-9,.!?:;]", "", data3) w=codecs.open(train_data, 'w', encoding='ascii') w.write(data3) w.close() """ text = """ Now this is a big one: Stichwort Textstruktur. Auch einen SEO-Text schreibt man nicht für die Suchmaschine, sondern für die Zielgruppe, die ihn lesen soll. Übersichtlichkeit und Lesefluss sollten daher bei der Texterstellung im Vordergrund stehen. Es beginnt bereits mit der Überschrift: Alle Überschriften sollten als HTML-Überschriften der Ebenen H1-H6 formatiert sein, damit die Dokumentstruktur für Google erkennbar wird. Ein kurzer Teasertext sowie ein knackiges Fazit mit einem Call-to-Action bilden den Rahmen des Beitrags. Teilüberschriften und kurze Absätze erleichtern den Überblick und durch fett markierte Keywords sollte selbst beim Überfliegen des SEO-Textes der Inhalt deutlich werden. Mit Bildern und Grafiken wirkt der Text auch visuell ansprechend; zudem wird so die Möglichkeit geschaffen, Nutzer der Google Bildersuche auf den Beitrag zu locken. Die Textlänge betreffend sei gesagt: Es gibt keine ideale Textlänge für SEO-Texte. Diese ist schlichtweg davon abhängig, um welches Format es sich handelt und wie viel „Stoff“ das Thema hergibt. Zwar kann zum Beispiel die Textlänge von Mitbewerbern eine Orientierungshilfe sein, entscheidend ist jedoch der Mehrwert, der dem Leser im Text vermittelt wird. """ #model = fasttext.train_supervised(train_data, model='skipgram', lr=0.05, dim=250, ws=5, epoch=50) #model = fasttext.train_supervised(train_data, epoch=100, lr=0.25, wordNgrams=3, verbose=2, dim=300, ws=25, minCount=1, loss="softmax") #model = fasttext.train_supervised(train_data, epoch=50, lr=0.1, wordNgrams=3, verbose=2, minCount=1, dim=200, ws=10, loss='hs', thread=10) """ model = fasttext.train_supervised(train_data, epoch=50, lr=0.25, wordNgrams=5, minCount=1, dim=800, ws=10, loss='hs', thread=20, label_prefix='__label__') model.save_model("/home/seo-auto-scaler/data/model/seo_fasttext.bin") exit(1) """ #train_data2="/home/unaiqueFRAMEWORK/new_prototyp/fasttext/trainingsdata/teenager_fasttext70.txt" #model = fasttext.train_unsupervised(train_data2, model='skipgram', lr=0.05, dim=200, ws=5, epoch=50) #model.save_model("/home/unaiqueFRAMEWORK/new_prototyp/fasttext/binary/teenager_fasttext.bin") if os.path.isfile("/dev/shm/seo_fasttext.bin"): model = fasttext.load_model("/dev/shm/seo_fasttext.bin")#("/home/seo-auto-scaler/data/model/seo_fasttext.bin") else: model = fasttext.load_model("/home/seo-auto-scaler/data/model/seo_fasttext.bin") text1 = text.strip() text = "".join([ll.rstrip() for ll in text1.splitlines() if ll.strip()]) val = 0 try: r = model.predict(text, k=1)#, threshold=0.5) print(r[0][0]) print(r[1][0]) val = r[1][0] except Exception as e1: pass #model.quantize(input=train_data, qnorm=True, retrain=False, cutoff=50000) #model.save_model("/home/unaiqueFRAMEWORK/new_prototyp/fasttext/unaique_small.ftz") exit(1)