Сбой Кернала из-за высокой размерности в задаче НЛП. Уменьшите размерность при использовании TfiDfVectorizer и Logisti c Regression - PullRequest
0 голосов
/ 26 марта 2020

У меня есть daaframe с более чем 300000 записей твитов. Моя цель - классифицировать твиты по идентификатору автора или, другими словами, предсказать автора.

Проблема в том, что данные в твиттере очень грязные. многие орфографические ошибки, диалект и использование URL, эмодзи, хэштеги делают его еще хуже. Даже после очистки данных с помощью очень простых правил фильтрации, таких как re.sub(r'[a-zA-Z]',' ',text), удаления nltk.stopwords('english), удаления твитов, содержащих менее 3 слов, и удаления URL-адресов, у меня есть вектор признаков, которому моя система не может выделить память. Что я могу сделать больше?

Могу ли я удалить строки, где автор опубликовал только один раз? (что если он / она пишет в Твиттере в тестовых данных?)

Вот мой код очистки текста

def text_cleaner(text):

    # text = re.sub(r'^https?:\/\/.*[\r\n]*', '-URL-', text, flags=re.MULTILINE) # sub URL
    text = re.sub(r'http\S+', ' ', text) 
    text = re.sub(r'www\S+', ' ', text) 

    text = re.sub(r'\d',' ',text) # remove any number

    # text = re.sub('@handle',' ',text)
    text = re.sub(r'@\w+', '', text)

    text = re.sub(r'[^a-zA-Z]', ' ', text)  # very basic operation of cleaning

    # text = re.sub(r'[:]',' ',text) # special characters
    # text = re.sub(r'[-]',' ',text)
    # text = re.sub(r'[!]',' ',text)
    # text = re.sub(r'[_]',' ',text)
    # text = re.sub('[?]',' ',text)
    # text = re.sub('[.]',' ',text)
    # text = re.sub('[+]',' ',text)
    # text = re.sub('[=]',' ',text)

    # text = re.sub(r'([\W_])\1+',' ',text) # multiple repeating special characters
    # text = re.sub(r'(?<=\s)[\W\d](?=(\s|$))', ' ', text)
    # text = re.sub(r'(?<=\w)\W+(?=(\s|$))', ' ', text)
    # text = re.sub(r'(\W)\1+(?=\w)', r'\1', text)

    text = re.sub('\n',' ',text)
    text = re.sub('\s\s+',' ',text) # multiple space
    text = text.lstrip()
    text = text.rstrip()
    return text
df['tweet'] = df['tweet'].apply(lambda text: remove_contraction(text)) # remove contractions
df['tweet'] = df['tweet'].apply(lambda text: remove_stopwords(text)) # remove stopwords
df['tweet'] = df['tweet'].apply(lambda text: text_cleaner(text)) #  clean text

df['tweet'] = df['tweet'].apply(lambda text: ' '.join([lemma.lemmatize(word) for word in text.split(' ')]))

Может кто-нибудь подсказать, как уменьшить размеры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...