dask - AttributeError: у объекта 'Series' нет атрибута 'split' - PullRequest
0 голосов
/ 26 марта 2019

У меня более 8 миллионов строк текста, где я хочу удалить все стоп-слова, а также лемматизировать текст с помощью dask.map_partitions (), но получаю следующую ошибку:

AttributeError: 'Series' object has no attribute 'split'

Есть ли способ применить функцию к набору данных?

Спасибо за помощь.

import pandas as pd
import dask.dataframe as dd
from spacy.lang.en import stop_words

cachedStopWords = list(stop_words.STOP_WORDS)

def stopwords_lemmatizing(text):
    return [word for word in text.split() if word not in cachedStopWords]

text = 'any length of text'
data = [{'content': text}]
df = pd.DataFrame(data, index=[0])
ddf = dd.from_pandas(df, npartitions=1)

ddf['content'] = ddf['content'].map_partitions(stopwords_lemmatizing, meta='f8')

1 Ответ

1 голос
/ 26 марта 2019

map_partitions, как следует из названия, работает с каждым разделом вашего общего фрейма данных dask, который является каждым фреймом данных pandas (http://docs.dask.org/en/latest/dataframe.html#design). Ваша функция значение по значению для seriesq, так что вы на самом деле хотели просто map:

ddf['content'] = ddf['content'].map(stopwords_lemmatizing)

(если вы хотите предоставить мета здесь, это должен быть ряд нулевой длины, а не фрейм данных, например, meta=pd.Series(dtype='O')).

...