Tf idf: ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° TF-IDF (Term frequency–inverse document frequency) Β· Loginom Wiki

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкстов ΠΏΠΎ похоТСсти Π½Π° ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅ тСксты ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ TF-IDF Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ GENSM / Π₯Π°Π±Ρ€

Π‘Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ поиска тСкстов слишком слоТны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ рСгулярными выраТСниями. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ML. Если ΠΈΠ· списка тСкстов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ самый подходящий для нас, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… тСкстов Π½Π° этот. ΠŸΠΎΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ(similarity) это числСнная ΠΌΠ΅Ρ€Π°, Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ – Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ тСкст ΠΏΠΎΡ…ΠΎΠΆ, поэтому ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΠΎ этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящиС Π½Π°ΠΌ тСксты ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм любой Π½Π°Π±ΠΎΡ€ тСкстов. Π—Π΄Π΅ΡΡŒΒ http://study.mokoron.com/ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ нСбольшоС csv с Ρ‚Π²ΠΈΡ‚Π°ΠΌΠΈ.Β  Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΡ‚ Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π² всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π² pandas наш список тСкстов ΠΈ взглянСм Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

import pandas as pd
import re
from gensim import corpora,models,similarities
from gensim.utils import tokenize
df = pd. Π°-яА-Π―] ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «любой символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся русской Π±ΡƒΠΊΠ²ΠΎΠΉΒ».Β  Π’ΠΎΠΎΠ±Ρ‰Π΅ для создания рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сайт regex. ΠœΠ΅Ρ‚ΠΎΠ΄ str.count Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pandas примСняСт рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ массово Π½Π° вСсь датасСт, выдавая количСство Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… рСгулярок. Π€Π»Π°Π³ re.IGNORECASE это Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ regex, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π΅Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π² тСкстС Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ»ΠΈ строчныС.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния выглядит Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ достаточно, Π½ΠΎ Π΄Π°ΠΆΠ΅ Ссли Π½Π΅Ρ‚, Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ всСгда стоит ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ для облСгчСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Если ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² тСкстС встрСтятся слова Β«Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹ΠΉ Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΒ», Π½ΠΎ Π½Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Β«ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β», ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Β«Π±ΡƒΠΌΠ°.*носит» ΠΈ Β«ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½.*Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β» ΠΈ Π² дальнСйшСм ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ ΠΈΡ… Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½Π°Π΄ΠΎ.

Для нСпосрСдствСнного поиска ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ doc2bow ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ genism, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠΌΠΈΠΌΠΎ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΎΠ½Π° прСдоставляСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ со встроСнной Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² случаС, Ссли ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ тСксты, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сравнСниС, Π΄Π°Π»Π΅Π΅ называя ΠΈΡ… Β«ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅ тСксты».Β  Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа поисков этот список Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ модСль ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ подходящих тСкстов. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° просто возьмСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 5 Ρ‚Π²ΠΈΡ‚ΠΎΠ², Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти тСксты Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅.

texts_to_compare = list(df.head(5)["text"])
['@first_timee Ρ…ΠΎΡ‚ΡŒ я ΠΈ ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°, Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€ΡŒ, Ρƒ нас Ρ‚ΠΎ ΠΆΠ΅ самоС :D общСство ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Ρ‚ΠΈΠΏΠ°)',
 'Π”Π°, всС-Ρ‚Π°ΠΊΠΈ ΠΎΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π½Π΅Π³ΠΎ. Но ΠΌΠΎΠΉ ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ всС Ρ€Π°Π²Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅:D',
 'RT @KatiaCheh: Ну Ρ‚Ρ‹ ΠΈΠ΄ΠΈΠΎΡ‚ΠΊΠ°) я ΠΈΡΠΏΡƒΠ³Π°Π»Π°ΡΡŒ Π·Π° тСбя!!!',
 'RT @digger2912: "ΠšΡ‚ΠΎ Ρ‚ΠΎ Π² ΡƒΠ³Π»Ρƒ сидит ΠΈ ΠΏΠΎΠ³ΠΈΠ±Π°Π΅Ρ‚ ΠΎΡ‚ Π³ΠΎΠ»ΠΎΠ΄Π°, Π° ΠΌΡ‹ Π΅Ρ‰Ρ‘ 2 ΠΏΠΎΡ€Ρ†ΠΈΠΈ взяли, хотя ΡƒΠΆΠ΅ ΠΈ Ρ‚Π°ΠΊ ΠΆΡ€Π°Ρ‚ΡŒ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ" :DD http://t.co/GqG6iuE2…',
 '@irina_dyshkant Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ ΡΡ‚Ρ€Π°ΡˆΠΈΠ»ΠΊΠ° :D\nНо Π±Π»ΠΈΠ½,посмотрСв всС части,Ρƒ тСбя создастся ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅,Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΊΡƒΡ€ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ :D']

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ всС тСксты Π² нашСм датасСтС. На этом этапС осущСствляСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ провСсти мноТСством способов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ мноТСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π‘Π°ΠΌΡ‹Π΅ распространённыС способы Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя:

  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ стоп слов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Β«Π°Β», Β«ΠΈΒ», Β«Π½ΠΎΒ» ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π·Π°Ρ€Π°Π½Π΅Π΅ собранныС словари. МоТно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ NLTK

  • ПониТСниС рСгистра слов Π΄ΠΎ строчных. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ чистый python сам ΠΏΠΎ сСбС ΠΌΠΎΠ³ΡƒΡ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ. НСкоторыС, ΠΌΠΎΠ³ΡƒΡ‚ Π΅Ρ‰Π΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ диакритичСскиС Π·Π½Π°ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ gensim.

  • ЛСмматизация, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ слова ΠΊ словарной Ρ„ΠΎΡ€ΠΌΠ΅. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого дСйствия зависит ΠΎΡ‚ языка, для русского языка этот процСсс Π½Π΅ прост ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. pymystem3 ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ всСгда ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ качСство.

  • Π‘Ρ‚Π΅ΠΌΠΌΠΈΠ½Π³, ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° слов Π΄ΠΎ корня. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«Ρ‡Π°ΠΉΠ½ΠΈΠΊΒ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² Β«Ρ‡Π°ΠΉΒ». ВыполняСтся Ссли потСря смысла Π½Π΅ ΡΡ‚Ρ€Π°ΡˆΠ½Π°. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pymorphy ΠΈ написанныС ΠΏΠΎΠ΄ Π½Π΅Π΅ скрипты для русского языка Π² Π΄ΡƒΡ…Π΅ Π‘Ρ‚Π΅ΠΌΠΌΠ΅Ρ€Π° ΠŸΠΎΡ€Ρ‚Π΅Ρ€Π°.

def tokenize_in_df(strin):
    try:
        return list(tokenize(strin,lowercase=True, deacc=True,))
    except:
        return ""
df["tokens"] = df["text"]. apply(tokenize_in_df)
df.head(5)["tokens"].values
array([list(['first_timee', 'Ρ…ΠΎΡ‚ΡŒ', 'я', 'ΠΈ', 'ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°', 'Π½ΠΎ', 'ΠΏΠΎΠ²Π΅Ρ€ΡŒ', 'Ρƒ', 'нас', 'Ρ‚ΠΎ', 'ΠΆΠ΅', 'самоС', 'd', 'общСство', 'ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΈ', 'ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚', 'Ρ‚ΠΈΠΏΠ°']),
       list(['Π΄Π°', 'всС', 'Ρ‚Π°ΠΊΠΈ', 'ΠΎΠ½', 'Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ', 'ΠΏΠΎΡ…ΠΎΠΆ', 'Π½Π°', 'Π½Π΅Π³ΠΎ', 'Π½ΠΎ', 'ΠΌΠΎΠΈ', 'ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ', 'всС', 'Ρ€Π°Π²Π½ΠΎ', 'Π»ΡƒΡ‡ΡˆΠ΅', 'd']),
       list(['rt', 'katiacheh', 'Π½Ρƒ', 'Ρ‚Ρ‹', 'ΠΈΠ΄ΠΈΠΎΡ‚ΠΊΠ°', 'я', 'ΠΈΡΠΏΡƒΠ³Π°Π»Π°ΡΡŒ', 'Π·Π°', 'тСбя']),
       list(['rt', 'digger', 'ΠΊΡ‚ΠΎ', 'Ρ‚ΠΎ', 'Π²', 'ΡƒΠ³Π»Ρƒ', 'сидит', 'ΠΈ', 'ΠΏΠΎΠ³ΠΈΠ±Π°Π΅Ρ‚', 'ΠΎΡ‚', 'Π³ΠΎΠ»ΠΎΠ΄Π°', 'Π°', 'ΠΌΡ‹', 'Π΅Ρ‰Π΅', 'ΠΏΠΎΡ€Ρ†ΠΈΠΈ', 'взяли', 'хотя', 'ΡƒΠΆΠ΅', 'ΠΈ', 'Ρ‚Π°ΠΊ', 'ΠΆΡ€Π°Ρ‚ΡŒ', 'Π½Π΅', 'Ρ…ΠΎΡ‚ΠΈΠΌ', 'dd', 'http', 't', 'co', 'gqg', 'iue']),
       list(['irina_dyshkant', 'Π²ΠΎΡ‚', 'Ρ‡Ρ‚ΠΎ', 'Π·Π½Π°Ρ‡ΠΈΡ‚', 'ΡΡ‚Ρ€Π°ΡˆΠΈΠ»ΠΊΠ°', 'd', 'Π½ΠΎ', 'Π±Π»ΠΈΠ½', 'посмотрСв', 'всС', 'части', 'Ρƒ', 'тСбя', 'создастся', 'ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅', 'Ρ‡Ρ‚ΠΎ', 'Π°Π²Ρ‚ΠΎΡ€Ρ‹', 'ΠΊΡƒΡ€ΠΈΠ»ΠΈ', 'Ρ‡Ρ‚ΠΎ', 'Ρ‚ΠΎ', 'd'])],
      dtype=object)

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ строчным Π±ΡƒΠΊΠ²Π°ΠΌ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Ρ€Π΅Π½ΠΈΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gensim. tokenize: lowercase=True, deacc=True.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π²ΠΎ всСм нашСм Π½Π°Π±ΠΎΡ€Π΅ тСкстов:

