Классификация тональности Word2Vec с R и H2O

Я пытаюсь построить модель классификации настроений с помощью R и H2O. У меня есть файл данных в формате:

  +-----------+------------------------------------------------------+
| Sentiment | Text                                                 |
+-----------+------------------------------------------------------+
| 1         | This is a sample text. This is another sentence.     |
+-----------+------------------------------------------------------+
| 0         | Another sentence. And another!                       |
+-----------+------------------------------------------------------+
| -1        | Text text and Text! Text everywhere! So much text... |
+-----------+------------------------------------------------------+

Таким образом, значение тональности равно 1, 0 и -1, а текст в каждой строке может состоять из нескольких предложений. Я знаю, что хочу подготовить набор данных, чтобы использовать его с функцией глубокого обучения h2o. Поэтому я хотел использовать пакет R tmcn.word2vec. Но я не могу преобразовать его построчно с помощью этого пакета. Я мог бы просто получить весь текстовый столбец и преобразовать его в документ word2vec, но тогда моя информация о настроении была бы потеряна.

Есть ли другой способ перевести текст в числовой ввод для функции глубокого обучения в R? Специально для H2O?

С наилучшими пожеланиями


person JulianHi    schedule 17.06.2015    source источник
comment
Вот недавний пример использования word2vec в h2o: github.com/h2oai/h2o-3/blob/master/h2o-r/demos/   -  person redmode    schedule 24.03.2017


Ответы (3)


https://www.kaggle.com/c/word2vec-nlp-tutorial/details/part-3-more-fun-with-word-vectors

Вышеупомянутая статья Kaggle объясняет несколько способов преодоления этой проблемы (но на Python). Есть,

  1. Усреднение векторов (как упоминал Авни)
  2. Кластеризация
  3. Paragraph Vector Проверить этот документ

Думаю, идеи могут помочь.

person Vasu Bandaru    schedule 01.09.2016

Таким образом, есть несколько способов выполнить свою задачу по использованию H2O для этого приложения. Однако сначала вам нужно нормализовать тексты в вашем наборе данных.

Я предполагаю, что вы выполняете некоторую очистку/маркировку текста, которая создаст последовательность отдельных строк слов. Затем вы запустите свою модель Word2Vec на этих отдельных строках слов. Проблема заключается в том, что каждый текстовый документ может состоять из N слов, поэтому вы можете попробовать усреднить векторы word2vec для данной строки.

Итак, в приведенном выше примере с предложением 2: v (другое) + v (предложение) + v (и) + v (другое) / 4 (отдельные слова). Это даст средний вектор X-функций для каждого отдельного текстового документа.

После этого вы можете использовать нашу функцию h2o.cbind() в R. Итак, разделите ваш набор данных на 2 фрейма данных, где фрейм 1 — это просто настроение документа (-1, 0, 1), а следующий фрейм данных — это твиты ( «Еще одно предложение. И еще»). Выполните описанные выше шаги для кадра данных твита, а затем свяжите их.

Однако обязательно передайте оба фрейма данных в h2o ПЕРЕД использованием нашей команды h2o.cbind(), и тогда вы должны быть готовы запустить нашу модель h2o.deeplearning() на своем наборе данных!

Удачи!

person Avni    schedule 13.08.2015

Я использовал пакет rword2vec вместо tmcn.word2vec.

Для обучения модели wordvec не должно быть знаков препинания, а все слова должны быть строчными для лучшего результата.

train=data$Text
train=tolower(train)
train=gsub("[[:punct:]]", "", train)
write(train,"text_data.txt")

Теперь обучите модель word2vec этому текстовому файлу. Выходной файл может быть .txt или .bin.

Преимущество выходного файла .txt: вы можете легко изменять или выполнять операции над векторами слов.

Минус выходного файла .txt: вы не можете использовать другие функции rword2vec (расстояние, аналогия) в файле .txt.

Чтобы обучить модель word2vec:

model=word2vec(train_file = "text_data.txt",output_file ="model1.bin",layer1_size = 300,min_count = 40,num_threads = 4,window = 10,sample = 0.001,binary=1)

Чтобы получить файл .txt из выходного бинарного файла:

bin_to_txt("model1.bin","model1text.txt") 

Нам нужен «model1text.txt» для создания набора обучающих данных. Существует два популярных способа создания обучающего набора данных:

  1. Усреднение векторов (для каждой строки создайте вектор признаков, взяв среднее значение всех векторов слов, присутствующих в этой строке)
  2. Сумка центроидов (сгруппируйте словарь слов, а затем создайте сумку центроидов, аналогичную сумке слов)

Для получения дополнительной информации посетите страницу эта серия руководств:

Я построил модель классификации настроений, используя описанные выше методы для kaggle's bag of words встреча с мешком попкорна (ссылка на репозиторий Github). Вы можете использовать этот код, чтобы получить обучающий набор данных для ваших текстовых данных, внеся необходимые изменения.

Наконец, обучите это на обучающем наборе данных, используя h2o или любой другой алгоритм машинного обучения, чтобы получить модель классификации настроений.

person mukul    schedule 16.03.2016