Il n'était pas sûr d'avoir bien entendu. Cela en dépendait tellement! Mais ne redemande pas? c) Boris Akunin. Le monde entier est un théâtre.
En travaillant sur l'assistant vocal mentionné dans l' article précédent , j'ai réalisé que je ne pouvais pas m'empêcher de partager la belle bibliothèque FuzzyWuzzy avec vous .Bref, grâce à elle, il est possible de faire une comparaison de cordes floues sans aucune souffrance.Premiers pas
Pour commencer, vous devez effectuer deux étapes:/ IMPORTANT! Python version 2.7 et supérieure /Étape 1. Installation.Ouvrez la ligne de commande et entrez:pip install fuzzywuzzy
Appuyez sur Entrée.Ensuite, installez python-Levenshtein de la même manière pour accélérer la correspondance des chaînes de 3 à 10 fois.pip install python-Levenshtein
Une fois l'installation terminée, la bibliothèque est prête à être importée.Étape 2. Importation dans le projet.from fuzzywuzzy import fuzz
from fuzzywuzzy import process
Fonctionnel
1. La comparaison la plus courante:a = fuzz.ratio(' ', ' ')
print(a)
Si nous changeons quelques caractères, la sortie obtiendra un nombre différent.a = fuzz.ratio(' ', ' ')
print(a)
2. Comparaison partielle.Ce type de comparaison dans toute la deuxième ligne recherche une correspondance avec la première, par exemple:a = fuzz.partial_ratio(' ', ' !')
print(a)
Oua = fuzz.partial_ratio(' ', ' , ')
print(a)
Mais vous devez vous souvenir du registre, cara = fuzz.partial_ratio(' ', ' , ')
print(a)
3. Comparaison desjetons 1) Lesmots du rapport de tri des jetons sont comparés les uns aux autres, indépendamment de la casse ou de l'ordrea = fuzz.token_sort_ratio(' ', ' ')
print(a)
a = fuzz.token_sort_ratio(' ', ' ')
print(a)
a = fuzz.token_sort_ratio('1 2 ', '1 2 ')
print(a)
2) Token Set RatioCette comparaison, contrairement au passé, équivaut à des chaînes, si leur différence est la répétition de mots.a = fuzz.token_set_ratio(' ', ' ')
print(a)
4. Comparaison régulière avancéeDans de nombreux cas, il est plus approprié d'utiliser WRatio , car il est sensible à la casse et à la ponctuation (ne divise pas la chaîne)a = fuzz.WRatio(' ', '! !')
print(a)
a = fuzz.WRatio(' ', '!, !')
print(a)
5. Travailler avec la listePour comparer les lignes avec les lignes de la liste, le module de processus est utilisécity = ["", "-", "", "", "", "", "", "", "", "", ""]
a = process.extract("", city, limit=2)
print(a)
Si seul le premier de la liste est nécessaire, il est préférable d'utiliser extractOnecity = ["", "-", "", "", "", "", "", "", "", "", ""]
a = process.extractOne("", city)
print(a)
Application
Comment et où appliquer tout ce qui précède dépend de vous, mais voici un exemple tiré de mon article à long terme :
try:
files = os.listdir('C:\\Users\\hartp\\Desktop\\')
filestart = process.extractOne(namerec, files)
if filestart[1] >= 80:
os.startfile('C:\\Users\\hartp\\Desktop\\' + filestart[0])
else:
speak(' ')
except FileNotFoundError:
speak(' ')
Passons en revue le code et comprenons ce qui est quoi. Avec lacommande os.listdir, nous obtenons une liste de tous les fichiers qui sont présents à la fin du chemin spécifié (dans notre cas, vers le bureau).files = os.listdir('C:\\Users\\hartp\\Desktop\\')
print(files)
Ensuite, une comparaison des lignes de la liste des fichiers avec le nom du fichier que l'utilisateur a nommé (variable namerec ). J'espère que vous avez remarqué que le résultat de la fonction extractOne est un tuple de chaîne et de nombre (indice de similarité)Exemple du dernier chapitrecity = ["", "-", "", "", "", "", "", "", "", "", ""]
a = process.extractOne("", city)
print(a)
. Sur cette base, nous vérifions l'index de similitude filestart [1]> = 80 ([1], puisque le tuple est numéroté à partir de 0, comme dans un tableau) et, si la condition est vraie, puis exécutons la fonction os.startfile avec un fichier appelé filestart [0 ]. Sinon, si l'indice de similitude est inférieur à 80 ou si une erreur se produit que le fichier n'a pas été trouvé, nous informons l'utilisateur via la fonction Speak .Toutes les routes mènent à Matan
Caché aux gens qui ont peur des mathématiques, , ().
, .
( , ) — , .
S1 i S2 j
S1=vrhk
S2=rhgr
3 :
- : r → v
- : -r
- : rVhgr
:

0 1? ( — «0»), r , r ( , — «1»). v .
rh h, r ( ), , :

v r ( ).
, — v.
1. ? r , v. r , v, rv. , v v.
v rh

— v h r .
.

vr r , , , , .

vrh r h ( vr r), 2

vr r vrh rh, , .

, vrh rhg , , , - ( ).
, , ( ) — vrhk rhgr.
Merci à tous pour votre attention! J'espère que cet article sera utile à quelqu'un.