dictionary = corpora.Dictionary(df["tokens"])
feature_cnt = len(dictionary.token2id)
dictionary.token2id
{'d': 0,
 'first_timee': 1,
 'ΠΆΠ΅': 2,
 'ΠΈ': 3,
 'нас': 4,
 'Π½ΠΎ': 5,
 'общСство': 6,
 'ΠΏΠΎΠ²Π΅Ρ€ΡŒ': 7,
 'ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚': 8,
 'ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΈ': 9,
 'самоС': 10,
 'Ρ‚ΠΈΠΏΠ°': 11,
 'Ρ‚ΠΎ': 12,
 'Ρƒ': 13,
 'Ρ…ΠΎΡ‚ΡŒ': 14,
 'ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°': 15,
 'я': 16,
 'всС': 17,
 'Π΄Π°': 18,
 'Π»ΡƒΡ‡ΡˆΠ΅': 19,
…

КаТдоС Π½ΠΎΠ²ΠΎΠ΅ слово ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ свой Π½ΠΎΠΌΠ΅Ρ€. Для дальнСйшСго использования Π½ΠΎΠΌΠ΅Ρ€Π° слов Π² словарС походят Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ сами слова. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ корпус, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² наши Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСксты Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ (Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ bow – bag of words – мСшок слов). Π’Π΅ΠΊΡ‚ΠΎΡ€ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” список ΠΏΠ°Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Β«Π½ΠΎΠΌΠ΅Ρ€ слова Π² словарС : количСство Ρ‚Π°ΠΊΠΈΡ… слов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ тСкстС».

corpus = [dictionary.doc2bow(text) for text in df["tokens"]]
corpus
[[(0, 1),
  (1, 1),
  (2, 1),
  (3, 3),
  (4, 1),
  (5, 1),
  (6, 1),
  (7, 1),
  (8, 1),
  (9, 2),
  (10, 1),
  (11, 1),
  (12, 1),
  (13, 1),
  (14, 2),
  (15, 1),
  (16, 1),
…

ΠŸΡ€Π΅Π»Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ тСкстов, с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ умноТСния, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ идСально Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мощности процСссора ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°ΠΆΠ΅ самых ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² тСкстов ΠΎΡ‡Π΅Π½ΡŒ быстрой.

ИмСнно этим займСтся модСль tf-idf. Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° TF-IDF Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ TF β€” term frequency, IDF β€” inverse document frequency, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ частоты употрСблСния слова Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ тСкстС ΠΊ частотС употрСблСния слова Π²ΠΎ всСх Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½Π°Ρ Π½Π° основС Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ€Ρ‹ модСль прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для поиска ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ совокупныС ΠΌΠ΅Ρ€Ρ‹ тСкстов ΠΌΠ΅ΠΆΠ΄Ρƒ собой, строя ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ похоТСсти.

tfidf = models.TfidfModel(corpus)
index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features = feature_cnt)

Как ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° эта модСль ΠΌΡ‹ смоТСм ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, построив Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π½Π°ΡˆΠΈΡ… ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… тСкстов ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² значСния ΠΈΡ… похоТСстСй ΠΈΠ· ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

for text in texts_to_compare:
    kw_vector = dictionary.doc2bow(tokenize(text))
    df[text] = index[tfidf[kw_vector]]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов, посчитав сумму вСсов ΠΈ оставив тСксты с самыми высокими суммами. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска слов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ, Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² эту сумму, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ.

df["sum"] = 0
for text in texts_to_compare:
    df["sum"] = df["sum"]+df[text]
for word in regex_queries:
    df["sum"] = df["sum"]+df[word]/5  

Π˜Π·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… тСкстов ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π΅Π·Π°Π² ΠΏΠΎ ΠΏΠΎΡ€ΠΎΠ³Ρƒ суммы, ΠΈΠ»ΠΈ отсортировав ΠΏΠΎ суммС ΠΈ ΠΎΠ±Ρ€Π΅Π·Π°Π² датасСт ΠΏΠΎ количСству тСкстов.

df["sum"].value_counts(bins=5)
(-0.0022700000000000003, 0.254]    113040
(0.254, 0.508]                       1829
(0.508, 0.762]                         31
(0.762, 1.016]                          7
(1.016, 1.269]                          4

На этом этапС python ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π² excel:

df[df["sum"]>0.250].to_excel("ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ тСксты.xlsx")

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ поиск Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… тСкстов ΠΈ слов для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Excel, Π·Π° счСт использования Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΈ сортировок.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, отсортируСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ похоТСсти Π½Π° самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ тСкст (ΠΎΠ½, разумССтся, окаТСтся Π½Π° самом ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС ΠΏΡ€ΠΈ сортировкС):

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ ΠΌΡ‹ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ явно Ρ‚Π°ΠΊΠΈΠ΅ слова ΠΊΠ°ΠΊ Β«ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°Β», «общСство» ΠΈ Β«ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Β», ΠΎΠ½Π° нашла ΠΏΠΎ Π½ΠΈΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСксты, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти слова оказались самыми Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌΠΈ.

ПослС нахоТдСния Π½ΡƒΠΆΠ½Ρ‹Ρ… тСкстов самыС подходящиС ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ скрипта, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² список texts_to_compare, уточняя ΠΈΠ»ΠΈ углубляя поиск.

Бсылка Π½Π° ΠΊΠΎΠ΄Β 

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ TF-IDF Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ?

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ TF-IDF Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ Π΅Π³ΠΎ рСализация с использованиСм Python.

Одним ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… способов измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² процСссС машинного обучСния являСтся использованиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° "частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ частотой", Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ TF-IDF. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ TF-IDF Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка программирования Python.

Β 

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ TF-IDF?

ИдСя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° TF-IDF Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ΄Π°Π²Π°Ρ‚ΡŒ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΡŽΠ±ΠΎΠΌΡƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ часто встрСчаСтся Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π½ΠΎ Π½Π΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Π² корпусС. Если слово часто встрСчаСтся Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π½ΠΎ Π½Π΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, ΠΎΠ½ΠΎ, вСроятно, ΡƒΠ΄Π°Ρ‡Π½ΠΎ описываСт содСрТаниС этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Scikit-Learn Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ TF-IDF Π² Π΄Π²ΡƒΡ… классах: TfidfTransformer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, созданныС CountVectorizer, ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΡ…, ΠΈ TfidfVectorizer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ выполняСт ΠΊΠ°ΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° слов, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ TF-IDF.

Β 

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° вСкторизация TF-IDF?

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ поисковой систСмы Π΅ΡΡ‚ΡŒ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… с тысячами описаний кошСк, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡƒΡˆΠΈΡΡ‚Ρ‹Ρ… кошСк, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ запрос Β«The furry catΒ». Поисковой систСмС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Если Π² поисковой систСмС Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ запросу, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сомнСний, Π½ΠΎ Ρ‡Ρ‚ΠΎ, Ссли Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ частичными совпадСниями? Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ, скаТСм, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя описаниями:

  • Β«The pretty catΒ»
  • Β«A furry kittenΒ»

Β 

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ описаниС содСрТит 2 ΠΈΠ· 3 слов запроса, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΠΈΠ· 3, Ρ‚ΠΎΠ³Π΄Π° поисковая систСма Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ описаниС. Как TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ описаниС вмСсто ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ?

TF ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова, здСсь Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹. Однако ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Β«catΒ» ΠΈ Β«kittenΒ» Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… (высокая частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΈΠΉ IDF), Π° Π²ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β Β«furryΒ» Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π² мСньшСм количСствС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (IDF Π²Ρ‹ΡˆΠ΅). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, TF-IDF для Β«catΒ» ΠΈ Β«kittenΒ» ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° TF-IDF Π±ΡƒΠ΄Π΅Ρ‚ большС для Β«hairyΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² нашСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… слово Β«hairyΒ» ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ силу. Π Π°Π·Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Β«catΒ» ΠΈ Β«kittenΒ».

Если ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ TF-IDF для взвСшивания Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… слов, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… запросу, слово Β«furryΒ» Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ слово Β«catΒ», ΠΈ поэтому ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Β«A furry kittenΒ» ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅Π΅ соотвСтствиС.

Β 

РСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ TF-IDF с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ использованиСм языка программирования Python. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° рСализация Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ TF-IDF с использованиСм Scikit-learn:

Β 

from sklearn. feature_extraction.text import TfidfVectorizer
corpus = [
    'This is the first document.',
    'This document is the second document.',
    'And this is the third one.',
    'Is this the first document?',
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.shape)

Β 

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

(4, 9)

Β 

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ TF-IDF ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для поиска слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π½ΠΎ это Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. ВозмоТности с Π½ΠΈΠ·ΠΊΠΈΠΌ TF-IDF – это Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΠΈΠ±ΠΎ ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ TF-IDF Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ.

Β 

ПониманиС TF-IDF для машинного обучСния

машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

6 октября 2021 Π³.

НСТноС Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ частотно-обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

6 октября 2021 Π³.


90 002 TF-IDF ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ частоту Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° - обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° 90Β 015, ΠΈ это ΠΌΠ΅Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² области поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (IR) ΠΈ машинного обучСния, которая ΠΌΠΎΠΆΠ΅Ρ‚ количСствСнно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ строковых прСдставлСний (слов, Ρ„Ρ€Π°Π·, Π»Π΅ΠΌΠΌ ΠΈΒ Ρ‚.Β Π΄.) Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ срСди Π½Π°Π±ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ корпус).

ΠžΠ±Π·ΠΎΡ€ TF-IDF

TF-IDF ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ части: TF (частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°), ΠΈ IDF (обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ TF (Ρ‚Π΅Ρ€ΠΌΠΈΠ½ частота)?

Частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, глядя Π½Π° частоту ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вас интСрСсуСт ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. БущСствуСт нСсколько ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ способов опрСдСлСния частоты:

  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° слово появляСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ (Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ количСство).
  • Частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² с ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ количСство Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ, Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° количСство слов Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅).
  • Частота Π² логарифмичСском ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, log(1 + Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ счСт)).
  • ЛогичСская частота (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1, Ссли Ρ‚Π΅Ρ€ΠΌΠΈΠ½ встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, ΠΈΠ»ΠΈ 0, Ссли Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π½Π΅ встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ IDF (обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°)?

Π˜Π½Π²Π΅Ρ€ΡΠΈΡ частоты Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько часто (ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ) встрСчаСтся слово Π² корпусС. IDF рассчитываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π³Π΄Π΅ t β€” это Ρ‚Π΅Ρ€ΠΌΠΈΠ½ (слово), ΠΎΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ, Π° N β€” это количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (d) Π² корпусС (D). Π—Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ β€” это просто количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ появляСтся Ρ‚Π΅Ρ€ΠΌΠΈΠ½ t .Β 

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ изобраТСния: https://monkeylearn.com/blog/what-is-tf-idf/

Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² корпусС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС дСлСния Π½Π° ноль. Один ΠΈΠ· способов ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим - Π²Π·ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ счСтчик ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, получаСтся Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ (1 + счСтчик). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ с этим справляСтся популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° scikit-learn, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΈΠΆΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ изобраТСния: https://towardsdatascience.com/how-sklearns-tf-idf-is-different-from-the-standard-tf-idf-275fa582e73d

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ IDF, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ слова like Β«ofΒ», Β«asΒ», Β«theΒ» ΠΈ Ρ‚. Π΄., ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² английском корпусС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, примСняя ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ частоты Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ вСс частых Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ нСчастыС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большСС влияниС.

НаконСц, IDF Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΈΠ· Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ корпуса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ экспСримСнтС.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ вмСстС: TF-IDF

Подводя ΠΈΡ‚ΠΎΠ³ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΠΈ, ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ TF-IDF, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° Π΅Π³ΠΎ частотС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. TF Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ часто Ρ‚Π΅Ρ€ΠΌΠΈΠ½ появляСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΈ IDF Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ рСдкости Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΠ² эти значСния вмСстС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ TF-IDF.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ изобраТСния: https://monkeylearn.com/blog/what-is-tf-idf/

Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π±Π°Π»Π» TF-IDF, Ρ‚Π΅ΠΌ Π²Π°ΠΆΠ½Π΅Π΅ ΠΈΠ»ΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π΅Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½; ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ становится ΠΌΠ΅Π½Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌ, Π΅Π³ΠΎ ΠΎΡ†Π΅Π½ΠΊΠ° TF-IDF приблиТаСтся ΠΊ 0,9.0003

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TF-IDF

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΎΠΉ для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, насколько Π²Π°ΠΆΠ΅Π½ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Но ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ TF-IDF? Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных прилоТСния для TF-IDF. Π­Ρ‚ΠΎ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ , поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ тСкста/ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов.

ИспользованиС TF-IDF Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ СстСствСнного языка

Алгоритмы машинного обучСния часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ числовыС Π΄Π°Π½Π½Ρ‹Π΅, поэтому ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ любой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка (NLP) ΠΏΠΎΠ΄ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ML/AI, связанная с тСкст, эти Π΄Π°Π½Π½Ρ‹Π΅ сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ числовых Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ процСсса, извСстного ΠΊΠ°ΠΊ вСкторизация. ВСкторизация TF-IDF Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя вычислСниС ΠΎΡ†Π΅Π½ΠΊΠΈ TF-IDF для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π² вашСм корпусС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ (см. ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Β«AΒ» ΠΈ Β«BΒ»). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² вашСм корпусС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свой собствСнный Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ TF-IDF для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ слова Π²ΠΎ всСй ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Когда Ρƒ вас Π΅ΡΡ‚ΡŒ эти Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌ использования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΠΎΡ…ΠΎΠΆΠΈ Π»ΠΈ Π΄Π²Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, сравнивая ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ TF-IDF с использованиСм косинусного сходства.

A = Β«ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ двиТСтся ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅Β»; B = Β«Π“Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ Π΅Π΄Π΅Ρ‚ ΠΏΠΎ шоссС» Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· freeCodeCamp β€” Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TF-IDF Π² Python (https://www.freecodecamp.org/news/how-to-process-textual-data-using -tf-idf-in-python-cd2bbc0a94a3/)

ИспользованиС TF-IDF Π² поискС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

TF-IDF Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π² области поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· распространСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ поисковыС систСмы. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΎ значимости Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π½Π° основС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, поисковая систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TF-IDF, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π½Π° основС рСлСвантности, с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ с Π±ΠΎΠ»Π΅Π΅ высоким TF-IDF. Π±Π°Π»Π»Ρ‹.

ИспользованиС TF-IDF для суммирования тСкста ΠΈ извлСчСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ TF-IDF Π²Π·Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚ слова Π½Π° основС рСлСвантности, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ слова с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅ΠΉ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π±ΠΎΠ»Π΅Π΅ эффСктивного обобщСния статСй ΠΈΠ»ΠΈ просто для опрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚Π΅Π³ΠΎΠ²) для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ влоТСния слов: TF-IDF, Word2Vec, Bag-of-words, BERT

Как ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, TF-IDF ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ тСкста Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π±ΠΎΠ»Π΅Π΅ подходящий для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ML ΠΈ NLP. Однако, хотя это популярный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΠ›ΠŸ, ΠΎΠ½ Π½Π΅ СдинствСнный.

Bag of Words

Bag of Words (BoW) просто подсчитываСт частоту слов Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π΅ΠΊΡ‚ΠΎΡ€ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ частоту ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π² корпусС для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ слов ΠΈ TF-IDF Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ частоту Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (IDF) ΠΈ прСдставляСт собой Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подсчСт частоты (TF).

Word2Vec

Word2Vec β€” это Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ повСрхностныС двухслойныС, Π° Π½Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ корпуса ΠΈ создания Π½Π°Π±ΠΎΡ€ΠΎΠ² Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ². НСкоторыС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ TF-IDF ΠΈ word2vec Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ TF-IDF β€” это статистичСская ΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для формирования Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ word2vec создаст Π²Π΅ΠΊΡ‚ΠΎΡ€ для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°. Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ этот Π½Π°Π±ΠΎΡ€ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, TF-IDF Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ контСкст слов Π² корпусС, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ word2vec.

BERT β€” прСдставлСния Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΎΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

BERT β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ ML/NLP, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Google, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ модСль ML Π½Π° основС прСобразоватСля для прСобразования Ρ„Ρ€Π°Π·, слов ΠΈΒ Ρ‚. Β Π΄. Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ TF-IDF ΠΈ BERT Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: TF-IDF Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сСмантичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ контСкст слов, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ BERT. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, BERT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ своСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, Ρ‡Π΅ΠΌ TF-IDF, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы использования TF-IDF

ΠŸΠ»ΡŽΡΡ‹ использования TF-IDF

Π‘Π°ΠΌΡ‹Π΅ большиС прСимущСства TF-IDF Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, насколько ΠΎΠ½ прост ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² использовании. Π­Ρ‚ΠΎ просто Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, это дСшСво Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, ΠΈ это простая отправная Ρ‚ΠΎΡ‡ΠΊΠ° для вычислСний подобия (Ρ‡Π΅Ρ€Π΅Π· Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ TF-IDF + косинусноС сходство).

ΠœΠΈΠ½ΡƒΡΡ‹ использования TF-IDF

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ TF-IDF Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ сСмантичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Он ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ слов ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡ… Π²Π·Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ контСксты слов ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΊΠ°ΠΊ ΠΈ BoW, TF-IDF ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ порядок слов, поэтому составныС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«ΠšΠΎΡ€ΠΎΠ»Π΅Π²Π° Англии», Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ «Сдиная Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Β». Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ распространяСтся Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ситуации, ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ с Β«Π½Π΅ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ счСт» ΠΈ Β«ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ счСт», Π³Π΄Π΅ порядок ΠΈΠΌΠ΅Π΅Ρ‚ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях с использованиСм инструмСнтов NER ΠΈ символов подчСркивания Β«queen_of_englandΒ» ΠΈΠ»ΠΈ Β«not_payΒ» β€” это способы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Ρ€Π°Π·Ρ‹ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

Π”Ρ€ΡƒΠ³ΠΈΠΌ нСдостатком являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ нСэффСктивного использования памяти, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ проклятия размСрности. Напомним, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² TF-IDF Ρ€Π°Π²Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ словаря. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… контСкстах классификации это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… контСкстах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ кластСризация, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² (BERT, Word2Vec).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

TF-IDF (частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² β€” обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) β€” это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ частоту слов для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, насколько Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ эти слова для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простой, Π½ΠΎ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ взвСшиванию слов, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ для мноТСства Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя созданиС поисковых систСм, ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² области поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ машинного обучСния.



Π—ΠΠ―Π’Π›Π•ΠΠ˜Π• О РАБКРЫВИИ ИНЀОРМАЦИИ: Β© 2021 Capital One. МнСния ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΡ€Ρƒ. Если Π² этом постС Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅, Capital One Π½Π΅ связана ΠΈ Π½Π΅ поддСрТиваСтся Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· упомянутых ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ВсС Ρ‚ΠΎΠ²Π°Ρ€Π½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ ΠΈ другая ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΈΠ»ΠΈ отобраТаСмая, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π².

ПониманиС TF-ID: простоС Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅

TF-IDF (Ρ‚Π΅Ρ€ΠΌΠΈΠ½ частотно-обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) β€” это статистичСская ΠΌΠ΅Ρ€Π°, которая ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚, насколько Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎ слово Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π­Ρ‚ΠΎ дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ умноТСния Π΄Π²ΡƒΡ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ: сколько Ρ€Π°Π· слово встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΈ обратная частота встрСчаСмости слова Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Он ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° тСкста, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для подсчСта слов Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… машинного обучСния для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка (NLP).

TF-IDF Π±Ρ‹Π» ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ для поиска Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡΡΡŒ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ количСству Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слово встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π½ΠΎ компСнсируСтся количСством Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих это слово. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ это, Ρ‡Ρ‚ΠΎ ΠΈ Ссли, ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ большого значСния для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² частности.

Однако, Ссли слово Ошибка ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· встрСчаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ…, это, вСроятно, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ. НапримСр, Ссли ΠΌΡ‹ пытаСмся Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ относятся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ NPS, слово Bug , вСроятно, окаТСтся связанным с Ρ‚Π΅ΠΌΠΎΠΉ Β«ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², содСрТащих это слово, Π±ΡƒΠ΄ΡƒΡ‚ посвящСны этой Ρ‚Π΅ΠΌΠ΅.

Как рассчитываСтся TF-IDF?

TF-IDF для слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ вычисляСтся ΠΏΡƒΡ‚Π΅ΠΌ умноТСния Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

  • Частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π•ΡΡ‚ΡŒ нСсколько способов подсчСта этой частоты, самый простой ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” это Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ подсчСт случаСв появлСния слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ способы Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ частоту ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ частотС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.
  • обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° слова Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, насколько часто ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся слово Π²ΠΎ всСм Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π§Π΅ΠΌ ΠΎΠ½ Π±Π»ΠΈΠΆΠ΅ ΠΊ 0, Ρ‚Π΅ΠΌ слово встрСчаСтся Ρ‡Π°Ρ‰Π΅. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, взяв ΠΎΠ±Ρ‰Π΅Π΅ количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Π΅Π³ΠΎ Π½Π° количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих слово, ΠΈ вычислив Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ.
  • Π˜Ρ‚Π°ΠΊ, Ссли слово ΠΎΡ‡Π΅Π½ΡŒ распространСно ΠΈ появляСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, это число Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΊ 0. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΊ 1.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ этих Π΄Π²ΡƒΡ… чисСл Π΄Π°Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΊΡƒ TF-IDF для слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΎΡ†Π΅Π½ΠΊΠ°, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌ являСтся это слово Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.

Говоря Π±ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ матСматичСски, ΠΎΡ†Π΅Π½ΠΊΠ° TF-IDF для слова t Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ d ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² D рассчитываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π“Π΄Π΅:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ TF-IDF ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ?

МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ с использованиСм СстСствСнного языка сталкиваСтся с ΠΎΠ΄Π½ΠΈΠΌ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ прСпятствиСм β€” Π΅Π³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с числами, Π° СстСствСнный язык β€” это тСкст. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ этот тСкст Π² числа, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ вСкторизация тСкста. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ шаг Π² процСссС машинного обучСния для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ сильно ΠΏΠΎΠ²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ даст ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΈ слова Π² числа способом, понятным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ машинного обучСния, ΠΎΡ†Π΅Π½ΠΊΡƒ TF-IDF ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΈΠ²Π½Ρ‹ΠΉ байСсовский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΠΎΠ»Π΅Π΅ простых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ слово считаСт.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π²Π΅ΠΊΡ‚ΠΎΡ€ слов прСдставляСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Π²ΠΈΠ΄Π΅ списка чисСл, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ слова корпуса. ВСкторизация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π±Π΅Ρ€Π΅Ρ‚ тСкст ΠΈ создаСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ содСрТимоС тСкста. TF-IDF позволяСт Π½Π°ΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ с числом, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт, насколько Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π’ΠΎΠ³Π΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ словами Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ ΠΈΡ‰Π΅ΠΌ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ машинного обучСния.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ TF-IDF

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стСпСни рСлСвантности слова Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈΠ»ΠΈ TD-IDF ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

поиска ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для прСдоставлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ поисковая систСма, ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΡ‰Π΅Ρ‚ Π›Π΅Π±Ρ€ΠΎΠ½Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² порядкС рСлСвантности. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ спортивныС ΡΡ‚Π°Ρ‚ΡŒΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокий Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ TF-IDF Π΄Π°Π΅Ρ‚ слову Π›Π΅Π±Ρ€ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ высокий Π±Π°Π»Π».

Π’ΠΏΠΎΠ»Π½Π΅ вСроятно, Ρ‡Ρ‚ΠΎ каТдая поисковая систСма, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² своСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΎΡ†Π΅Π½ΠΊΠΈ TF-IDF.

  • Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов

TF-IDF Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для извлСчСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈΠ· тСкста. Как? Π‘Π»ΠΎΠ²Π° с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΌ Π±Π°Π»Π»ΠΎΠΌ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈ поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слова

ПолСзно ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ TF-IDF, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ машинного обучСния. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ машинного обучСния Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с числами, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ TF-IDF ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ слова, выдСляя ΠΈΠΌ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎ для машинного обучСния, особСнно Π² областях, связанных с ΠΠ›ΠŸ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ· тСкста.

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ машинного обучСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ TF-IDF ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ катСгориям, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова.

This entry was posted in ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠ΅

Tf idf: ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ° TF-IDF (Term frequency–inverse document frequency) Β· Loginom Wiki

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкстов ΠΏΠΎ похоТСсти Π½Π° ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅ тСксты ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ TF-IDF Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ GENSM / Π₯Π°Π±Ρ€

Π‘Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ поиска тСкстов слишком слоТны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ рСгулярными выраТСниями. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ML. Если ΠΈΠ· списка тСкстов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ самый подходящий для нас, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… тСкстов Π½Π° этот. ΠŸΠΎΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ(similarity) это числСнная ΠΌΠ΅Ρ€Π°, Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ – Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ тСкст ΠΏΠΎΡ…ΠΎΠΆ, поэтому ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΠΎ этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящиС Π½Π°ΠΌ тСксты ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм любой Π½Π°Π±ΠΎΡ€ тСкстов. Π—Π΄Π΅ΡΡŒΒ http://study.mokoron.com/ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ нСбольшоС csv с Ρ‚Π²ΠΈΡ‚Π°ΠΌΠΈ.Β  Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΡ‚ Ρ‚Π΅Ρ…ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π² всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π² pandas наш список тСкстов ΠΈ взглянСм Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

import pandas as pd
import re
from gensim import corpora,models,similarities
from gensim.utils import tokenize
df = pd. Π°-яА-Π―] ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «любой символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся русской Π±ΡƒΠΊΠ²ΠΎΠΉΒ».Β  Π’ΠΎΠΎΠ±Ρ‰Π΅ для создания рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сайт regex. ΠœΠ΅Ρ‚ΠΎΠ΄ str.count Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pandas примСняСт рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ массово Π½Π° вСсь датасСт, выдавая количСство Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… рСгулярок. Π€Π»Π°Π³ re.IGNORECASE это Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ regex, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π΅Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π² тСкстС Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ»ΠΈ строчныС.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния выглядит Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ достаточно, Π½ΠΎ Π΄Π°ΠΆΠ΅ Ссли Π½Π΅Ρ‚, Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ всСгда стоит ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ для облСгчСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Если ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² тСкстС встрСтятся слова Β«Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹ΠΉ Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΒ», Π½ΠΎ Π½Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Β«ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β», ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Β«Π±ΡƒΠΌΠ°.*носит» ΠΈ Β«ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½.*Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Β» ΠΈ Π² дальнСйшСм ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ ΠΈΡ… Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½Π°Π΄ΠΎ.

