Бързо въведение в това какво е TF-IDF:

Терминът Честота-обратна честота на документа ни казва уместността на дадена дума в документ за колекция от документи.

Честота на термините:Броят пъти, в които дадена дума се появява в документ.

Обратна честота на документа:Честотата на термините придава еднакво значение на всички думи. Въпреки това много думи като „е“, „и“, „от“ често се появяват в изречения, но нямат значение. Следователно трябва да преценим често срещаните термини, за да отдадем по-голямо значение на по-редките термини. IDF ни казва значението на срока на събиране на документи.

Къде се използва TF-IDF?

Търсачките често използват варианти на схемата за претегляне на tf-idf като основен инструмент за оценка и класиране на важността на документа в отговор на потребителски въпрос.

За да опростя нещата, реших да изчисля TF-IDF стойностите на 3 изречения от любимия ми откъс.

a=”И след като бурята свърши, няма да си спомняте как успяхте, как успяхте да оцелеете.”
b=”Всъщност дори няма да сте сигурни дали бурята наистина е свършила . Но едно нещо е сигурно.”
c=”Когато излезеш от бурята, няма да си същият човек, който влезе.”

Стъпка 1: Премахнете препинателните знаци и главните букви чрез дефиниране на функция

Трябва да се уверим, че всички знаци са еднакви, тъй като Python чете „бурята“ и „бурята“ като различни думи. По същия начин за препинателни знаци се чете „това“ и „това“, за да е различно. Нееднородността ще ни даде грешен брой.

ВЪВЕЖДАНЕ:

препроцесор („И щом бурята свърши, няма да си спомняте как сте се справили, как сте оцелели.“)

ИЗХОД:

Стъпка 2: Маркирайте всяко изречение

Токенизирането на документите/изреченията означава разделяне на изреченията на техните думи. Резултатът е „торба с думи“, състояща се от всички думи на изречението.

Стъпка 3: Обединете всички думи с помощта на set()

Сега имаме 3 различни „торба с думи“ за всяко изречение. TF-IDF дава общия брой думи от всички изречения. Използваме функцията set(), за да получим всички УНИКАЛНИ думи от bow_a, bow_b и bow_c.

bow_ab= set(bow_a).union(set(bow_b))

Total_Set= set(bow_ab).union(set(bow_c))
Total_Set

Total_Set= set(bow_ab).union(set(bow_c))

за дума в bow_a:
wordDictA[дума]+=1

Стъпка 5: Функция за изчисляване на TF

След това трябва да дефинираме функция за изчисляване на честотата на термините на всяко изречение в колекцията. Функцията приема речника и токенизираните думи като вход и изчислява TF стойността, като използва следната функция:

Стъпка 6: Функция за изчисляване на IDF с помощта на математически пакет

След като импортираме математическата функция, дефинираме функция за изчисляване на IDF, която приема всички речници като вход.

idfs = idf([wordDictA, wordDictB,wordDictC])

Стъпка 7: Функция за изчисляване на TF*IDF

И накрая, ние пишем функция, за да получим крайната стойност, т.е. tf-idf стойност за всичките три оригинални изречения.

Изпълняваме прост цикъл „за“, за да преброим броя на думите за всяка „чанта с думи“.

Това завършва частта за кодиране на изчислителните стойности. Нека се потопим в значението на стойностите.

Тълкуване:

Терминът е по-рядък, ако неговият TF*IDF резултат (тегло) е по-висок и обратното. Ако обаче tf-idf е нула, това ни казва, че думата не е много информативна, тъй като се появява във всички документи. (Изречения, в нашия случай)

Можете да намерите целия код тук.

Препратки:

[1]https://monkeylearn.com/blog/what-is-tf-idf/

[2]https://medium.com/@imamun/creating-a-tf-idf-in-python-e43f05e4d424