Разница между словарем и 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
Другие вопросы по тегам