Я не могу использовать TfidfVectorizer и его метод fit_transform, как я могу решить эту проблему? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь использовать 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())
...