Talen worden nu op een snelle manier toegevoegd aan Elasticsearch.
Ik heb al veel gedaan aan de Ngram indexing, maar ik ben hier zeker nog niet tevreden over omdat het nog niet snel genoeg wordt samengevoegd. Voor nu kan de code alle 1-5 grams pakken en dan worden deze samengevoegd op datum, om vervolgens in een CSV opgeslagen te worden. De bijbehorende file hiervoor:
Voor nu heb ik twee verschillende dingen geprobeerd om ngrams samen te voegen van verschillende files, echter heb ik nog geen efficiente manier gevonden. Het zou natuurlijk zo kunnen zijn dat het niet sneller kan, maar dat zou ik mij niet kunnen voorstellen. Eigenlijk zoek ik gewoon nog een import die goed twee countvectorizers van verschillende groottes samen kan voegen. Mijn beste functie tot nu toe is de create_shingle_per_day() functie die in de bovenstaande link te vinden is.
Liefst zou ik ook al deze week werken aan het skelet van mijn scriptie, maar dat zou ik perfect kunnen doen wanneer de ngram indexing code goed is, omdat het dan gewoon op de achtergrond zou kunnen draaien.
Ook ga ik nog verder nadenken over mijn deelvragen en hoe ik die wil gaan beantwoorden.
Hi @AsherIDE , zoals altid weer heell mooie vooritgang. Ik doorzie je probleem niet helemaal maar hier mijn gedachten.
Ik zie allemaall for loops. Weg ermee! Lees het vectorizer deel in data science handboek van Jake van der Plas (hfd 2 over numpy), en laat het tot je doordringen.
Kan je niet zoiets doen:
Count vectorizer per land, per jaar. Geeft je dan een joekel van een vector toch? Van lengte het vocabulair.
Bewaar die in variabelen en als numpy arrays.
Nou wil je die per land samenvoegen. Mij lijkt dat np.hstack of vstack.
Want je wilt eigenlijk van een vector naar een 2D ding per land (met dus dimensies jaren en ngrammen).
Nou heb je al die 2D arrays voor elk land. Nu wil je er een 3D ding van maken.
Ik denk ook weer via hstack of vtack
Ja, ik zie ook wel dat het probleem kan zijn dat je niet altijd het zelfde vocabulair(=alle unieke ngrams) hebt. Dat is effe rottig, want dan gaat mijn verhaaltje niet op.
Ik bedenk maar wat als simpele ziel: waarom maak je niet een document met de union van alle vocabulairs uit alle landen en jaren, en voegt dat toe aan elk jaar/land paar? Dan tel je altijd elke ngarm overal, en zouden dus de vectoeren gelijk moeten zijn.
Snappie? In ieder geval voor 1 taal (engels) moet dit idee toch werken.
Je moet er dan eerst 1 keer doorheen om het hele vocabulair te pakken, en dan nog een keer.
Mar het aan elkaar plakken lijkt me echt heel snel te kunnen, als je geheugen groot genoeg is. En anders moet je het in stukken doen.
Hi @maartenmarx ,
De vooruitgang van deze week is als volgt:
Nog wat mooie uitdagingen voor komende week:
Alvast een fijn weekend,
Asher