Найти Π² Π”Π·Π΅Π½Π΅
МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

πŸ–‹ Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π°Π²Ρ‚ΠΎΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΎΡ€ тСкста Π½Π° Python (Π°Π½Π°Π»ΠΎΠ³ Ρ‚9). Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ nltk.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° NLTK, ΠΈΠ»ΠΈ NLTK, β€” ΠΏΠ°ΠΊΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для символьной ΠΈ статистичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π°Π²Ρ‚ΠΎΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ тСктса Π½Π° python. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм правописания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смогут ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ написанноС слово. Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΡ€ΡƒΡ‚ΠΎ! Natural Language Toolkit nltk Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Natural Language Toolkit, ΠΈ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ возмоТностях Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь. Π’ частности, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: words, edit_distance, jaccard_distance ΠΈ ngrams. edit_distance, jaccard_distance относятся ΠΊ функциям-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для опрСдСлСния слова, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. N-Π³Ρ€Π°ΠΌΠΌΠ° β€” это нСпрСрывная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· n элСмСнтов Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ слова тСкста ΠΈΠ»ΠΈ Ρ€Π΅Ρ‡ΠΈ. НапримСр: Β«Π‘Π΅Π»Ρ‹ΠΉ Π΄ΠΎΠΌΒ» являСтся Π±ΠΈΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² прямом смыслС Π΄ΠΎΠΌ Π±Π΅Π»ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° NLTK, ΠΈΠ»ΠΈ NLTK, β€” ΠΏΠ°ΠΊΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для символьной ΠΈ статистичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π°Π²Ρ‚ΠΎΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ тСктса Π½Π° python. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм правописания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смогут ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ написанноС слово. Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΡ€ΡƒΡ‚ΠΎ!

Natural Language Toolkit

nltk Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Natural Language Toolkit, ΠΈ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ возмоТностях Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Π’ частности, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: words, edit_distance, jaccard_distance ΠΈ ngrams.

edit_distance, jaccard_distance относятся ΠΊ функциям-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для опрСдСлСния слова, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

N-Π³Ρ€Π°ΠΌΠΌΠ° β€” это нСпрСрывная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· n элСмСнтов Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ слова тСкста ΠΈΠ»ΠΈ Ρ€Π΅Ρ‡ΠΈ. НапримСр: Β«Π‘Π΅Π»Ρ‹ΠΉ Π΄ΠΎΠΌΒ» являСтся Π±ΠΈΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² прямом смыслС Π΄ΠΎΠΌ Π±Π΅Π»ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pandas для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

import nltk
from nltk.corpus import words
from nltk.metrics.distance import (
edit_distance,
jaccard_distance,
)
from nltk.util import ngrams
nltk.download('words')
import pandas

words.words() Π΄Π°Π΅Ρ‚ список ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ написанных слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ nltk . spellings_series β€” это проиндСксированный список этих слов.

correct_spellings = words.words()
spellings_series = pandas.Series(correct_spellings)
spellings_series
-2

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°: расстояниС Π–Π°ΠΊΠΊΠ°Ρ€Π°

Π­Ρ‚ΠΎ ΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ, насколько Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π°, я попытался ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ это простым языком Π½ΠΈΠΆΠ΅:

РассматриваСмая строка Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ словом Π² spellings_series.

РасстояниС Π–Π°ΠΊΠΊΠ°Ρ€Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° n Γ— n для кластСризации ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ n Π½Π°Π±ΠΎΡ€ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ. Π­Ρ‚ΠΎ расстояниС являСтся ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΎΠΉ Π½Π° совокупности всСх ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… мноТСств. d ΞΌ (A, B) = 1 - J ΞΌ (A, B)

РасстояниС Π–Π°ΠΊΠΊΠ°Ρ€Π° являСтся ΠΌΠ΅Ρ€ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ, насколько Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° сдлва, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ индСксу Π–Π°ΠΊΠΊΠ°Ρ€Π° (Ρ‚. Π΅. расстояниС Π–Π°ΠΊΠΊΠ°Ρ€Π° = 100% - индСкс Π–Π°ΠΊΠΊΠ°Ρ€Π°).

ΠœΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустой список с Ρ†ΠΈΠΊΠ»ΠΎΠΌ for для ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх слов со списком spellings_series.

Ѐункция jaccard Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ entries and gram_number, Π³Π΄Π΅ entries относятся ΠΊ рассматриваСмым словам, Π° gram_number устанавливаСт количСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… n-Π³Ρ€Π°ΠΌΠΌ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ здСсь). N-Π³Ρ€Π°ΠΌΠΌΠ°Β β€” ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· n элСмСнтов. Π‘ сСмантичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ², слогов, слов ΠΈΠ»ΠΈ Π±ΡƒΠΊΠ². На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‡Π°Ρ‰Π΅ встрСчаСтся N-Π³Ρ€Π°ΠΌΠΌΠ° ΠΊΠ°ΠΊ ряд слов, устойчивыС словосочСтания Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ»Π»ΠΎΠΊΠ°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±ΠΈΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… элСмСнтов называСтся Ρ‚Ρ€ΠΈΠ³Ρ€Π°ΠΌΠΌΠ°. НС ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… ΠΈ Π²Ρ‹ΡˆΠ΅ элСмСнтов ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ N-Π³Ρ€Π°ΠΌΠΌΠ°, N замСняСтся Π½Π° количСство ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