Для нСпосрСдствСнного поиска ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ doc2bow ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ genism, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠΌΠΈΠΌΠΎ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΎΠ½Π° прСдоставляСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ со встроСнной Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² случаС, Ссли ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ тСксты, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сравнСниС, Π΄Π°Π»Π΅Π΅ называя ΠΈΡ… Β«ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅ тСксты».Β  Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа поисков этот список Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ модСль ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ подходящих тСкстов. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° просто возьмСм ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 5 Ρ‚Π²ΠΈΡ‚ΠΎΠ², Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти тСксты Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅.

texts_to_compare = list(df.head(5)["text"])
['@first_timee Ρ…ΠΎΡ‚ΡŒ я ΠΈ ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°, Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€ΡŒ, Ρƒ нас Ρ‚ΠΎ ΠΆΠ΅ самоС :D общСство ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Ρ‚ΠΈΠΏΠ°)',
 'Π”Π°, всС-Ρ‚Π°ΠΊΠΈ ΠΎΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π½Π΅Π³ΠΎ. Но ΠΌΠΎΠΉ ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ всС Ρ€Π°Π²Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅:D',
 'RT @KatiaCheh: Ну Ρ‚Ρ‹ ΠΈΠ΄ΠΈΠΎΡ‚ΠΊΠ°) я ΠΈΡΠΏΡƒΠ³Π°Π»Π°ΡΡŒ Π·Π° тСбя!!!',
 'RT @digger2912: "ΠšΡ‚ΠΎ Ρ‚ΠΎ Π² ΡƒΠ³Π»Ρƒ сидит ΠΈ ΠΏΠΎΠ³ΠΈΠ±Π°Π΅Ρ‚ ΠΎΡ‚ Π³ΠΎΠ»ΠΎΠ΄Π°, Π° ΠΌΡ‹ Π΅Ρ‰Ρ‘ 2 ΠΏΠΎΡ€Ρ†ΠΈΠΈ взяли, хотя ΡƒΠΆΠ΅ ΠΈ Ρ‚Π°ΠΊ ΠΆΡ€Π°Ρ‚ΡŒ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ" :DD http://t.co/GqG6iuE2…',
 '@irina_dyshkant Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ ΡΡ‚Ρ€Π°ΡˆΠΈΠ»ΠΊΠ° :D\nНо Π±Π»ΠΈΠ½,посмотрСв всС части,Ρƒ тСбя создастся ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅,Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΊΡƒΡ€ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ :D']

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ всС тСксты Π² нашСм датасСтС. На этом этапС осущСствляСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ провСсти мноТСством способов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ мноТСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π‘Π°ΠΌΡ‹Π΅ распространённыС способы Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя:

  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ стоп слов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Β«Π°Β», Β«ΠΈΒ», Β«Π½ΠΎΒ» ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π·Π°Ρ€Π°Π½Π΅Π΅ собранныС словари. МоТно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ NLTK

  • ПониТСниС рСгистра слов Π΄ΠΎ строчных. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ чистый python сам ΠΏΠΎ сСбС ΠΌΠΎΠ³ΡƒΡ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ. НСкоторыС, ΠΌΠΎΠ³ΡƒΡ‚ Π΅Ρ‰Π΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ диакритичСскиС Π·Π½Π°ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ gensim.

  • ЛСмматизация, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ слова ΠΊ словарной Ρ„ΠΎΡ€ΠΌΠ΅. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этого дСйствия зависит ΠΎΡ‚ языка, для русского языка этот процСсс Π½Π΅ прост ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. pymystem3 ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ всСгда ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ качСство.

  • Π‘Ρ‚Π΅ΠΌΠΌΠΈΠ½Π³, ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π΅Π·ΠΊΠ° слов Π΄ΠΎ корня. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«Ρ‡Π°ΠΉΠ½ΠΈΠΊΒ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² Β«Ρ‡Π°ΠΉΒ». ВыполняСтся Ссли потСря смысла Π½Π΅ ΡΡ‚Ρ€Π°ΡˆΠ½Π°. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pymorphy ΠΈ написанныС ΠΏΠΎΠ΄ Π½Π΅Π΅ скрипты для русского языка Π² Π΄ΡƒΡ…Π΅ Π‘Ρ‚Π΅ΠΌΠΌΠ΅Ρ€Π° ΠŸΠΎΡ€Ρ‚Π΅Ρ€Π°.

