저는 전자 상거래 데이터를 파이썬으로 작업하고 있습니다. 나는 그 데이터를 파이썬에 로딩하고 그것을 판다 데이터 프레임으로 변환했다. 이제 원하지 않는 문자, 불용어, 형태소 분석 등을 제거하는 것과 같은 데이터 처리를 수행하려고합니다. 현재 적용한 코드는 잘 작동하지만 시간이 많이 걸립니다. 나는 처리 할 데이터의 행이 약 2 백만 개이며 처리하는 데 영원히 걸립니다. 10,000 줄에 그 코드를 시도했는데 약 240 초가 걸렸습니다. 나는 이런 종류의 프로젝트를 처음으로 연구하고있다. 시간을 줄이는데 도움이 될 것입니다.데이터 프레임의 파이썬에서의 빠른 텍스트 처리
미리 감사드립니다.
from nltk.stem import PorterStemmer
from nltk.corpus import stopwords
import re
def textprocessing(text):
stemmer = PorterStemmer()
# Remove unwanted characters
re_sp= re.sub(r'\s*(?:([^a-zA-Z0-9._\s "])|\b(?:[a-z])\b)'," ",text.lower())
# Remove single characters
no_char = ' '.join([w for w in re_sp.split() if len(w)>1]).strip()
# Removing Stopwords
filtered_sp = [w for w in no_char.split(" ") if not w in stopwords.words('english')]
# Perform Stemming
stemmed_sp = [stemmer.stem(item) for item in filtered_sp]
# Converting it to string
stemmed_sp = ' '.join([x for x in stemmed_sp])
return stemmed_sp
는 그 dataframe에이 메서드를 호출하고 있습니다 :
files['description'] = files.loc[:,'description'].apply(lambda x: textprocessing(str(x)))
당신은 사용자의 편의에 따라 모든 데이터를 취할 수 있습니다. 일부 정책으로 인해 데이터를 공유 할 수 없습니다.
하나의 빠른 변화를 제거하기 위해 NLTK 사용할 수있는 모든 루프
을 stop_word : 불용어는 일반적으로 목록이며 2400 개의 항목이있는 것 같습니다. 세트를 만드는 것은''스톱 어블에서''하지 않을 것' '을 상당히 빨라야한다. 먼저 작은 추출물에 변화를 시험해보십시오. 또한 적용은 때로 정상적인 목록 이해보다 느린 것 같습니다. - 열을 추출하고 목록 작성으로 코드를 처리 한 다음 (실제로 처리의 좋은 비트) 코드를 다시 삽입 한 다음 다시 삽입하는 것이 좋습니다. –
판다에'적용 '하는 것은리스트 나 사전과 같은 다른 구조에 함수를 적용하는 것보다 상당히 느립니다. 'pandas.DataFrame'에서 원하는 특별한 이유가 있습니까? 다른 것을 사용해 보셨습니까? –
데이터베이스를 통해로드 중입니다. 그래서 DataFrame으로 변환하여 작업하고 있습니다. 제가 적용하고 쉽게 사용할 수있는 다른 데이터 저장 옵션이 있습니까? – Sam