我已經完成了這部分,但這是減慢我如何改進其他串列中的 1405000 個單詞和 25000 個字串的方法,我的代碼如下
positiveReview 中的資料 = ['我喜歡這部電影','整體電影很棒,喜歡它',...] listOfWords 中的資料 = ['I', 'how', special', 'love', 'movie' 。 ..]
positiveReviews = reviews[labels == 'positive'].str.lower()
negativeReviews = reviews[labels == 'negative'].str.lower()
countsForPositive = {}
countsForNegative = {}
for word in listOfWords:
countsForPositive.update({word: positiveReviews.str.contains(word).sum()})
countsForNegative.update({word: negativeReviews.str.contains(word).sum()})
在代碼之后,我期望得到包含字串串列中的所有單詞和單詞在所有字串串列中出現的總數的 dict,即 print(positiveReview) 應該像 {I: 1, love:2, movie: 2 }
代碼正常作業,但是對于大量的單詞和 5000 的字串串列花費的時間太長
uj5u.com熱心網友回復:
我建議不要每次都為每個字串遍歷 1405000 個長單詞串列中的單詞,而是推薦以下步驟:
- 為每個字串創建一個關于字數統計的字典
- 將這些詞典合并為一個摘要詞典
- 用 1405000 長單詞串列過濾最終的匯總詞典
考慮到一個普通的評論字串包含 100 個不同的單詞,并且我們只使用一次單詞串列,回圈單詞串列應該更有效。
一個簡單而簡短的示例如下所示。
wordList = ["word1", "word2", "word3", "word4", "word5"]
reviews = ["word1 word1 word2 word2", "word1 word3 word2 word6" ]
# step 1 and 2
summaryDict = {}
for review in reviews:
for word in review.split():
if word in summaryDict:
summaryDict[word] = 1
else:
summaryDict[word] = 1
# step3
filteredDict = {k: v for k, v in summaryDict.items() if k in wordList}
print(filteredDict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349854.html
