introduction
Comment peuvent-ils tout scanner sur Internet et renvoyer des résultats pertinents en seulement Environ 5,43,00,000 résultats (0,004 secondes). Bon, travailler sur le concept de Rampant Oui Indexage.
- Rampant: Les robots automatisés recherchent des pages nouvelles ou mises à jour. Et stockez les informations clés telles que: URL, qualification, mots-clés, etc. des pages à utiliser plus tard.
- Indexage: Les données capturées à partir de la trace sont analysées comme: de quoi parle la page. Le contenu clé, les images et les fichiers vidéo de la page sont utilisés dans la procédure. Ces informations sont indexées et stockées pour être renvoyées ultérieurement pour une requête de recherche.
Pour cela, chaque fois que nous leur demandons de trouver quelque chose pour nous, ils ne scannent pas la longueur et la largeur d'Internet, mais il suffit de scanner ces URL indexées à l'étape 2.
Bon, aujourd'hui, nous travaillerions sur la façon de développer un petit prototype, très équivalent à la fonctionnalité d'indexation de n'importe quel moteur de recherche. Nous utiliserions un ensemble de données de tweets dans #COVID et nous essaierions de les indexer en fonction de notre terme de recherche.
UNE. Importation de packages
importer des pandas au format pd à partir de l'importation rank_bm25 *
Qu'est-ce que le BM25?
BM25 est un simple package Python et peut être utilisé pour indexer les données, tweets dans notre cas, basé sur la requête de recherche. Fonctionne sur le concept TF / Tsahal, En d'autres termes.
- TF ou fréquence de terminaison: brièvement, indique le nombre d'occurrences du terme recherché dans notre tweet
- Fréquence de document inversée ou IDF: mesure la pertinence de votre terme de recherche. Puisque TF considère que tous les termes sont d'égale importance, pour cela, on ne peut pas utiliser uniquement des fréquences de termes pour calculer le poids d'une définition dans son texte. Il faudrait peser les termes fréquents tout en développant les termes rares qui montrent leur pertinence pour le tweet.
Une fois la requête exécutée, BM25 montrera la pertinence de votre terme de recherche avec chacun des tweets. Vous pouvez les trier pour indexer les plus pertinents.
B. Préparer vos tweets
Puisqu'il ne s'agit pas d'une discussion sur l'API Twitter, commencera à utiliser un flux basé sur Excel. Vous pouvez nettoyer vos données textuelles dans ces étapes clés pour rendre votre recherche plus robuste.
1. Tokenisation:
Divisez la phrase en mots. Pour que chaque mot puisse être considéré de manière unique.
de nltk.tokenize importer word_tokenize phrase = "Jack est un homme vif d'esprit" mots = mot_tokenize(phrase) imprimer(mots)
Sortir: ['Jack', 'sharp', 'minded', 'fellow']
2. Supprimer les caractères spéciaux:
Supprimez les caractères spéciaux de vos tweets
def spl_chars_removal(ler):
lst1=liste()
pour l'élément dans lst:
str=""
str = re.sub("[-9a-zA-Z]"," ",élément)
lst1.append(str)
retourner lst1
3. Supprimer les mots vides:
Les mots vides sont des mots communs (il est, à, les, etc.) dans les tweets. Ces mots ne signifient aucune pertinence puisqu'ils ne permettent pas de distinguer deux tweets. habitué Gensim pack pour effacer mes mots inutiles, vous pouvez également le tester en utilisant nltk, mais j'ai trouvé Gensim beaucoup plus vite que les autres.
De plus, de nouveaux mots peuvent facilement être ajoutés à la liste des mots vides., au cas où vos données sont spécifiquement entourées par ces mots et qu'ils se produisent plusieurs fois.
#ajouter des mots aux mots vides de nltk.tokenize importer word_tokenize de gensim.parsing.preprocessing import STOPWORDS
#ajouter des mots personnalisés à la liste de mots vides prédéfinie all_stopwords_gensim = STOPWORDS.union(ensemble(['maladie']))
def stopwprds_removal_gensim_custom(ler):
lst1=liste()
pour str dans lst:
text_tokens = word_tokenize(str)
jetons_sans_sw = [mot pour mot dans text_tokens sinon mot dans all_stopwords_gensim]
str_t = " " .joindre(jetons_sans_sw)
lst1.append(str_t)
retourner lst1
4. NormalisationLa normalisation est un processus fondamental dans diverses disciplines, qui vise à établir des normes et des critères uniformes afin d’améliorer la qualité et l’efficacité. Dans des contextes tels que l’ingénierie, Formation et administration, La standardisation facilite la comparaison, Interopérabilité et compréhension mutuelle. Lors de la mise en œuvre des normes, La cohésion est favorisée et les ressources sont optimisées, qui contribue au développement durable et à l’amélioration continue des processus....:
La normalisation du texte est la procédure de transformation d'un texte en une forme canonique (la norme). Par exemple, mot « bon » Oui « Dieu » peut être transformé en « bon », sa forme canonique. Un autre exemple est le mappage de mots presque identiques comme « mots vides », « mots vides » Oui « mots vides » à seulement « mots vides ».
Cette technique est essentielle pour les textes forts comme les commentaires sur les réseaux sociaux., messages texte et commentaires sur les articles de blog où les abréviations prévalent, fautes d'orthographe et utilisation de mots qui ne font pas partie du vocabulaire (oov). Les gens ont tendance à écrire des commentaires en sténographie et, pour cela, ce prétraitement devient très important.
| brut | Standardisé |
| Oui, jour | le jour d'hier |
| tomo, 2moro, 2mrw, tmrw | matin |
| brb | Je retourne tout de suite |
5. Dérivé:
Procédure pour transformer les mots en leur forme racine. C'est la procédure de réduction de l'inflexion des mots (par exemple, problèmes, problèmes) à sa forme racine (par exemple, problèmes). La « racine » dans ce cas, ce n'est peut-être pas un vrai mot racine, mais simplement une forme canonique du mot original.
Stemming utilise une procédure heuristique qui coupe les extrémités des mots dans l'espoir de transformer correctement les mots dans leur forme racine. Doit être revu, puisque dans l'exemple suivant vous pouvez voir que « Machine » Il se transforme en « Voitures », « e » est coupé dans la procédure de contournement..
importer nltk
de nltk.stem
importer PorterStemmer
ps = PorterStemmer() phrase = « L'apprentissage automatique, c'est cool »
pour mot dans phrase.split():
imprimer(ps.stem(mot))
Production: ['Auto', 'Apprentissage', 'frais']
C. Tokenisation des tweets et exécution du BM25
C'est la pièce maîtresse où nous exécutons la requête de recherche. Nous recherchons des tweets basés sur le mot « vaccin » basé sur l'utilisateur. De plus, vous pouvez entrer une phrase et elle le fera couramment lorsque nous convertirons notre terme de recherche à la deuxième ligne ci-dessous.
tokenized_corpus = [doc.split(" ") pour doc dans lst1]
bm25 = BM25Okapi (tokenized_body)
requête = "vaccin" ## Entrez votre requête de recherche
tokenized_query = requête.split (« »)
Vous pouvez vérifier l'association de chaque tweet avec votre terme de recherche en utilisant .obtenir_scores une fonction.
doc_scores = bm25.get_scores(tokenized_query) imprimer(doc_scores)
En entrant n = 5 dans .get_top_n nous obtiendrions cinq autres tweets associés comme résultat. Vous pouvez mettre la valeur de n selon vos besoins.
docs = bm25.get_top_n (tokenized_query, lst1, n = 5)
df_recherche = df[df['Texte'].rayon (documents)]
df_search.head ()
ré. Les cinq principaux tweets associés
| Sommet 5 tweets | Tweeté par |
| @ MikeCarlton01 Concernant le financement #ABC, recherché les documents budgétaires. Après les coupes massives précédentes, eu $ 4.7 millions supplémentaires de fonds (.00044% beaucoup moins que l'inflation).
#Les déchets de Morrison $ Plus cher & ampli; services inefficaces, par exemple, l'appli #Covid inutile; vaccin de livraison #agedcare; conseils sur la mise en œuvre des vaccins. |
MORRIGAN |
| @TonyHWindsor @barriecassidy @ 4corners @ abc730 Pour leur travail inestimable, #ABC a obtenu $ 4.7M supplémentaire en fonds (.00044% beaucoup moins que l'inflation).
Alors que #Morrison Govt dépense comme un marin ivre achetant à des prix chers & ampli; services par les pairs inefficaces (p. ne pas., application #Covid inutile; livraison de vaccins #agedcare; lancement du vaccin) #auspol |
MORRIGAN |
| Ça va être un mois après ma convalescence #Covid. Maintenant je vais aller me faire vacciner 😎😎😎😎 | Simi Elizabeth😃 |
| RT @pradeepkishan: Quel politicien méprisable est #ArvindKejariwal! Au moment où l'accumulation d'oxygène est apparue, leur propagande s'est transformée en pénurie de vaccins. C'est plus dangereux que le #COVID lui-même! @BJP4India @TajinderBagga | p.hariharan |
| RT @AlexBerenson: TL: RD – À l'essai du vaccin #Covid pour adolescents de @pfizer, 4 O 5 (le chiffre exact est caché) de 1,100 les enfants qui ont reçu le vaccin ont eu des effets secondaires graves, en comparaison avec 1 qui a reçu un placebo.
@US_FDA n'a pas révélé de détails spécifiques, donc nous n'avons aucune idée de ce qu'ils étaient ou s'ils suivent un modèle. https://t.co/n5igf2xXFN |
Sagesse |
E. Cas d'utilisation supplémentaires du BM25
Il peut y avoir de nombreux cas d'utilisation où une fonction de recherche est requise. L'un des plus pertinents est l'analyse du PDF et le développement d'une fonction de recherche sur le contenu du PDF.
C'est l'un des cas les plus utilisés pour BM25. Alors que le monde évolue lentement vers une meilleure stratégie de données et des techniques de stockage efficaces, les anciens documents PDF peuvent être récupérés efficacement à l'aide d'algorithmes tels que BM25.
J'espère que vous avez apprécié cette lecture et que vous l'avez trouvée utile. Merci les amis!
Liens de référence
Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.
En rapport
Articles Similaires:
- Créez votre propre ensemble de données d'images à l'aide d'Opencv dans Machine Learning
- Créer un pipeline pour effectuer une analyse des sentiments à l'aide de la PNL
- Comment accélérer votre recherche d'emploi en science des données dans 2021
- Ingénierie fonctionnelle en PNL | Comment faire de l'ingénierie fonctionnelle en PNL



