Я нашел этот код Python для выполнения стемминга текстовых файлов.
import nltk
import string
from collections import Counter
def get_tokens():
with open('/Users/MYUSERNAME/Desktop/Test_sp500/A_09.txt', 'r') as shakes:
text = shakes.read()
lowers = text.lower()
no_punctuation = lowers.translate(None,string.punctuation)
tokens = nltk.word_tokenize(no_punctuation)
return tokens
tokens = get_tokens()
count = Counter(tokens)
print
count.most_common(10)
from nltk.corpus import stopwords
tokens = get_tokens()
filtered = [w for w in tokens if not w in stopwords.words('english')]
count = Counter(filtered)
print
count.most_common(100)
from nltk.stem.porter import *
def stem_tokens(tokens, stemmer):
stemmed = []
for item in tokens:
stemmed.append(stemmer.stem(item))
return stemmed
stemmer = PorterStemmer()
stemmed = stem_tokens(filtered, stemmer)
count = Counter(stemmed)
print
count.most_common(100)
Когда я пытаюсь запустить эту программу, я получаю следующую ошибку:
Traceback (most recent call last):
File "/Users/MYUSERNAME/Desktop/stemmer.py", line 15, in <module>
tokens = get_tokens()
File "/Users/MYUSERNAME/Desktop/stemmer.py", line 10, in get_tokens
no_punctuation = lowers.translate(None,string.punctuation)
TypeError: translate() takes exactly one argument (2 given)
Теперь мои вопросы:
- Как я могу это исправить?
- Когда эта программа работает, как я могу запустить этот сценарий не только для одного файла .txt, но и для всех файлов .txt в определенном каталоге?
Примечание. Обычно мне не нужно программировать, поэтому я знаю только абсолютные основы Python.
lowers.translate(None,string.punctuation)
передается два аргумента, но он принимает только один. Прочтите документациюtranslate
и выясните, что следует передать в качестве аргумента - person Sheldore   schedule 20.10.2018