Helpers - компьютеры, интернет, программирование

Странные линии при использовании tfidvectoriser могут быть вызваны заменой на ' '?

вчера я писал здесь о создании модели текстовой линейной регрессии для прогнозирования настроений, мне интересно, что после перевода текста в нижний регистр, удаления любых стоп-слов/пунктуации и чисел у меня остаются странные линии на некоторых из моих текстовых функций.

     ['_______',


'__________',
 '__________ pros',
 '____________',
 '____________ pros',
 '_____________',
 '_____________ pros',
 'aa',
 'aa waist',
 'ab',
 'abdomen',
 'ability',
 'able',
 'able button',
 'able buy',

Я думаю, это потому, что вместо знаков препинания и цифр я заменил их пробелом? я все еще не совсем уверен.

Другой вопрос: как мне правильно структурировать это для линейной регрессии? должен ли я представлять каждое предложение столбцом их функций и передавать его в сеть? но как бы я справился, если матрица разрежена?

Извините, я просто узнаю больше о предварительной обработке текста

вот мои шаги по чистке: давайте предположим, что предложение выглядит так: «это платье из прекрасной платины женственно и идеально сидит, его легко носить и оно удобное!» настоятельно рекомендую!'

  1. нижний регистр

    AllSentences['Sentence'] = AllSentences['Sentence'].map(лямбда x: x.lower())

2.удалить стоп-слова

  stop = stopwords.words('english')
    AllSentences['Sentences_without_stopwords'] = AllSentences['Sentence'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop)]))

3.удалить номера

AllSentences['Sentences_without_stopwords_punc'] = AllSentences['Sentences_without_stopwords'].apply(lambda x: re.sub(r'[^\w\s]', '',x))
AllSentences['Sentences_without_stopwords_punc'] = AllSentences['Sentences_without_stopwords_punc'].apply(lambda x: re.sub(r'\d+', '',x))
  1. разделение тестов/поездов, tfidvectorise

    X_train, X_test, y_train, y_test = train_test_split(X, Y, 
     test_size=0.30, random_state=42)
    
       vect_word = TfidfVectorizer(max_features=20000, lowercase=True, 
       analyzer='word',stop_words= 'english',ngram_range=(1,3),dtype=np.float32)
    
    tr_vect = vect_word.fit_transform(X_train)
    ts_vect = vect_word.transform(X_test)
    

который дал мне приведенный выше вывод для имен функций?


  • Не могли бы вы поделиться, как вы очищаете строку? Кроме того, какие функции вы извлекаете? 09.11.2019
  • @JamesMchugh Я добавил в текст описанные выше шаги, я пытаюсь извлечь функции, которые могут отражать хорошее или плохое настроение. 09.11.2019
  • Вы используете линейную регрессию или логистическую регрессию? Для анализа настроений классификатора должно быть достаточно. Я могу ошибаться, но я не вижу здесь применения модели линейной регрессии. 10.11.2019

Ответы:


1

Я думаю, что использование TfidfVectorizer — отличное начало для первоначальной попытки анализа настроений. Чтобы избежать разреженности в ваших векторах признаков, вы можете начать с меньшего количества признаков и увеличивать их в зависимости от того, как работают ваши модели. Возможно, вы могли бы сделать его гиперпараметром во время обучения и использовать GridSearch и Pipeline, чтобы найти для него наилучшее значение. См. пример этого здесь. В зависимости от того, как это происходит, более надежная реализация может использовать встраивание слов. Однако это, скорее всего, усложнит вашу модель.

Странные строки в строке — это символы подчеркивания, которые должны были быть в исходном тексте. Они не были очищены в процессе очистки, поскольку вы использовали re.sub(r'[^\w\s]', '',x) для удаления символов, отличных от слов, и пробелов из строки. Символы подчеркивания являются частью набора символов слова ('\w'), поэтому они не удалялись.

Я также должен отметить, что большая часть вашей пользовательской очистки не требуется, так как TfidfVectorizer должен справиться с этим за вас. Например, вы удаляете стоп-слова, а затем TfidfVectorizer пытается удалить и их. Это также относится к удалению знаков препинания и цифр из строки. TfidfVectorizer принимает параметр token, и вы можете передать ему регулярное выражение, чтобы выбрать, какие символы вы хотите сохранить в токене. Если вам нужны только альфа-символы в вашей строке, этого регулярного выражения для аргумента токена должно быть достаточно, чтобы выполнить очистку за вас: '[a-zA-Z]'. Опять же, я не использую здесь набор символов '\w', так как он включает символы подчеркивания (и цифры).

Поскольку вы уже запустили метод fit_transform из TfidfVectorizer на своем обучающем наборе и метод transform на своем тестовом наборе, образцы в этих наборах должны быть готовы к обучению/тестированию. Их не нужно дополнительно обрабатывать.

10.11.2019
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..