Программа
my python требует почти 20 se c для вычисления td-idf корпуса и сохранения кадра данных в csv. В моем корпусе около 411 документов с точными 276 словами. нормально ли это, если нет, чем я могу сделать этот процесс быстрым. Сначала я делаю токены, после чего удаляю стоп-лоты и разбиваю слова на части и, наконец, использую векторизатор tf-idf.
Ниже приведен код я использую
from pymongo import MongoClient
import csv
import nltk
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
import pandas as pd
def connect_db():
client = MongoClient("localhost", 27017)
return client
client = connect_db()
ps=PorterStemmer()
db = client['geoDB']#database creation in mongodb
geoT=db['geoT']
documents = list(geoT.find())
tokens=[]
for doc in documents:
word_data = str(doc)
nltk_tokens = nltk.word_tokenize(word_data)
tokens.append(np.array(nltk_tokens))
tokenizedStory=np.array(tokens)#tokenized stories
stop_words = set(stopwords.words('english'))
i=0
filteredListOfStory=[]
filteredStory=[]
for stories in tokenizedStory:
for words in stories:
if words not in stop_words and 'www.geo.tv' not in words and '5e6' not in words and '5e7' not in words:
filteredStory.append(words)
filteredListOfStory.append(filteredStory)#filtered stories
filteredStory=[]
stemedStories=""
StemedListOfStories=[]
wordCounter=0
for story in filteredListOfStory:
for words in story:
stemedStories=stemedStories+" "+ps.stem(words)
wordCounter=wordCounter+1
StemedListOfStories.append(stemedStories)
stemedStories=""
print("======Word Counter========",wordCounter)
vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform(StemedListOfStories)
feature_names = vectorizer.get_feature_names()
# print(feature_names)
dense = vectors.todense()
denselist = dense.tolist()
df = pd.DataFrame(denselist, columns=feature_names)
df.to_csv (r'C:\Users\salman\Desktop\export_dataframe.csv', index = False, header=True)