Я испытываю эту ошибку при использовании Dask. Я понятия не имею, как это исправить, так как в моем коде явно ничего нет.
Я занимаюсь чтением фрейма данных и использованием stanfordnlp
для токенизации текстового столбца. и затем достаньте nouns
. Он работает нормально только при использовании pandas
, но при использовании dask
я получаю эту ошибку. Я на Ubuntu
, python 3.7.3
и Dask 2.6.0
.
Это моя ошибка:
Traceback (последний вызов был последним): файл "main.py",строка 56, в основной (df = data, nlp = nlp, lang = lang, wanted_pos = wp)
Файл "main.py", строка 13, в основном файле df.persist () "/ home / bertil / Envs/datascience/lib/python3.7/site-packages/dask/base.py ", строка 138, в файле persist (result,) = persist (self, traverse = False, ** kwargs)" / home / bertil / Envs/datascience/lib/python3.7/site-packages/dask/base.py ", строка 629, в постоянных результатах = расписание (dsk, ключи, ** kwargs)
Файл" / home / bertil / Envs / datascience/lib/python3.7/site-packages/dask/threaded.py ", строка 80, в файле get ** kwargs
File" /home/bertil/Envs/datascience/lib/python3.7/site-packages/dask / local.py ", строка 486, в get_async повышение_эксклюзии (без учета, tb)
Файл" /home/bertil/Envs/datascience/lib/python3.7/site-packages/dask/local.py ", строка316, в ререйз-рейсе exc
Файл "/home/bertil/Envs/datascience/lib/python3.7/site-packages/dask/local.py", строка 222,в execute_task result = _execute_task (task, data)
Файл "/home/bertil/Envs/datascience/lib/python3.7/site-packages/dask/core.py", строка 118, в _execute_task args2 = [_execute_task(a, кэш) для аргументов in]]
Файл "/home/bertil/Envs/datascience/lib/python3.7/site-packages/dask/core.py", строка 118, в args2 = [_execute_task (a, кеш) для аргументов в аргументах]
Файл "/home/bertil/Envs/datascience/lib/python3.7/site-packages/dask/core.py", строка 119, в _execute_task return func (* args2)
TypeError: call () принимает 2 позиционных аргумента, но было дано 3
Это мой код:
#!/usr/bin/env python
from pathlib import Path
import dask.dataframe as dd
import stanfordnlp
import string
def main(df, nlp, lang, wanted_pos):
df['tagged'] = df['Message'].apply(process,
args=(nlp, lang, wanted_pos,),
meta=('Message', 'object'))
df.persist()
df.to_csv(f'output.csv')
def process(text, nlp, lang, wanted_pos):
# Remove punctuation
text = text.translate(str.maketrans('', '', string.punctuation))
token = nlp(text)
words = {word for sent in token.sentences for word in sent.words}
wanted_words = set(filter(lambda x: x in wanted_pos, words))
wanted_words = ','.join(word for word in wanted_words if word)
return wanted_words
if __name__ == '__main__':
# Choose language
lang = 'da'
# Chose wanted_pos
wp = ['NOUN']
# Read data in chunks
data = dd.read_csv('sample.csv', quoting=3, error_bad_lines=False,
dtype={'Message': 'object',
'Action Time': 'object',
'ClientQueues': 'object',
'Country': 'object',
'Custom Tags': 'object',
'Favorites': 'object',
'Geo Target': 'object',
'Location': 'object',
'State': 'object'})
# Download model for nlp.
stanford_path = Path.home() / 'stanfordnlp_resources' / f'{lang}_ddt_models'
if not stanford_path.exists():
stanfordnlp.download(lang)
# Set up nlp pipeline
nlp = stanfordnlp.Pipeline(processors='tokenize,lemma,pos', lang=lang)
main(df=data, nlp=nlp, lang=lang, wanted_pos=wp)
Обновление: я думалЯ исправил это, но не сделал, поэтому я снова удалил свой ответ. Я все еще испытываю проблему