Проблемы с использованием специального словаря для TfidfVectorizer scikit-learnPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с использованием специального словаря для TfidfVectorizer scikit-learn

Сообщение Anonymous »

Я пытаюсь использовать специальный словарь в scikit-learn для некоторых задач кластеризации и получаю очень странные результаты.

Программа работает нормально, когда нет используя собственный словарь, и я доволен созданием кластера. Однако я уже определил группу слов (около 24 000), которые хотел бы использовать в качестве собственного словаря.

Слова хранятся в таблице SQL Server. Я попробовал до сих пор 2 подхода, но в конце получил те же результаты. Первый — создать список, второй — создать словарь. Код создания словаря такой:

Код: Выделить всё

myvocab = {}
vocabulary = []

count = 0

for row in results:
skillName = re.sub(r'&#?[a-z0-9]+;', ' ', row['SkillName'])
skillName = unicode(skillName,"utf-8")
vocabulary.append(skillName)  #Using a list
myvocab[str(skillName)] = count #Using a dictionary
count+=1
Затем я использую словарь (либо версию списка, либо словарь, оба они дают одинаковый результат в конце) в TfidfVectorizer следующим образом:

Код: Выделить всё

vectorizer = TfidfVectorizer(max_df=0.8,
stop_words='english' ,ngram_range=(1,2) ,vocabulary=myvocab)
X = vectorizer.fit_transform(dataset2)
Форма X — (651, 24321), поскольку у меня есть 651 экземпляр для кластеризации и 24321 слово в словаре.

Если я распечатаю содержимое X, я получу следующее:

Код: Выделить всё

(14, 11462) 1.0
(20, 10218) 1.0
(34, 11462) 1.0
(40, 11462) 0.852815313278
(40, 10218) 0.52221264006
(50, 11462) 1.0
(81, 11462) 1.0
(84, 11462) 1.0
(85, 11462) 1.0
(99, 10218) 1.0
(127, 11462)    1.0
(129, 10218)    1.0
(132, 11462)    1.0
(136, 11462)    1.0
(138, 11462)    1.0
(150, 11462)    1.0
(158, 11462)    1.0
(186, 11462)    1.0
(210, 11462)    1.0

:   :
Как видно, в большинстве случаев присутствует только слово из словаря (что неверно, поскольку их как минимум 10), и во многих случаях экземпляров, ни одного слова не встречается. Кроме того, найденные слова, как правило, всегда одинаковы во всех экземплярах, что не имеет смысла.

Если я распечатаю имена функций, используя :

Код: Выделить всё

feature_names = np.asarray(vectorizer.get_feature_names())
Я получаю:

Код: Выделить всё

['.NET' '10K' '21 CFR Part 11' ..., 'Zend Studio' 'Zendesk' 'Zenworks']
Должен сказать, что программа работала отлично, когда используемый словарь определялся из входных документов, поэтому я сильно подозреваю, что проблема связана с использованием пользовательского словарный запас.

Кто-нибудь знает, что происходит?

(Я не использую конвейер, поэтому эта проблема не может быть связано с предыдущей ошибкой, которая уже исправлена)

Подробнее здесь: https://stackoverflow.com/questions/149 ... ikit-learn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблемы с использованием специального словаря для TfidfVectorizer scikit-learn
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с использованием пользовательского словаря для tfidfvectorizer scikit-learn
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Я не понимаю работу tfidfvectorizer scikit-learn.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Я не понимаю работу tfidfvectorizer scikit-learn.
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Использование серии Polars в качестве входных данных для Scikit Learn Tfidfvectorizer
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»