如何将长句子分解为5到10个单词的句子,并与LSTM取得良好的效果?

时间:2018-07-08 17:16:24

标签: machine-learning text nlp deep-learning

我正在从事的项目将在现实生活中输入5到10个单词的句子。 但是我正在接受古腾堡书籍的培训,句子很长。 如果仅提取5到10个单词的句子,我将丢失90%的数据。 打破长句子的最佳方法是什么?

我在想的是

“ w1 w2。.... ... ...... w18” 进入

句子1:START w1 ............ w9

句子2:w10 ................... w18 END

我可以这样做并获得LSTM的良好结果吗?

1 个答案:

答案 0 :(得分:3)

这里有一些解决方案。

我认为,最佳选择是放弃当前的ML库并切换到pyTorch。 PyTorch是一个文档齐全的现代库,正在快速开发中,以支持动态计算图。从本质上讲,这意味着您可以定义一个过程,该过程接受任意长度的输入并产生任意长度的输出。 here也可以找到Seq2Seq LSTM的官方文本生成教程。

另一种解决方案(假设您正在使用Keras / TF)是使用stateful LSTMs,即LSTM通过不同的样本保留其隐藏状态和上下文向量。

最后,也许最简单的解决方案是找到一个序列长度,该序列长度可以在计算费用和保留的样本比例之间取得良好的平衡。这将需要您可视化句子长度的分布并找出(满足您需求的)最佳位置。