2016-09-21 8 views
1

j'ai 3 milion résumés et je voudrais extraire 4-grammes d'eux. Je veux construire un modèle de langage donc j'ai besoin de trouver les fréquences de ces 4 grammes.N-grammes - pas en mémoire

Mon problème est que je ne peux pas extraire tous ces 4 grammes en mémoire. Comment puis-je mettre en place un système capable d'estimer toutes les fréquences pour ces 4 grammes?

+0

avez-vous regardé hdf5 ou pytables, pour autant que je sais bien qu'ils se connectent à numpy et sont censés être rapides. – Magellan88

+0

Nous vous remercions de vos commentaires. Je vais les vérifier –

+0

La plupart des 4 grammes apparaissent une seule fois, alors peut-être que vous pouvez obtenir les informations nécessaires en trouvant ceux qui apparaissent plus d'une fois. Une observation clé est qu'un gramme de 4 grammes apparaît plus d'une fois s'il prolonge un trigramme qui apparaît plus d'une fois, et qu'un tel trigramme apparaît plus d'une fois s'il étend un bigram qui apparaît plus d'une fois. Vous pouvez faire les choses par étapes. D'abord trouver de tels bigrammes (éventuellement réalisables) et ensuite trouver les trigrammes et enfin les 4 grammes. Ma réponse à cette question montre cette idée pour les trigrammes: http://stackoverflow.com/a/36935796/4996248 –

Répondre

0

On dirait que vous avez besoin de stocker les comptes de fréquence intermédiaire sur le disque plutôt que dans la mémoire. Heureusement, la plupart des bases de données peuvent le faire, et python peut parler à la plupart des bases de données.

+0

Je l'ai déjà dans mon esprit mais je ne sais pas à quel point c'est efficace. J'ai pensé créer pour chaque 100 000 articles un fichier trié par le premier mot. Puis j'ai implémenté le tri par fusion afin de créer un fichier unique et tous ces 4grams triés. –