0
다음 코드를 사용하여 ~ 20,000,000 개의 문서에 tf-idf 모델을 생성했습니다. 제대로 작동합니다. 내가 메모리 사용량이 불면 linear_kernel 유사도 점수를 계산하려고하면 문제가 : Tfidf 행렬과 예측 벡터 간의 유사성 계산시 메모리 오버플로가 발생합니다.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
train_file = "docs.txt"
train_docs = DocReader(train_file) #DocReader is a generator for individual documents
vectorizer = TfidfVectorizer(stop_words='english',max_df=0.2,min_df=5)
X = vectorizer.fit_transform(train_docs)
#predicting a new vector, this works well when I check the predictions
indoc = "This is an example of a new doc to be predicted"
invec = vectorizer.transform([indoc])
#This is where the memory blows up
similarities = linear_kernel(invec, X).flatten()
은 20mil에 1 행 CSR의 비교를하고, 많은 메모리를 차지하지 말아야 같이 보인다 -row-CSR은 1x20mil ndarray를 출력해야합니다.
Justy 참고 : X는 CSR 매트릭스 ~ 12GB의 메모리입니다 (내 컴퓨터에만 16 개가 있음). 나는 이것을 대체하기 위해 gensim을 조사해 보았지만 훌륭한 예를 찾을 수는 없습니다.
제가 누락 된 부분에 대한 의견이 있으십니까?
감사 브래드, 이건 내 목적을 위해 꽤 잘 작동합니다! 아직도 왜 메모리 오버플로, 아마도 뭔가 스파 스 매트릭스 곱셈의 내 가난한 이해와 관련이 있는지 모르겠어요 :) – jowparks