【问题标题】:Word2Vec Sentiment Classification with R and H2O使用 R 和 H2O 进行 Word2Vec 情感分类
【发布时间】:2015-09-03 06:42:22
【问题描述】:

我正在尝试使用 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?

最好的问候

【问题讨论】:

标签: r machine-learning sentiment-analysis deep-learning h2o


【解决方案1】:

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

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

  1. 矢量平均(如 Avni 所述)
  2. 集群
  3. 段落向量Check this paper

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

【讨论】:

    【解决方案2】:

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

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

    所以在上面的句子 2 示例中: v(another) + v(sentence) + v(and) + v(another) / 4(单个词) 这将为每个单独的文本文档生成 X 个特征的平均向量。

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

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

    祝你好运!

    【讨论】:

      【解决方案3】:

      我使用了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. 质心包(聚类单词词汇,然后创建质心包,类似于单词包)

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-17
        • 2022-01-10
        • 2017-07-21
        • 2023-03-21
        • 2020-10-08
        • 2018-08-28
        • 2018-08-04
        • 2019-01-06
        相关资源
        最近更新 更多