2016-09-30 3 views
0

Ich habe ein einfaches Wortzählungsprogramm erstellt und versuche, häufig verwendete Wörter aus meiner Liste mithilfe von nltk herauszufiltern (siehe unten).Filtern von Stoppwörtern

Meine Frage ist, wie würde ich meinen "Stop" -Filter auf meine "Frequenz" -Liste anwenden?

#Start 
from nltk.corpus import stopwords 
import re 
import string 
frequency = {} 
document_text = open('Import.txt', 'r') 
text_string = document_text.read().lower() 
match_pattern = re.findall(r'\b[a-z]{3,15}\b', text_string) 

for word in match_pattern: 
    count = frequency.get(word,0) 
    frequency[word] = count + 1 

frequency = {k:v for k,v in frequency.items() if v>1} 

stop = set(stopwords.words('english')) 
stop = list(stop) 
stop.append(".") 

import csv 

with open('Export.csv', 'w') as csvfile: 
    writer = csv.writer(csvfile) 
    for key, value in frequency.items(): 
     writer.writerow([key, value]) 

Antwort

1
stop = set(stopwords.words('english')) 
stop.(".") 

frequency = {k:v for k,v in frequency.items() if v>1 and k not in stop} 

Während stop ist immer noch ein set, überprüfen Sie die Tasten Ihres frequency Wörterbuch, wenn das Verständnis zu tun. Sie können immer noch eine Liste wieder stoppen.

Der Grund, warum ich es als Set halte, ist, dass es viel effizienter ist, Sets zu suchen als Listen zu suchen.