Texte rapide en PHP \ Python. Premiers pas

Pourquoi pourquoi




Pendant longtemps, différents types d'algorithmes d'apprentissage automatique ont gagné en popularité. De plus, grâce aux grandes entreprises qui stimulent le progrès technologique, de nombreux produits open source sont apparus. L'un d'eux est Fasttext, qui sera discuté ci-dessous.

Fasttext - développement à partir de Facebook. Le principal objectif du programme est la classification du texte. Une classification des textes peut être nécessaire pour:

  1. combinaison d'informations textuelles en groupes de «similitude» (actualités sur un sujet)
  2. regrouper le texte avec des sujets similaires en un seul groupe (nouvelles sur les voitures)
  3. rechercher des informations pouvant être du spam
  4. recherche de clickbait
  5. ...

En fait, il y a beaucoup d'options, et tout énumérer n'a aucun sens, l'idée devrait être claire.

Première formation


Sur la page de la bibliothèque, il y a une installation étape par étape et une première instruction de formation . Je ne m'attarderai pas sur eux.

petits pains
Ils ont également des modèles prêts à l'emploi dans différentes langues pour la classification ici.

Configuration de la bibliothèque


Le problème de la formation est l'individualité des paramètres. Aucun paramètre ne donne d'excellents résultats garantis. Vous pouvez trouver sur Internet une tonne ( ou pas ) d'articles avec des exemples de paramètres et ils peuvent ne pas vous convenir, car ils donneront un résultat insatisfaisant.

Ce n'est qu'empiriquement que vous pouvez choisir les paramètres qui vous conviennent. Voici une liste de ceux qui affectent de manière significative le résultat:

- dim - dimension contrôle la taille des vecteurs ( beurre ): plus ils sont nombreux, plus ils peuvent capturer d'informations, mais cela nécessite plus de données. Mais s'il y a trop de données, le processus de formation sera plus lent. La valeur par défaut est 100 mesures. Commencez avec 150 et choisissez la valeur optimale pour vous.

- lr - vitesse d'apprentissage. Si le paramètre est très petit, alors le modèle devient plus sensible au texte et peut ne pas distinguer des textes similaires, mais si le paramètre est très grand, au contraire, il peut «dire» que les textes sont similaires, bien qu'en réalité ce ne sera pas le cas. Commencez avec 0,1 (par défaut 0,05).

- époque - nombre d'époques. Il s'agit du nombre de passes selon vos données. Plus - mieux (mais, hélas, pas toujours). Cela augmente le temps de formation. Commencez à 150 (la valeur par défaut est 5).

- modèle d'apprentissage . Lisez la description de Facebook. C'est assez clair.

- perte - comment la comparaison se produira. Tout ici est très individuel et dépend des données.

petite digression
C'est très cool que même sans une connaissance suffisante de la classification des textes et des mécanismes internes du réseau neuronal, vous pouvez obtenir un modèle pleinement fonctionnel.

Préparation du texte


Le texte saisi est également important. Plus le texte est bon, meilleures sont les informations du modèle. Règles de base pour la préparation du texte pour la formation:

  • supprimer toutes les balises
  • cast en minuscules
  • supprimer les caractères de ponctuation
  • supprimer les balises de hachage, les liens
  • exclure les mots vides
  • exclure les petits mots (1,2,3 caractères. ici tout le monde décide pour ses données)

Certains écrivent que vous pouvez simplement insérer du texte dans un modèle et le former. Cette option ne me convenait pas. J'ai tendance à croire que sans prétraitement, on obtient un modèle de mauvaise qualité.

Préparation du texte pour la classification


Les mêmes règles s'appliquent ici, mais l'expérience a montré que ces règles peuvent être complétées par lemmatisation ou stamming. Avec eux, les résultats peuvent être considérablement améliorés ( ou aggravés ). En outre, lorsque vous avez déjà formé des clusters, n'oubliez pas que les algorithmes de clustering doivent également être appliqués à ces clusters, mais très soigneusement, car vous pouvez réduire un sujet similaire en un seul cluster. C'est très évident dans le sport: le mannequin comprend que l'actualité vient du football. Mais il est très difficile de faire distinguer le modèle du championnat d'Espagne du championnat d'Italie.

Langage de programmation


plus que vrai
Comme il a été dit dans le Family Guy: "Oui, personne ne s'en soucie "

Pour former le modèle, vous pouvez choisir à la fois PHP (l'a pris, car la plupart des sites y sont écrits) et Python (il y a une bibliothèque pour cela). Mais il y a un moment très drôle . Vous devez toujours entraîner le modèle en exécutant fasttext à partir de la ligne de commande si le temps de formation vous coûte cher. Donc, peu importe sur quoi écrire le code pour la formation (ce qui est pratique, écrivez dessus).

Quant au mécanisme de clustering, il est un peu plus compliqué ( ou plus simple ). Si vous aimez les vélos ( contrôlez tous les processus vous-même et vous avez besoin d'un mécanisme de contrôle flexible ) écrivez en php (si le site est en php). Si vous ne voulez pas écrire de bibliothèques et qu'il y a un choix de langue, alors il vaut probablement mieux prendre Python. Je n'ai pas remarqué de différence de vitesse significative (dans la vitesse du code, et non dans la vitesse de l'écriture). Ça dépend de vous.

Au lieu d'une conclusion


J'ai un modèle qui est construit uniquement sur le contenu des nouvelles au cours des derniers jours. La taille des mots y est d'environ 40 000 . Tu peux jouer avec elle. Mais gardez à l'esprit que:

  • Ce n'est pas un modèle universel. Elle s'entraîne uniquement sur le contenu des actualités.
  • le modèle ne contient pas toutes les nouvelles de la base de données, mais seulement un éditorial (cela suffit pour résoudre la tâche). Cela signifie que le modèle peut donner un faible pourcentage sur des nouvelles similaires.

Source: https://habr.com/ru/post/fr469917/


All Articles