Existe um pacote em Python para remover as stopwords de textos em português. Eis como se usa:
# Stopwords em português:
>>> import nltk
>>> nltk.download('stopwords')
>>> stopwords = nltk.corpus.stopwords.words('portuguese')
>>> stopwords[:10]
[u'de', u'a', u'o', u'que', u'e', u'do', u'da', u'em', u'um', u'para']
>>> len(stopwords)
203
>>> 'a' in stopwords
True
>>> 'xico' in stopwords
False
Neste momento tem apenas 203 palavras, o que me parece muito pouco. Há uma lista destas palavras no github.
Para testar a pontuação, pode ser usado o código seguinte:
>>> import string
>>> for c in string.punctuation:
... print("[" + c + "]")
...
[!]
["]
[#]
[$]
[%]
[&]
[']
[(]
[)]
[*]
[+]
[,]
[-]
[.]
[/]
[:]
[;]
[<]
[=]
[>]
[?]
[@]
[[]
[\]
[]]
[^]
[_]
[`]
[{]
[|]
[}]
[~]
>>> ',' in string.punctuation
True
>>> 'a' in string.punctuation
False
