Я пытаюсь использовать TfidfVectorizer, чтобы выяснить, какие документы в коллекции из 40000 статей относятся к одним и тем же темам.
В mypath у меня есть список документов, которые я хочу проанализировать. vectorizer.get_feature_names () возвращает большой список слов, поэтому я думаю, что это правильно.
Однако когда я вызываю метод fit_transform () из TfidfVectorizer, он возвращает матрицу X с одним столбцом, и я неНе понимаю, в чем проблема.
Есть ли у вас какие-либо предложения?
class LemmaTokenizer(object):
def __init__(self):
self.lemmatizer = WordNetLemmatizer()
def __call__(self, documents):
lemmas = []
for t in word_tokenize(documents):
t = t.strip()
lemma = self.lemmatizer.lemmatize(t)
if not lemma.isalpha():
break
lemmas.append(lemma)
return lemmas
files=[]
data=[]
path=r"mypath"
for filename in os.listdir(path):
files.append(path+f'\{filename}')
for file in files:
with open(file) as f:
data.append(f.read())
lemmaTokenizer = LemmaTokenizer()
vectorizer = TfidfVectorizer(input='content', tokenizer=lemmaTokenizer, strip_accents='unicode', stop_words=sw.words('english'))
X = vectorizer.fit_transform(raw_documents=data)
print(vectorizer.get_feature_names())