2016-04-03 2 views
0

J'ai un django Backend (Postgre DB). Supposons qu'une table donnée, disons A, ait un champ appelé "message". Maintenant, ce que je veux faire est de trouver tous les éléments dans A qui ont un 'message' similaire au champ 'message' d'une instance donnée. La similarité sera basée sur un algorithme. TL; DR Je souhaite rechercher des éléments en fonction de la similarité des éléments.Django: Filtre Articles semblables à donné Article

La question comporte 3 parties:

  1. Comment puis-je faire? Puis-je le faire en temps réel (lent) ou devrais-je précalculer la similarité entre tous les éléments du tableau A. (Cela pourrait faire exploser ma base de données)

  2. Comment puis-je trouver des similitudes entre les champs 'message'? Notez que l'article ressemble plus à un message de 400 caractères qu'à un groupe de mots-clés. J'ai rencontré de nombreux algorithmes qui calculent la distance entre les cordes, mais je ne pense pas que cela le réduira. Je pense que quelque chose de TF-IDF suivi de similarité de cosinus est plus approprié.

  3. Comment puis-je atteindre ci-dessus dans le cadre de la production? Comme dans quelle structure de données devrait utiliser pour optimiser le temps de réponse des demandes par rapport au stockage.

+0

Juste une idée. Marquer le champ "message" avec les mots clés importants. Ensuite, recherchez des tags. –

+0

C'est une bonne idée. Mais la procédure doit être automatisée. Par conséquent, j'ai besoin d'un bon moyen d'extraire des mots-clés. Le problème est que 'message' pourrait être un anglais non standard. –

+0

Umm ... Comment à propos de ceci, pour un long message si je ne considère que les verbes et les noms, ce sera raisonnablement un petit ensemble de mots-clés. En cas d'anglais non standard, il n'y a pas de solution facile. –

Répondre