Разница между словарем и get_features() в TfidfVectorizer?
Я имею
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# Train the vectorizer
text="this is a simple example"
singleTFIDF = TfidfVectorizer(ngram_range=(1,2)).fit([text])
singleTFIDF.vocabulary_ # show the word-matrix position pairs
# Analyse the training string - text
single=singleTFIDF.transform([text])
single.toarray()
Я хотел бы связать для каждого значения в отдельности соответствующую функцию. Какая сейчас структура сингла? Как вы можете отобразить положение значения в одиночном к функции?
Как я могу интерпретировать индексы словаря и get_features()? Они связаны? Оба имеют особенности с индексами согласно документации. Это сбивает с толку?
1 ответ
Атрибут vocabulary_ выводит словарь, в котором все ngram являются ключами словаря, а соответствующие значения являются позициями столбцов каждой ngram (функции) в матрице tfidf. Метод get_feature_names() выводит список, в котором нграммы отображаются в соответствии с положением столбца каждой функции. Поэтому вы можете использовать любой из них, чтобы определить, какой столбец tfidf соответствует какой функции. В приведенном ниже примере матрица tfidf легко конвертируется во фрейм данных pandas, используя вывод get_feature_names() для именования столбцов. Также обратите внимание, что все значения имеют одинаковый вес и что сумма квадратов всех весов равна единице.
singleTFIDF.vocabulary_
Out[41]:
{'this': 5,
'is': 1,
'simple': 3,
'example': 0,
'this is': 6,
'is simple': 2,
'simple example': 4}
singleTFIDF.get_feature_names()
Out[42]: ['example', 'is', 'is simple', 'simple', 'simple example', 'this', 'this is']
import pandas as pd
df = pd.DataFrame(single.toarray(), columns=singleTFIDF.get_feature_names())
df
Out[48]:
example is is simple simple simple example this this is
0 0.377964 0.377964 0.377964 0.377964 0.377964 0.377964 0.377964