因爲我們需要在龐大的數據集上訓練分類器,所以我們如何才能爲情感分析製作工作分類器。使用機器學習的情感分析分類器
我有龐大的數據集來訓練,但分類器對象(這裏使用Python),使用3000個單詞時出現內存錯誤。我需要訓練超過100K字。
我認爲是將大數據集分成較小的部分,併爲每個部分分別創建一個分類器對象,並將其存儲在一個pickle文件中並使用它們。但似乎使用所有的分類器對象進行測試是不可能的,因爲它在測試過程中只需要其中一個對象。
我想到的解決方案是將保存在pickle文件中的所有已保存的分類器對象(這不會發生)組合起來,或者用新的訓練集繼續添加同一對象(但同樣,它是被覆蓋並且未被附加)。
我不知道爲什麼,但即使是機器學習的基礎,我也找不到解決方案。每個機器學習項目都需要接受大量數據集的訓練,並且用於訓練這些數據集的對象大小總是會導致內存錯誤。
那麼,如何解決這個問題呢?我願意接受任何解決方案,但希望聽到做實時機器學習項目的人員後續工作。
代碼段:
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
all_words = []
for w in movie_reviews.words():
all_words.append(w.lower())
all_words = nltk.FreqDist(all_words)
word_features = list(all_words.keys())[:3000]
def find_features(document):
words = set(document)
features = {}
for w in word_features:
features[w] = (w in words)
return features
featuresets = [(find_features(rev), category) for (rev, category) in documents]
numtrain = int(len(documents) * 90/100)
training_set = featuresets[:numtrain]
testing_set = featuresets[numtrain:]
classifier = nltk.NaiveBayesClassifier.train(training_set)
PS:我使用使用NaiveBayes的NLTK工具包。我的訓練數據集正在打開並存儲在documents
中。
我有我的文本數據形式的文件。每個文件都有幾句話。像這樣我有成千上萬的文件。解析所有這些文檔並不會給我帶來任何問題。但是我選擇培訓的詞彙數量確實如此。如果我選擇超過3000個單詞,那麼它會開始提供詞典錯誤。 – Arkham
它不像「字典錯誤」這樣的事情 - 這看起來像是一些特定的實現問題,因此沒有確切的代碼就不可能跟蹤這個特定的問題。正如答案中所示 - 現代ML技術沒有這樣的限制,因此問題出在你的代碼上,而不是ML中使用的方法。 – lejlot
我發佈了代碼片段,我使用的是3000個單詞。 – Arkham