【问题标题】:How to Train on plain text paragraphs and return keyphrases? is that even possible?如何训练纯文本段落并返回关键词?这甚至可能吗?
【发布时间】:2019-05-03 09:56:59
【问题描述】:

我正在研究关键短语提取,现在我能够创建一些特征并运行候选短语以及用于训练使用随机森林进行分类的机器学习模型的特征。

现在出于好奇,我想尝试深度学习,因为我想手动移除特征提取层,我希望它自己找出特征并通过传递一些文本文档和相关键来生成模型我想知道每个文档的短语(正确或不正确的 1/0),是否有任何训练模型接受纯文本而不是浮点值,如果不是,我如何尝试通过将句子和关键短语转换为浮点值和传递给训练模型

甚至尝试使用 Keras Sequential 模型创建模型(已给出示例)

model = Sequential()
model.add(Dense(18, input_dim=14, init='uniform', activation='relu'))
model.add(Dense(14, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, epochs=300, batch_size=10)

Please provide me any informative resources to start and has code samples as well.

【问题讨论】:

  • 一项非常好的工作是使用 BERT 作为文本摘要的工具(我怀疑这就是你想要的)。这里有一篇很好的文章可以帮助你朝这个方向发展 (arxiv.org/pdf/1902.09243.pdf - (4 月 12 日))。您还可以在网络的开头使用嵌入层来自动从单词中获取浮动(您只需先将单词映射到整数,但这不是 ML 部分)。
  • 每个文档都标记有一个关键词还是多个关键词?
  • @mujjiga 每个文档都标有多个关键词。

标签: machine-learning keras neural-network deep-learning conv-neural-network


【解决方案1】:

您可以使用 word2Vector 将每个单词转换为向量,那里有一些预训练的词向量。例如谷歌新闻(每个词 300 个特征),维基百科(每个词 400 个特征)。这些是一般的词向量。如果您的内容来自某些特定来源,您可以使用 gensim 来训练您自己的词向量。您可以根据需要定义特征长度(100 甚至更少)。由于您自己的词向量不必像 google 和 wikipedia 那样涵盖多个词。使用词向量表示一个词,而你的句子或短语将是一个向量序列。然后,您可以使用 RNN、GRU 或 LSTM 任何类型的时间序列模型来训练内核。预测 1 或 0 是否为关键短语。也称为命名实体识别。

【讨论】:

  • 非常感谢您提供的信息,我想知道如何将整个段落转换为单词向量,因为我有多个段落要训练,而且单词数并不总是相同在他们中我将如何处理这个问题,我现在完全明白了,如果你能用一些参考链接更新你的答案,那就太好了。
  • 这是一个例子machinelearningmastery.com/… 正如你所说,段落的长度不会相同,这可能是特征缺失的问题。取决于数据和应用程序本身,有很多不同的解决方案。最简单的方法是给空白位置全 0,如果它们比最长的位置短。
【解决方案2】:

你可以在 Keras 中使用Embedding 层,它本质上是一个查找表:从词索引到对应的词向量,它与网络的其余部分一起训练。在将文本传递到这一层之前,您需要将文本编码为单词索引序列。

因此,您将获得一个可变长度的词向量向量。要处理它,您可以使用循环层对它进行编码,正如 Jiajie Yu 建议的那样,或者使用卷积层和 1D 池化(有人说卷积更适合于关键短语提取)。

预处理文本并使用嵌入层的玩具示例,您可以获得here,在其上使用卷积 - here 和 LSTM - here。而this是一个使用embedding + LSTM来预测每个词的POS标签的例子;您可以轻松地对其进行修改以预测该单词是否属于关键字。

【讨论】:

  • 张量流的universal-sentence-encoder是否可以帮助我对句子进行编码和解码?
  • 如果你想解决句子级别的问题(比如句子分类),那么是的,这会很有帮助。但是您所说的问题看起来更像是单词级别的问题(您想将所有单词共同分类为关键和非关键)。如果确实如此,您必须保留本地信息,但 USE 会丢失它。所以我认为你只想将 USE 用作附加的特征提取器,以词级编码器为主要。
猜你喜欢
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
相关资源
最近更新 更多