Sisältöpohjainen suodatus
Kohteiden TF-IDF-esitykset, kosinisamankaltaisuus, elokuvasuosittelijan rakentaminen metatiedoista.
Sisältöpohjainen suodatus on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä sisältöpohjainen suodatus on?
Sisältöpohjainen suodatus suosittelee kohteita, jotka ovat samankaltaisia kuin käyttäjän ennestään suosimat kohteet, kohteiden omien ominaisuuksien (tekstin, lajityypin ja tunnisteiden) perusteella. Toisin kuin yhteistoiminnallinen suodatus, se ei tarvitse muita käyttäjiä koskevia tietoja, joten se välttää uusien kohteiden cold start -ongelman.
Kohteet piirrevektoreina
Perusajatus on muuntaa jokainen kohde sen sisältöä kuvaavaksi numeeriseksi vektoriksi ja mitata sitten vektorien välinen samankaltaisuus. Tekstikuvauksissa TF-IDF on perinteinen tapa muodostaa nämä vektorit.
Mitä TF-IDF on?
TF-IDF (termin esiintymistiheys ja käänteinen dokumenttitiheys) painottaa sanoja sen mukaan, kuinka usein ne esiintyvät kohteessa, mutta pienentää kaikkien kohteiden yhteisten sanojen painoa. Harvinaiset ja erottuvat sanat saavat suuret painot, mikä tuo esiin kohteen ainutlaatuiset piirteet.
TfidfVectorizer
scikit-learn muuntaa kohdekuvausten luettelon TF-IDF-matriisiksi kahdella koodirivillä.
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])Matriisin koon ymmärtäminen
tfidf_matrix-matriisin koko on (n_items, n_terms): yksi rivi kohdetta kohti ja yksi sarake sanaston jokaista yksilöllistä sanaa kohti. Matriisi on harva, koska useimmat kohteet käyttävät vain murto-osaa kaikista sanoista.
print(tfidf_matrix.shape) # (n_items, vocabulary_size)Vektoroijan säätäminen
Hyödyllisiä parametreja ovat stop_words, joka poistaa yleiset sanat, max_features, joka rajoittaa sanaston kokoa, ja ngram_range=(1,2), joka sisältää kaksisanaiset ilmaukset monipuolisempia piirteitä varten.
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)Kohteiden välinen kosinisamankaltaisuus
Laskekaa kaikkien kohteiden parittaiset samankaltaisuudet. Tuloksena on n_items x n_items -matriisi, jonka kukin solu kertoo, kuinka samankaltaisia kahden kohteen kuvaukset ovat.
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)Lineaarisen ytimen oikotie
Koska TF-IDF-vektorit normalisoidaan oletusarvoisesti L2-normilla, linear_kernel antaa saman tuloksen kuin kosinisamankaltaisuus mutta nopeammin. Tämä on yleinen optimointi suurille tuoteluetteloille.
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)Nimikkeiden yhdistäminen indekseihin
Jotta voitte hakea kohteen nimen perusteella, muodostakaa käänteisindeksi, joka yhdistää nimen rivin sijaintiin.
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()get_recommendations-funktio
Kun annatte funktion käyttöön nimikkeen, hakekaa sen samankaltaisuusrivi, järjestäkää tulokset laskevaan järjestykseen, ohittakaa itse kohde ja palauttakaa parhaat osumat.
def get_recommendations(title, n=10):
idx = indices[title]
scores = list(enumerate(cosine_sim[idx]))
scores = sorted(scores, key=lambda x: x[1], reverse=True)
top = scores[1:n+1] # skip itself at position 0
item_idxs = [i for i, _ in top]
return df["title"].iloc[item_idxs]Vahvuudet ja rajoitukset
Vahvuudet: toimii täysin uusien kohteiden kanssa, ja suositukset ovat helposti perusteltavissa ("koska siinä on samoja sanoja").
Rajoitukset: menetelmä pysyy käyttäjän tunnettujen mieltymysten piirissä (ylierikoistuminen) eikä pysty löytämään yllättäviä eri lajityyppien osumia samalla tavalla kuin yhteistoiminnallinen suodatus.
Pikatarkistus
Testatkaa tietonne sisältöpohjaisesta suodatuksesta.
Kertaus
Rakensitte sisältöpohjaisen suodatuksen: TfidfVectorizer muuntaa kuvaukset (n_items, n_terms)-matriisiksi, cosine_similarity vertailee kohteita ja get_recommendations palauttaa samankaltaisimmat kohteet ohittaen itse kohteen. Menetelmä käsittelee cold start -ongelmaa, mutta siihen liittyy ylierikoistumisen riski. Seuraavaksi: hybridijärjestelmät ja arviointimittarit.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 53
- Oppitunnit
- 225
Usein kysytyt kysymykset
Onko oppitunti ”Sisältöpohjainen suodatus” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Sisältöpohjainen suodatus”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Sisältöpohjainen suodatus”?
Kohteiden TF-IDF-esitykset, kosinisamankaltaisuus, elokuvasuosittelijan rakentaminen metatiedoista. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Sisältöpohjainen suodatus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?
Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yhteistoiminnallinen suodatus: käyttäjä- ja kohdepohjainen
- Matriisifaktorointi SVD:llä
- Sisältöpohjainen suodatus
- Hybridijärjestelmät ja arviointimittarit