0

我正在尝试使用 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 的深度学习功能一起使用。因此我想使用tmcn.word2vec R 包。但我不能用这个包逐行转换它。我可以获取整个文本列并将其转换为 word2vec 文档,但随后我的情绪信息将丢失。

是否有另一种方法可以将文本转换为 R 中深度学习函数的数字输入?特别是H2O?

此致

4

3 回答 3

1

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

上面的 Kaggle 文章解释了克服这一挑战的几种方法(但是,在 Python 中)。有,

  1. 矢量平均(如 Avni 所述)
  2. 聚类
  3. 段落向量检查这篇论文

我认为这些想法可能会有所帮助。

于 2016-09-01T16:56:06.140 回答
0

因此,您可以通过几种方法来完成将 H2O 用于此应用程序的任务。首先,您需要对数据集中的文本进行规范化。

我假设您正在做一些文本清理/标记化,这将产生一系列单独的单词字符串。然后,您将在这些单独的字符串上运行您的 Word2Vec 模型。问题是每个文本文档可能有 N 个单词长,因此您可能想尝试对给定字符串的 word2vec 向量进行平均。

因此,在您上面关于 sentence2 的示例中: v(another) + v(sentence) + v(and) + v(another) / 4 (individual words) 这将为每个单独的文本文档生成一个长 X 特征的平均向量。

之后,您可以在 R 中使用我们的 h2o.cbind() 函数。因此,将您的数据集划分为 2 个数据帧,其中第 1 帧只是文档的情绪 (-1, 0, 1),下一个数据帧是推文 ( '另一个句子。另一个')。在推文数据帧上运行上述步骤,然后 cbind 两者。

确保在使用我们的 h2o.cbind() 命令之前将两个数据帧都传递到 h2o 中,然后您应该准备好在您的数据集上运行我们的 h2o.deeplearning() 模型!

祝你好运!

于 2015-08-13T23:22:38.540 回答
0

我使用了 rword2vec包而不是 tmcn.word2vec。

为了训练 wordvec 模型,不应该有任何标点符号,所有单词都应该小写以获得更好的结果

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

现在在这个文本文件上训练 word2vec 模型。输出文件可以是 .txt 或 .bin。

.txt 输出文件的优点:您可以轻松更改或对词向量进行操作。

.txt 输出文件的缺点:您不能在 .txt 文件上使用其他 rword2vec 函数(距离、类比)。

训练 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. Bag of Centroids(聚类单词词汇,然后创建类似于 Bag of Words 的 centroids bag)

有关更多信息,请查看教程系列:

我已经使用上述方法建立了一个情绪分类模型,用于 kaggle 的词袋遇到爆米花袋(Github Repo 链接)。您可以使用此代码通过进行一些必要的更改来获取文本数据的训练数据集。

最后,使用 h2o 或任何其他机器学习算法在训练数据集上对其进行训练,以获得情感分类模型。

于 2016-03-16T07:36:14.183 回答