我向你致敬!我在這裏是新手,我試圖優化這部分代碼時遇到了一些問題。Python:如何優化兩個大集合之間的比較?
我從兩個文件讀取:
Corpus.txt ----->包含我的文字(1.000.000字)
Stop_words.txt ----->包含了我stop_list(4000字)
我必須將每個單詞從我的語料庫與stop_list中的每個單詞進行比較,因爲我想要一個沒有停用詞的文本,所以我已經: 1.000.000 * 4000比較做代碼如下:
fich= open("Corpus.txt", "r")
text = fich.readlines()
fich1= open("stop_words.txt", "r")
stop = fich1.read()
tokens_stop = nltk.wordpunct_tokenize(stop)
tokens_stop=sorted(set(tokens_stop))
for line in text :
tokens_rm = nltk.wordpunct_tokenize(line)
z = [val for val in tokens_rm if val not in tokens_stop]
for i in z:
print i
我的問題是:有什麼需要改變的嗎?任何結構來優化它?
你爲什麼要做'排序(set(tokens_stop))'?對它進行排序將返回一個具有O(n)線性搜索的列表,與集合的O(1)成員資格測試相比較。當然,因爲它已經排序了,所以可以使用平分模塊進行搜索O(log n),但是爲什麼不把它作爲一個集合來使用,所以不需要進行多達4000次比較? – Shashank