def tokenize_in_df(strin):
    try:
        return list(tokenize(strin,lowercase=True, deacc=True,))
    except:
        return ""
df["tokens"] = df["text"]. apply(tokenize_in_df)
df.head(5)["tokens"].values
array([list(['first_timee', 'Ρ…ΠΎΡ‚ΡŒ', 'я', 'ΠΈ', 'ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°', 'Π½ΠΎ', 'ΠΏΠΎΠ²Π΅Ρ€ΡŒ', 'Ρƒ', 'нас', 'Ρ‚ΠΎ', 'ΠΆΠ΅', 'самоС', 'd', 'общСство', 'ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΈ', 'ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚', 'Ρ‚ΠΈΠΏΠ°']),
       list(['Π΄Π°', 'всС', 'Ρ‚Π°ΠΊΠΈ', 'ΠΎΠ½', 'Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ', 'ΠΏΠΎΡ…ΠΎΠΆ', 'Π½Π°', 'Π½Π΅Π³ΠΎ', 'Π½ΠΎ', 'ΠΌΠΎΠΈ', 'ΠΌΠ°Π»ΡŒΡ‡ΠΈΠΊ', 'всС', 'Ρ€Π°Π²Π½ΠΎ', 'Π»ΡƒΡ‡ΡˆΠ΅', 'd']),
       list(['rt', 'katiacheh', 'Π½Ρƒ', 'Ρ‚Ρ‹', 'ΠΈΠ΄ΠΈΠΎΡ‚ΠΊΠ°', 'я', 'ΠΈΡΠΏΡƒΠ³Π°Π»Π°ΡΡŒ', 'Π·Π°', 'тСбя']),
       list(['rt', 'digger', 'ΠΊΡ‚ΠΎ', 'Ρ‚ΠΎ', 'Π²', 'ΡƒΠ³Π»Ρƒ', 'сидит', 'ΠΈ', 'ΠΏΠΎΠ³ΠΈΠ±Π°Π΅Ρ‚', 'ΠΎΡ‚', 'Π³ΠΎΠ»ΠΎΠ΄Π°', 'Π°', 'ΠΌΡ‹', 'Π΅Ρ‰Π΅', 'ΠΏΠΎΡ€Ρ†ΠΈΠΈ', 'взяли', 'хотя', 'ΡƒΠΆΠ΅', 'ΠΈ', 'Ρ‚Π°ΠΊ', 'ΠΆΡ€Π°Ρ‚ΡŒ', 'Π½Π΅', 'Ρ…ΠΎΡ‚ΠΈΠΌ', 'dd', 'http', 't', 'co', 'gqg', 'iue']),
       list(['irina_dyshkant', 'Π²ΠΎΡ‚', 'Ρ‡Ρ‚ΠΎ', 'Π·Π½Π°Ρ‡ΠΈΡ‚', 'ΡΡ‚Ρ€Π°ΡˆΠΈΠ»ΠΊΠ°', 'd', 'Π½ΠΎ', 'Π±Π»ΠΈΠ½', 'посмотрСв', 'всС', 'части', 'Ρƒ', 'тСбя', 'создастся', 'ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅', 'Ρ‡Ρ‚ΠΎ', 'Π°Π²Ρ‚ΠΎΡ€Ρ‹', 'ΠΊΡƒΡ€ΠΈΠ»ΠΈ', 'Ρ‡Ρ‚ΠΎ', 'Ρ‚ΠΎ', 'd'])],
      dtype=object)

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ строчным Π±ΡƒΠΊΠ²Π°ΠΌ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Ρ€Π΅Π½ΠΈΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gensim. tokenize: lowercase=True, deacc=True.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π²ΠΎ всСм нашСм Π½Π°Π±ΠΎΡ€Π΅ тСкстов:

