2016-09-30 2 views
0

Я создал простую программу подсчета слов, и я пытаюсь отфильтровать общеупотребительные слова из своего списка, используя nltk (см. Ниже).Фильтрация стоп-слов

Мой вопрос в том, как применить фильтр «стоп» к моему «частому» списку?

#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]) 

ответ

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

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

stop Пока еще set, проверьте ключи вашего frequency словаря при выполнении понимания. После этого вы можете снова остановить список.

Причина, по которой я храню его как набор, заключается в том, что поиск поисковых наборов гораздо эффективнее, чем поиск списков.

Смежные вопросы