2015-03-26 2 views
3

Я попробовал два способа удаления игнорируемых слов, оба из которых я столкнулся с проблемами:Как продлить список заметок из NLTK и удалить стоп-слова с расширенным списком?

Метод 1:

cachedStopWords = stopwords.words("english") 
words_to_remove = """with some your just have from it's /via & that they your there this into providing would can't""" 
remove = tu.removal_set(words_to_remove, query) 
remove2 = tu.removal_set(cachedStopWords, query) 

В этом случае только первая функция удалить работает. remove2 не работает.

Метод 2:

lines = tu.lines_cleanup([sentence for sentence in sentence_list], remove=remove) 
words = '\n'.join(lines).split() 
print words # list of words 

выход выглядит следующим образом ["Hello", "Good", "day"]

я стараюсь, чтобы удалить из слов стоп-слова. Это мой код:

for word in words: 
    if word in cachedStopwords: 
     continue 
    else: 
     new_words='\n'.join(word) 

print new_words 

Результат выглядит следующим образом:

H 
e 
l 
l 
o 

Cant выяснить, что случилось с выше 2 способами. Пожалуйста посоветуй.

ответ

-1

Вы хотите tokenise вашу строку:

words = string.split() 

простой способ сделать это, хотя NLTK имеет другие tokenisers.

Тогда, возможно, список понимание:

words = [w for w in words if w not in cachedstopwords] 

Это:

from nltk.corpus import stopwords 

stop_words = stopwords.words("english") 
sentence = "You'll want to tokenise your string" 

words = sentence.split() 
print words 
words = [w for w in words if w not in stop_words] 
print words 

Печать:

["You'll", 'want', 'to', 'tokenise', 'your', 'string'] 
["You'll", 'want', 'tokenise', 'string'] 
0

Вы можете изменить метод 2:

for word in words: 
    if word in cachedStopwords: 
     continue 
    else: 
     new_words='\n'.join(word) 

print new_words 

к:

new_words = [] 
for word in words: 
    if word in stop_words: 
     continue 
    else: 
     new_words.append(word) 

print new_words 
1

Я думаю, что вы хотите достичь, чтобы расширить список игнорируемых слов из NLTK. Поскольку стоп-слова в NLTK хранятся в одном списке, вы можете просто сделать это:

>>> from nltk.corpus import stopwords 
>>> stoplist = stopwords.words('english') 
>>> stoplist 
[u'i', u'me', u'my', u'myself', u'we', u'our', u'ours', u'ourselves', u'you', u'your', u'yours', u'yourself', u'yourselves', u'he', u'him', u'his', u'himself', u'she', u'her', u'hers', u'herself', u'it', u'its', u'itself', u'they', u'them', u'their', u'theirs', u'themselves', u'what', u'which', u'who', u'whom', u'this', u'that', u'these', u'those', u'am', u'is', u'are', u'was', u'were', u'be', u'been', u'being', u'have', u'has', u'had', u'having', u'do', u'does', u'did', u'doing', u'a', u'an', u'the', u'and', u'but', u'if', u'or', u'because', u'as', u'until', u'while', u'of', u'at', u'by', u'for', u'with', u'about', u'against', u'between', u'into', u'through', u'during', u'before', u'after', u'above', u'below', u'to', u'from', u'up', u'down', u'in', u'out', u'on', u'off', u'over', u'under', u'again', u'further', u'then', u'once', u'here', u'there', u'when', u'where', u'why', u'how', u'all', u'any', u'both', u'each', u'few', u'more', u'most', u'other', u'some', u'such', u'no', u'nor', u'not', u'only', u'own', u'same', u'so', u'than', u'too', u'very', u's', u't', u'can', u'will', u'just', u'don', u'should', u'now'] 
>>> more_stopwords = """with some your just have from it's /via & that they your there this into providing would can't""" 
>>> stoplist += more_stopwords.split() 
>>> sent = "With some of hacks to your line of code , we can simply extract the data you need ." 
>>> sent_with_no_stopwords = [word for word in sent.split() if word not in stoplist] 
>>> sent_with_no_stopwords 
['With', 'hacks', 'line', 'code', ',', 'simply', 'extract', 'data', 'need', '.'] 
# Note that the "With" is different from "with". 
# So let's try this: 
>>> sent_with_no_stopwords = [word for word in sent.lower().split() if word not in stoplist] 
>>> sent_with_no_stopwords 
['hacks', 'line', 'code', ',', 'simply', 'extract', 'data', 'need', '.'] 
# To get it back into a string: 
>>> new_sent = " ".join(sent_with_no_stopwords) 
>>> new_sent 
'hacks line code , simply extract data need .' 

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

  • Нет связанных вопросов^_^