dictionary = corpora.Dictionary(df["tokens"])
feature_cnt = len(dictionary.token2id)
dictionary.token2id
{'d': 0,
 'first_timee': 1,
 'ΠΆΠ΅': 2,
 'ΠΈ': 3,
 'нас': 4,
 'Π½ΠΎ': 5,
 'общСство': 6,
 'ΠΏΠΎΠ²Π΅Ρ€ΡŒ': 7,
 'ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚': 8,
 'ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΈ': 9,
 'самоС': 10,
 'Ρ‚ΠΈΠΏΠ°': 11,
 'Ρ‚ΠΎ': 12,
 'Ρƒ': 13,
 'Ρ…ΠΎΡ‚ΡŒ': 14,
 'ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°': 15,
 'я': 16,
 'всС': 17,
 'Π΄Π°': 18,
 'Π»ΡƒΡ‡ΡˆΠ΅': 19,
…

КаТдоС Π½ΠΎΠ²ΠΎΠ΅ слово ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ свой Π½ΠΎΠΌΠ΅Ρ€. Для дальнСйшСго использования Π½ΠΎΠΌΠ΅Ρ€Π° слов Π² словарС походят Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ сами слова. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ корпус, ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² наши Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСксты Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ (Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ bow – bag of words – мСшок слов). Π’Π΅ΠΊΡ‚ΠΎΡ€ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” список ΠΏΠ°Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Β«Π½ΠΎΠΌΠ΅Ρ€ слова Π² словарС : количСство Ρ‚Π°ΠΊΠΈΡ… слов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ тСкстС».

corpus = [dictionary.doc2bow(text) for text in df["tokens"]]
corpus
[[(0, 1),
  (1, 1),
  (2, 1),
  (3, 3),
  (4, 1),
  (5, 1),
  (6, 1),
  (7, 1),
  (8, 1),
  (9, 2),
  (10, 1),
  (11, 1),
  (12, 1),
  (13, 1),
  (14, 2),
  (15, 1),
  (16, 1),
…

ΠŸΡ€Π΅Π»Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ тСкстов, с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ умноТСния, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ идСально Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мощности процСссора ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°ΠΆΠ΅ самых ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² тСкстов ΠΎΡ‡Π΅Π½ΡŒ быстрой.

ИмСнно этим займСтся модСль tf-idf. Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° TF-IDF Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ TF β€” term frequency, IDF β€” inverse document frequency, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ частоты употрСблСния слова Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ тСкстС ΠΊ частотС употрСблСния слова Π²ΠΎ всСх Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½Π°Ρ Π½Π° основС Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ€Ρ‹ модСль прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для поиска ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ совокупныС ΠΌΠ΅Ρ€Ρ‹ тСкстов ΠΌΠ΅ΠΆΠ΄Ρƒ собой, строя ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ похоТСсти.

tfidf = models.TfidfModel(corpus)
index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features = feature_cnt)

Как ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° эта модСль ΠΌΡ‹ смоТСм ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, построив Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π½Π°ΡˆΠΈΡ… ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… тСкстов ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² значСния ΠΈΡ… похоТСстСй ΠΈΠ· ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

for text in texts_to_compare:
    kw_vector = dictionary.doc2bow(tokenize(text))
    df[text] = index[tfidf[kw_vector]]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов, посчитав сумму вСсов ΠΈ оставив тСксты с самыми высокими суммами. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска слов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‡ΠΈΠΌ, Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² эту сумму, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ.

df["sum"] = 0
for text in texts_to_compare:
    df["sum"] = df["sum"]+df[text]
for word in regex_queries:
    df["sum"] = df["sum"]+df[word]/5  

Π˜Π·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… тСкстов ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π΅Π·Π°Π² ΠΏΠΎ ΠΏΠΎΡ€ΠΎΠ³Ρƒ суммы, ΠΈΠ»ΠΈ отсортировав ΠΏΠΎ суммС ΠΈ ΠΎΠ±Ρ€Π΅Π·Π°Π² датасСт ΠΏΠΎ количСству тСкстов.

df["sum"].value_counts(bins=5)
(-0.0022700000000000003, 0.254]    113040
(0.254, 0.508]                       1829
(0.508, 0.762]                         31
(0.762, 1.016]                          7
(1.016, 1.269]                          4

На этом этапС python ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π² excel:

df[df["sum"]>0.250].to_excel("ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ тСксты.xlsx")

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ поиск Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… тСкстов ΠΈ слов для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Excel, Π·Π° счСт использования Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΈ сортировок.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, отсортируСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ похоТСсти Π½Π° самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ тСкст (ΠΎΠ½, разумССтся, окаТСтся Π½Π° самом ΠΏΠ΅Ρ€Π²ΠΎΠΌ мСстС ΠΏΡ€ΠΈ сортировкС):

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ ΠΌΡ‹ ΠΈ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ явно Ρ‚Π°ΠΊΠΈΠ΅ слова ΠΊΠ°ΠΊ Β«ΡˆΠΊΠΎΠ»ΠΎΡ‚Π°Β», «общСство» ΠΈ Β«ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Β», ΠΎΠ½Π° нашла ΠΏΠΎ Π½ΠΈΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСксты, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти слова оказались самыми Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌΠΈ.

ПослС нахоТдСния Π½ΡƒΠΆΠ½Ρ‹Ρ… тСкстов самыС подходящиС ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ скрипта, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² список texts_to_compare, уточняя ΠΈΠ»ΠΈ углубляя поиск.

Бсылка Π½Π° ΠΊΠΎΠ΄Β 

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ статистичСской ΠΌΠ΅Ρ€Ρ‹ TF-IDF

ВрСмя прочтСния: 4 ΠΌΠΈΠ½.

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ

TF-IDF β€” примСняСтся для Π°Π½Π°Π»ΠΈΠ·Π° значимости слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅,ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ большой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π»ΠΈΠ±ΠΎ корпуса. ΠœΡ‹ сталкиваСмся с Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² тСкстС. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ практичСски всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΡ‚Π°Ρ‚ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ΅Ρ€Ρƒ – TF-IDF.

TF (ΠΈΠ»ΠΈ частота слова) – это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ количСства ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ слова ΠΊ совокупному количСству слов Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, анализируСтся Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ слова ti Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.

IDF β€” это обратная Ρ‡Π°ΡΡ‚ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ слово упоминаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Для любого ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ слова Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² присутствуСт ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ IDF.

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ TF-IDF считаСтся ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

Π‘ΠΎΠ»ΡŒΡˆΠΈΠΉ вСс Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² TF-IDF ΠΈΠΌΠ΅ΡŽΡ‚ слова с высокой частотой ΠΈ с нСвысокой частотой использования Π² ΠΈΠ½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π—Π°Π΄Π°Ρ‡Π° состояла Π² сравнСнии Π΄Π²ΡƒΡ… тСкстов ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ поиск ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… сообщСний ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

from sklearn.feature_extraction.text import TfidfVectorizer,CountVectorizer β€” ΠΈΠ· этой большой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sklearn Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ 2 модуля для расчСта частоты слов (TfidfVectorizer) ΠΈ количСства слов (CountVectorizer)

from scipy.spatial import distance β€” прСдназначСнная для выполнСния Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Ρ… расчётов, ΠΈΠ· Π½Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ distance для расчСта косинусного расстояния. \pL\p{Space}]', '', j.strip().lower()).replace(' ',' ')
text.append(j)
return text

Для сбора ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π΄Π²ΡƒΡ… сравниваСмых тСкстах:

def add_sugg(doc1,doc2):
    all_mas=[]
    for i in doc1:
        if i in all_mas:
            continue
        else:
            all_mas.append(i)
    for j in doc2:
        if j in all_mas:
            continue
        else:
            all_mas.append(j)
    return all_mas
-	РасчСт косинусного расстояния.
def dist(x,y):
return distance.cosine(x,y)

ПослС описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ тСкст с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ прСдлоТСния. Π”Π°Π»Π΅Π΅ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° слова Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ…, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π΄Π°Ρ‚ΡŒ свой Π½ΠΎΠΌΠ΅Ρ€, это ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ наш Ρ‚ΠΎΠΊΠΈΠ½Π°ΠΉΠ·Π΅Ρ€. Π­Ρ‚ΠΈ числа ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° исходныС Ρ„Π°ΠΉΠ»Ρ‹ docx. ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

doc1 = [p.text for p in docx.Document('1.docx').paragraphs]
doc2 = [p.text for p in docx.Document('2.docx').paragraphs]
text1=convert(doc1)
text2=convert(doc2)
all_mas=add_sugg(text1,text2)

Π’Π°ΠΊ ΠΆΠ΅ я создал docx Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΡƒΠ΄Π° внСс собствСнныС стоп слова, это пригодится для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста β€” удалСния Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

stop_word = [p.text.lower() for p in docx.Document('стоп слова.docx').paragraphs]

Π”Π°Π»Π΅Π΅ отчистим ΠΎΠ±Ρ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ для удалСния стоп слов.

tfidfvectorizer = TfidfVectorizer(analyzer='word',stop_words=s_word)

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ словам.

tfidf_wm = tfidfvectorizer.fit(all_mas)

И Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ шаг прСобразования β€” это ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° исходныС тСксты, для это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ модСль ΠΊ тСсту.

text1_idf = tfidf_wm.transform(text1)
text2_idf = tfidf_wm.transform(text2)

Для удобства Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pandas. Π’ Π½Π΅Π³ΠΎ запишСм всС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

df_tfidfvect1 = pd.DataFrame(data = text1_idf.toarray(),columns = tfidf_tokens)
df_tfidfvect2 = pd.DataFrame(data = text2_idf.toarray(),columns = tfidf_tokens)

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ.

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡ… всСх ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… слов. Π’ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ΅ Π½Π° частоту Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Для удобства сдСлаСм массив всСх строк ΠΈ запишСм Π² Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ

df_tfidfvect1['combine'] = df_tfidfvect1. values.tolist()
df_tfidfvect2['combine'] = df_tfidfvect2.values.tolist()

Π‘Π΄Π΅Π»Π°Π΅ΠΌ cross join Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ.

df_tfidfvect1['key'] = 0
df_tfidfvect2['key'] = 0
df_all = pd.merge(df_tfidfvect1, df_tfidfvect2, on='key')

Для наглядности создадим Dataframe, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ мноТСство ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ.

df=pd.DataFrame()
df['x']=df_all['combine_x']
df['y']=df_all['combine_y']
df['dist']=df.apply(lambda x: dist(x['x'],x['y']),axis=1)

И ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ΅Π½Π΅Π΅ 50%.

df.where(df['dist']<=0.5).dropna()

Π’Π°ΠΊΠΈΠΌ нСслоТным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ идСю сравнСния Π»ΡŽΠ±Ρ‹Ρ… тСкстов. Π’ дальнСйшСм использованиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ шаблона ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ. НапримСр, привСсти слова Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΊΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°ΠΉΡ‚ΠΈ отклонСния Π² Ρ‚Π΅ΠΌΠ΅ Ρ„ΠΎΡ€ΡƒΠΌΠ°, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ПониманиС TF-ID: простоС Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅

TF-IDF (Ρ‚Π΅Ρ€ΠΌΠΈΠ½ частотно-обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) β€” это статистичСская ΠΌΠ΅Ρ€Π°, которая ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚, насколько Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎ слово для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π­Ρ‚ΠΎ дСлаСтся ΠΏΡƒΡ‚Π΅ΠΌ умноТСния Π΄Π²ΡƒΡ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ: сколько Ρ€Π°Π· слово появляСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΈ обратная частота слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Он ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° тСкста, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для подсчСта слов Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… машинного обучСния для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка (NLP).

TF-IDF Π±Ρ‹Π» ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ для поиска Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡΡΡŒ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ количСству Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слово встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π½ΠΎ компСнсируСтся количСством Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих это слово. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, слова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ это, Ρ‡Ρ‚ΠΎ ΠΈ Ссли, ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ большого значСния для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² частности.

Однако, Ссли слово Ошибка встрСчаСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΡ…, это, вСроятно, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ. НапримСр, Ссли ΠΌΡ‹ пытаСмся Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ относятся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ NPS, слово Ошибка , вСроятно, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ связана с Ρ‚Π΅ΠΌΠΎΠΉ Β«ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², содСрТащих это слово, Π±ΡƒΠ΄ΡƒΡ‚ посвящСны этой Ρ‚Π΅ΠΌΠ΅.

Как рассчитываСтся TF-IDF?

TF-IDF для слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ рассчитываСтся ΠΏΡƒΡ‚Π΅ΠΌ умноТСния Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

  • частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π•ΡΡ‚ΡŒ нСсколько способов подсчСта этой частоты, самый простой ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” это Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ подсчСт случаСв появлСния слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ способы Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ частоту ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ частотС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.
  • обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° слова Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, насколько часто ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся слово Π²ΠΎ всСм Π½Π°Π±ΠΎΡ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π§Π΅ΠΌ ΠΎΠ½ Π±Π»ΠΈΠΆΠ΅ ΠΊ 0, Ρ‚Π΅ΠΌ слово встрСчаСтся Ρ‡Π°Ρ‰Π΅. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, взяв ΠΎΠ±Ρ‰Π΅Π΅ количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² Π΅Π³ΠΎ Π½Π° количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих слово, ΠΈ вычислив Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ.
  • Π˜Ρ‚Π°ΠΊ, Ссли слово ΠΎΡ‡Π΅Π½ΡŒ распространСно ΠΈ встрСчаСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, это число Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΊ 0. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Ρ‚ΡŒΡΡ ΠΊ 1.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ этих Π΄Π²ΡƒΡ… чисСл Π΄Π°Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΊΡƒ TF-IDF для слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΎΡ†Π΅Π½ΠΊΠ°, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌ являСтся это слово Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.

Говоря Π±ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ матСматичСскими Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ, ΠΎΡ†Π΅Π½ΠΊΠ° TF-IDF для слова t Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ d ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² D рассчитываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π“Π΄Π΅:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ TF-IDF ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ?

МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ с использованиСм СстСствСнного языка сталкиваСтся с ΠΎΠ΄Π½ΠΈΠΌ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ прСпятствиСм β€” Π΅Π³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с числами, Π° СстСствСнный язык β€” это тСкст. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ этот тСкст Π² числа, Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ вСкторизация тСкста. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ шаг Π² процСссС машинного обучСния для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ сильно ΠΏΠΎΠ²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ даст ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΈ слова Π² числа способом, понятным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ машинного обучСния, ΠΎΡ†Π΅Π½ΠΊΡƒ TF-IDF ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΈΠ²Π½Ρ‹ΠΉ байСсовский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΠΎΠ»Π΅Π΅ простых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ слово считаСт.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π²Π΅ΠΊΡ‚ΠΎΡ€ слов прСдставляСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Π²ΠΈΠ΄Π΅ списка чисСл, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ слова корпуса. ВСкторизация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π±Π΅Ρ€Π΅Ρ‚ тСкст ΠΈ создаСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ содСрТимоС тСкста. TF-IDF позволяСт Π½Π°ΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ с числом, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт, насколько Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π’ΠΎΠ³Π΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ словами Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈ ΠΈΡ‰Π΅ΠΌ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ машинного обучСния.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ TF-IDF

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стСпСни рСлСвантности слова Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈΠ»ΠΈ TD-IDF ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

поиска ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для прСдоставлСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ поисковая систСма, ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΡ‰Π΅Ρ‚ Π›Π΅Π±Ρ€ΠΎΠ½Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² порядкС рСлСвантности. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ спортивныС ΡΡ‚Π°Ρ‚ΡŒΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокий Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ TF-IDF Π΄Π°Π΅Ρ‚ слову Π›Π΅Π±Ρ€ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ высокий Π±Π°Π»Π».

Π’ΠΏΠΎΠ»Π½Π΅ вСроятно, Ρ‡Ρ‚ΠΎ каТдая поисковая систСма, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² своСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ TF-IDF.

  • Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов

TF-IDF Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для извлСчСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈΠ· тСкста. Как? Π‘Π»ΠΎΠ²Π° с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΌ Π±Π°Π»Π»ΠΎΠΌ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΈ поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ просто.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слова

ПолСзно ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ TF-IDF, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ машинного обучСния. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ машинного обучСния Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с числами, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ TF-IDF ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ слова, выдСляя ΠΈΠΌ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎ для машинного обучСния, особСнно Π² областях, связанных с ΠΠ›ΠŸ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ· тСкста.

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ машинного обучСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ TF-IDF ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ катСгориям, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ простыС ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ° заявок Π² слуТбу ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ»ΠΈ ряды ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² ΠΈ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π·Π° считанныС сСкунды.

ВсС задавались вопросом, ΠΊΠ°ΠΊ Google ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с вашим поиском, Π·Π° считанныС сСкунды? Ну, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ знаСшь. ВСкторизация тСкста ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ тСкст Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Π² числа, поэтому Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ TF-IDF ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² порядкС рСлСвантности.

Π’ восторгС ΠΎΡ‚ возмоТностСй машинного обучСния для Π°Π½Π°Π»ΠΈΠ·Π° тСкста? Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π² MonkeyLearn бСсплатно ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

Bruno Stecanella

10 мая 2019 г.

ПониманиС TF-IDF для машинного обучСния

МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

6 октября 2021

. НСТноС Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «Частота Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹Β»

ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒ 6, 2021


TF-IDF Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ частота-обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° , ΠΈ это ΠΌΠ΅Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² области поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (IR) ΠΈ машинного обучСния, которая ΠΌΠΎΠΆΠ΅Ρ‚ количСствСнно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ строковых прСдставлСний (слов, Ρ„Ρ€Π°Π·, Π»Π΅ΠΌΠΌ ΠΈΒ Ρ‚. Β Π΄.) Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ срСди Π½Π°Π±ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Ρ‚Π°ΠΊΠΆΠ΅ называСтся корпусом).

