první s přehledem základě zásady, co je text, kosinus vzdálenost
Váš titul je sám o sobě krátký text, takže budete porovnávat vzdálenost mezi krátký text a dlouhý text.
Kosinus vzdálenost, srovnává podobnost 2 vektory. V euclidian prostoru vektor [1,1] jako stejný úhel než [2,2], takže jsou podobné i přesto, že nemají stejnou sílu.
Je to dva vektorové byl dva texty, první z nich by mohla být "květina." a druhý "květina. květina".
Jeden může vypočítat vzdálenosti mezi 2 rozměrném prostoru, v[x,y], ale stejná rovnice může být použita v 3 rozměrném prostoru v[x,y,z], a protože matematika zásadě nemění s počtem rozměr, kosinus vzdálenost může být použita v n dimenze vektorového prostoru v a[x,y,z,...n]
Takže hlavní problém je přeměnit text na vektory ne ?
Představte si, že máte změřit kosinus vzdálenost pro texty, které mají pouze 2 možné slovo : "květ" a "a". Pokud ano, můžete použít 2-dimenzionální vektor, kde
takže text : "květina" nebo "květina" bude uvedeno [1,1]
a text s "květina, květ" [2,2]
skutečně [2,2] a [1,1] jsou rovnoběžné a shodné v euclidian prostor
ale tam je úhel mezi "a" a "květina", pokud si spočítat kosinus vzdálenost mezi dvěma
Nyní, když máme korpus s 3 slovo "ovoce květina"
budete mít 3 dimenzionální vektor :
- "květina"=[0,0,1]
- "ovoce"=[0,1,0]
- "ovoce květ"=[1,1,1]
- "ovoce ovoce ovoce"=[0,3,0]
pokud 1 a 2 jsou tituly (květina nebo ovoce), pak 1 je blíže k 3 a 2 je blíže k 4
Teď to máte, když tam je 3000 odlišné slovo v korpusu text, budete stavět 3000 dimenze vektorového prostoru a vypočítat kosinus vzdálenost mezi nimi
tady jeden článek, který ukazuje princip použití vektorový prostor pro slovo, a jak to udělat s velkými vektory.
https://nikoskalikis.medium.com/text-similarity-euclidian-distance-vs-cosine-similarity-3a1167f686a
To byla jen obecná představa o slovo na základě kosinové vzdálenosti
Nyní, jak k jeho dosažení sémantické podobnosti
Mluvit o sémantické vzdálenosti to není přesně totéž.
protože "já jsem šel do paříže" by měly být velmi podobné "byl jsem do Londýna" a mírně odlišné, aby "šel jsem do školy", protože paříž a londýn jsou hlavním městě.
Tam je také některé další algo na adresu tohoto problému. Vysvětlení by zabralo celý článek blog.
Jedním z nich je TFIDF, ale nejlepší z nich je world2vec to na stejném principu, ale v mnohem sofistikovanějším způsobem. Tady obecnou intuici článek https://www.wikiwand.com/en/Word2vec tam je tolik vysvětlení, jak to funguje na internetu, že I dont vědět, co zdroje, poradit.
TFIDF je jednodušší implementovat, protože word2vec je NN přístup. Zde článek, který vysvětluje a nějak porovnává 2 koncept https://towardsdatascience.com/word-embedding-techniques-word2vec-and-tf-idf-explained-c5d02e34d08
Takže nejlepší strategie realizovat je pomocí word2vec s kereas tenzor toku, ale to závisí na vás čas, prostředky, které langages víte, nebo jak pohodlné jste s konceptem.
Budu sdílet nejlepší radu, že starověké Phd dává mi : "použít některý z 3 pokud to dont práci nahradit to druhé. Je to jako výběr jakéhokoliv motoru chcete dát do auta, pokud chcete závodit, musíte to řídit alespoň tak, druhý můžeš vyměnit motor za lepší nebo zlepšit to."