Spellings создаст список Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… слов Π½Π° основС ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ строки. ИспользованиС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрвая Π±ΡƒΠΊΠ²Π° Π½Π΅ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π”Π°Π»Π΅Π΅, Distances Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ расстояния Π–Π°ΠΊΠΊΠ°Ρ€Π° для слов Π² написании с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ jaccard_distance.

НаконСц, closest даст Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ слово с Π»ΡƒΡ‡ΡˆΠΈΠΌ соотвСтствиСм Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ min Π½Π° расстояниях. Π—Π°Ρ‚Π΅ΠΌ это слово Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² список Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΈ этот список Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

def jaccard(entries, gram_number):

outcomes = []
for entry in entries: #iteratively for loop
spellings = spellings_series[spellings_series.str.startswith(entry[0])]
distances = ((jaccard_distance(set(ngrams(entry, gram_number)),
set(ngrams(word, gram_number))), word)
for word in spellings)
closest = min(distances)
outcomes.append(closest[1])
return outcomes

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, с нашСй Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΆΠ°ΠΊΠΊΠ°Ρ€Π΄Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒ слов(Π°Π½Π°Π»ΠΎΠ³ Ρ‚9), JDreco. Π­Ρ‚Π° функция ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список строк Β«cormulentΒ», Β«incidenceΒ», Β«validrateΒ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ список слов.

def JDreco(entries=['cormulent', 'incendenece', 'validrate']):
"""finds the closest word based on jaccard distance"""
return jaccard(entries, 3)
print(JDreco())

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ, Π’Π°ΡˆΠ° пСрвая Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ модСль Π³ΠΎΡ‚ΠΎΠ²Π°!

-3

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°: рСдактирования расстояниС , Ρ‚Π°ΠΊΠΆΠ΅ извСстноС ΠΊΠ°ΠΊ расстояниС Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π°.

РасстояниС Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π° (Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ расстояниС, дистанция рСдактирования)Β β€” ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°, ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‰Π°Ρ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ символов. Она опрСдСляСтся ΠΊΠ°ΠΊ минимальноС количСство ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ вставки, удалСния, Π·Π°ΠΌΠ΅Π½Ρ‹), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для прСвращСния ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, опСрациям, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² этом ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π΅Π½Ρ‹. Π¨ΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ лингвистикС.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚, насколько Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Π²Π΅ строки, Π½Π° основС минимального количСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для прСобразования ΠΎΠ΄Π½ΠΎΠΉ строки Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Как ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, эта функция ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ список слов, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Ѐункция ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ сравниваСт записи со списком ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… слов ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ РасстояниС Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π° Π—Π°Ρ‚Π΅ΠΌ слово с наимСньшим расстояниСм Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ словом.

def editreco(entries=['cormulent', 'incendenece', 'validrate']):

outcomes = []
for entry in entries:
distances = ((edit_distance(entry,
word), word)
for word in correct_spellings)
closest = min(distances)
outcomes.append(closest[1])
return outcomes


editreco()

Вторая рСкомСндованная модСль Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°!

Π’Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ запустим наши ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ. ΠœΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ список ΠΈΠ· 3 слов: вСрсия с ошибкой β€œThree words please”— Β«threa woeds pleeseΒ», посмотрим, ΠΊΠ°ΠΊ ΠΏΠΎΠΉΠ΄Π΅Ρ‚. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдлагаСтся ввСсти Ρ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… слова для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° списка.

userinput = []
for i in range(0,3):
word = input("threa woeds pleese: ")
userinput.append(word)

userinput

Π’Ρ‹Π²ΠΎΠ΄ 1 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ :

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄Π° β€˜thread’, β€˜woe’, β€˜plea’.

JDreco(userinput)
-4

Π’Ρ‹Π²ΠΎΠ΄ 2 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ :

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄Π° β€˜tarea’, β€˜Moed’, β€˜please’

editreco(userinput)

-5

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΎΠΆΠΈΠ΄Π°Π»! ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ editreco Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ прСдлагая «поТалуйста», ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с JDreco.

Π­Ρ‚ΠΎ происходити Π² основном ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² настоящСС врСмя слишком «мСханичСский» ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ слова ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±ΡƒΠΊΠ²Π°ΠΌ. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ созданиС Π°Π²Ρ‚ΠΎΠ·Π°ΠΌΠ΅Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Google ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий.

НСкоторыС Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π±ΡƒΠ΄Ρƒ Π΄Π΅Π»Π°Ρ‚ΡŒ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ прСдлоТСния, Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ ΠΈ сСмантику слов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ популярного срСдства машинного обучСния Pytorch.

Бпасибо за вниманиС!

https://t.me/ai_machinelearning_big_data - Π»ΡƒΡ‡ΡˆΠΈΠΉ рСсурс для изучСния машинного обучСния

https://t.me/pythonl - ΠΊΠ°Π½Π°Π» для изучСния Python