ΠžΠ±Π·ΠΎΡ€ TF-IDF

TF-IDF ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ части: TF (ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°), ΠΈ IDF (инвСрсная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ TF (Ρ‚Π΅Ρ€ΠΌΠΈΠ½ частота)?

Π’Π΅Ρ€ΠΌΠΈΠ½ частота Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, глядя Π½Π° частоту ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вас интСрСсуСт Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. БущСствуСт нСсколько ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ способов опрСдСлСния частоты:

  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° слово встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ (Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ количСство).
  • Частота Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² с ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ количСство Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ, Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° количСство слов Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅).
  • Частота Π² логарифмичСском ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, log(1 + Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ счСт)).
  • ЛогичСская частота (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1, Ссли Ρ‚Π΅Ρ€ΠΌΠΈΠ½ встрСчаСтся, ΠΈΠ»ΠΈ 0, Ссли Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π½Π΅ встрСчаСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ IDF (обратная частота Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°)?

Π˜Π½Π²Π΅Ρ€ΡΠΈΡ частоты Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, насколько часто (ΠΈΠ»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ) встрСчаСтся слово Π² корпусС. IDF рассчитываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π³Π΄Π΅ t β€” Ρ‚Π΅Ρ€ΠΌΠΈΠ½ (слово), ΠΎΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ, Π° N β€” количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (d) Π² корпусС (D). Π—Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π²Π΅Π½ просто количСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встрСчаСтся Ρ‚Π΅Ρ€ΠΌΠΈΠ½ t .Β 

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ изобраТСния: https://monkeylearn.com/blog/what-is-tf-idf/

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’Π΅Ρ€ΠΌΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² корпусС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС дСлСния Π½Π° ноль. Один ΠΈΠ· способов ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим — Π²Π·ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ счСтчик ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, получаСтся Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ (1 + счСтчик). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ с этим справляСтся популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° scikit-learn, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΈΠΆΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ изобраТСния: https://towardsdatascience.com/how-sklearns-tf-idf-is- Different-from-the-standard-tf-idf-275fa582e73d

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ IDF, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ слова like Β«ofΒ», Β«asΒ», Β«theΒ» ΠΈ Ρ‚. Π΄., ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² английском корпусС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, примСняя ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ частоты Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ вСс частых Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ нСчастыС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большСС влияниС.

НаконСц, IDF Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΈΠ· Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ корпуса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ экспСримСнтС.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ вмСстС: TF-IDF

Подводя ΠΈΡ‚ΠΎΠ³ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΠΈ, ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ TF-IDF, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° Π΅Π³ΠΎ частотС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. TF Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ часто Ρ‚Π΅Ρ€ΠΌΠΈΠ½ появляСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΈ IDF Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ рСдкости Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΠ² эти значСния вмСстС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ TF-IDF.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ изобраТСния: https://monkeylearn.com/blog/what-is-tf-idf/

Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π±Π°Π»Π» TF-IDF, Ρ‚Π΅ΠΌ Π²Π°ΠΆΠ½Π΅Π΅ ΠΈΠ»ΠΈ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π΅Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½; ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ становится ΠΌΠ΅Π½Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌ, Π΅Π³ΠΎ ΠΎΡ†Π΅Π½ΠΊΠ° TF-IDF приблиТаСтся ΠΊ 0.

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TF-IDF

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΎΠΉ для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, насколько Π²Π°ΠΆΠ΅Π½ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Но ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ TF-IDF? Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных прилоТСния для TF-IDF. Π­Ρ‚ΠΎ Π² машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ тСкста/ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов.

ИспользованиС TF-IDF Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ СстСствСнного языка

Алгоритмы машинного обучСния часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ числовыС Π΄Π°Π½Π½Ρ‹Π΅, поэтому ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ любой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка (NLP) ΠΏΠΎΠ΄ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ML/AI, связанная с тСкст, эти Π΄Π°Π½Π½Ρ‹Π΅ сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ числовых Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ процСсса, извСстного ΠΊΠ°ΠΊ вСкторизация. ВСкторизация TF-IDF Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя вычислСниС ΠΎΡ†Π΅Π½ΠΊΠΈ TF-IDF для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π² вашСм корпусС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ (см. ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Β«AΒ» ΠΈ Β«BΒ»). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² вашСм корпусС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свой собствСнный Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ TF-IDF для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ слова Π²ΠΎ всСй ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Когда Ρƒ вас Π΅ΡΡ‚ΡŒ эти Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌ использования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΠΎΡ…ΠΎΠΆΠΈ Π»ΠΈ Π΄Π²Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, сравнивая ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ TF-IDF с использованиСм косинусного сходства.

A = Β«ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ двиТСтся ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅Β»; B = Β«Π“Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ Π΅Π΄Π΅Ρ‚ ΠΏΠΎ шоссС» Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· freeCodeCamp β€” Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TF-IDF Π² Python (https://www.freecodecamp.org/news/how-to-process-textual-data-using -tf-idf-in-python-cd2bbc0a94a3/)

ИспользованиС TF-IDF Π² поискС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

TF-IDF Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Π² области поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· распространСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ поисковыС систСмы. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΎ значимости Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Π½Π° основС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, поисковая систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TF-IDF, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π½Π° основС рСлСвантности, с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ с Π±ΠΎΠ»Π΅Π΅ высоким TF-IDF. Π±Π°Π»Π»Ρ‹.

ИспользованиС TF-IDF для суммирования тСкста ΠΈ извлСчСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ TF-IDF Π²Π·Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚ слова Π½Π° основС рСлСвантности, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ слова с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠ΅ΠΉ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π±ΠΎΠ»Π΅Π΅ эффСктивного обобщСния статСй ΠΈΠ»ΠΈ просто для опрСдСлСния ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚Π΅Π³ΠΎΠ²) для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ влоТСния слов: TF-IDF, Word2Vec, Bag-of-words, BERT

Как ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, TF-IDF ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ тСкста Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π±ΠΎΠ»Π΅Π΅ подходящий для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ML ΠΈ NLP. Однако, хотя это популярный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΠ›ΠŸ, ΠΎΠ½ Π½Π΅ СдинствСнный.

Bag of Words

Bag of Words (BoW) просто подсчитываСт частоту слов Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π΅ΠΊΡ‚ΠΎΡ€ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ частоту ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π² корпусС для этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ слов ΠΈ TF-IDF Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ частоту Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (IDF) ΠΈ прСдставляСт собой Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подсчСт частоты (TF).

Word2Vec

Word2Vec β€” это Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ повСрхностныС двухслойныС, Π° Π½Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ корпуса ΠΈ создания Π½Π°Π±ΠΎΡ€ΠΎΠ² Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ². НСкоторыС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ TF-IDF ΠΈ word2vec Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ TF-IDF β€” это статистичСская ΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для формирования Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ word2vec создаст Π²Π΅ΠΊΡ‚ΠΎΡ€ для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°. Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ этот Π½Π°Π±ΠΎΡ€ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, TF-IDF Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ контСкст слов Π² корпусС, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ word2vec.

BERT β€” прСдставлСния Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΎΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

BERT β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ ML/NLP, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Google, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ модСль ML Π½Π° основС прСобразоватСля для прСобразования Ρ„Ρ€Π°Π·, слов ΠΈΒ Ρ‚.Β Π΄. Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ TF-IDF ΠΈ BERT Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: TF-IDF Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сСмантичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ контСкст слов, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ BERT. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, BERT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ своСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, Ρ‡Π΅ΠΌ TF-IDF, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы использования TF-IDF

ΠŸΠ»ΡŽΡΡ‹ использования TF-IDF

Π‘Π°ΠΌΡ‹Π΅ большиС прСимущСства TF-IDF Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, насколько ΠΎΠ½ прост ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² использовании. Π­Ρ‚ΠΎ просто Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, это дСшСво Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, ΠΈ это простая отправная Ρ‚ΠΎΡ‡ΠΊΠ° для вычислСний подобия (Ρ‡Π΅Ρ€Π΅Π· Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ TF-IDF + косинусноС сходство).

ΠœΠΈΠ½ΡƒΡΡ‹ использования TF-IDF

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ TF-IDF Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ сСмантичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Он ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ слов ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡ… Π²Π·Π²Π΅ΡˆΠΈΠ²Π°Π΅Ρ‚, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ контСксты слов ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΊΠ°ΠΊ ΠΈ BoW, TF-IDF ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ порядок слов, поэтому составныС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«ΠšΠΎΡ€ΠΎΠ»Π΅Π²Π° Англии», Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ «Сдиная Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Β». Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ распространяСтся Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ситуации, ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ с Β«Π½Π΅ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ счСт» ΠΈ Β«ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ счСт», Π³Π΄Π΅ порядок ΠΈΠΌΠ΅Π΅Ρ‚ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях с использованиСм инструмСнтов NER ΠΈ символов подчСркивания Β«queen_of_englandΒ» ΠΈΠ»ΠΈ Β«not_payΒ» β€” это способы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Ρ€Π°Π·Ρ‹ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

Π”Ρ€ΡƒΠ³ΠΈΠΌ нСдостатком являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ нСэффСктивного использования памяти, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ TF-IDF ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ проклятия размСрности. Напомним, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² TF-IDF Ρ€Π°Π²Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ словаря. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… контСкстах классификации это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… контСкстах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ кластСризация, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

This entry was posted in ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠ΅