In [2]:
from sklearn.feature_extraction.text import TfidfVectorizer, TfidfTransformer
import numpy as np
import pandas as pd
#define vectorizer parameters
In [3]:
vectorizer = TfidfVectorizer()#smooth_idf=True, sublinear_tf=False)
# docs=["błąd danych na uprawnienia się administratorem problem acs",
# "ewidencja czasu pracy problem tk dzień dobry jest problem czasu pracy",
# "proszę przekierowanie faktur na panak do dnia data",
# "pd sap sap nadal nie działa"
# ]
docs = ["This is about about Messi Messi Messi Messi",
"This is is about tfidf"]
tfidf_matrix = vectorizer.fit_transform(docs)
In [4]:
feature_names = vectorizer.get_feature_names()
dense = tfidf_matrix.todense()
In [5]:
df = pd.DataFrame(dense.transpose(), index=feature_names, columns=docs)
df
Out[5]:
In [6]:
pd.DataFrame(vectorizer.idf_-1,index=feature_names) # <- dodałem -1 do idf ;)
Out[6]:
Na tej podstawie można ocenić, które wyrazy mają niski tfidf, czyli nie różnicują i można próbować je usunąc aby zrobić miejsce dla rzadszych wyrazów, które bez tego nie ząłapałyby się do limitu tokenizera :)
p.s. wartości tfidf nie zgadzają się z tymi z https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/ bo stosujemy inny wzór ale to nie wpływa na sposób wnioskowania.
In [ ]: