Программа работает нормально, когда нет используя собственный словарь, и я доволен созданием кластера. Однако я уже определил группу слов (около 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
Код: Выделить всё
vectorizer = TfidfVectorizer(max_df=0.8,
stop_words='english' ,ngram_range=(1,2) ,vocabulary=myvocab)
X = vectorizer.fit_transform(dataset2)
Если я распечатаю содержимое 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
: :
Если я распечатаю имена функций, используя :
Код: Выделить всё
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