| |
| import nltk |
| import string |
| from nltk.stem.porter import PorterStemmer |
| from nltk.corpus import stopwords |
| from nltk.tokenize import word_tokenize |
|
|
| ps = PorterStemmer() |
|
|
|
|
| def ensure_nltk_downloads(): |
| try: |
| stopwords.words("english") |
| except LookupError: |
| nltk.download("stopwords") |
|
|
| try: |
| word_tokenize("Hello world") |
| except LookupError: |
| nltk.download("punkt") |
|
|
|
|
| ensure_nltk_downloads() |
|
|
|
|
| def apply_text_cleaner(x): |
| return x.apply(text_cleaner_func) |
|
|
|
|
| def text_cleaner_func(text): |
| text = text.lower() |
| words = word_tokenize(text) |
| words = [word for word in words if word.isalnum()] |
| words = [ |
| word |
| for word in words |
| if word not in stopwords.words("english") and word not in string.punctuation |
| ] |
| words = [ps.stem(word) for word in words] |
| return " ".join(words) |
|
|